Врт кусок фака с www.vbrussian.com Как сделать, чтобы моя "крутейшая" программа подвешивалась на файлы с определенным расширением в качестве программы по умолчанию (то есть DoubleClick в проводнике чтоб запускал ее с именем файла на котором был клик)? 1. "Крутейшая" программа должна обрабатывать командную строку, а именно брать оттуда путь и имя этого файла... 2. Смотрим, а не висит ли уже кто-либо на этом типе файлов.... Раздел [HKEY_CLASSES_ROOT\.ext], параметр [по умолчанию] Пример: tmpStr = GetKeyValue(HKEY_CLASSES_ROOT, FileExt, "") (Здесь FileExt - строковая константа, см. полный пример...) Если никого нет, то tmpStr будет равно "". 3. Если никого нет, то создаем свой раздел DefaultReg, если кто-то уже прицепился, то добавляем в его раздел (то есть в tmpStr). Далее смотри код примера... Я даже комментариев понаписал... (сколько смог...) Полный пример (VB Код):
'Комментарии излишни по-моему...Private FullPathAndFileName As StringPrivate CmdLine As String'Определяет делать ли вообще то о чем идет речь...Private Const UpdReg As Boolean = True'Определяет ставить наше действие "по умолчанию" или нет...Private Const UpdDefault As Boolean = True'Расширение на которое подвешиваем свою программу...Private Const FileExt As String = ".rom"'Имя своего раздела в реестре если на этом типе файлов еще никто не висит...'(само имя ни на что не влияет)Private Const DefaultReg As String = "ROMfile"'Действие, которое будем делать над файломPrivate Const DefaultAct As String = "Convert"'Название действия, которое будем делать над файлом'(Проводник именно эту надпись выведет по правой кнопке)Private Const DefaultActName As String = "Преобразовать"'Описание файлов с таким расширением...Private Const ExtDescription As String = "Asm Output file"'Я это ставлю на Form_Load....Private Sub Form_Load()Dim tmpStr As String 'Определяем свой путь и имя файла FullPathAndFileName = App.Path If Right(App.Path,1) <> "\" Then FullPathAndFileName = FullPathAndFileName & "\" FullPathAndFileName = FullPathAndFileName & App.EXEName & ".exe %1" If UpdReg Then'А надо ли в реестр-то писать? [const] 'Считываем на предмет "висит" ли кто на этом типе файлов... tmpStr = GetKeyValue(HKEY_CLASSES_ROOT, FileExt, "") If tmpStr = "" Then'Если никто не висит... tmpStr = DefaultReg'Делаем свою запись на это расширение UpdateKey HKEY_CLASSES_ROOT, FileExt, "", tmpStr'Присобачиваем свое описание таких файлов... UpdateKey HKEY_CLASSES_ROOT, tmpStr, "", ExtDescription End If If UpdDefault Then'Ставим свое действие "по умолчанию"UpdateKey HKEY_CLASSES_ROOT, tmpStr & "\shell", "", DefaultAct End If 'Прописываем название действия UpdateKey HKEY_CLASSES_ROOT, tmpStr & "\shell\" & DefaultAct, "", DefaultActName 'Прописываем пути и имя нашей программы.... UpdateKey HKEY_CLASSES_ROOT, tmpStr & "\shell\" & DefaultAct & "\command", "", FullPathAndFileNameEnd If 'И пошла командная строка... CmdLine = Command CmdLine = Trim(CmdLine)
Ответить
|