Перейти на главную страничку сайта (список статей, файлы для скачивания)
Проект перевода документации AutoHotkey: перечень переведённых статей и статей в работе.
Автор статьи - Androgen Belkin
На самом деле статью лучше было бы назвать "Как установить (и, при желании, удалить) AutoHotkey в два клика так, как вам хотелось бы и при этом не использовать стандартный инсталлятор". Но так слишком длинно. Поэтому – назвал, как назвал. Итак…
Как известно, AutoHotkey распространяется в виде архива (zip), и в виде инсталлятора (ехе). Соответственно и действовать можно по двум вариантам.
Вариант 1. Можно скачать zip, распаковать, дважды кликнуть по какому-нибудь файлу *.ahk и связать его с AutoHotkey.exe. Теперь скрипты (здесь и далее, разумеется, имеются в виду скрипты AutoHotkey) будут запускаться. Но этот путь имеет свои недостатки. А именно: если вы захотите передать скрипту какие-нибудь параметры, то перед полным путем к скрипту нужно указывать полный путь к AutoHotkey.exe. Например, так:
"C:\Program Files\AutoHotkey\AutoHotkey.exe" "D:\AHK\Param2Script.ahk" /orange /apple /test
Кроме того, нельзя перетаскивать файлы на скрипты, чтобы он принимал их как параметры в обработку. Это явно неудобно.
Из дополнительных неудобств: иконка скриптов будет, как и у самого AutoHotkey.exe (на мой взгляд, крайне убогая иконка). Не создается контекстное меню для файлов *.ahk. (Компилировать, Редактировать). Есть и некоторые другие неудобства, которые я не стану рассматривать, чтобы не отнимать ваше время.
Вариант 2. С другой стороны, инсталлятор исправляет все эти недостатки, но создает другие. Например, все пункты контекстного меню не только на английском, но еще и один пункт лишний (дублирующий). Откомпилированные из контекстного меню скрипты имеют ту же иконку, что и сам AutoHotkey, (а сами скрипты - опять же имеют невзрачненькую иконку). Создается куча ярлыков (а я вообще не пользуюсь меню "Пуск", нафиг мне все эти ярлыки). Есть и еще неудобства для меня, но и опять я не стану грузить вас зазря.
А вот ситуация: пришел я со своими скриптами туда, где не установлен AutoHotkey. И должен проделать либо первый, либо второй варианты. У первого варианта недостатки не нравящиеся мне, у второго - напрягающие хозяина компа (мало кому нравится, когда невесть кто устанавливает невесть что). Кроме того, оба варианта требуют телодвижений, тем более досадных, что скрипты как раз для того и пишутся (мной, по крайней мере), чтобы экономить телодвижения. Вот я и написал свой "инсталлятор", в два клика делающий нужные записи в реестр, и в три - убирающие созданный "мусор" (мусор он - для того, кто и знать ничего не хочет про какой-то там AutoHotkey). Этот скрипт будет ниже, а сначала - файл реестра, где перечислены все создаваемые стандартным инсталлятором разделы и параметры. Если вы вдруг не сильны в реестре, то я снабдил всё комментариями, так что разобраться не составит труда. Итак, файл реестра:
REGEDIT4 ; Часть создаваемых стандартным инсталлятором разделов и параметров, на мой взгляд - лишние. ; Их можно смело опустить. ; Регистрация расширения ahk [HKEY_CLASSES_ROOT\.ahk] @="AutoHotkeyScript" ; Регистрация шаблона для меню создать (+ файл Template.ahk в %WinDir%\ShellNew) ; Раздел можно опустить [HKEY_CLASSES_ROOT\.ahk\ShellNew] "FileName"="Template.ahk" ; Регистрация класса и всплывающей подсказки на скрипте ; (можно изменить на, например, @="Скрипт AutoHotkey") [HKEY_CLASSES_ROOT\AutoHotkeyScript] @="AutoHotkey Script" ; Иконка скрипта ; (можно изменить на свою, например, @="С:\\Icon\\AutoHotkey\\AHK_Script.ico") [HKEY_CLASSES_ROOT\AutoHotkeyScript\DefaultIcon] @="C:\\Program Files\\AutoHotkey\\AutoHotkey.exe,1" ; Действие по умолчанию при двойном клике (имя подраздела Shell) ; Если не задать этот параметр, то действием по умолчанию будет команда "Open" [HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell] @="Run" ; Запустить скрипт (имя в контекстном меню, можно изменить на, например, @="Запустить скрипт") ; Можно опустить весь этот раздел и его подраздел, т.к. они дублирует команду Open ; Зачем два одинаковых действия в контекстном меню? [HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Run] @="Run Script" ; Собственно команда на выполнение скрипта ; (ВАЖНО: %* - означает возможность принимать скриптом параметры) [HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Run\Command] @="\"C:\\Program Files\\AutoHotkey\\AutoHotkey.exe\" \"%1\" %*" ; Пункт контекстного меню "Компилировать" ; (можно так и написать @="Компилировать") ; Можно опустить весь этот раздел и его подраздел [HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Compile] @="Compile Script" ; Собственно команда на компиляцию: путь к компилятору и параметры, передаваемые ему. ; (можно, например, добавить свою иконку, пароль и т.д. - см. справку) [HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Compile\Command] @="\"C:\\Program Files\\AutoHotkey\\Compiler\\Ahk2Exe.exe\" /in \"%l\"" ; Пункт контекстного меню для открытия скрипта в редакторе ; Можно опустить весь этот раздел и его подраздел ; А можно опустить параметр @="Edit Script", тогда в конт. меню ; будет пункт со стандартным именем "изменить", в русской винде, разумеется. ; (а можно прямо так и написать @="Редактировать скрипт") [HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Edit] @="Edit Script" ; Собственно команда на редактирование. Мои РЕКОМЕНДАЦИИ такие: ; Путь к вашему редактору скриптов лучше заключить в кавычки, как и параметр. ; Например, так: ; @="\"C:\\Program Files\\PSPad\\PSPad.exe\" \"%1\"" [HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Edit\Command] @="notepad.exe %1" ; Пункт контекстного меню "Открыть" (выполнить скрипт). ; А можно опустить только параметр @="Open", и тогда в конт. меню будет ; стандартный пункт "Открыть", а можно так и написать @="Запустить скрипт" [HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Open] @="Open" ; Собственно команда на открытие (выполнение) скрипта ; (ВАЖНО: %* - означает возможность принимать скриптом параметры) [HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Open\Command] @="\"C:\\Program Files\\AutoHotkey\\AutoHotkey.exe\" \"%1\" %*" ; DropHandler. Позволяет перетаскивать файлы на скрипт. ; Обработчик тот же, что и у bat-файлов или других исполнимых файлов, ; поэтому имена на обработку передаются в DOS виде. ; Этот раздел создается, только если при установке выбран соответствующий пункт, ; и только на винде старше WIN98. ; Раздел можно опустить [HKEY_CLASSES_ROOT\AutoHotkeyScript\ShellEx\DropHandler] @="{86C86720-42A0-1069-A2E8-08002B30309D}" ; В этом разделе откомпилированные скрипты ищут путь к AutoHotkey.exe и его версию. ; Раздел можно опустить, но лучше оставить [HKEY_LOCAL_MACHINE\SOFTWARE\AutoHotkey] "InstallDir"="C:\\Program Files\\AutoHotkey" "Version"="1.0.44.07" ; Это псевдоним для запуска из командной строки Ahk2Exe.exe, без указания пути к нему. ; Т.е. можно в ком. строку ввести Ahk2Exe, и он запустится. ; Раздел можно опустить [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Ahk2Exe.exe] @="C:\\Program Files\\AutoHotkey\\Compiler\\Ahk2Exe.exe" ; Это псевдоним для запуска из командной строки AU3_Spy.exe, без указания пути к нему. ; Т.е. можно в ком. строку ввести AU3_Spy, и он запустится. ; Раздел можно опустить [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\AU3_Spy.exe] @="C:\\Program Files\\AutoHotkey\\AU3_Spy.exe" ; Это псевдоним для запуска из командной строки AutoHotkey.exe, без указания пути к нему. ; Т.е. можно в ком. строку ввести AutoHotkey, и он запустится. ; Раздел можно опустить [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\AutoHotkey.exe] @="C:\\Program Files\\AutoHotkey\\AutoHotkey.exe" ; Это псевдоним для запуска из командной строки AutoScriptWriter.exe, без указания пути к нему. ; Т.е. можно в ком. строку ввести AutoScriptWriter, и он запустится. ; Раздел можно опустить [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\AutoScriptWriter.exe] @="C:\\Program Files\\AutoHotkey\\AutoScriptWriter\\AutoScriptWriter.exe" ; Это раздел для отображения информации в стандартном апплете "Установка и удаление программ" ; Раздел можно опустить [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\AutoHotkey] "DisplayIcon"="C:\\Program Files\\AutoHotkey\\AutoHotkey.exe" "DisplayName"="AutoHotkey 1.0.44.07" "DisplayVersion"="1.0.44.07" "Publisher"="Chris Mallett" "UninstallString"="C:\\Program Files\\AutoHotkey\\uninst.exe" "URLInfoAbout"="http://www.autohotkey.com"
А теперь - мой инсталлятор. На самом деле предлагаемый скрипт - фрагмент моего большого спец инсталлятора, делающего сразу туеву хучу всяких операций, чтобы я в несколько кликов оказывался как дома, и в несколько - возвращал все "взад". Но здесь - только про AutoHotkey.
Все создаваемые пункты контекстного меню - на русском. Назначается свой редактор скриптов, своя иконка для скриптов и своя - для скриптов, откомпилированных из контекстного меню (чтобы сразу была видна разница между ними). Ну и т.д. - посмотрите сами. Запускать скрипт можно безбоязненно, т.к. он ничего не сделает, пока не нажмете кнопку "Принять". (Да и после нажатия этой кнопки ничего страшного не случится). Удалить все сделанные записи из реестра можно такой маленькой кнопочкой справа-внизу (тоже подтвердив удаление). Перед запуском скрипт следует поместить либо в ту папку, где лежит AutoHotkey.exe, либо в какую-нибудь подпапку. Я, например, в папке AutoHotkey создал подпапку Icons, куда кладу нужные иконки. И создал подпапку _MyFiles, куда кладу (помимо прочего) этот скрипт, и батничек для запуска этого скрипта (AutoHotkey ведь пока еще не зарегистрирован в реестре). Можно, конечно, откомпилировать скрипт в exe-шник, но мне больше нравится так (вдруг чего поправить захочется). Сами иконки я, к сожалению, приложить сюда не могу, поэтому подберите свои, а вот батничек на всякий случай прилагается.
В реестр пишутся не все параметры, которые пишутся стандартным инсталлятором, а только те, что, на мой взгляд, необходимы (они уже отмечены галочками при запуске скрипта). "Недоработкой" скрипта можно считать то, что не проверяется наличие у пользователя разрешений на запись в реестр. Но я никогда не сталкивался с такой необходимостью, поэтому и приделывать такую фишку не стал.
Добавлю, что скрипт удобно использовать при перемещении папки с установленным AutoHotkey (он скорректирует все пути), а также при обновлении записей в реестре о версии AutoHotkey (при "установке" новой версии из zip-архива).
;******************************************************************************* ; AutoHotkey Version: 1.0.43.08 ; Автор: Androgen Belkin ; Имя скрипта: AutoHotkey_Install.ahk (v.1.2) ;******************************************************************************* ; Зарегистрировать расширение ahk и создать контекстное меню для него. ; Назначить редактор, возможность поиска строк в скриптах для Windows, ; разрешить drag-n-drop файлов на скрипт. Всё - опционально, т.е. по желанию :) ;******************************************************************************* #NoTrayIcon ; не отображать иконку скрипта в трее #NoEnv ; запрещаем имена переменных как у переменных окружения (повышаем производительность скрипта) ;------------------------------------------------------------------------------- ; НАСТРОЙКИ ПОЛЬЗОВАТЕЛЯ ; название для пункта контекстного меню "Запустить скрипт" (это будет действие по умолчанию, ; поэтому имя команды не будет отображаться в контекстном меню. Запись создается для удобства ; при просмотре реестра.) nRun = Запустить скрипт nCompile = Компи&лировать ; название для пункта контекстного меню "Компилировать" nEdit = Открыть в &редакторе ; название для пункта контекстного меню "Открыть в редакторе" AHK_Tip = Скрипт AutoHotkey ; всплывающая подсказка на скриптах Editor_Path = %A_Windir%\Notepad.exe ; редактор для скриптов (можно изменить в процессе работы этого скрипта) ; предлагать ли вместо указанного редактора PsPad, если он найден в реестре (1/0) Suggest_PsPad = 1 ; ниже задаются относительные пути для иконок и компилятора (относительно расположения AutoHotkey.exe) ; иконка для скрипта (если не указана, или указана неверно, то будет стандартная) Script_Icon = Icons\AHK_Green.ico ; иконка для откомпилированного скрипта (если не указана, или указана неверно, то будет стандартная) Compile_Icon = Icons\AHK_Violet.ico Compiler_Path = Compiler\Ahk2Exe.exe ; путь к компилятору скриптов ; КОНЕЦ НАСТРОЕК ПОЛЬЗОВАТЕЛЯ ;------------------------------------------------------------------------------- ; ПРОВЕРКА ПРАВИЛЬНОСТИ ПУТИ ЗАПУСКА СКРИПТА ; для начала ищем AutoHotkey.exe в папке, где запущен этот скрипт AutoHotkey_Path = %A_ScriptDir%\AutoHotkey.exe IfNotExist, %AutoHotkey_Path% ; если в текущей папке НЕ найден AutoHotkey.exe, то... { ; пробуем найти его на уровень выше StringGetPos, Pos_Slash, A_ScriptDir, \, R ; получить позицию последнего слеша в строке пути StringLeft, Path_Level_Up, A_ScriptDir, Pos_Slash ; взять из строки путь, отбросив последнюю папку AutoHotkey_Path = %Path_Level_Up%\AutoHotkey.exe ; теперь ищем AutoHotkey.exe в папке на уровень выше IfNotExist, %AutoHotkey_Path% ; если и здесь НЕ найден AutoHotkey.exe, то... { MsgBox, 64, AutoHotkey не найден!, ; показываем сообщение ( Скрипт следует запускать из папки, содержащей файл "AutoHotkey.exe". Или из её подпапки. ) ExitApp ; конец скрипта } } ; ЕСЛИ AUTOHOTKEY.EXE НАЙДЕН, ТО ПРОДОЛЖАЕМ SplitPath, AutoHotkey_Path,, AutoHotkey_Dir ; вычисляем папку, где найден AutoHotkey.exe ; Проверяем, указана ли иконка для скриптов *.ahk (и верен ли путь к ней) IfExist, %AutoHotkey_Dir%\%Script_Icon% ; если иконка скрипта на месте, то... MyIcon_Path = %AutoHotkey_Dir%\%Script_Icon% ; назначить путь для своей иконки скриптов *.ahk ; Проверяем, указана ли иконка для откомпилированных скриптов *.ahk (и верен ли путь к ней) IfExist, %AutoHotkey_Dir%\%Compile_Icon% ; если иконка для компиляции скрипта на месте, то... ; назначить команду и путь для иконки откомпилированных скриптов *.ahk MyIconCompile_Path = /icon "%AutoHotkey_Dir%\%Compile_Icon%" ; Проверяем наличие компилятора IfExist, %AutoHotkey_Dir%\%Compiler_Path% ; проверяем наличие компилятора Compiler = 1 ; флаг, что компилятор найден ; ПРОВЕРЯЕМ, МОЖНО И НУЖНО ЛИ НАЗНАЧАТЬ РЕДАКТОРОМ PSPAD RegRead, PSPad_Path, HKCU, Software\PSPad, PSPadPath ; прочитать путь к PSPad в реестре ; если в реестре указан путь к PSPad и в настройках указано предлагать PsPad, то... If (ErrorLevel = 0 AND Suggest_PsPad = 1) { StringReplace, PSPad_Path, PSPad_Path, ",, All ; удалить из найденного в реестре пути кавычки Editor_Path = %PSPad_Path% ; предложить редактором скриптов PsPad } ; СОЗДАНИЕ GUI Gui, Font, s8, Arial ; задать стандартный шрифт, чтобы на разных системах не портился GUI ; группа 1 (обводная рамка) Gui, Add, GroupBox, Center R2 w444, Связать скрипты *.ahk с исполнимым файлом AutoHotkey.exe ; чекбокс Gui, Add, Checkbox, Checked xp+10 yp+18 vMyExtention gMyExtention, З&арегистрировать расширение *.ahk Gui, Add, Checkbox, Checked xp+20 yp+20 vMyS_Icon, Назначить свою &иконку для скриптов ; чекбокс If Not MyIcon_Path ; если своя иконка для скрипта не была найдена, то... { GuiControl,, Button3, 0 ; снять отметку с чекбокса "Назначить свою иконку для скриптов" GuiControl, Disabled, Button3 ; отключить чекбокс "Назначить свою иконку для скриптов" } ; группа 2 (обводная рамка) Gui, Add, GroupBox, Center R5.3 xm w444, Добавить в контекстное меню скриптов *.ahk пункты: Gui, Add, Checkbox, Checked xp+10 yp+18 vMyCompile gMyCompile, %nCompile% ; чекбокс "Компилировать" ; чекбокс Gui, Add, Checkbox, Checked xp+20 yp+20 vMyC_Icon, Назначить свою &иконку для откомпилированных скриптов If Not Compiler ; если компилятор не был найден, то... { GuiControl,, Button5, 0 ; снять отметку с чекбокса "Компилировать" GuiControl, Disabled, Button5 ; отключить чекбокс "Компилировать" } ; если не найдена иконка для откомпилированного скрипта или компилятор, то... If (Not MyIconCompile_Path OR Not Compiler) { GuiControl,, Button6, 0 ; снять отметку с чекбокса "Назначить свою иконку для откомпилированных скриптов" GuiControl, Disabled, Button6 ; отключить чекбокс "Назначить свою иконку для откомпилированных скриптов" } Gui, Add, Checkbox, Checked xp-20 yp+20 gMyEdit vMyEdit, %nEdit% ; чекбокс "Открыть в редакторе" ; надпись Gui, Add, Text, yp+18, Укажите путь к редактору`, который вы хотите использовать для скриптов *.ahk: Gui, Add, Edit, wp-16 yp+17 vMyEditor, %Editor_Path% ; поле ввода пути к редактору Gui, Add, Button, x+3 yp-1 gBrowseEditorPath, ... ; кнопка "обзор" Gui, Add, GroupBox, Center R5 xm w444, Дополнительные действия ; группа 3 (обводная рамка) ; надпись Gui, Add, Text, xp+10 yp+16 cRed , %A_Space% Снятие галочек в этой группе удаляет соответствующие настройки из реестра Gui, Add, Checkbox, Checked vMyHKLM , &Создать запись в HKEY_LOCAL_MACHINE (там обычно ищут путь к AutoHotkey) ; чекбокс Gui, Add, Checkbox, vMyAppPaths , Со&здать псевдоним в App Paths для запуска AutoHotkey.exe без указания пути ; чекбокс Gui, Add, Checkbox, vMyDropHandler, Разрешить пере&таскивание файлов на скрипты ; чекбокс Gui, Add, Checkbox, vMyPersistentHandler , Разрешить при &встроенном поиске Windows поиск внутри скриптов *.ahk ; чекбокс Gui, Add, Button, x105 w100 Default, &Принять ; кнопка Gui, Add, Button, x259 yp w100, &Отмена ; кнопка Gui, Add, Button, x+66 gMyDel, %A_Space%-%A_Space% ; кнопка Gui, Show, AutoSize Center, Регистрация скриптов AutoHotkey - Androgen® ; отобразить окно по центру Return ; остановить выполнение скрипта до принятия пользователем выборов ; ОБРАБОТКА СОБЫТИЙ GUI ; Кнопки, закрывающие окно GuiEscape: ; если нажата Escape GuiClose: ; если нажата кнопка "закрыть" ... ButtonОтмена: ; если нажата кнопка "отмена" ... ExitApp ; конец скрипта ; Чекбокс "Зарегистрировать расширение *.ahk" MyExtention: ; реагирование на снятие/постановку галочки в чекбоксе "Зарегистрировать расширение *.ahk" ; проверить, стоит ли галочка на "Зарегистрировать расширение *.ahk" ControlGet, Checked_Edit, Checked,, Button2, ahk_class AutoHotkeyGUI If Checked_Edit = 0 ; если галочки нет, то... ; отключить чекбокс "Назначить свою иконку для скриптов" Control, Disable,, Button3, ahk_class AutoHotkeyGUI Else If MyIcon_Path ; если галочка есть и если своя иконка найдена, то... ; подключить чекбокс "Назначить свою иконку для скриптов" Control, Enable,, Button3, ahk_class AutoHotkeyGUI Return ; конец подпрограммы событий в GUI ; Чекбокс "Компилировать" MyCompile: ; реагирование на снятие/постановку галочки в чекбоксе "Компилировать" ; проверить, стоит ли галочка на "Компилировать" ControlGet, Checked_Edit, Checked,, Button5, ahk_class AutoHotkeyGUI If Checked_Edit = 0 ; если галочки нет, то... ; отключить чекбокс "Назначить свою иконку для откомпилированных скриптов" Control, Disable,, Button6, ahk_class AutoHotkeyGUI Else If MyIconCompile_Path ; если галочка есть и если своя иконка найдена, то... ; подключить чекбокс "Назначить свою иконку для откомпилированных скриптов" Control, Enable,, Button6, ahk_class AutoHotkeyGUI Return ; конец подпрограммы событий в GUI ; Чекбокс "Открыть в редакторе" MyEdit: ; реагирование на снятие/постановку галочки в чекбоксе "Открыть в редакторе" ; проверить, стоит ли галочка на "Открыть в редакторе" ControlGet, Checked_Edit, Checked,, Button7, ahk_class AutoHotkeyGUI If Checked_Edit = 0 ; если галочки нет, то отключить контролы { Control, Disable,, Static1, ahk_class AutoHotkeyGUI Control, Disable,, Edit1, ahk_class AutoHotkeyGUI } Else ; если галочка есть, то подключить контролы { Control, Enable,, Static1, ahk_class AutoHotkeyGUI Control, Enable,, Edit1, ahk_class AutoHotkeyGUI } Return ; конец подпрограммы событий в GUI ; Кнопка "Обзор редактора скриптов" BrowseEditorPath: Gui +OwnDialogs ; диалог выбора файла будет модальным ; 3 указывает, что файл должен быть найден FileSelectFile, SelectedFile, 3,, Укажите свой редактор скриптов, Исполнимые файлы (*.exe) if SelectedFile ; если файл был выбран, то... GuiControl,, Edit1, %SelectedFile% ; вставить полученный экзешник в редактируемое поле Return ; конец подпрограммы событий в GUI ; Кнопка "Удалить настройки из реестра" MyDel: Gui +OwnDialogs ; запрос будет модальным ; назначить вторую кнопку "по умолчанию" MsgBox, 305, Внимание!, Удалить из реестра все сделанные записи, связанные с AutoHotkey? IfMsgBox OK ; если ответ ОК, то... { RegDelete, HKCR, .ahk ; удалить регистрацию расширения *.ahk RegDelete, HKCR, AutoHotkeyScript ; удалить класс расширения RegDelete, HKCU, SOFTWARE\AutoHotkey ; удалить настройки из HKEY_CURRENT_USER RegDelete, HKLM, SOFTWARE\AutoHotkey ; удалить настройки из HKEY_LOCAL_MACHINE ; удалить псевдоним из App Paths RegDelete, HKLM, SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\AutoHotkey.exe ExitApp ; конец скрипта } Return ; конец подпрограммы событий в GUI ; Кнопка "Принять" ButtonПринять: ; обработать нажатие кнопки "Принять" Gui, Submit ; сохранить все контролы в соответствующих переменных Gui, Destroy ; удалить окно GUI ; Создаем команды для скриптов Run_Command = "%AutoHotkey_Path%" "`%1" `%* ; команда на запуск скриптов Compile_Command = "%AutoHotkey_Dir%\%Compiler_Path%" /in "`%l" ; команда на компиляцию скриптов Edit_Command = "%MyEditor%" "`%1" ; команда на редактирование скриптов ; ЗАПИСЬ В РЕЕСТР ВЫБРАННЫХ ПАРАМЕТРОВ If MyExtention = 1 ; если указано ассоциировать скрипты *.ahk, то... { RegWrite, REG_SZ, HKCR, .ahk,, AutoHotkeyScript ; зарегистрировать расширение *.ahk RegWrite, REG_SZ, HKCR, AutoHotkeyScript,, %AHK_Tip% ; записать всплывающую подсказку ; указываем, что по умолчанию (при двойном клике) будет команда Run RegWrite, REG_SZ, HKCR, AutoHotkeyScript\Shell,, Open ; записать имя команды на запуск скриптов RegWrite, REG_SZ, HKCR, AutoHotkeyScript\Shell\Open,, %nRun% ; записать команду на запуск скриптов RegWrite, REG_SZ, HKCR, AutoHotkeyScript\Shell\Open\Command,, %Run_Command% If MyS_Icon = 1 ; если указано назначить свою иконку для скриптов, то... ; записать свою иконку для скриптов RegWrite, REG_SZ, HKCR, AutoHotkeyScript\DefaultIcon,, %MyIcon_Path% Else ; если НЕ указано назначить свою иконку, то... ; записать стандартную иконку для скриптов RegWrite, REG_SZ, HKCR, AutoHotkeyScript\DefaultIcon,, %AutoHotkey_Path%`,1 } If MyCompile = 1 ; если указано добавить команду "Компилировать", то... { ; записать имя команды в контекстном меню RegWrite, REG_SZ, HKCR, AutoHotkeyScript\Shell\Compile,, %nCompile% If MyC_Icon = 1 ; если указано назначить свою иконку для откомпилированных скриптов, то... RegWrite, REG_SZ, HKCR, AutoHotkeyScript\Shell\Compile\Command, , %Compile_Command% %MyIconCompile_Path% ; записать команду и свою иконку Else ; если НЕ указано назначить свою иконку, то... RegWrite, REG_SZ, HKCR, AutoHotkeyScript\Shell\Compile\Command, , %Compile_Command% ; записать стандартную команду } If MyEdit = 1 ; если указано добавить команду "Открыть в редакторе", то... { RegWrite, REG_SZ, HKCR, AutoHotkeyScript\Shell\Edit,, %nEdit% ; записать имя команды RegWrite, REG_SZ, HKCR, AutoHotkeyScript\Shell\Edit\Command,, %Edit_Command% ; записать саму команду } If MyHKLM = 1 ; если указано создать запись в HKEY_LOCAL_MACHINE, то... { ; записать путь к папке AutoHotkey RegWrite, REG_SZ, HKLM, SOFTWARE\AutoHotkey, InstallDir, %AutoHotkey_Dir% RegWrite, REG_SZ, HKLM, SOFTWARE\AutoHotkey, Version, %A_AhkVersion% ; записать версию AutoHotkey } Else RegDelete, HKLM, SOFTWARE\AutoHotkey ; удалить раздел If MyAppPaths = 1 ; если указано создать для AutoHotkey.exe псевдоним в App Paths, то... RegWrite, REG_SZ, HKLM, SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\AutoHotkey.exe ,, "%AutoHotkey_Path%" Else RegDelete, HKLM, SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\AutoHotkey.exe ; удалить раздел If MyDropHandler = 1 ; если указано разрешить перетаскивание файлов на скрипты, то... RegWrite, REG_SZ, HKCR, AutoHotkeyScript\Shellex\DropHandler,, {86C86720-42A0-1069-A2E8-08002B30309D} Else RegDelete, HKCR, AutoHotkeyScript\Shellex\DropHandler ; удалить раздел If MyPersistentHandler = 1 ; если указано разрешить при встроенном поиске Windows, поиск внутри скриптов *.ahk RegWrite, REG_SZ, HKCR, .ahk\PersistentHandler,, {5e941d80-bf96-11cd-b579-08002b30bfeb} Else RegDelete, HKCR, .ahk\PersistentHandler ; удалить раздел MsgBox, Выбранные действия завершены успешно ExitApp ; конец скрипта
А вот - батничек для запуска скрипта (если AutoHotkey еще не установлен, и скрипты еще не запускаются). Я назвал его AutoHotkey_Install_Run.bat, но, конечно, его имя не принципиально. А вот имя вызываемого файла скрипта - принципиально. Если скрипт будет у вас под другим именем, то измените его (имя) здесь.
Rem Запустить скрипт, регистрирующий в системе скрипты *.ahk Rem Батник должен быть "рядом" с AutoHotkey_Install.ahk Rem И оба они должны быть в папке, где лежит AutoHotkey.exe, или в подпапке. If Exist AutoHotkey.exe ( Start AutoHotkey.exe AutoHotkey_Install.ahk ) ELSE ( Start ..\AutoHotkey.exe AutoHotkey_Install.ahk )
Хочется верить, что вам пригодится написанное. Будут вопросы, предложения, отзывы - как обычно - прошу на форум.
Перейти на главную страничку сайта (список статей, файлы для скачивания)
© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.