SHARE
TWEET

portable_v1.6_AutoIt3.au3

AZJIO Nov 9th, 2011 359 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;  @AZJIO 19.03.2010
  2. #NoTrayIcon
  3. Global $AutInp0, $RedInp01, $RedInp02, $OpenCom0, $EditCom0, $CompCom0, $RunCom0, $aPathAut0, $err1, $run_m0, $OpenCom, $EditCom, $CompCom, $RunCom, $filesave1, $aRegList
  4. $as='HKCR\AutoIt3Script'
  5.  
  6. $Gui = GUICreate("Portable AutoIt3",  528, 401, -1, -1, -1, 0x00000010)
  7. $StatusBar = GUICtrlCreateLabel('Строка состояния', 5,383,560,18)
  8. GUICtrlCreateLabel ("используйте drag-and-drop", 250,3,200,18)
  9.  
  10. $tab=GUICtrlCreateTab (0,2, 528,401-20) ; размер вкладки
  11. $hTab = GUICtrlGetHandle($tab)
  12. $tab1=GUICtrlCreateTabitem ("AutoIt3") ; имя вкладки
  13.  
  14. $assreg = GUICtrlCreateButton("Ассоциировать", 380, 40, 122, 25)
  15. GUICtrlSetTip(-1, "Зарегистрировать расширение"&@CRLF&"и контекстное меню с AutoIt3")
  16. $zareg = GUICtrlCreateButton("Зарегистрировать", 380, 71, 122, 25)
  17. GUICtrlSetTip(-1, "Аналогично установке AutoIt3")
  18. $delreg = GUICtrlCreateButton("Удалить регистрацию", 380, 102, 122, 25)
  19. GUICtrlSetTip(-1, "Удалить все упоминания"&@CRLF&"об AutoIt3 в реестре")
  20. $reau3 = GUICtrlCreateButton("1 Создать re_au3", 380, 133, 107, 25)
  21. GUICtrlSetTip(-1, "Для переназначения из контекстного меню"&@CRLF&"Выполнять или Открывать скрипт кликом мыши.")
  22. $reau4 = GUICtrlCreateButton("2 Создать re_au3", 380, 164, 107, 25)
  23. GUICtrlSetTip(-1, "Нестандартный вариант, но даёт возможность"&@CRLF&"в справке выполнять скрипты вместо открытия в редакторе.")
  24. $reaust3 = GUICtrlCreateButton("s", 487, 133, 15, 25)
  25. GUICtrlSetTip(-1, "Выполнить re_au3.au3")
  26. $reaust4 = GUICtrlCreateButton("s", 487, 164, 15, 25)
  27. GUICtrlSetTip(-1, "Выполнить re_au3.au3")
  28.  
  29. $lang=GUICtrlCreateGroup ("Язык контекстного меню", 345, 195, 150, 55)
  30. GUIStartGroup()
  31. $russet = GUICtrlCreateRadio("Russian", 350, 211, 67, 20)
  32. GUICtrlSetTip(-1, "Обновить раскрывающиеся списки")
  33. $enset = GUICtrlCreateRadio("English", 350, 228, 67, 20)
  34. GUICtrlSetTip(-1, "Обновить раскрывающиеся списки")
  35.  
  36. $act=GUICtrlCreateGroup ("Действие кликом мыши", 345, 255, 150, 55)
  37. GUIStartGroup()
  38. $run_m = GUICtrlCreateRadio("Выполнить скрипт", 350, 271, 137, 20)
  39. GUICtrlSetTip(-1, "Сохраняется при выборе")
  40. $open_m = GUICtrlCreateRadio("Открыть скрипт", 350, 288, 137, 20)
  41. GUICtrlSetTip(-1, "Сохраняется при выборе")
  42. If RegRead($as&"\Shell", "") = "Run" Then
  43.         GUICtrlSetState ($run_m,1)
  44. Else
  45.         GUICtrlSetState ($open_m,1)
  46. EndIf
  47.  
  48. $AutLab = GUICtrlCreateLabel("Путь к AutoIt3.exe", 24, 40, 130, 17)
  49. $AutInp = GUICtrlCreateInput("", 24, 57, 305, 21)
  50. GUICtrlSetState(-1,8)
  51. $folder1 = GUICtrlCreateButton("...", 337, 56, 27, 23)
  52. GUICtrlSetFont (-1,13)
  53.  
  54. $RedLab1 = GUICtrlCreateLabel("Путь к основному редактору", 24, 90, 186, 17)
  55. $RedInp1 = GUICtrlCreateInput("", 24, 107, 305, 21)
  56. GUICtrlSetState(-1,8)
  57. $folder2 = GUICtrlCreateButton("...", 337, 106, 27, 23)
  58. GUICtrlSetFont (-1,13)
  59.  
  60. $RedLab2 = GUICtrlCreateLabel("Путь к дополнительному редактору", 24, 140, 186, 17)
  61. $RedInp2 = GUICtrlCreateInput("", 24, 157, 305, 21)
  62. GUICtrlSetState(-1,8)
  63. $folder3 = GUICtrlCreateButton("...", 337, 156, 27, 23)
  64. GUICtrlSetFont (-1,13)
  65.  
  66. $OpenLab=GUICtrlCreateLabel ('Пункт "Открыть"', 20,200,130,20)
  67. $OpenCom=GUICtrlCreateCombo ("", 150,197,180,18)
  68.  
  69. $EditLab=GUICtrlCreateLabel ('Пункт "Изменить"', 20,230,130,20)
  70. $EditCom=GUICtrlCreateCombo ("", 150,227,180,18)
  71.  
  72. $CompLab=GUICtrlCreateLabel ('Пункт "Компилировать"', 20,260,130,20)
  73. $CompCom=GUICtrlCreateCombo ("", 150,257,180,18)
  74.  
  75. $RunLab=GUICtrlCreateLabel ('Пункт "Выполнить"', 20,290,130,20)
  76. $RunCom=GUICtrlCreateCombo ("", 150,287,180,18)
  77.  
  78. If RegRead($as&"\Shell\Open", "") = "Open" Then
  79.         GUICtrlSetState ($enset,1)
  80.         _langen()
  81. Else
  82.         GUICtrlSetState ($russet,1)
  83.         _langrus()
  84. EndIf
  85.  
  86. $auopen = GUICtrlCreateButton("открыть", 152, 37, 55, 20)
  87. GUICtrlSetTip(-1, "Открыть каталог")
  88. $aureg = GUICtrlCreateButton("v реестр", 213, 37, 55, 20)
  89. GUICtrlSetTip(-1, "Прочитать путь из реестра")
  90. $cl = GUICtrlCreateButton("Очистить", 274, 37, 55, 20)
  91. GUICtrlSetTip(-1, "Очистить все (3) поля ввода")
  92.  
  93. $edreg1 = GUICtrlCreateButton("v реестр", 213, 87, 55, 20)
  94. GUICtrlSetTip(-1, "Прочитать путь из реестра")
  95. $root1 = GUICtrlCreateButton("v корень", 274, 87, 55, 20)
  96. GUICtrlSetTip(-1, "Копировать путь от корня AutoIt3.exe")
  97.  
  98. $edreg2 = GUICtrlCreateButton("v реестр", 213, 137, 55, 20)
  99. GUICtrlSetTip(-1, "Прочитать путь из реестра")
  100. $root2 = GUICtrlCreateButton("v корень", 274, 137, 55, 20)
  101. GUICtrlSetTip(-1, "Копировать путь от корня AutoIt3.exe")
  102.  
  103. $Save = GUICtrlCreateButton("Save", 344, 320, 57, 23)
  104. GUICtrlSetTip(-1, "Сохранить путь к AutoIt3"&@CRLF&"создание списка версий.")
  105.  
  106. $SaveCom=GUICtrlCreateCombo ("", 24,405,305,22)
  107. GUICtrlSetTip(-1, "Список версий")
  108.  
  109. If FileExists(@ScriptDir&"\vAutoIt3.txt") Then
  110.         GUICtrlSetPos($SaveCom, 24,320)
  111.         $filesave = FileOpen(@ScriptDir&"\vAutoIt3.txt", 0)
  112.         $filesave1 = FileRead($filesave)
  113.         GUICtrlSetData($SaveCom,$filesave1, '')
  114.         FileClose($filesave)
  115. EndIf
  116.  
  117. $folder4 = GUICtrlCreateButton("Добавить", 344, 350, 57, 23)
  118. GUICtrlSetTip(-1, "Добавить пункт"&@CRLF&"в контекстное меню")
  119. $delitem = GUICtrlCreateButton("Удалить", 411, 350, 57, 23)
  120. GUICtrlSetTip(-1, "Удалить пункт"&@CRLF&"из контекстного меню"&@CRLF&"указанный в списке")
  121. $savereg = GUICtrlCreateButton("SAVE REG", 411, 320, 57, 23)
  122. GUICtrlSetTip(-1, "Сохранить настройки"&@CRLF&"из реестра в reg-файл")
  123. $genlist=GUICtrlCreateCombo ("", 24,350,305,22)
  124. GUICtrlSetTip(-1, "Список контекстного меню"&@CRLF&"в реестре")
  125. _genlist()
  126.  
  127. $tab2=GUICtrlCreateTabitem ("    ?") ; имя вкладки
  128. 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)
  129. GUICtrlCreateLabel ('@AZJIO  19.03.2010, v1.6', 380,350,130,20)
  130. GUICtrlCreateTabitem ("")   ; конец вкладок
  131.  
  132. ; устранение проблем интерфейса
  133. Switch @OSVersion
  134.     Case 'WIN_2000', 'WIN_XP', 'WIN_2003'
  135.         $Part = 10
  136.     Case Else
  137.         $Part = 11
  138. EndSwitch
  139. $Color = _WinAPI_GetThemeColor($hTab, 'TAB', $Part, 1, 0x0EED)
  140. If Not @error Then
  141.     GUICtrlSetBkColor($russet, $Color)
  142.     GUICtrlSetBkColor($enset, $Color)
  143.     GUICtrlSetBkColor($run_m, $Color)
  144.     GUICtrlSetBkColor($open_m, $Color)
  145.     GUICtrlSetBkColor($lang, $Color)
  146.     GUICtrlSetBkColor($act, $Color)
  147. EndIf
  148.  
  149. ;вызов функций автозаполнения input из реестра
  150. _aureg()
  151. _edreg1()
  152. _edreg2()
  153.  
  154. GUISetState ()
  155.  
  156.         While 1
  157.                 $msg = GUIGetMsg()
  158.                 Select
  159.                         Case $msg = -13
  160.                                 If @GUI_DropID=$AutInp Then
  161.                                         GUICtrlSetData($AutInp, @GUI_DRAGFILE)
  162.                                         GUICtrlSetData ($StatusBar, "Выбран AutoIt3.exe, версия - "&FileGetVersion(@GUI_DRAGFILE))
  163.                                 ;заполнение полей редакторов реестровыми путями
  164.                                 _edreg1()
  165.                                 _edreg2()
  166.                                 EndIf
  167.                                 If @GUI_DropID=$RedInp1 Then
  168.                                         If StringRight(@GUI_DRAGFILE, 4) = ".lnk" Or StringRight(@GUI_DRAGFILE, 4) = ".exe"  Then
  169.                                                 If StringRight( @GUI_DRAGFILE, 4 )  = ".lnk" Then ; принятие если lnk (ярлык) и объект (exe) в переменную
  170.                                                         $aLNK = FileGetShortcut(@GUI_DRAGFILE)
  171.                                                         $EXE=$aLNK[0]
  172.                                                 EndIf
  173.                                                 If StringRight( @GUI_DRAGFILE, 4 )  = ".exe" Then $EXE=@GUI_DRAGFILE ; принятие exe-файла
  174.                                                 GUICtrlSetData($RedInp1, $EXE)
  175.                                         Else
  176.                                                 MsgBox(0, "Ошибка", "Файл не является программой (*.exe).")
  177.                                                 GUICtrlSetData($RedInp1, '')
  178.                                         Endif
  179.                                 Endif
  180.                                 If @GUI_DropID=$RedInp2 Then
  181.                                         If StringRight(@GUI_DRAGFILE, 4) = ".lnk" Or StringRight(@GUI_DRAGFILE, 4) = ".exe"  Then
  182.                                                 If StringRight( @GUI_DRAGFILE, 4 )  = ".lnk" Then ; принятие если lnk (ярлык) и объект (exe) в переменную
  183.                                                         $aLNK = FileGetShortcut(@GUI_DRAGFILE)
  184.                                                         $EXE=$aLNK[0]
  185.                                                 EndIf
  186.                                                 If StringRight( @GUI_DRAGFILE, 4 )  = ".exe" Then $EXE=@GUI_DRAGFILE ; принятие exe-файла
  187.                                                 GUICtrlSetData($RedInp2, $EXE)
  188.                                         Else
  189.                                                 MsgBox(0, "Ошибка", "Файл не является программой (*.exe).")
  190.                                                 GUICtrlSetData($RedInp2, '')
  191.                                         Endif
  192.                                 Endif
  193.                         Case $msg = $delreg
  194.                                 _split()
  195.                                 For $i=1 To $aRegList[0]
  196.                                         RegDelete($aRegList[$i])
  197.                                 Next
  198.                                 GUICtrlSetData ($StatusBar, "Удаление регистрации в реестре выполнено.")
  199.                         Case $msg = $zareg
  200.                                 _read()
  201.                                 If $err1<>0 Then ContinueLoop
  202.                                 RegWrite("HKCR\.au3","","REG_SZ",'AutoIt3Script')
  203.                                 RegWrite($as,"","REG_SZ",'AutoIt v3 Script')
  204.                                 RegWrite($as&"\Shell\Open","","REG_SZ",$OpenCom0)
  205.                                 RegWrite($as&"\Shell\Open\Command","","REG_SZ",'"'&$RedInp01&'" "%1"')
  206.                                 RegWrite($as&"\Shell\Run","","REG_SZ",$RunCom0)
  207.                                 RegWrite($as&"\Shell\Run\Command","","REG_SZ",'"'&$AutInp0&'" "%1" %*')
  208.                                 RegWrite($as&"\Shell\Compile","","REG_SZ",$CompCom0)
  209.                                 RegWrite($as&"\Shell\Compile\Command","","REG_SZ",'"'&$aPathAut0[0]&'\Aut2Exe\Aut2Exe.exe" /in "%l"')
  210.                                 RegWrite($as&"\Shell\Edit","","REG_SZ",$EditCom0)
  211.                                 RegWrite($as&"\Shell\Edit\Command","","REG_SZ",'"'&$RedInp02&'" "%1"')
  212.                                
  213.                                 RegWrite($as&"\Shell","","REG_SZ",$run_m0)
  214.                                 RegWrite("HKCR\.au3\ShellNew","FileName","REG_SZ",'Template.au3')
  215.                                 RegWrite("HKCR\.au3","PerceivedType","REG_SZ",'text')
  216.                                 RegWrite("HKCR\.au3\PersistentHandler","","REG_SZ",'{5e941d80-bf96-11cd-b579-08002b30bfeb}')
  217.  
  218.                                 RegWrite("HKCR\AutoIt3XScript","","REG_SZ",'AutoIt v3 Encoded Script')
  219.                                 RegWrite("HKCR\AutoIt3XScript\Shell","","REG_SZ",'Run')
  220.                                 RegWrite("HKCR\AutoIt3XScript\Shell\Run","","REG_SZ",'Run Script')
  221.                                 RegWrite("HKCR\AutoIt3XScript\Shell\Run\Command","","REG_SZ",'"'&$AutInp0&'" "%1" %*')
  222.  
  223.                                 RegWrite("HKCU\Software\AutoIt v3\Aut2Exe","LastExeDir","REG_SZ",'My Documents')
  224.                                 RegWrite("HKCU\Software\AutoIt v3\Aut2Exe","LastScriptDir","REG_SZ",'My Documents')
  225.                                 RegWrite("HKCU\Software\AutoIt v3\Aut2Exe","LastIconDir","REG_SZ",'"'&$aPathAut0[0]&'\Aut2Exe\Icons"')
  226.                                 RegWrite("HKCU\Software\AutoIt v3\Aut2Exe","LastIcon","REG_SZ",'')
  227.                                 RegWrite("HKCU\Software\AutoIt v3\Aut2Exe","LastCompression","REG_DWORD",'2')
  228.                                 RegWrite("HKCU\Software\AutoIt v3\Aut2Exe","AllowDecompile","REG_DWORD",'1')
  229.  
  230.                                 RegWrite("HKLM\SOFTWARE\AutoIt v3\AutoIt","InstallDir","REG_SZ",$aPathAut0[0])
  231.                                 RegWrite("HKLM\SOFTWARE\AutoIt v3\AutoIt","Version","REG_SZ",'v'&FileGetVersion($AutInp0))
  232.                                 RegWrite("HKCR\.a3x","","REG_SZ",'AutoIt3XScript')
  233.  
  234.                                 RegWrite("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Au3Info.exe","","REG_SZ",$aPathAut0[0]&'\Au3Info.exe')
  235.                                 RegWrite("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Aut2Exe.exe","","REG_SZ",$aPathAut0[0]&'\Aut2Exe\Aut2Exe.exe')
  236.                                 RegWrite("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\AutoIt3.exe","","REG_SZ",$aPathAut0[0]&'\AutoIt3.exe')
  237.                                
  238.                                 $un='HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\AutoItv3'
  239.                                 RegWrite($un,"DisplayName","REG_SZ",'AutoIt v'&FileGetVersion($AutInp0))
  240.                                 RegWrite($un,"UninstallString","REG_SZ",$aPathAut0[0]&'\Uninstall.exe')
  241.                                 RegWrite($un,"DisplayIcon","REG_SZ",$aPathAut0[0]&'\AutoIt3.exe,0')
  242.                                 RegWrite($un,"URLInfoAbout","REG_SZ",'http://www.autoitscript.com/autoit3')
  243.                                 RegWrite($un,"Publisher","REG_SZ",'AutoIt Team')
  244.                                 RegWrite($un,"NoModify","REG_DWORD",'1')
  245.                                 RegWrite($un,"NoRepair","REG_DWORD",'1')
  246.  
  247.                                 If FileExists ($aPathAut0[0]&'\AutoItX\AutoItX3.dll') Then ShellExecute(@SystemDir&'\regsvr32.exe','/s "'&$aPathAut0[0]&'\AutoItX\AutoItX3.dll"','','', @SW_HIDE )
  248.                                 If FileExists ($aPathAut0[0]&'\Icons\au3script_v10.ico') Then
  249.                                         RegWrite($as&"\DefaultIcon","","REG_SZ",$aPathAut0[0]&'\Icons\au3script_v10.ico')
  250.                                         RegWrite("HKCR\AutoIt3XScript\DefaultIcon","","REG_SZ",$aPathAut0[0]&'\Icons\au3script_v10.ico')
  251.                                         DllCall("shell32.dll", "none", "SHChangeNotify", "long", '0x8000000', "uint", '0x1000', "ptr", '0', "ptr", '0')
  252.                                 Endif
  253.                                 GUICtrlSetData ($StatusBar, "Регистрация выполнена. Версия AutoIt3 - "&FileGetVersion($AutInp0))
  254.  
  255.                         Case $msg = $assreg
  256.                                 _read()
  257.                                 If $err1<>0 Then ContinueLoop
  258.                                         RegWrite("HKCR\.au3","","REG_SZ",'AutoIt3Script')
  259.                                         RegWrite($as&"\Shell","","REG_SZ",$run_m0)
  260.                                         RegWrite($as,"","REG_SZ",'AutoIt v3 Script')
  261.                                         RegWrite($as&"\Shell\Open","","REG_SZ",$OpenCom0)
  262.                                         RegWrite($as&"\Shell\Open\Command","","REG_SZ",'"'&$RedInp01&'" "%1"')
  263.                                         RegWrite($as&"\Shell\Run","","REG_SZ",$RunCom0)
  264.                                         RegWrite($as&"\Shell\Run\Command","","REG_SZ",'"'&$AutInp0&'" "%1" %*')
  265.                                         RegWrite($as&"\Shell\Compile","","REG_SZ",$CompCom0)
  266.                                         RegWrite($as&"\Shell\Compile\Command","","REG_SZ",'"'&$aPathAut0[0]&'\Aut2Exe\Aut2Exe.exe" /in "%l"')
  267.                                         RegWrite($as&"\Shell\Edit","","REG_SZ",$EditCom0)
  268.                                         RegWrite($as&"\Shell\Edit\Command","","REG_SZ",'"'&$RedInp02&'" "%1"')
  269.                                 If FileExists ($aPathAut0[0]&'\Icons\au3script_v10.ico') Then
  270.                                                 RegWrite($as&"\DefaultIcon","","REG_SZ",'"'&$aPathAut0[0]&'\Icons\au3script_v10.ico"')
  271.                                                 RegWrite("HKCR\AutoIt3XScript\DefaultIcon","","REG_SZ",'"'&$aPathAut0[0]&'\Icons\au3script_v10.ico"')
  272.                                                 DllCall("shell32.dll", "none", "SHChangeNotify", "long", '0x8000000', "uint", '0x1000', "ptr", '0', "ptr", '0')
  273.                                 Endif
  274.                                         RegWrite("HKLM\SOFTWARE\AutoIt v3\AutoIt","InstallDir","REG_SZ",$aPathAut0[0])
  275.                                         ;RegWrite($as&"\DefaultIcon","","REG_SZ",'assot.dll,20')
  276.                                 GUICtrlSetData ($StatusBar, "Ассоциации выполнены. Версия AutoIt3 - "&FileGetVersion($AutInp0))
  277.                         Case $msg = $reau3
  278.                                 _read()
  279.                                 If $err1<>0 Then ContinueLoop
  280.                                 RegWrite($as&"\Shell\rx_re","","REG_SZ",'Переназначить au3')
  281.                                 RegWrite($as&"\Shell\rx_re\Command","","REG_SZ",'"'&$AutInp0&'" "'&$aPathAut0[0]&'\re_au3.au3" %*')
  282.                                 $file = FileOpen($aPathAut0[0]&'\re_au3.au3', 2)
  283.                                 $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
  284.                                 FileWrite($file, $sText)
  285.                                 FileClose($file)
  286.                                 GUICtrlSetData ($StatusBar, "Файл re_au3.au3 создан.")
  287.                                 _genlist()
  288.                                
  289.                         Case $msg = $reau4
  290.                                 _read()
  291.                                 If $err1<>0 Then ContinueLoop
  292.                                 RegWrite($as&"\Shell\rx_re","","REG_SZ",'Переназначить au3')
  293.                                 RegWrite($as&"\Shell\rx_re\Command","","REG_SZ",'"'&$AutInp0&'" "'&$aPathAut0[0]&'\re_au3.au3" %*')
  294.                                 $file = FileOpen($aPathAut0[0]&'\re_au3.au3', 2)
  295.                                 $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
  296.                                 FileWrite($file, $sText)
  297.                                 FileClose($file)
  298.                                 GUICtrlSetData ($StatusBar, "Файл re_au3.au3 создан.")
  299.                                 _genlist()
  300.                                        
  301.                                         ; кнопки выбора языка
  302.                         Case $msg = $russet
  303.                                 _clear()
  304.                                 _langrus()
  305.                         Case $msg = $enset
  306.                                 _clear()
  307.                                 _langen()
  308.                                
  309.                         Case $msg = $run_m
  310.                                 RegWrite($as&"\Shell","","REG_SZ",'Run')
  311.                         Case $msg = $open_m
  312.                                 RegWrite($as&"\Shell","","REG_SZ",'Open')
  313.                                
  314.                                 ;  мелкие кнопки
  315.                         Case $msg = $auopen
  316.                                 $AutInp0=GUICtrlRead ($AutInp)
  317.                                 If FileExists($AutInp0) Then
  318.                                         $aPathAut0 = StringRegExp($AutInp0, "(^.*)\\(.*)$", 3)
  319.                                 Else
  320.                                         ContinueLoop
  321.                                 EndIf
  322.                                 If FileExists($aPathAut0[0]) Then Run('Explorer.exe '&$aPathAut0[0])
  323.                         Case $msg = $aureg
  324.                                 _aureg()
  325.                         Case $msg = $edreg1
  326.                                 _edreg1()
  327.                         Case $msg = $root1
  328.                                 _read()
  329.                                 If $err1<>0 Then ContinueLoop
  330.                                 GUICtrlSetData($RedInp1, $aPathAut0[0]&'\SciTE\SciTE.exe')
  331.                         Case $msg = $edreg2
  332.                                 _edreg2()
  333.                         Case $msg = $root2
  334.                                 _read()
  335.                                 If $err1<>0 Then ContinueLoop
  336.                                 GUICtrlSetData($RedInp2, $aPathAut0[0]&'\SciTE\SciTE.exe')
  337.                         Case $msg = $cl
  338.                                 GUICtrlSetData($AutInp, '')
  339.                                 GUICtrlSetData($RedInp1, '')
  340.                                 GUICtrlSetData($RedInp2, '')
  341.                                
  342.                         Case $msg = $Save
  343.                                 $filesave = FileOpen(@ScriptDir&"\vAutoIt3.txt", 1)
  344.                                 _read()
  345.                                 ;If StringInStr($filesave1, '\Q'&$AutInp0&'\E')=0 Then
  346.                                 If StringRegExp($filesave1, '\Q'&$AutInp0&'\E',0)<>0 Then
  347.                                         MsgBox(0, "Ошибка", "Этот путь к AutoIt3.exe уже существует в списке")
  348.                                         FileClose($filesave)
  349.                                         ContinueLoop
  350.                                 EndIf
  351.                                 If FileExists($AutInp0) Then
  352.                                         FileWrite($filesave, '|'&$AutInp0&' '&FileGetVersion($AutInp0))
  353.                                         FileClose($filesave)
  354.                                         ; обновление списка
  355.                                         $filesave = FileOpen(@ScriptDir&"\vAutoIt3.txt", 0)
  356.                                         $filesave1 = FileRead($filesave)
  357.                                         FileClose($filesave)
  358.                                         GUICtrlSendMsg($SaveCom, 0x14B, 0, 0)
  359.                                         GUICtrlSetData($SaveCom,$filesave1, '')
  360.                                         GUICtrlSetPos($SaveCom, 24,320)
  361.                                 EndIf
  362.                         Case $msg = $SaveCom
  363.                                 $SaveCom0 = GUICtrlRead ($SaveCom)
  364.                                 If StringInStr($SaveCom0,'.exe')<>0 Then
  365.                                         $aSC0=StringRegExp($SaveCom0, "(^.*)exe(.*)$", 3)
  366.                                         If FileExists($aSC0[0]&'exe') Then
  367.                                                 GUICtrlSetData ($StatusBar, "Выбран AutoIt3.exe, версия - "&FileGetVersion($aSC0[0]&'exe'))
  368.                                         Else
  369.                                                 GUICtrlSetData ($StatusBar, "Путь неверный")
  370.                                         EndIf
  371.                                         GUICtrlSetData($AutInp,$aSC0[0]&'exe')
  372.                                 EndIf
  373.                                 ;заполнение полей редакторов реестровыми путями при выборе из списка SAVE.
  374.                                 _edreg1()
  375.                                 _edreg2()
  376.                                 ; выполнить re_au3.au3
  377.                         Case $msg = $reaust3 or $msg = $reaust4
  378.                                 _aureg()
  379.                                 _read()
  380.                                 Run('"'&$AutInp0&'" "'&$aPathAut0[0]&'\re_au3.au3"', '', @SW_HIDE)
  381.                                
  382.                                 ; кнопки обзор
  383.                         Case $msg = $folder1
  384.                                 $folder01 = FileOpenDialog("Указать AutoIt3.exe", @WorkingDir & "", "AutoIt3 (*.exe)", 1 + 4 )
  385.                                 If @error Then ContinueLoop
  386.                                 GUICtrlSetData($AutInp, $folder01)
  387.                                 GUICtrlSetData ($StatusBar, "Выбран AutoIt3.exe, версия - "&FileGetVersion($folder01))
  388.                         Case $msg = $folder2
  389.                                 $folder01 = FileOpenDialog("Указать основной редкатор", @WorkingDir & "", "Редкатор1 (*.exe)", 1 + 4 )
  390.                                 If @error Then ContinueLoop
  391.                                 GUICtrlSetData($RedInp1, $folder01)
  392.                                 GUICtrlSetData ($StatusBar, "Редактор 1 выбран.")
  393.                         Case $msg = $folder3
  394.                                 $folder01 = FileOpenDialog("Указать дополнительный редкатор", @WorkingDir & "", "Редкатор2 (*.exe)", 1 + 4 )
  395.                                 If @error Then ContinueLoop
  396.                                 GUICtrlSetData($RedInp2, $folder01)
  397.                                 GUICtrlSetData ($StatusBar, "Редактор 2 выбран.")
  398.                         Case $msg = $folder4
  399.                                 $folder01 = FileOpenDialog("Указать *.exe", @WorkingDir & "", " (*.exe)", 1 + 4 )
  400.                                 If @error Then ContinueLoop
  401.                                 $aFolder = StringRegExp($folder01, "(^.*)\\(.*)\.(.*)$", 3)
  402.                                 If $aFolder[2]='exe' Then
  403.                                 If $aFolder[1]='AutoIt3Wrapper' or $aFolder[1]='AutoIt3Wrapper_Gui' or $aFolder[1]='Aut2exe' or $aFolder[1]='Aut2exe_x64' Then
  404.                                         RegWrite($as&"\Shell\"&$aFolder[1]&"\command","","REG_SZ",'"'&$folder01&'" /in "%1"')
  405.                                 Else
  406.                                         RegWrite($as&"\Shell\"&$aFolder[1]&"\command","","REG_SZ",'"'&$folder01&'" "%1"')
  407.                                 EndIf
  408.                                 EndIf
  409.                                 _genlist()
  410.                                 GUICtrlSetData ($StatusBar, 'Пункт "'&$aFolder[1]&'" добавлен в контекстное меню')
  411.                         Case $msg = $delitem
  412.                                 $genlist0=GUICtrlRead ($genlist)
  413.                                 RegDelete("HKEY_CLASSES_ROOT\AutoIt3Script\Shell\"&$genlist0)
  414.                                 _genlist()
  415.                         Case $msg = $savereg
  416.                                 _aureg()
  417.                                 _read()
  418.                                 $Aut_v=FileGetVersion($AutInp0)
  419.                                 $tempfile=@TempDir&'\temp8491.reg'
  420.                                 ; генерируем имя нового файла с номером копии на случай если файл существует
  421.                                 $i = 1
  422.                                 While FileExists(@ScriptDir&'\save'&$i&'_AutoIt3_v'&$Aut_v&'.reg')
  423.                                    $i +=1
  424.                                 WEnd
  425.                                 $regfile=@ScriptDir&'\save'&$i&'_AutoIt3_v'&$Aut_v&'.reg'
  426.                                 $regfileF = FileOpen($regfile, 1) ; открываем бэкап-файл
  427.                                 FileWrite($regfileF,"Windows Registry Editor Version 5.00"&@CRLF&@CRLF)
  428.                                 ; массив данных для экспорта
  429.                                 _split()
  430.                                 $Data=''
  431.                                 For $i=1 To $aRegList [0]
  432.                                         RunWait ( @Comspec&' /C reg export "'&$aRegList[$i]&'" "'&$tempfile&'"', '', @SW_HIDE )
  433.                                         $vr = FileOpen($tempfile, 0)
  434.                                         $vr1 = FileRead($vr)
  435.                                         $vr1 = StringReplace($vr1, "Windows Registry Editor Version 5.00"&@CRLF, '')
  436.                                         $Data &=$vr1
  437.                                         FileClose($vr)
  438.                                 Next
  439.                                 FileWrite($regfileF, $Data&@CRLF)
  440.                                 FileClose($regfileF)
  441.                         Case $msg = -3
  442.                                 ExitLoop
  443.                 EndSelect
  444.         WEnd
  445.  
  446. ; создание массива веток реестра
  447. Func _split()
  448. $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', "|")
  449. EndFunc
  450.  
  451. ; чтение пути к AutoIt3 из реестра
  452. Func _aureg()
  453. $type = RegRead("HKEY_CLASSES_ROOT\AutoIt3Script\Shell\Run\Command", "")
  454. If StringInStr($type,'AutoIt3.exe')=0 Then $type = RegRead("HKEY_CLASSES_ROOT\AutoIt3Script\Shell\Open\Command", "")
  455. If @error=1 Then return
  456. $aPathexe=StringRegExp($type, "(^.*)exe(.*)$", 3)
  457. If @error=1 Then return
  458. $Pathexe1 = StringReplace($aPathexe[0], '"', '')
  459. If FileExists($Pathexe1&'exe') Then
  460.         GUICtrlSetData($AutInp, $Pathexe1&'exe')
  461.         GUICtrlSetData ($StatusBar, "Версия AutoIt3 из реестра - "&FileGetVersion($Pathexe1&'exe'))
  462. EndIf
  463. EndFunc
  464.  
  465. ; чтение пути редактора из реестра
  466. Func _edreg1()
  467. $type = RegRead("HKEY_CLASSES_ROOT\AutoIt3Script\Shell\Open\Command", "")
  468. If StringInStr($type,'AutoIt3.exe')<>0 Then $type = RegRead("HKEY_CLASSES_ROOT\AutoIt3Script\Shell\Run\Command", "")
  469. If @error=1 Then return
  470. $aPathexe=StringRegExp($type, "(^.*)exe(.*)$", 3)
  471. If @error=1 Then return
  472. $Pathexe1 = StringReplace($aPathexe[0], '"', '')
  473. If FileExists($Pathexe1&'exe') Then GUICtrlSetData($RedInp1, $Pathexe1&'exe')
  474. EndFunc
  475.  
  476. ; чтение пути редактора из реестра
  477. Func _edreg2()
  478. $type = RegRead("HKEY_CLASSES_ROOT\AutoIt3Script\Shell\Edit\Command", "")
  479. If @error=1 Then return
  480. $aPathexe=StringRegExp($type, "(^.*)exe(.*)$", 3)
  481. If @error=1 Then return
  482. $Pathexe1 = StringReplace($aPathexe[0], '"', '')
  483. If FileExists($Pathexe1&'exe') Then GUICtrlSetData($RedInp2, $Pathexe1&'exe')
  484. EndFunc
  485.  
  486.  
  487. ; заполнение комбобокса списком пунктов реестра
  488. Func _genlist()
  489. GUICtrlSendMsg($genlist, 0x14B, 0, 0)
  490. $regst=''
  491. For $i = 1 to 20
  492. $regShell = RegEnumKey("HKEY_CLASSES_ROOT\AutoIt3Script\Shell", $i)
  493. if @error <> 0 Then ExitLoop
  494. $regst&='|'&$regShell
  495. next
  496. GUICtrlSetData($genlist,$regst, '')
  497. EndFunc
  498.  
  499.  
  500. ; очистка комбобоксов
  501. Func _clear()
  502. GUICtrlSendMsg($OpenCom, 0x14B, 0, 0)
  503. GUICtrlSendMsg($EditCom, 0x14B, 0, 0)
  504. GUICtrlSendMsg($CompCom, 0x14B, 0, 0)
  505. GUICtrlSendMsg($RunCom, 0x14B, 0, 0)
  506. EndFunc
  507.  
  508. ; установка английского языка
  509. Func _langen()
  510. GUICtrlSetData($OpenCom,'Открыть в редакторе|Open', 'Open')
  511. GUICtrlSetData($EditCom,'Изменить|Edit Script', 'Edit Script')
  512. GUICtrlSetData($CompCom,'Компилировать в EXE|Compile Script', 'Compile Script')
  513. GUICtrlSetData($RunCom,'Выполнить скрипт|Run Script', 'Run Script')
  514. EndFunc
  515.  
  516. ; установка русского языка
  517. Func _langrus()
  518. GUICtrlSetData($OpenCom,'Открыть в редакторе|Open', 'Открыть в редакторе')
  519. GUICtrlSetData($EditCom,'Изменить|Edit Script', 'Изменить')
  520. GUICtrlSetData($CompCom,'Компилировать в EXE|Compile Script', 'Компилировать в EXE')
  521. GUICtrlSetData($RunCom,'Выполнить скрипт|Run Script', 'Выполнить скрипт')
  522. EndFunc
  523.  
  524. ; чтение переменных, проверка валидности параметров
  525. Func _read()
  526. $err1=1
  527. If GUICtrlRead ($run_m)=1 Then
  528.         $run_m0='Run'
  529. Else
  530.         $run_m0='Open'
  531. EndIf
  532. $AutInp0=GUICtrlRead ($AutInp)
  533. $RedInp01=GUICtrlRead ($RedInp1)
  534. $RedInp02=GUICtrlRead ($RedInp2)
  535. $OpenCom0=GUICtrlRead ($OpenCom)
  536. $EditCom0=GUICtrlRead ($EditCom)
  537. $CompCom0=GUICtrlRead ($CompCom)
  538. $RunCom0=GUICtrlRead ($RunCom)
  539. If $OpenCom0='' Then $OpenCom0='Open'
  540. If $EditCom0='' Then $EditCom0='Edit Script'
  541. If $CompCom0='' Then $CompCom0='Compile Script'
  542. If $RunCom0='' Then $RunCom0='Run Script'
  543.  
  544. If $AutInp0='' or Not FileExists($AutInp0) Then
  545. MsgBox(0, "Ошибка", "Укажите правильно путь к AutoIt3.exe")
  546. return
  547. EndIf
  548.  
  549. $aPathAut0 = StringRegExp($AutInp0, "(^.*)\\(.*)$", 3)
  550.  
  551. ; пробуем определить редактор1
  552. If Not FileExists($RedInp01) Then
  553.         If FileExists($aPathAut0[0]&'\SciTE\SciTE.exe') Then
  554.                 $RedInp01=$aPathAut0[0]&'\SciTE\SciTE.exe'
  555.         Else
  556.                 $type = RegRead("HKEY_CLASSES_ROOT\AutoIt3Script\Shell\Open\Command", "")
  557.                 If StringInStr($type,'AutoIt3.exe')<>0 Then $type = RegRead("HKEY_CLASSES_ROOT\AutoIt3Script\Shell\Run\Command", "")
  558.                 If @error=1 Then return
  559.                 $aPathexe=StringRegExp($type, "(^.*)exe(.*)$", 3)
  560.                 If @error=1 Then return
  561.                 $Pathexe1 = StringReplace($aPathexe[0], '"', '')
  562.                 If FileExists($Pathexe1&'exe') Then $RedInp01=$Pathexe1&'exe'
  563.         EndIf
  564. EndIf
  565. If Not FileExists($RedInp01) Then MsgBox(0, "Ошибка", "Не найден путь к основному редактору")
  566.  
  567. ; пробуем определить редактор2
  568. If Not FileExists($RedInp02) Then
  569.         If FileExists($aPathAut0[0]&'\SciTE\SciTE.exe') Then
  570.                 $RedInp02=$aPathAut0[0]&'\SciTE\SciTE.exe'
  571.         Else
  572.                 $type = RegRead("HKEY_CLASSES_ROOT\AutoIt3Script\Shell\Edit\Command", "")
  573.                 If @error=1 Then return
  574.                 $aPathexe=StringRegExp($type, "(^.*)exe(.*)$", 3)
  575.                 If @error=1 Then return
  576.                 $Pathexe1 = StringReplace($aPathexe[0], '"', '')
  577.                 If FileExists($Pathexe1&'exe') Then $RedInp02=$Pathexe1&'exe'
  578.         EndIf
  579. EndIf
  580. If Not FileExists($RedInp02) Then MsgBox(0, "Ошибка", "Не найден путь к дополнительному редактору")
  581. If FileExists($RedInp02) and $RedInp02<>'' and FileExists($RedInp01) and $RedInp01<>'' and FileExists($AutInp0) and $AutInp0<>'' Then
  582. $err1=0
  583. GUICtrlSetData($RedInp2, $RedInp02)
  584. GUICtrlSetData($RedInp1, $RedInp01)
  585. EndIf
  586. EndFunc
  587.  
  588. ; устранение проблем интерфейса
  589. Func _WinAPI_GetThemeColor($hWnd, $sClass, $iPart, $iState, $iProp)
  590.         Local $hTheme = DllCall('uxtheme.dll', 'ptr', 'OpenThemeData', 'hwnd', $hWnd, 'wstr', $sClass)
  591.         Local $Ret = DllCall('uxtheme.dll', 'lresult', 'GetThemeColor', 'ptr', $hTheme[0], 'int', $iPart, 'int', $iState, 'int', $iProp, 'dword*', 0)
  592.  
  593.         If (@error) Or ($Ret[0] < 0) Then
  594.                 $Ret = -1
  595.         EndIf
  596.         DllCall('uxtheme.dll', 'lresult', 'CloseThemeData', 'ptr', $hTheme[0])
  597.         If $Ret = -1 Then
  598.                 Return SetError(1, 0, -1)
  599.         EndIf
  600.         Return SetError(0, 0, BitOR(BitAND($Ret[5], 0x00FF00), BitShift(BitAND($Ret[5], 0x0000FF), -16), BitShift(BitAND($Ret[5], 0xFF0000), 16)))
  601. EndFunc   ;==>_WinAPI_GetThemeColor
  602.  
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top