Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 2)

Модерирует : gyra, Maz

Widok (01-06-2010 13:08): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

AZJIO



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
;  @AZJIO 19.03.2010
#NoTrayIcon
Global $AutInp0, $RedInp01, $RedInp02, $OpenCom0, $EditCom0, $CompCom0, $RunCom0, $aPathAut0, $err1, $run_m0, $OpenCom, $EditCom, $CompCom, $RunCom, $filesave1, $aRegList
$as='HKCR\AutoIt3Script'
 
$Gui = GUICreate("Portable AutoIt3",  528, 401, -1, -1, -1, 0x00000010)
$StatusBar = GUICtrlCreateLabel('Строка состояния', 5,383,560,18)
GUICtrlCreateLabel ("используйте drag-and-drop", 250,3,200,18)
 
$tab=GUICtrlCreateTab (0,2, 528,401-20) ; размер вкладки
$hTab = GUICtrlGetHandle($tab)
$tab1=GUICtrlCreateTabitem ("AutoIt3") ; имя вкладки
 
$assreg = GUICtrlCreateButton("Ассоциировать", 380, 40, 122, 25)
GUICtrlSetTip(-1, "Зарегистрировать расширение"&@CRLF&"и контекстное меню с AutoIt3")
$zareg = GUICtrlCreateButton("Зарегистрировать", 380, 71, 122, 25)
GUICtrlSetTip(-1, "Аналогично установке AutoIt3")
$delreg = GUICtrlCreateButton("Удалить регистрацию", 380, 102, 122, 25)
GUICtrlSetTip(-1, "Удалить все упоминания"&@CRLF&"об AutoIt3 в реестре")
$reau3 = GUICtrlCreateButton("1 Создать re_au3", 380, 133, 107, 25)
GUICtrlSetTip(-1, "Для переназначения из контекстного меню"&@CRLF&"Выполнять или Открывать скрипт кликом мыши.")
$reau4 = GUICtrlCreateButton("2 Создать re_au3", 380, 164, 107, 25)
GUICtrlSetTip(-1, "Нестандартный вариант, но даёт возможность"&@CRLF&"в справке выполнять скрипты вместо открытия в редакторе.")
$reaust3 = GUICtrlCreateButton("s", 487, 133, 15, 25)
GUICtrlSetTip(-1, "Выполнить re_au3.au3")
$reaust4 = GUICtrlCreateButton("s", 487, 164, 15, 25)
GUICtrlSetTip(-1, "Выполнить re_au3.au3")
 
$lang=GUICtrlCreateGroup ("Язык контекстного меню", 345, 195, 150, 55)
GUIStartGroup()
$russet = GUICtrlCreateRadio("Russian", 350, 211, 67, 20)
GUICtrlSetTip(-1, "Обновить раскрывающиеся списки")
$enset = GUICtrlCreateRadio("English", 350, 228, 67, 20)
GUICtrlSetTip(-1, "Обновить раскрывающиеся списки")
 
$act=GUICtrlCreateGroup ("Действие кликом мыши", 345, 255, 150, 55)
GUIStartGroup()
$run_m = GUICtrlCreateRadio("Выполнить скрипт", 350, 271, 137, 20)
GUICtrlSetTip(-1, "Сохраняется при выборе")
$open_m = GUICtrlCreateRadio("Открыть скрипт", 350, 288, 137, 20)
GUICtrlSetTip(-1, "Сохраняется при выборе")
If RegRead($as&"\Shell", "") = "Run" Then
    GUICtrlSetState ($run_m,1)
Else
    GUICtrlSetState ($open_m,1)
EndIf
 
$AutLab = GUICtrlCreateLabel("Путь к AutoIt3.exe", 24, 40, 130, 17)
$AutInp = GUICtrlCreateInput("", 24, 57, 305, 21)
GUICtrlSetState(-1,8)
$folder1 = GUICtrlCreateButton("...", 337, 56, 27, 23)
GUICtrlSetFont (-1,13)
 
$RedLab1 = GUICtrlCreateLabel("Путь к основному редактору", 24, 90, 186, 17)
$RedInp1 = GUICtrlCreateInput("", 24, 107, 305, 21)
GUICtrlSetState(-1,8)
$folder2 = GUICtrlCreateButton("...", 337, 106, 27, 23)
GUICtrlSetFont (-1,13)
 
$RedLab2 = GUICtrlCreateLabel("Путь к дополнительному редактору", 24, 140, 186, 17)
$RedInp2 = GUICtrlCreateInput("", 24, 157, 305, 21)
GUICtrlSetState(-1,8)
$folder3 = GUICtrlCreateButton("...", 337, 156, 27, 23)
GUICtrlSetFont (-1,13)
 
$OpenLab=GUICtrlCreateLabel ('Пункт "Открыть"', 20,200,130,20)
$OpenCom=GUICtrlCreateCombo ("", 150,197,180,18)
 
$EditLab=GUICtrlCreateLabel ('Пункт "Изменить"', 20,230,130,20)
$EditCom=GUICtrlCreateCombo ("", 150,227,180,18)
 
$CompLab=GUICtrlCreateLabel ('Пункт "Компилировать"', 20,260,130,20)
$CompCom=GUICtrlCreateCombo ("", 150,257,180,18)
 
$RunLab=GUICtrlCreateLabel ('Пункт "Выполнить"', 20,290,130,20)
$RunCom=GUICtrlCreateCombo ("", 150,287,180,18)
 
If RegRead($as&"\Shell\Open", "") = "Open" Then
    GUICtrlSetState ($enset,1)
    _langen()
Else
    GUICtrlSetState ($russet,1)
    _langrus()
EndIf
 
$auopen = GUICtrlCreateButton("открыть", 152, 37, 55, 20)
GUICtrlSetTip(-1, "Открыть каталог")
$aureg = GUICtrlCreateButton("v реестр", 213, 37, 55, 20)
GUICtrlSetTip(-1, "Прочитать путь из реестра")
$cl = GUICtrlCreateButton("Очистить", 274, 37, 55, 20)
GUICtrlSetTip(-1, "Очистить все (3) поля ввода")
 
$edreg1 = GUICtrlCreateButton("v реестр", 213, 87, 55, 20)
GUICtrlSetTip(-1, "Прочитать путь из реестра")
$root1 = GUICtrlCreateButton("v корень", 274, 87, 55, 20)
GUICtrlSetTip(-1, "Копировать путь от корня AutoIt3.exe")
 
$edreg2 = GUICtrlCreateButton("v реестр", 213, 137, 55, 20)
GUICtrlSetTip(-1, "Прочитать путь из реестра")
$root2 = GUICtrlCreateButton("v корень", 274, 137, 55, 20)
GUICtrlSetTip(-1, "Копировать путь от корня AutoIt3.exe")
 
$Save = GUICtrlCreateButton("Save", 344, 320, 57, 23)
GUICtrlSetTip(-1, "Сохранить путь к AutoIt3"&@CRLF&"создание списка версий.")
 
$SaveCom=GUICtrlCreateCombo ("", 24,405,305,22)
GUICtrlSetTip(-1, "Список версий")
 
If FileExists(@ScriptDir&"\vAutoIt3.txt") Then
    GUICtrlSetPos($SaveCom, 24,320)
    $filesave = FileOpen(@ScriptDir&"\vAutoIt3.txt", 0)
    $filesave1 = FileRead($filesave)
    GUICtrlSetData($SaveCom,$filesave1, '')
    FileClose($filesave)
EndIf
 
$folder4 = GUICtrlCreateButton("Добавить", 344, 350, 57, 23)
GUICtrlSetTip(-1, "Добавить пункт"&@CRLF&"в контекстное меню")
$delitem = GUICtrlCreateButton("Удалить", 411, 350, 57, 23)
GUICtrlSetTip(-1, "Удалить пункт"&@CRLF&"из контекстного меню"&@CRLF&"указанный в списке")
$savereg = GUICtrlCreateButton("SAVE REG", 411, 320, 57, 23)
GUICtrlSetTip(-1, "Сохранить настройки"&@CRLF&"из реестра в reg-файл")
$genlist=GUICtrlCreateCombo ("", 24,350,305,22)
GUICtrlSetTip(-1, "Список контекстного меню"&@CRLF&"в реестре")
_genlist()
 
$tab2=GUICtrlCreateTabitem ("    ?") ; имя вкладки
GUICtrlCreateLabel ('    Данная утилитка поможет портабельно использовать AutoIt3, а также переключаться между версиями; удалить из реестра всю информацию об использовании AutoIt3; назначить любой редактор в качестве основного или дополнительного; переключать действие клика мыши на скрипте в контекстном меню.'&@CRLF&'     Если редактор не указан или автоматически не найден, то ассоциации не прописываются. Наличие каталога Include не проверяется.'&@CRLF&'     Кнопка Save позволяет сохранять несколько путей с указанием версии в файл и при последующем старте выбрать необходимую версию из списка. Не добавляются пути уже существующие в списке. Младшие версии AutoIt3 создают более компактные exe-файлы.'&@CRLF&'     Кнопка "1 Создать re_au3" позволяет не открывая эту программу из контекстного меню скрипта переназначить клик мыши на скрипте между вариантами "Открыть" и "Выполнить".'&@CRLF&'Кнопка "2 Создать re_au3" создаёт нестандартный переназначатель, но с преимуществом: в справке вместо открытия скрипта он будет выполнятся, побочный эффект: в переключателе на радиокнопках "Действие кликом мыши" будет противоположно. Рекомендуется: радиокнопка всегда "Открыть скрипт", и нажатие последовательно кнопок "Ассоциировать" и "s", при условии, что выполнено "2 Создать re_au3"'&@CRLF&'     Кнопками "Добавить / Удалить" можно управлять контекстным меню, пункты которого отображаются в раскрывающемся списке ', 20,40,488,300)
GUICtrlCreateLabel ('@AZJIO  19.03.2010, v1.6', 380,350,130,20)
GUICtrlCreateTabitem ("")   ; конец вкладок
 
; устранение проблем интерфейса
Switch @OSVersion
    Case 'WIN_2000', 'WIN_XP', 'WIN_2003'
        $Part = 10
    Case Else
        $Part = 11
EndSwitch
$Color = _WinAPI_GetThemeColor($hTab, 'TAB', $Part, 1, 0x0EED)
If Not @error Then
    GUICtrlSetBkColor($russet, $Color)
    GUICtrlSetBkColor($enset, $Color)
    GUICtrlSetBkColor($run_m, $Color)
    GUICtrlSetBkColor($open_m, $Color)
    GUICtrlSetBkColor($lang, $Color)
    GUICtrlSetBkColor($act, $Color)
EndIf
 
;вызов функций автозаполнения input из реестра
_aureg()
_edreg1()
_edreg2()
 
GUISetState ()
 
    While 1
        $msg = GUIGetMsg()
        Select
            Case $msg = -13
                If @GUI_DropID=$AutInp Then
                    GUICtrlSetData($AutInp, @GUI_DRAGFILE)
                    GUICtrlSetData ($StatusBar, "Выбран AutoIt3.exe, версия - "&FileGetVersion(@GUI_DRAGFILE))
                ;заполнение полей редакторов реестровыми путями  
                _edreg1()
                _edreg2()
                EndIf
                If @GUI_DropID=$RedInp1 Then
                    If StringRight(@GUI_DRAGFILE, 4) = ".lnk" Or StringRight(@GUI_DRAGFILE, 4) = ".exe"  Then
                        If StringRight( @GUI_DRAGFILE, 4 )  = ".lnk" Then ; принятие если lnk (ярлык) и объект (exe) в переменную
                            $aLNK = FileGetShortcut(@GUI_DRAGFILE)
                            $EXE=$aLNK[0]
                        EndIf
                        If StringRight( @GUI_DRAGFILE, 4 )  = ".exe" Then $EXE=@GUI_DRAGFILE ; принятие exe-файла
                        GUICtrlSetData($RedInp1, $EXE)
                    Else
                        MsgBox(0, "Ошибка", "Файл не является программой (*.exe).")
                        GUICtrlSetData($RedInp1, '')
                    Endif
                Endif
                If @GUI_DropID=$RedInp2 Then
                    If StringRight(@GUI_DRAGFILE, 4) = ".lnk" Or StringRight(@GUI_DRAGFILE, 4) = ".exe"  Then
                        If StringRight( @GUI_DRAGFILE, 4 )  = ".lnk" Then ; принятие если lnk (ярлык) и объект (exe) в переменную
                            $aLNK = FileGetShortcut(@GUI_DRAGFILE)
                            $EXE=$aLNK[0]
                        EndIf
                        If StringRight( @GUI_DRAGFILE, 4 )  = ".exe" Then $EXE=@GUI_DRAGFILE ; принятие exe-файла
                        GUICtrlSetData($RedInp2, $EXE)
                    Else
                        MsgBox(0, "Ошибка", "Файл не является программой (*.exe).")
                        GUICtrlSetData($RedInp2, '')
                    Endif
                Endif
            Case $msg = $delreg
                _split()
                For $i=1 To $aRegList[0]
                    RegDelete($aRegList[$i])
                Next
                GUICtrlSetData ($StatusBar, "Удаление регистрации в реестре выполнено.")
            Case $msg = $zareg
                _read()
                If $err1<>0 Then ContinueLoop
                RegWrite("HKCR\.au3","","REG_SZ",'AutoIt3Script')
                RegWrite($as,"","REG_SZ",'AutoIt v3 Script')
                RegWrite($as&"\Shell\Open","","REG_SZ",$OpenCom0)
                RegWrite($as&"\Shell\Open\Command","","REG_SZ",'"'&$RedInp01&'" "%1"')
                RegWrite($as&"\Shell\Run","","REG_SZ",$RunCom0)
                RegWrite($as&"\Shell\Run\Command","","REG_SZ",'"'&$AutInp0&'" "%1" %*')
                RegWrite($as&"\Shell\Compile","","REG_SZ",$CompCom0)
                RegWrite($as&"\Shell\Compile\Command","","REG_SZ",'"'&$aPathAut0[0]&'\Aut2Exe\Aut2Exe.exe" /in "%l"')
                RegWrite($as&"\Shell\Edit","","REG_SZ",$EditCom0)
                RegWrite($as&"\Shell\Edit\Command","","REG_SZ",'"'&$RedInp02&'" "%1"')
                
                RegWrite($as&"\Shell","","REG_SZ",$run_m0)
                RegWrite("HKCR\.au3\ShellNew","FileName","REG_SZ",'Template.au3')
                RegWrite("HKCR\.au3","PerceivedType","REG_SZ",'text')
                RegWrite("HKCR\.au3\PersistentHandler","","REG_SZ",'{5e941d80-bf96-11cd-b579-08002b30bfeb}')
 
                RegWrite("HKCR\AutoIt3XScript","","REG_SZ",'AutoIt v3 Encoded Script')
                RegWrite("HKCR\AutoIt3XScript\Shell","","REG_SZ",'Run')
                RegWrite("HKCR\AutoIt3XScript\Shell\Run","","REG_SZ",'Run Script')
                RegWrite("HKCR\AutoIt3XScript\Shell\Run\Command","","REG_SZ",'"'&$AutInp0&'" "%1" %*')
 
                RegWrite("HKCU\Software\AutoIt v3\Aut2Exe","LastExeDir","REG_SZ",'My Documents')
                RegWrite("HKCU\Software\AutoIt v3\Aut2Exe","LastScriptDir","REG_SZ",'My Documents')
                RegWrite("HKCU\Software\AutoIt v3\Aut2Exe","LastIconDir","REG_SZ",'"'&$aPathAut0[0]&'\Aut2Exe\Icons"')
                RegWrite("HKCU\Software\AutoIt v3\Aut2Exe","LastIcon","REG_SZ",'')
                RegWrite("HKCU\Software\AutoIt v3\Aut2Exe","LastCompression","REG_DWORD",'2')
                RegWrite("HKCU\Software\AutoIt v3\Aut2Exe","AllowDecompile","REG_DWORD",'1')
 
                RegWrite("HKLM\SOFTWARE\AutoIt v3\AutoIt","InstallDir","REG_SZ",$aPathAut0[0])
                RegWrite("HKLM\SOFTWARE\AutoIt v3\AutoIt","Version","REG_SZ",'v'&FileGetVersion($AutInp0))
                RegWrite("HKCR\.a3x","","REG_SZ",'AutoIt3XScript')
 
                RegWrite("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Au3Info.exe","","REG_SZ",$aPathAut0[0]&'\Au3Info.exe')
                RegWrite("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Aut2Exe.exe","","REG_SZ",$aPathAut0[0]&'\Aut2Exe\Aut2Exe.exe')
                RegWrite("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\AutoIt3.exe","","REG_SZ",$aPathAut0[0]&'\AutoIt3.exe')
                
                $un='HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\AutoItv3'
                RegWrite($un,"DisplayName","REG_SZ",'AutoIt v'&FileGetVersion($AutInp0))
                RegWrite($un,"UninstallString","REG_SZ",$aPathAut0[0]&'\Uninstall.exe')
                RegWrite($un,"DisplayIcon","REG_SZ",$aPathAut0[0]&'\AutoIt3.exe,0')
                RegWrite($un,"URLInfoAbout","REG_SZ",'http://www.autoitscript.com/autoit3')
                RegWrite($un,"Publisher","REG_SZ",'AutoIt Team')
                RegWrite($un,"NoModify","REG_DWORD",'1')
                RegWrite($un,"NoRepair","REG_DWORD",'1')
 
                If FileExists ($aPathAut0[0]&'\AutoItX\AutoItX3.dll') Then ShellExecute(@SystemDir&'\regsvr32.exe','/s "'&$aPathAut0[0]&'\AutoItX\AutoItX3.dll"','','', @SW_HIDE )
                If FileExists ($aPathAut0[0]&'\Icons\au3script_v10.ico') Then  
                    RegWrite($as&"\DefaultIcon","","REG_SZ",$aPathAut0[0]&'\Icons\au3script_v10.ico')
                    RegWrite("HKCR\AutoIt3XScript\DefaultIcon","","REG_SZ",$aPathAut0[0]&'\Icons\au3script_v10.ico')
                    DllCall("shell32.dll", "none", "SHChangeNotify", "long", '0x8000000', "uint", '0x1000', "ptr", '0', "ptr", '0')
                Endif
                GUICtrlSetData ($StatusBar, "Регистрация выполнена. Версия AutoIt3 - "&FileGetVersion($AutInp0))
 
            Case $msg = $assreg
                _read()
                If $err1<>0 Then ContinueLoop
                    RegWrite("HKCR\.au3","","REG_SZ",'AutoIt3Script')
                    RegWrite($as&"\Shell","","REG_SZ",$run_m0)
                    RegWrite($as,"","REG_SZ",'AutoIt v3 Script')
                    RegWrite($as&"\Shell\Open","","REG_SZ",$OpenCom0)
                    RegWrite($as&"\Shell\Open\Command","","REG_SZ",'"'&$RedInp01&'" "%1"')
                    RegWrite($as&"\Shell\Run","","REG_SZ",$RunCom0)
                    RegWrite($as&"\Shell\Run\Command","","REG_SZ",'"'&$AutInp0&'" "%1" %*')
                    RegWrite($as&"\Shell\Compile","","REG_SZ",$CompCom0)
                    RegWrite($as&"\Shell\Compile\Command","","REG_SZ",'"'&$aPathAut0[0]&'\Aut2Exe\Aut2Exe.exe" /in "%l"')
                    RegWrite($as&"\Shell\Edit","","REG_SZ",$EditCom0)
                    RegWrite($as&"\Shell\Edit\Command","","REG_SZ",'"'&$RedInp02&'" "%1"')
                If FileExists ($aPathAut0[0]&'\Icons\au3script_v10.ico') Then  
                        RegWrite($as&"\DefaultIcon","","REG_SZ",'"'&$aPathAut0[0]&'\Icons\au3script_v10.ico"')
                        RegWrite("HKCR\AutoIt3XScript\DefaultIcon","","REG_SZ",'"'&$aPathAut0[0]&'\Icons\au3script_v10.ico"')
                        DllCall("shell32.dll", "none", "SHChangeNotify", "long", '0x8000000', "uint", '0x1000', "ptr", '0', "ptr", '0')
                Endif
                    RegWrite("HKLM\SOFTWARE\AutoIt v3\AutoIt","InstallDir","REG_SZ",$aPathAut0[0])
                    ;RegWrite($as&"\DefaultIcon","","REG_SZ",'assot.dll,20')
                GUICtrlSetData ($StatusBar, "Ассоциации выполнены. Версия AutoIt3 - "&FileGetVersion($AutInp0))
            Case $msg = $reau3
                _read()
                If $err1<>0 Then ContinueLoop
                RegWrite($as&"\Shell\rx_re","","REG_SZ",'Переназначить au3')
                RegWrite($as&"\Shell\rx_re\Command","","REG_SZ",'"'&$AutInp0&'" "'&$aPathAut0[0]&'\re_au3.au3" %*')
                $file = FileOpen($aPathAut0[0]&'\re_au3.au3', 2)
                $sText = '$au3 = RegRead("HKCR\AutoIt3Script\Shell", "")' & @CRLF & 'If RegRead("HKCR\AutoIt3Script\Shell\rx_re", "") = "" Then' & @CRLF &'RegWrite("HKCR\AutoIt3Script\Shell\rx_re","","REG_SZ","Переназначить au3")' & @CRLF &'RegWrite("HKCR\AutoIt3Script\Shell\rx_re\Command","","REG_SZ","""'&$AutInp0&'"" ""'&$aPathAut0[0]&'\re_au3.au3"" %*")' & @CRLF &'EndIf'& @CRLF &'If $au3 = "Open" Then RegWrite("HKCR\AutoIt3Script\Shell","","REG_SZ","Run")'& @CRLF &'If $au3 = "Run" Then RegWrite("HKCR\AutoIt3Script\Shell","","REG_SZ","Open")'& @CRLF
                FileWrite($file, $sText)
                FileClose($file)
                GUICtrlSetData ($StatusBar, "Файл re_au3.au3 создан.")
                _genlist()
                
            Case $msg = $reau4
                _read()
                If $err1<>0 Then ContinueLoop
                RegWrite($as&"\Shell\rx_re","","REG_SZ",'Переназначить au3')
                RegWrite($as&"\Shell\rx_re\Command","","REG_SZ",'"'&$AutInp0&'" "'&$aPathAut0[0]&'\re_au3.au3" %*')
                $file = FileOpen($aPathAut0[0]&'\re_au3.au3', 2)
                $sText = '$au3 = RegRead("HKCR\AutoIt3Script\Shell\Open", "")' & @CRLF & 'If $au3 = "'&$OpenCom0&'" Then' & @CRLF &'; Старт' & @CRLF &'RegWrite("HKCR\AutoIt3Script\Shell\Open","","REG_SZ","'&$RunCom0&'")' & @CRLF &'RegWrite("HKCR\AutoIt3Script\Shell\Open\Command","","REG_SZ","""'&$AutInp0&'"" ""%1"" %*")' & @CRLF &'RegWrite("HKCR\AutoIt3Script\Shell\Run","","REG_SZ","'&$OpenCom0&'")' & @CRLF &'RegWrite("HKCR\AutoIt3Script\Shell\Run\Command","","REG_SZ","""'&$RedInp01&'"" ""%1""")' & @CRLF &'RegWrite("HKCR\AutoIt3Script\Shell\rx_re","","REG_SZ","Переназначить au3")' & @CRLF &'RegWrite("HKCR\AutoIt3Script\Shell\rx_re\Command","","REG_SZ","""'&$AutInp0&'"" ""'&$aPathAut0[0]&'\re_au3.au3"" %*")' & @CRLF &'EndIf' & @CRLF & @CRLF &'If $au3 = "'&$RunCom0&'" Then' & @CRLF &'; Открыть' & @CRLF &'RegWrite("HKCR\AutoIt3Script\Shell\Run","","REG_SZ","'&$RunCom0&'")' & @CRLF &'RegWrite("HKCR\AutoIt3Script\Shell\Run\Command","","REG_SZ","""'&$AutInp0&'"" ""%1"" %*")' & @CRLF &'RegWrite("HKCR\AutoIt3Script\Shell\Open","","REG_SZ","'&$OpenCom0&'")' & @CRLF &'RegWrite("HKCR\AutoIt3Script\Shell\Open\Command","","REG_SZ","""'&$RedInp01&'"" ""%1""")' & @CRLF &'RegWrite("HKCR\AutoIt3Script\Shell\rx_re","","REG_SZ","Переназначить au3")' & @CRLF &'RegWrite("HKCR\AutoIt3Script\Shell\rx_re\Command","","REG_SZ","""'&$AutInp0&'"" ""'&$aPathAut0[0]&'\re_au3.au3"" %*")' & @CRLF &'EndIf' & @CRLF
                FileWrite($file, $sText)
                FileClose($file)
                GUICtrlSetData ($StatusBar, "Файл re_au3.au3 создан.")
                _genlist()
                    
                    ; кнопки выбора языка
            Case $msg = $russet
                _clear()
                _langrus()
            Case $msg = $enset
                _clear()
                _langen()
                
            Case $msg = $run_m
                RegWrite($as&"\Shell","","REG_SZ",'Run')
            Case $msg = $open_m
                RegWrite($as&"\Shell","","REG_SZ",'Open')
                
                ;  мелкие кнопки
            Case $msg = $auopen
                $AutInp0=GUICtrlRead ($AutInp)
                If FileExists($AutInp0) Then
                    $aPathAut0 = StringRegExp($AutInp0, "(^.*)\\(.*)$", 3)
                Else
                    ContinueLoop
                EndIf
                If FileExists($aPathAut0[0]) Then Run('Explorer.exe '&$aPathAut0[0])
            Case $msg = $aureg
                _aureg()
            Case $msg = $edreg1
                _edreg1()
            Case $msg = $root1
                _read()
                If $err1<>0 Then ContinueLoop
                GUICtrlSetData($RedInp1, $aPathAut0[0]&'\SciTE\SciTE.exe')
            Case $msg = $edreg2
                _edreg2()
            Case $msg = $root2
                _read()
                If $err1<>0 Then ContinueLoop
                GUICtrlSetData($RedInp2, $aPathAut0[0]&'\SciTE\SciTE.exe')
            Case $msg = $cl
                GUICtrlSetData($AutInp, '')
                GUICtrlSetData($RedInp1, '')
                GUICtrlSetData($RedInp2, '')
                
            Case $msg = $Save
                $filesave = FileOpen(@ScriptDir&"\vAutoIt3.txt", 1)
                _read()
                ;If StringInStr($filesave1, '\Q'&$AutInp0&'\E')=0 Then
                If StringRegExp($filesave1, '\Q'&$AutInp0&'\E',0)<>0 Then
                    MsgBox(0, "Ошибка", "Этот путь к AutoIt3.exe уже существует в списке")
                    FileClose($filesave)
                    ContinueLoop
                EndIf
                If FileExists($AutInp0) Then
                    FileWrite($filesave, '|'&$AutInp0&' '&FileGetVersion($AutInp0))
                    FileClose($filesave)
                    ; обновление списка
                    $filesave = FileOpen(@ScriptDir&"\vAutoIt3.txt", 0)
                    $filesave1 = FileRead($filesave)
                    FileClose($filesave)
                    GUICtrlSendMsg($SaveCom, 0x14B, 0, 0)
                    GUICtrlSetData($SaveCom,$filesave1, '')
                    GUICtrlSetPos($SaveCom, 24,320)
                EndIf
            Case $msg = $SaveCom
                $SaveCom0 = GUICtrlRead ($SaveCom)
                If StringInStr($SaveCom0,'.exe')<>0 Then
                    $aSC0=StringRegExp($SaveCom0, "(^.*)exe(.*)$", 3)
                    If FileExists($aSC0[0]&'exe') Then
                        GUICtrlSetData ($StatusBar, "Выбран AutoIt3.exe, версия - "&FileGetVersion($aSC0[0]&'exe'))
                    Else
                        GUICtrlSetData ($StatusBar, "Путь неверный")
                    EndIf
                    GUICtrlSetData($AutInp,$aSC0[0]&'exe')
                EndIf
                ;заполнение полей редакторов реестровыми путями при выборе из списка SAVE.
                _edreg1()
                _edreg2()
                ; выполнить re_au3.au3
            Case $msg = $reaust3 or $msg = $reaust4
                _aureg()
                _read()
                Run($AutInp0&' '&$aPathAut0[0]&'\re_au3.au3', '', @SW_HIDE)
                
                ; кнопки обзор
            Case $msg = $folder1
                $folder01 = FileOpenDialog("Указать AutoIt3.exe", @WorkingDir & "", "AutoIt3 (*.exe)", 1 + 4 )
                If @error Then ContinueLoop
                GUICtrlSetData($AutInp, $folder01)
                GUICtrlSetData ($StatusBar, "Выбран AutoIt3.exe, версия - "&FileGetVersion($folder01))
            Case $msg = $folder2
                $folder01 = FileOpenDialog("Указать основной редкатор", @WorkingDir & "", "Редкатор1 (*.exe)", 1 + 4 )
                If @error Then ContinueLoop
                GUICtrlSetData($RedInp1, $folder01)
                GUICtrlSetData ($StatusBar, "Редактор 1 выбран.")
            Case $msg = $folder3
                $folder01 = FileOpenDialog("Указать дополнительный редкатор", @WorkingDir & "", "Редкатор2 (*.exe)", 1 + 4 )
                If @error Then ContinueLoop
                GUICtrlSetData($RedInp2, $folder01)
                GUICtrlSetData ($StatusBar, "Редактор 2 выбран.")
            Case $msg = $folder4
                $folder01 = FileOpenDialog("Указать *.exe", @WorkingDir & "", " (*.exe)", 1 + 4 )
                If @error Then ContinueLoop
                $aFolder = StringRegExp($folder01, "(^.*)\\(.*)\.(.*)$", 3)
                If $aFolder[2]='exe' Then
                If $aFolder[1]='AutoIt3Wrapper' or $aFolder[1]='AutoIt3Wrapper_Gui' or $aFolder[1]='Aut2exe' or $aFolder[1]='Aut2exe_x64' Then
                    RegWrite($as&"\Shell\"&$aFolder[1]&"\command","","REG_SZ",'"'&$folder01&'" /in "%1"')
                Else
                    RegWrite($as&"\Shell\"&$aFolder[1]&"\command","","REG_SZ",'"'&$folder01&'" "%1"')
                EndIf
                EndIf
                _genlist()
                GUICtrlSetData ($StatusBar, 'Пункт "'&$aFolder[1]&'" добавлен в контекстное меню')
            Case $msg = $delitem
                $genlist0=GUICtrlRead ($genlist)
                RegDelete("HKEY_CLASSES_ROOT\AutoIt3Script\Shell\"&$genlist0)
                _genlist()
            Case $msg = $savereg
                _aureg()
                _read()
                $Aut_v=FileGetVersion($AutInp0)
                $tempfile=@TempDir&'\temp8491.reg'
                ; генерируем имя нового файла с номером копии на случай если файл существует
                $i = 1
                While FileExists(@ScriptDir&'\save'&$i&'_AutoIt3_v'&$Aut_v&'.reg')
                    $i +=1
                WEnd
                $regfile=@ScriptDir&'\save'&$i&'_AutoIt3_v'&$Aut_v&'.reg'
                $regfileF = FileOpen($regfile, 1) ; открываем бэкап-файл
                FileWrite($regfileF,"Windows Registry Editor Version 5.00"&@CRLF&@CRLF)
                ; массив данных для экспорта
                _split()
                $Data=''
                For $i=1 To $aRegList [0]
                    RunWait ( @Comspec&' /C reg export "'&$aRegList[$i]&'" "'&$tempfile&'"', '', @SW_HIDE )
                    $vr = FileOpen($tempfile, 0)
                    $vr1 = FileRead($vr)
                    $vr1 = StringReplace($vr1, "Windows Registry Editor Version 5.00"&@CRLF, '')
                    $Data &=$vr1
                    FileClose($vr)
                Next
                FileWrite($regfileF, $Data&@CRLF)
                FileClose($regfileF)
            Case $msg = -3
                ExitLoop
        EndSelect
    WEnd
 
; создание массива веток реестра
Func _split()
$aRegList = StringSplit( 'HKCR\.a3x|HKCR\.au3|HKCR\AutoIt3Script|HKCR\AutoIt3XScript|HKCR\AutoItX3.Control|HKCR\AutoItX3.Control.1|HKCR\AppID\AutoItX3.DLL|HKCR\AppID\{6E8109C4-F369-415D-AF9A-2AEEFF313234}|HKCR\CLSID\{1A671297-FA74-4422-80FA-6C5D8CE4DE04}|HKCR\CLSID\{3D54C6B8-D283-40E0-8FAB-C97F05947EE8}|HKCR\Interface\{3D54C6B8-D283-40E0-8FAB-C97F05947EE8}|HKCR\TypeLib\{F8937E53-D444-4E71-9275-35B64210CC3B}|HKCU\Software\AutoIt v3|HKLM\SOFTWARE\AutoIt v3\AutoIt|HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Au3Info.exe|HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Aut2Exe.exe|HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\AutoIt3.exe|HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\AutoItv3', "|")
EndFunc
 
; чтение пути к AutoIt3 из реестра
Func _aureg()
$type = RegRead("HKEY_CLASSES_ROOT\AutoIt3Script\Shell\Run\Command", "")
If StringInStr($type,'AutoIt3.exe')=0 Then $type = RegRead("HKEY_CLASSES_ROOT\AutoIt3Script\Shell\Open\Command", "")
If @error=1 Then return
$aPathexe=StringRegExp($type, "(^.*)exe(.*)$", 3)
If @error=1 Then return
$Pathexe1 = StringReplace($aPathexe[0], '"', '')
If FileExists($Pathexe1&'exe') Then
    GUICtrlSetData($AutInp, $Pathexe1&'exe')
    GUICtrlSetData ($StatusBar, "Версия AutoIt3 из реестра - "&FileGetVersion($Pathexe1&'exe'))
EndIf
EndFunc
 
; чтение пути редактора из реестра
Func _edreg1()
$type = RegRead("HKEY_CLASSES_ROOT\AutoIt3Script\Shell\Open\Command", "")
If StringInStr($type,'AutoIt3.exe')<>0 Then $type = RegRead("HKEY_CLASSES_ROOT\AutoIt3Script\Shell\Run\Command", "")
If @error=1 Then return
$aPathexe=StringRegExp($type, "(^.*)exe(.*)$", 3)
If @error=1 Then return
$Pathexe1 = StringReplace($aPathexe[0], '"', '')
If FileExists($Pathexe1&'exe') Then GUICtrlSetData($RedInp1, $Pathexe1&'exe')
EndFunc
 
; чтение пути редактора из реестра
Func _edreg2()
$type = RegRead("HKEY_CLASSES_ROOT\AutoIt3Script\Shell\Edit\Command", "")
If @error=1 Then return
$aPathexe=StringRegExp($type, "(^.*)exe(.*)$", 3)
If @error=1 Then return
$Pathexe1 = StringReplace($aPathexe[0], '"', '')
If FileExists($Pathexe1&'exe') Then GUICtrlSetData($RedInp2, $Pathexe1&'exe')
EndFunc
 
 
; заполнение комбобокса списком пунктов реестра
Func _genlist()
GUICtrlSendMsg($genlist, 0x14B, 0, 0)
$regst=''
For $i = 1 to 20
$regShell = RegEnumKey("HKEY_CLASSES_ROOT\AutoIt3Script\Shell", $i)
if @error <> 0 Then ExitLoop
$regst&='|'&$regShell
next
GUICtrlSetData($genlist,$regst, '')
EndFunc
 
 
; очистка комбобоксов
Func _clear()
GUICtrlSendMsg($OpenCom, 0x14B, 0, 0)
GUICtrlSendMsg($EditCom, 0x14B, 0, 0)
GUICtrlSendMsg($CompCom, 0x14B, 0, 0)
GUICtrlSendMsg($RunCom, 0x14B, 0, 0)
EndFunc
 
; установка английского языка
Func _langen()
GUICtrlSetData($OpenCom,'Открыть в редакторе|Open', 'Open')
GUICtrlSetData($EditCom,'Изменить|Edit Script', 'Edit Script')
GUICtrlSetData($CompCom,'Компилировать в EXE|Compile Script', 'Compile Script')
GUICtrlSetData($RunCom,'Выполнить скрипт|Run Script', 'Run Script')
EndFunc
 
; установка русского языка
Func _langrus()
GUICtrlSetData($OpenCom,'Открыть в редакторе|Open', 'Открыть в редакторе')
GUICtrlSetData($EditCom,'Изменить|Edit Script', 'Изменить')
GUICtrlSetData($CompCom,'Компилировать в EXE|Compile Script', 'Компилировать в EXE')
GUICtrlSetData($RunCom,'Выполнить скрипт|Run Script', 'Выполнить скрипт')
EndFunc
 
; чтение переменных, проверка валидности параметров
Func _read()
$err1=1
If GUICtrlRead ($run_m)=1 Then
    $run_m0='Run'
Else
    $run_m0='Open'
EndIf
$AutInp0=GUICtrlRead ($AutInp)
$RedInp01=GUICtrlRead ($RedInp1)
$RedInp02=GUICtrlRead ($RedInp2)
$OpenCom0=GUICtrlRead ($OpenCom)
$EditCom0=GUICtrlRead ($EditCom)
$CompCom0=GUICtrlRead ($CompCom)
$RunCom0=GUICtrlRead ($RunCom)
If $OpenCom0='' Then $OpenCom0='Open'
If $EditCom0='' Then $EditCom0='Edit Script'
If $CompCom0='' Then $CompCom0='Compile Script'
If $RunCom0='' Then $RunCom0='Run Script'
 
If $AutInp0='' or Not FileExists($AutInp0) Then
MsgBox(0, "Ошибка", "Укажите правильно путь к AutoIt3.exe")
return
EndIf
 
$aPathAut0 = StringRegExp($AutInp0, "(^.*)\\(.*)$", 3)
 
; пробуем определить редактор1
If Not FileExists($RedInp01) Then
    If FileExists($aPathAut0[0]&'\SciTE\SciTE.exe') Then
        $RedInp01=$aPathAut0[0]&'\SciTE\SciTE.exe'
    Else
        $type = RegRead("HKEY_CLASSES_ROOT\AutoIt3Script\Shell\Open\Command", "")
        If StringInStr($type,'AutoIt3.exe')<>0 Then $type = RegRead("HKEY_CLASSES_ROOT\AutoIt3Script\Shell\Run\Command", "")
        If @error=1 Then return
        $aPathexe=StringRegExp($type, "(^.*)exe(.*)$", 3)
        If @error=1 Then return
        $Pathexe1 = StringReplace($aPathexe[0], '"', '')
        If FileExists($Pathexe1&'exe') Then $RedInp01=$Pathexe1&'exe'
    EndIf
EndIf
If Not FileExists($RedInp01) Then MsgBox(0, "Ошибка", "Не найден путь к основному редактору")
 
; пробуем определить редактор2
If Not FileExists($RedInp02) Then
    If FileExists($aPathAut0[0]&'\SciTE\SciTE.exe') Then
        $RedInp02=$aPathAut0[0]&'\SciTE\SciTE.exe'
    Else
        $type = RegRead("HKEY_CLASSES_ROOT\AutoIt3Script\Shell\Edit\Command", "")
        If @error=1 Then return
        $aPathexe=StringRegExp($type, "(^.*)exe(.*)$", 3)
        If @error=1 Then return
        $Pathexe1 = StringReplace($aPathexe[0], '"', '')
        If FileExists($Pathexe1&'exe') Then $RedInp02=$Pathexe1&'exe'
    EndIf
EndIf
If Not FileExists($RedInp02) Then MsgBox(0, "Ошибка", "Не найден путь к дополнительному редактору")
If FileExists($RedInp02) and $RedInp02<>'' and FileExists($RedInp01) and $RedInp01<>'' and FileExists($AutInp0) and $AutInp0<>'' Then
$err1=0
GUICtrlSetData($RedInp2, $RedInp02)
GUICtrlSetData($RedInp1, $RedInp01)
EndIf
EndFunc
 
; устранение проблем интерфейса
Func _WinAPI_GetThemeColor($hWnd, $sClass, $iPart, $iState, $iProp)
    Local $hTheme = DllCall('uxtheme.dll', 'ptr', 'OpenThemeData', 'hwnd', $hWnd, 'wstr', $sClass)
    Local $Ret = DllCall('uxtheme.dll', 'lresult', 'GetThemeColor', 'ptr', $hTheme[0], 'int', $iPart, 'int', $iState, 'int', $iProp, 'dword*', 0)
 
    If (@error) Or ($Ret[0] < 0) Then
        $Ret = -1
    EndIf
    DllCall('uxtheme.dll', 'lresult', 'CloseThemeData', 'ptr', $hTheme[0])
    If $Ret = -1 Then
        Return SetError(1, 0, -1)
    EndIf
    Return SetError(0, 0, BitOR(BitAND($Ret[5], 0x00FF00), BitShift(BitAND($Ret[5], 0x0000FF), -16), BitShift(BitAND($Ret[5], 0xFF0000), 16)))
EndFunc   ;==>_WinAPI_GetThemeColor

Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 20:28 01-03-2010 | Исправлено: AZJIO, 20:34 06-04-2010
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 2)
Widok (01-06-2010 13:08): Лимит страниц. Продолжаем здесь.


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru