Страница: 1 |
Уважаемые программисты! Буду очень благодарен за ответы. PS: в прошлый раз Вы мне очень помогли. Особое спасибо: cresta, Sharp, Stanislav.
Страница: 1 |
Вопрос: Как ассоциировать расширение файла?
Добавлено: 06.06.04 11:21
Автор вопроса: П.С. | Web-сайт:
Подскажите, пожалуйста, как в программе, написанной в Visual Basic, сделать ассоциирование расширения файла.
То есть, например, чтобы файл с расширением .kmb открывался программой poligon.exe в системе Windows двойным щелчком по файлу с таким расширением в Проводнике?
А еще очень интересно было бы узнать, как добавлять ярлыки в папку последние Документы?
С уважением, П.С.
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #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
 eAssociate = 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-сайт:
Профиль | | #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-сайт:
Профиль | | #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-сайт:
Профиль | | #4
Добавлено: 10.06.04 20:25
> Наверное, нет возможности в exe-файл внести 2-й значок?
Есть, с помощью ресурсов