Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как ассоциировать расширение файла? Добавлено: 06.06.04 11:21  

Автор вопроса:  П.С. | Web-сайт: psbatishev.narod.ru | ICQ: 225019134 

Уважаемые программисты!
Подскажите, пожалуйста, как в программе, написанной в Visual Basic, сделать ассоциирование расширения файла.
То есть, например, чтобы файл с расширением .kmb открывался программой poligon.exe в системе Windows двойным щелчком по файлу с таким расширением в Проводнике?
А еще очень интересно было бы узнать, как добавлять ярлыки в папку последние Документы?

Буду очень благодарен за ответы.
С уважением, П.С.

PS: в прошлый раз Вы мне очень помогли. Особое спасибо: cresta, Sharp, Stanislav.

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 06.06.04 12:56
' §§§§§§§§§§§§§§§§§§§§§§§§§§ Асоциирование с файлом §§§§§§§§§§§§§§§§§§§§§§§§§§

'Ассоциация файлов с программой
Public Sub Associate(ByVal sType As String, ByVal sKey As String, ByVal sDescr As String, _
                     ByVal iIcon As Integer, ByVal sPrompt As String)

    Call RegSetValue(HKEY_CLASSES_ROOT, sKey, vbNullString, sDescr)
    If Len(sPrompt) Then Call RegSetValue(HKEY_CLASSES_ROOT, sKey & "\shell\open\command", vbNullString, sPrompt & " %1";)
    Call RegSetValue(HKEY_CLASSES_ROOT, sKey & "\DefaultIcon", vbNullString, App.Path & "\" & LCase(App.EXEName) & ".exe," & CStr(iIcon))
    Call RegSetValue(HKEY_CLASSES_ROOT, sType, vbNullString, sKey)
End Sub

Public Function DeAssociate(sType As String) As String
    ;DeAssociate = RegGetValue(HKEY_CLASSES_ROOT, sType, vbNullString)

    Call RegDelKey(HKEY_CLASSES_ROOT, DeAssociate & "\shell\open\command";)
    Call RegDelKey(HKEY_CLASSES_ROOT, DeAssociate & "\shell\open";)
    Call RegDelKey(HKEY_CLASSES_ROOT, DeAssociate & "\shell";)
    Call RegDelKey(HKEY_CLASSES_ROOT, DeAssociate)
    Call RegDelKey(HKEY_CLASSES_ROOT, sType)
End Function

Public Function IsAssociate(sType As String, sKey As String) As Boolean
    IsAssociate = (RegGetValue(HKEY_CLASSES_ROOT, sType, "";) = sKey)
End Function


' Использование

' Проверка ассоциированности
mnuAssociate.Checked = IsAssociate(".shw", "HWStSkin";)

' Отключение ассоциации
Call DeAssociate(".shw";)

' Associate
Call Associate(".shw", "HWStSkin", "Файл скина для программы HomeWork Statist", 1, App.Path & "\" & LCase(App.EXEName) & ".exe";)

Ответить

Номер ответа: 2
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #2
Добавлено: 06.06.04 13:03
Добавить ссылку или удалить все ссылки в меню Пуск|Документы

Private Declare Sub SHAddToRecentDocs Lib "shell32.dll" (ByVal uFlags As Long, ByVal pv As String)
Private Sub Form_Load()
SHAddToRecentDocs(2, "c:\win\win.ini";) 'замените путь "c:\windows\win.ini" на ваш файл
'SHAddToRecentDocs 2, vbNullString - удаление всех ссылок на документы
End Sub

ЗЫ
> Особое спасибо: cresta, Sharp, Stanislav.
А откуда известно что я Stanislav, или это не я :))

Ответить

Номер ответа: 3
Автор ответа:
 П.С.



ICQ: 225019134 

Вопросов: 36
Ответов: 41
 Web-сайт: psbatishev.narod.ru
 Профиль | | #3
Добавлено: 08.06.04 19:15
Огромное спасибо, sne! Все заработало.
Теперь при каждом запуске программы устанавливается ассоциация с запущенным exe-шником. В меню Пуск-Документы появляются ярлыки (я еще нарисовал уникальный значок в IconRipper), с помощью ярлыка открывается файл в ассоциированной программе. Проверку ассоциативности и ее удаление не стал добавлять в программу. Только выложенный код я чуть-чуть подправил. В том ключе реестра, где пишется путь к exe-файлу и %1 я заключил отдельно путь и отдельно %1 в кавычки, а иначе папки в пути к файлу документа даются в формате 8.3 . И еще номер значка поставил 0. Наверное, нет возможности в exe-файл внести 2-й значок? Искал, но не нашел.

Спасибо, sne!

Ответить

Номер ответа: 4
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #4
Добавлено: 10.06.04 20:25
> Наверное, нет возможности в exe-файл внести 2-й значок?
Есть, с помощью ресурсов

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам