Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Ассоциация файла с приложением Добавлено: 29.11.05 09:42  

Автор вопроса:  «UL.eXe» | ICQ: 197.895.916.247 
Плз, помогите..
Как программно ассоциировать определенный файл, к примеру somefile.xxx с моим приложением на VB6 ??
Например, чтобы после запуска приложения все *.xxx поменяли иконку на иконку моего приложения и при клике на них открывались в моем приложении?
__________
Помогите!!

Ответить

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

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



ICQ: 223685087 

Вопросов: 9
Ответов: 77
 Профиль | | #1 Добавлено: 29.11.05 10:42
Вот откопал у себя статью, про иконку там ничего нет, но думаю надо посмотреть в ключах реестра, которые описаны в этом примере, наверное там есть и параметр, отвечающий за иконку.

**********************************************************************
 - Как сделать, чтобы моя "крутейшая" программа подвешивалась
   на файлы с определенным расширением в качестве программы
   по умолчанию (то есть DoubleClick в проводнике чтоб запускал
   ее с именем файла на котором был клик)?
----------------------------------------------------------------------

 1. "Крутейшая" программа должна обрабатывать командную строку,
    а именно брать оттуда путь и имя этого файла...

 2. Смотрим, а не висит ли уже кто-либо на этом типе файлов....
    Раздел [HKEY_CLASSES_ROOT\.ext], параметр [по умолчанию]
    Пример: tmpStr = GetKeyValue(HKEY_CLASSES_ROOT, FileExt, "";)
    ;(Здесь FileExt - строковая константа, см. полный пример...)
    Если никого нет, то tmpStr будет равно "".

 3. Если никого нет, то создаем свой раздел DefaultReg, если кто-то уже
    прицепился, то добавляем в его раздел (то есть в tmpStr).

Далее смотри код примера... Я даже комментариев понаписал...
                       ;(сколько смог...)


-------------
Полный пример (VB Код):


'Комментарии излишни по-моему...
Private FullPathAndFileName As String
Private 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", "", FullPathAndFileName

End If

    'И пошла командная строка...
    CmdLine = Command
    CmdLine = Trim(CmdLine)

Ответить

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


 

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

Вопросов: 236
Ответов: 8362
 Профиль | | #2 Добавлено: 29.11.05 23:20
UL, твой вопрос не то что не интерестнен и не орегинален, он входит в FAQ стандартных... потрудись ответ найти на него сам, это не сложно...

Ответить

Страница: 1 |

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



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