Как ассоциировать программу с расширением?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
GreenT
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 17.08.2003 (Вс) 13:42

Как ассоциировать программу с расширением?

Сообщение GreenT » 13.10.2003 (Пн) 23:01

МОжет быть нибуть знает?
Там какие то ключи в реестре вроде. Только вопрос какие и с помощью какого оператора?

WEB_13
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 06.08.2003 (Ср) 8:02
Откуда: Reutov, Russia

Сообщение WEB_13 » 14.10.2003 (Вт) 1:31

Можно использовать библиотеку Registry Access Functions, ну или WinAPI.
Я применил такие записи в реестре:

HKEY_CLASSES_ROOT, ".txt", "", "текст"

HKEY_CLASSES_ROOT, "текст", "", "текст"

HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt", "Application", "Notepad.exe"

HKEY_LOCAL_MACHINE, "SOFTWARE\Classes\.txt", "", "тект"

HKEY_USERS, "S-1-5-21-1757981266-813497703-1343024091-1003\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt", "Application", "Notepad.exe"

Подбирал наугад и у меня работает.
Format Hard Disk Completed

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 22.10.2003 (Ср) 16:45

Этот код взят из моей реальной программы (ну не совсем моей, делали командой в 3 человека, но этот код мой; работает на всех машинах :oops: )

Код: Выделить всё
Private Sub SetAssociation(REGFile As String)
    Dim CProg As String
   
    On Error Resume Next
   
    If GetSetting("XXX", "Settings", "Assoc_Key",0) = 1 Then Exit Sub

    If Len(CurDir) <= 3 Then
        CProg = CurDir & App.EXEName & ".exe"
    Else
        CProg = CurDir & "\" & App.EXEName & ".exe"
    End If
    For e = 1 To Len(CProg)
        xi = InStr(e, CProg, "\", vbTextCompare)
        If xi <> 0 And xi <> oldx Then
            If InStr(xi - 1, CProg, "\\") = 0 Then
                cc1 = Left(CProg, xi - 1)
                cc2 = Mid(CProg, xi + 1)
                CProg = cc1 & "\\" & cc2
            End If
        End If
        oldx = xi
    Next e
   
    Close #1
    Open REGFile For Output As #1
        Print #1, "REGEDIT4"
        Print #1, ""
        Print #1, "[HKEY_CLASSES_ROOT\txtfile]"
        Print #1, ""
        Print #1, "[HKEY_CLASSES_ROOT\txtfile\shell]"
        Print #1, ""
        Print #1, "[HKEY_CLASSES_ROOT\txtfile\shell\Открыть в XXX]"
        Print #1, ""
        Print #1, "[HKEY_CLASSES_ROOT\txtfile\shell\Открыть в XXX\command]"
        Print #1, "@=" & Chr(34) & CProg & " " & "%1" & Chr(34)
    Close #1
   
'Вызвать добавление в реестр
    Shell "regedit /s " & REGFile
'Удалить файл реестра
    Kill REGFile
'Добавить запись
    SaveSetting "XXX", "Settings", "Assoc_Key", 1
End Sub


REGFile здесь - название файла реестра (ну .reg который) для создания и последующего импорта стандартным системным мелкомягким регедитом
Моду создают модоки, а распространяют модозвоны.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Bing-бот, Google-бот и гости: 41

    TopList