Что нового

Как скриптом автоит - назначить расширениям файлов - открытие конкретной программой

Сообщения
44
Репутация
-1
Версия AutoIt
3.3.14.5
Версия
3.3.14.5
Здравствуйте
Помогите решить вопрос.

Как скриптом автоит - назначить расширениям jpg, bmp, png - открытие конкретной программой ?
Адрес программы:
C:\Program Files\Paint.NET\PaintDotNet.exe
 

joiner

Модератор
Локальный модератор
Сообщения
3,425
Репутация
597
Привет. Такие вопросы решают в общем разделе.
Ассоциация файлов задается через реестр. В интернете полно инфы. Записываем через RegWrite
 

joiner

Модератор
Локальный модератор
Сообщения
3,425
Репутация
597
 
Автор
D
Сообщения
44
Репутация
-1
Понятно.
А как в этот код вписать свою программу?
У меня же куча пробелов в ее адресе (здесь в коде этот адрес очень простой - он без пробелов записан).

Код:
_RegSetFileExt('jpg', 'C:\MyProgram.exe %1', 'Открыть с MyProgram', 0, 'C:\MyProgram.exe,0', 'Описание')


Func _RegSetFileExt($sExt, $sCommand, $sVerb, $iDefault = 0, $sIcon = "", $sDescription = "")
    Local $sExtRead = RegRead("HKCR\." & $sExt, "")

    If @error Then
        RegWrite("HKCR\." & $sExt, "", $g_REGTYPE_REG_SZ, $sExt & "file")
        $sExtRead = $sExt & "file"
    EndIf

    Local $sCurrentDescription = RegRead("HKCR\" & $sExtRead, "")

    If @error Then
        If $sDescription <> "" Then RegWrite("HKCR\" & $sExtRead, "", $g_REGTYPE_REG_SZ, $sDescription)
    Else
        If $sDescription <> "" And $sCurrentDescription <> $sDescription Then
            RegWrite("HKCR\" & $sExtRead, "", $g_REGTYPE_REG_SZ, $sDescription)
            RegWrite("HKCR\" & $sExtRead, "olddesc", $g_REGTYPE_REG_SZ, $sCurrentDescription)
        EndIf

        If $sCurrentDescription = "" And $sDescription <> "" Then RegWrite("HKCR\" & $sExtRead, "", $g_REGTYPE_REG_SZ, $sDescription)
    EndIf

    Local $sCurrentVerb = RegRead("HKCR\" & $sExtRead & "\shell", "")
    Local $iError = @error

    If $iDefault = 1 Then
        RegWrite("HKCR\" & $sExtRead & "\shell\Open\Command", "", $g_REGTYPE_REG_EXPAND_SZ, $sCommand)

        If $iError Then
            RegWrite("HKCR\" & $sExtRead & "\shell", "", $g_REGTYPE_REG_SZ, $sVerb)
        Else
            RegWrite("HKCR\" & $sExtRead & "\shell", "", $g_REGTYPE_REG_SZ, $sVerb)
            RegWrite("HKCR\" & $sExtRead & "\shell", "oldverb", $g_REGTYPE_REG_SZ, $sCurrentVerb)
        EndIf
    EndIf

    Local $sCurrentCommand = RegRead("HKCR\" & $sExtRead & "\shell\" & $sVerb & "\command", "")

    If Not @error Then
        RegRead("HKCR\" & $sExtRead & "\shell\" & $sVerb & "\command", "oldcmd")
        If @error Then RegWrite("HKCR\" & $sExtRead & "\shell\" & $sVerb & "\command", "oldcmd", $g_REGTYPE_REG_SZ, $sCurrentCommand)
    EndIf

    RegWrite("HKCR\" & $sExtRead & "\shell\" & $sVerb & "\command", "", $g_REGTYPE_REG_SZ, $sCommand)

    If $sIcon <> "" Then
        Local $sCurrentIcon = RegRead("HKCR\" & $sExtRead & "\DefaultIcon", "")

        If @error Then
            RegWrite("HKCR\" & $sExtRead & "\DefaultIcon", "", $g_REGTYPE_REG_SZ, $sIcon)
        Else
            RegWrite("HKCR\" & $sExtRead & "\DefaultIcon", "", $g_REGTYPE_REG_SZ, $sIcon)
            RegWrite("HKCR\" & $sExtRead & "\DefaultIcon", "oldicon", $g_REGTYPE_REG_SZ, $sCurrentIcon)
        EndIf
    EndIf
EndFunc

Сообщение автоматически объединено:

А если даже без пробелов записать - то выдает такую ошибку:
1.au3" (15) : ==> Variable used without being declared.:
If $sDescription <> "" Then RegWrite("HKCR\" & $sExtRead, "", $g_REGTYPE_REG_SZ, $sDescription)
If $sDescription <> "" Then RegWrite("HKCR\" & $sExtRead, "", ^ ERROR
>Exit code: 1 Time: 0.3198
 
Последнее редактирование:
Верх