Перейти к содержанию
СофтФорум - всё о компьютерах и не только

AutoHotKey - скриптовый язык программирования


Рекомендуемые сообщения

Благодарности
NatM - "Интересно. Замечательно было бы..."
Yezhishe - "А что это?"



Официальная часть
Скриптовый язык программирования AutoHotKey, далее просто AHK
Скриптовый язык это -
  Показать контент


AHK это -

  Показать контент


Все это можно прочитать - AutoHotkey — Википедия



Не официальная часть
Я наткнулся на AHK случайно, мне надо было менять направление аудио-выхода Колонки - Наушники и было три варианта:
1. Купить "железку"
2. Найти утилиту.
3. Написать самому.

1. Лень, да и зачем, но это IMHO
2. Увы, таких было много, но 99% работали с глюками.
3. Я случайно наткнулся на скрипт и соответственно на AHK, т.к. скрипт был написан на нём, но он работал косо и я стал копать и после 2-3 дней написал это:
;-----Инициализация;Скрипт не выгружается до явного определения#Persistent;Запрет повторного запуска#SingleInstance  IgnorevExitCode :=  1OnExit, lToggleSound_Endif A_IsCompiled    {    IfNotExist, ToggleSoundDev        {          FileCreateDir, ToggleSoundDev ; Создаём папку для ресурсов          FileSetAttrib, +H+A+R, ToggleSoundDev ; Делаем её архивной, только для чтения и скрытой        }    FileInstall, ToggleSoundDev\sp32.ico, ToggleSoundDev\sp32.ico, 0 ; не перезаписывать    FileInstall, ToggleSoundDev\hp32.ico, ToggleSoundDev\hp32.ico, 0 ; не перезаписывать    FileInstall, ToggleSoundDev\sp48.ico, ToggleSoundDev\sp48.ico, 0 ; не перезаписывать    FileInstall, ToggleSoundDev\hp48.ico, ToggleSoundDev\hp48.ico, 0 ; не перезаписывать    FileInstall, ToggleSoundDev\sp64.ico, ToggleSoundDev\sp64.ico, 0 ; не перезаписывать    FileInstall, ToggleSoundDev\hp64.ico, ToggleSoundDev\hp64.ico, 0 ; не перезаписывать        }  cDevIcoSize := 48Gosub lToggleSoundGosub lMyGuiReturnlMyGui:  vTitleWin   :=  "Переключение звука: Динамики/Наушники"  vCountChar  := StrLen(vTitleWin)  vSizeFont   :=  12  vSizeWinW   :=  315 ;ширина размер по X  vSizeWinH   :=  100 ;высота размер по Y  vTxtX       :=  vSizeWinW//2 - vCountChar*2.6 + cDevIcoSize//3  vTxtY       :=  vSizeWinH//2 - vSizeFont*1,75 + cDevIcoSize*7  if (vSoundOutPut = "d")          vSoundOutPut := "sp" cDevIcoSize ".ico"  if (vSoundOutPut = "h")          vSoundOutPut := "hp" cDevIcoSize ".ico"  Gui, New , -maximizebox -minimizebox +AlwaysOnTop -Caption, %vTitleWin%  Gui , Color, 50C841  Gui, Font, c000000 s12 bold, Verdana  Gui, Add, Picture, Icon, %A_WorkingDir%\ToggleSoundDev\%vSoundOutPut%  Gui, Add, Text, x%vTxtX% y%vTxtY% , %isDevSet%  Gui, Show, Center NoActivate w%vSizeWinW% h%vSizeWinH%   if (vExitCode<>0)      SoundPlay *16    Else      SoundPlay *64    Sleep 2500 lToggleSound_End:GuiEscape:GuiClose: Gui, Cancel  ExitApp, vExitCodeReturn;=====Переключение звука===============lToggleSound:   isDevSetTitle:="Переключение звука"   isDevSet:="Звук на --> "   d:="КОЛОНКИ", h:="НАУШНИКИ"reDevSet:   Run, mmsys.cpl   Process, Wait, rundll32.exe, 1   If (!ErrorLevel)   {    Process, Close, rundll32.exe    isDevSet  := "Ошибка переключения звука"     vExitCode :=  1    Return   }   else   {      WinWait, % "ahk_pid" ErrorLevel      ControlSend, SysListView321, {Down}      Sleep, 50      ControlGet, isEnabled, Enabled,, Button2      Sleep, 50      If !isEnabled         ControlSend, SysListView321, {Down}      Sleep, 50      ControlClick, Button2 ; По умол&чанию      Sleep, 50      ControlClick, Button4 ; на клик по кнопке ОК      Process, Close, rundll32.exe      if (isEnabled)          {              isDevSet := isDevSet . d            vSoundOutPut := "d"          }          Else          {            isDevSet := isDevSet . h            vSoundOutPut := "h"          }      vExitCode :=  0   }Return

Всё просто и изящно "минус" мои извращения, но уж так я привык писать.




Разработчик AHK - Chris Mallett позиционировал свой продукт, как скриптовый язык не для программистов, так что он очень прост и понятен, если не лезть в дебри.


Официальный сайт AHK (язык, компилятор, документация, etc.) - AutoHotkey

Русская документация (по состоянию на 11.10.2008) в виде chm-файла - AutoHotkey.zip


Рекомендация моя и не только моя:
Программу следует установить в - C:\Program Files (x86)\AutoHotkey\
Скрипты следует размещать, например в С:\AHK\



Думаю этого достаточно и так много написал. Продолжу в постах. Изменено пользователем Форматцевт
  • Upvote 3
Ссылка на комментарий
Поделиться на другие сайты

Cкрипт в котором есть почти всё, ну почти :D

Файл основной - AllSystemOS.ahk

;*********************************************;***************BEGIN SCRIPT******************;*********************************************;-----Инициализация; Скрипт не выгружается#Persistent; Запрет повторного запуска#SingleInstance;=====Базовые пути=====================#Include c:\AHK\Include\#Include PathUses.ahk; Устанавливаем путь к файлам скрипта#Include C:\AHK\AllSystemOS\;=====Cменить иконку скриптаmcTray := PathAhkIcon "Os_Settings_Gear.ico"Menu, Tray, Icon, %McTray%,, 1;=====Переменные/константы для скрипта и начальная инициализация#Include VarScript.ahk;=====Справка по клавишам#Include HelpKey.ahk;================Игры#Include Games.ahk;=====Запуск основных приложений#Include AppStartUp.ahk;=====Блокируем отдельное нажатие клавиши WIN~LWin Up::~RWin Up::return;=====Замена CapsLock на ShiftCapsLock::Shiftreturn;*********************************************;****************END SCRIPT*******************;*********************************************

Файлы подключаемые директивой #Include (откроются в новом окне)

PathUses.ahk

VarScript.ahk

HelpKey.ahk

Games.ahk

AppStartUp.ahk

Ну вот, если кому что нужно, то смотрите и спрашивайте что непонятно

Данный скрипт будет обновляться, т.к. я его активно использую (дополняю, правлю, etc. )

Изменено пользователем Indomito
  • Upvote 2
Ссылка на комментарий
Поделиться на другие сайты

Полезный, как мне кажется, скрипт

1. Отключаем CapsLock

CapsLock::return

2. CapsLock работает как Shift

CapsLock::Shiftreturn
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Мне тут подарили/купили GamePad, но оказалось что у меня куча игр которые не поддерживают это устройство, а работают с клавиатурой и мышкой и я решил написать скрипт который позволит виртуализировать клавиатуру и мышку через геймпад.

Вот что получилось, да скрипт ещё не дописан до конца, но он вполне работоспособный.

Файл основной GamePad.ahk

;++++++++++++++++++++++++++++++++++++++++++++;-----Инициализация; Запрет повторного запуска#SingleInstance; Скрипт не выгружается#Persistent; Общие пути#Include c:\AHK\Include\#Include PathUses.ahk; Cменить иконкуmcTray := PathAhkIcon "GamePad1.ico"Menu, Tray, Icon, %McTray%,, 1;++++++++++++++++++++++++++++++++++++++++++++; Пути для GamePad.ahk#Include C:\AHK\GamePad\;---- Настройки для игры Mass Effect 1lbMassEffect:#Include MassEffect.ahkgosub mainreturn;---- Общие (стартовые) определенияmain:#Include MainJoy.ahkreturn;---- Функции обработки#Include funcJoy.ahk;---- Секция обработки кнопок джойстика#Include HotKeyJoy.ahk;---- Секция тамеров по обработке осей XYZR#Include TimerJoy.ahk/*MouseWheel:GetKeyState, JoyPOV, %JoystickNumber%JoyPOVif JoyPOV = -1  ; No angle.returnif (JoyPOV > 31500 or JoyPOV < 4500)  ; ForwardSend {WheelUp}else if JoyPOV between 13500 and 22500  ; BackSend {WheelDown}return*/

Файлы подключаемые директивой #Include (откроются в новом окне)

PathUses.ahk

MassEffect.ahk

MainJoy.ahk

funcJoy.ahk

HotKeyJoy.ahk

TimerJoy.ahk

Данный скрипт будет обновляться по мере его написания-дописания

Изменено пользователем Indomito
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Дополняю мои посты #2 и #4 , как и все последующие.

1. Структура папок

c:\AHK\ - все скрипты и разное

c:\AHK\Icon\ - ico и png файлы

c:\AHK\Include\ - скрипты общего назначения

c:\AHK\AllSystemOS\ - скрипты из поста #2

c:\AHK\GamePad\ - скрипты из поста #4

2. Для запуска моих скриптов надо

Разместить их согласно указанной выше структуре;

Запустить main-скрипт, он указан первым и его название соответствует папке его размещения.

Запуск производится простым нажатием или же "Открыть с помощью" и выбрать AutoHotkey.exe или же AutoHotkey_L

Изменено пользователем Indomito
Ссылка на комментарий
Поделиться на другие сайты

Работа с буфером обмена :)

Просто возник вопрос - вот решение.

Скрипт можно помучить, дополнить и прикрутить GUI(кому интересно).

GUI(Graphical user interface) графический интерфейс пользователя.

Автор скрипта creature.ws

  Цитата
creature.ws[/b]"]Скрипт предоставляющий возможность оперировать 4-мя позициями «истории текстового содержимого буфера обмена».

Скрипт работоспособен и используется

; Windows Vista+; AHK-L#SingleInstance Ignore#KeyHistory 0#NoEnv#NoTrayIconOnExit, ExitSubDllCall("AddClipboardFormatListener", "Int", A_ScriptHwnd)OnMessage(WM_CLIPBOARDUPDATE := 0x031D, "ClipSave")clipHistory := []Esc & F1::Esc & F2::Esc & F3::Esc & F4::Clipboard := clipHistory[index := SubStr(A_ThisHotkey,0)]Controlgetfocus, FClassNN, ASendMessage, 0x302,,,%FClassNN%, ASendMessage, 0x8  ,,,%FClassNN%, ASendMessage, 0x7  ,,,%FClassNN%, AReturn$Esc Up::Send {Blind}{Esc}ReturnClipSave(){globalIf (clipHistory[index] = Clipboard)	ReturnIf !newIndex := clipHistory.MaxIndex()+1	newIndex := 1If (newIndex > 4)	clipHistory.Remove(1), newIndex--clipHistory.Insert(newIndex, Clipboard)Return}ExitSub:DllCall("RemoveClipboardFormatListener", "Int", A_ScriptHwnd)ExitAppReturn

P.S. Могу его модифицировать, улучшить и поправить, если это кому то нужно.

Изменено пользователем Indomito
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Для любителей GUI можно использовать SmartGUI Creator, генератор графического интерфейса для AHK.

Download: Latest Release (For Windows XP/Vista/2000) - скачать исполняемый файл SmartGUI Creator

Source Code: Latest Release (For Windows XP/Vista/2000) - скачать исходный файл SmartGUI Creator

AutoHotkey Community - SmartGUI Creator - обсуждение продукта.

SmartGUI Creator написан на том же AHK

Скриншот

4.png

post-37016-0-74948500-1334378574_thumb.p

Ссылка на комментарий
Поделиться на другие сайты

Ещё немного про ...

Буфер Обмена

Clipboard, ClipboardAll, и OnClipboardChange

Clipboard

Clipboard является встроенной переменной, повторяющей содержимое клипборда Windows, если оно ограничивается текстом. В противоположность ей, ClipboardAll полностью повторяет клипборд, включая картинки и форматирование.

Каждая строка текста из Clipboard обычно заканчивается кодами carriage return и linefeed (CR+LF), которые в скрипте записываются как `r`n. Файлы (например, скопированные из окна Проводника с помощью Control-C) рассматриваются как текст: т.е. они автоматически преобразуются в их имена (с полными путями) при обращении скрипта к Clipboard.

Выделить имя каждого из нескольких файлов можно так:

Loop, parse, clipboard, `n, `r{MsgBox, 4, , File number %A_Index% is %A_LoopField%.`n`n Дальше?IfMsgBox, No, break}

Чтобы расставить имена файлов по алфавиту, воспользуйтесь командой Sort. Имена файлов из клипборда в файл сохранит команда: FileAppend, %clipboard%`r`n, C:\My File.txt. Слово #ClipboardTimeOut определит, как долго скрипт будет ожидать открытия клипборда - например, когда с клипбордом работает другое приложение.

Простые примеры:

clipboard = my text ; Полностью заменяет содержимое клипборда.clipboard = ; Очищает клипборд.clipboard = %clipboard% ; Превращает в простой текст.clipboard = %clipboard% Текст для добавления. ; Дописывает клипборд.StringReplace, clipboard, clipboard, ABC, DEF, All; Заменяет в клипборде все ABC на DEF (и преобразует клипборд в текст).

ClipWait делает скрипт надежнее:

[color=navy][b]clipboard = ; Очищаем клипборд, чтобы ClipWait могла обнаружить появление нового текста.Send ^cClipWait ; ждем, пока появится текст.MsgBox Control-C поместила в клипборд следующее:`n`n%clipboard%[/b][/color]

ClipboardAll

ClipboardAll(полное сохранение и восстановление клипборда) полностью повторяет клипборд (с картинкам и форматированием). Чаще всего переменная используется, чтобы сохранить клипборд, дабы скрипт мог временно занять его для своих дел. Когда дело будет сделано, скрипт восстановит клипборд, например так:

ClipSaved := ClipboardAll ; Сохраняет клипборд полностью в указанной переменной.; ... здесь можно временно использовать клипборд, например,; для сохранения текста Unicode с помощью Transform Unicode...Clipboard := ClipSaved ; Восстанавливает клипборд.; Заметьте - использован Clipboard (а не ClipboardAll).ClipSaved = ; Освобождает память, когда клипборд громоздок.

ClipboardAll также может быть сохранена в файл (в этом режиме FileAppend всегда перезаписывает существующий файл):

FileAppend, %ClipboardAll%, C:\Company Logo.clip ; Расширение файла не имеет значения.

Для последующего восстановления файла в клипборде (или в переменной) следуйте следующему образцу:

FileRead, Clipboard, *c C:\Company Logo.clip ; Обратите внимание на *c перед именем файла

OnClipboardChange

Метке OnClipboardChange (если такая существует) автоматически передается управление, как только какое-либо приложение (или даже сам скрипт) изменит клипборд. Эта передача происходит также при первом запуске скрипта.

Встроенная переменная A_EventInfo содержит:

  • 0, если клипборд пуст;
  • 1, если он содержит что-то, представимое как текст (включая файлы, скопированные из Проводника);
  • 2, если он не содержит ничего подобного тексту (например, только картинку).

Работоспособен следующий скрипт. Пока он работает, после каждого изменения клипборда коротко высвечивается сообщение:

#Persistentreturn ; Не обязательно (rem for Indomito)OnClipboardChange:ToolTip Тип данных в клипборде: %A_EventInfo%Sleep 1000ToolTip ; Гасит сообщениеreturn

Когда клипборд изменяется при исполнении нити за меткой OnClipboardChange, уведомление об изменении теряется. Если такое неприемлемо, в первой строке за меткой поместите Critical. Однако, эта мера также отсрочит исполнение других нитей (подобных обработке горячих клавиш) на время исполнения нити OnClipboardChange.

Если сам скрипт изменяет клипборд, нить за меткой OnClipboardChange обычно исполняется не сразу; это значит, что команды, стоящие непосредственно за командой изменившей клипборд, скорее всего будут исполнены раньше. Чтобы заставить нить исполняться немедленно, после команды на изменение клипборда можно добавить короткую задержку Sleep 20.

От меня:

Самое простое решение это запустить OnClipboardChange в таймере, т.е. в отдельном потоке:

#PersistentSetTimer, lbClipboard, 10returnlbClipboard:OnClipboardChange:sleep 50ToolTip Тип данных в клипборде: %A_EventInfo%sleep 50return

правда будет мерцание, но это уже другая проблема и решается она иначе.

Изменено пользователем Indomito
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

LogOff

Скрипт выполняет три функции

1. LogOff - Сменить пользователя и заблокировать Windows

2. Restart - Перезагрузка Windows и перезагрузка компьютера.

3. Power - Выход из Windows и выключение компьютера.

Выводит модальное окно с затемнением и ждёт ответа выбора (реакция на все действия вне окна заблокировано включая и нажатие Alt-Tab и остальных не нужных клавиш)

Скрипт дописывается- проблема с мультипликацией :D

Logo.ahk

Gui Gray:New, +LastFound +AlwaysOnTop -Caption +ToolWindow +HwndMyGuiHwndGui, Gray:DefaultGui , Color, 0WinSet, Transparent, 200Gui, Show, x0 y0 NoActivate W%A_ScreenWidth% H%A_ScreenHeight%Gui, DefaultvWinName := "Windows 7"Gui, New , +OwnDialogs -caption +AlwaysOnTop +HwndMyFocus , %vWinName%Gui, Margin , 0, 0 ; без captionGui, Add, Picture, x0 y0 w750 h563 , C:\AHK\IMG\Fon_s_knopkami.png ;C:\AHK\IMG\Fon_s_dyrkami.png;Gui, Color, EEAA99 ;  background color Example values: Silver, FFFFAA, 0xFFFFAA, DefaultGui, Show, xCenter yCenterSetTimer lbTopWinLogo,10, onHotkey, IfWinExist, ahk_id %MyFocus%Hotkey, *!Tab, TabPressedHotkey, IfWinExist, ahk_id %MyFocus%Hotkey, *LButton, LBpressedHotkey, IfWinExist, ahk_id %MyFocus%Hotkey, *XButton1, TabPressedHotkey, IfWinExist, ahk_id %MyFocus%Hotkey, *XButton2, TabPressedHotkey, IfWinExist, ahk_id %MyFocus%Hotkey, *MButton, TabPressedHotkey, IfWinExist, ahk_id %MyFocus%Hotkey, *RButton, TabPressedreturnGuiClose:GuiEscape:SetTimer lbTopWinLogo,, offExitAppLBpressed:  MouseGetPos,,,OutputVarWin  if (MyFocus = OutputVarWin)  ClickreturnTabPressed:returnlbTopWinLogo:if (!WinActive(vWinName)) WinActivate, %vWinName%MouseGetPos, OutputVarX, OutputVarY, OutputVarWin  if (MyFocus = OutputVarWin)ToolTip X= %OutputVarX% `n Y= %OutputVarY%  return;=====Временная блокировка до окончания написания скрипта~LWin Up::~RWin Up::return
Изменено пользователем Indomito
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Эм-м-м... Я, конечно, безмерно извиняюсь, но... Каковы принципиальные отличия от стандартной кнопки "Пуск"?

Я не издеваюсь - мне просто интересно...

Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте. У меня имеются колонки на компе 5.1, часто слушаю музон в наушниках. При постоянном переключении с колонок на наушники и обратно приходится в настройках драйвера звуковухи переключать режим Speakers 5.1 на Headphones и обратно соответственно. Вот хотел бы узнать, можно ли при помощи той софтины запилить скрипт, чтобы одним нажатием это переключение делать можно было?

Спасибо.

Ссылка на комментарий
Поделиться на другие сайты

Я почему-то почти уверен в том, что можно даже настроить скрипт(ы) так, чтобы он(и) срабатывал(и) на реакцию звукового драйвера на (пере)подключение разъёмов...

Ссылка на комментарий
Поделиться на другие сайты

  В 20.04.2012 в 00:47, Yezhishe сказал:

Эм-м-м... Я, конечно, безмерно извиняюсь, но... Каковы принципиальные отличия от стандартной кнопки "Пуск"?

Я не издеваюсь - мне просто интересно...

ни какой, мне просто так нравится :D

P.S. У меня кнопка ПУСК отсутствует за ненадобностью ;) да, да - я извращенец ))))

Изменено пользователем Indomito
Ссылка на комментарий
Поделиться на другие сайты

@Shadow TH, можно, именно я это и сделал, смотри мой первый пост #1.

Правда есть отличия в задаче, но не принципиальные.

Ссылка на комментарий
Поделиться на другие сайты

Может кому то пригодится.

Скрипт показывает список элементов (при наведении) управления активного окна.

Для разработки скриптов и программ, можно добавить сохранение в файл по ЛКМ и выход из скрипта по ПКМ.

;Показывает в реальном времени список элементов управления активного окна:#PersistentSetTimer, WatchActiveWindow, 200returnWatchActiveWindow:WinGet, ControlList, ControlList, AToolTip, %ControlList%return

P.S. Для браузеров не подходит.

Изменено пользователем Indomito
Ссылка на комментарий
Поделиться на другие сайты

Я вообщем то не собирался писать этот скрипт, но просто понадобилось сформировать набор списка файлов с прослушиванием, ну и началось :D

В скрипте есть всего понемногу:

- файловые операции;

- GUI (совсем чуть-чуть);

- циклы и работа с массивами;

- ну и т.д. и т.п.

Писал 10-15 минут, так что не очень заботился об алгоритмизации - извиняйте. :tease:

#include C:\AHK\Include\PathUses.ahkMenu, Tray, Icon, Shell32.dll, 168vChoice := ;vTChoice := ;arWavWin := [""]i := 0Loop, %A_WinDir%\Media\*.*{ if ((A_LoopFileExt = "wav") or (A_LoopFileExt = "mid")){ arWavWin[++i] :=  A_LoopFileName vTChoice := vTChoice "|" arWavWin[i]}}arWavWin[i+1] := 0vChoice := SubStr(vTChoice, 2)Gui, New,-maximizebox -minimizebox,Результаты поискаGui, font, s11Gui, Add, ListBox, x18 y70 w264 h350 , %vChoice%Gui, font, s10Gui, Add, Button, x2 y440 w110 h30 Default gOk, ПродолжитьGui, Add, Button, x186 y440 w110 h30 gCancel, ВыйтиGui, font, s13Gui, Add, Text, Center x12 y20 w254 h40 , Поиск закончнен`, надено `n %i% файловGui, Show, x408 y118 h485 w300ReturnGuiEscape:GuiClose:Cancel:Gui, CancelExitAppOk:Gui, Cancelclipboard = ;vTmp := ;i := 1while (arWavWin[i])  { vWav := arWavWin[i] SoundPlay %A_WinDir%\Media\%vWav% ; , wait не будем ждать т.к. файл может быть длинный. sleep 2000 ; ограничиваемся 2-мя секундами.	 msgbox % 3+32	   ,% "Звуки Windows"	   ,% "Звук №" cEscSps i cEscSps cEscSps arWavWin[i] cEsc2LF "Сохранить в буфере обмена?"	   ,% 5 IfMsgBox Yes	 vTmp := vTmp vWav cEscCRLF	else IfMsgBox Cancel		  break	  else IfMsgBox No		   i := i	   else		 i--		   i++ sleep 500 ; чуть подождем (0.5 сек) пока закончится поток.}clipboard = %vTmp%if (clipboard){  msgbox % 0+32	 ,% "Содержимое СlipBoard"	 ,%  clipboard}ExitApp

Ну и подключаемый файл PathUses.ahk - ну это как всегда ;)

Ссылка на комментарий
Поделиться на другие сайты

Решил переделать то что написал выше и вот что вышло - не судите строго.

Вот EXEшник - FndWav.zip

Вот исходник - FndWav.ahk


1.png 7.png 6.png 5.png

Нашёл баг - надо всё же использовать ключ, т.е. FndWav.exe /m f:\torrent\book\Роберт Шекли - Cборник рассказов а то получается куча параметров из-за пробела в имени пути... случайно обнаружил ;)

Хотя можно проверять на m или w или 3 - но получается сложный алгоритм и мало ли что ещё мне задумается искать или делать установки. :D

P.S. Админ! Пропадают LF|CR при редактировании - 5 раз перегружал страницу... не порядок однако ;)

post-37016-0-22238100-1335316194_thumb.p

post-37016-0-03358400-1335404043_thumb.p

post-37016-0-84921100-1335404500_thumb.p

post-37016-0-96606600-1335404754_thumb.p

Изменено пользователем Indomito
Ссылка на комментарий
Поделиться на другие сайты

  • 8 месяцев спустя...

Давно я не писал (ДА ДА вижу предупреждения, но тема моя же) и так о компиляции скриптоФ и от трее

Это фрагмент файла AllSystemOS.ahk а точнее весь немного переделанный и допиленный.

; Скрипт не выгружается#Persistent; Запрет повторного запуска#SingleInstance;----------------------------------- Вот новая часть (переделка); -----------------ЧАСТЬ №1; Ресурсы скриптаFileCreateDir, %A_WorkingDir%AllSystemOS_RES ; Создаём папку для ресурсовFileSetAttrib, +H, %A_WorkingDir%AllSystemOS_RES ; Делаем её скрытойFileInstall, AllSystemOS_RES\windows7.jpg, AllSystemOS_RES\windows7.jpg, 1 ; Картинка для рестартаFileInstall, AllSystemOS_RES\Os_Settings_Gear.ico, AllSystemOS_RES\Os_Settings_Gear.ico, 1 ; иконка в трее;--------------------------------------------------------------------;=====Базовые пути=====================#Include c:\AHK\Include\#Include PathUses.ahk; Устанавливаем путь к файлам скрипта#Include C:\AHK\AllSystemOS\; -----------------ЧАСТЬ №2; Работа с ресурсами и иконкойsleep 5000 ; задержка для коррекции и синхронизации.;=====Cменить иконку скрипта  mcTray := "AllSystemOS_RES\Os_Settings_Gear.ico"  Menu, tray, NoStandard				   ; меню в трее будет не стандартным - своим  Menu, Tray, Icon, %McTray%			 ; Устанавливаем иконку  Menu, tray, add, Справка, HelpKey1 ; добавляем пункт меню по ПКМ  Menu, tray, add, Выход, lExitProc	 ; добавляем пункт меню по ПКМ  ; Задаём свою выноску "балон"  Menu, tray, tip, `n Обработка клавиш для: `n  - приложений `n  - игр `n  - и т.д. `n `n  Menu, tray, default, Справка ; Этот пункт меню по умолчанию двойной щелчёк ЛКМ по иконке в трее для его вызова  Menu, Tray, Click, 1 ; Переназначаем двойной на одиночный ЛКМ;-------------------------------------------------------------;=====Переменные/константы для скрипта и начальная инициализация#Include VarScript.ahk;=====Справка по клавишам#Include HelpKey.ahk;================Игры#Include Games.ahk;=====Запуск основных приложений#Include AppStartUp.ahk;=====Блокируем отдельное нажатие клавиши WIN;~LWin Up::;~RWin Up::; При компиляции;=====Замена CapsLock на ShiftCapsLock::ShiftreturnlExitProc:ExitApp;*********************************************;****************END SCRIPT*******************;*********************************************

Далее запускаем компилятор и радуемся - иконки и т.д. буду там где надо.

Вот что я хотел написать - вроде всё.

Изменено пользователем Indomito
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

@Bestiya, И так по шагам.

1. Скачать и установить AutoHotkey_L (расширенная редакция языка)

2. Открытть любой текстовый редактор - блокнот подойдёт для начала. (Рекомендую SciTE4AutoHotkey или Notepad++)

3. Описываю задачу:

- когда нажимается клавиша A то печатается B и наоборот.

- скрипт должен быть резидентным, т.е. работать постоянно.

4. Набираем сл. текст

; Скрипт не выгружается#Persistent; Активизация хука клавиатуры, т.е. внутри директивы #UseHook клавиша может вызывать самою себя;#UseHook, Ona::breturnb::areturn; Деактивизация хука клавиатуры;#UseHook, Off

Примечание

Когда ; расположена в начале строки это означает комментарий или же данная команда не работает, в данном случае не будут работать

хуки клавиатуры #UseHook, On и #UseHook, Off - они необязательны, но если не сработает замена, например в игре, то надо убрать ;

5. Сохраняем текстовый файл sub_AB.ahk где угодно, т.е. где удобнее.

6. Запускаем его двойным нажатие на ЛКМ

7. Тестируем и радуемся :)

Вот текст скрипта, у него двойное расширение, т.к. расширение AHK не допустимо, надо просто переименовать, т.е. убрать .TXT

sub_AB.ahk.txtПолучение информации...

sub_AB.ahk.txtПолучение информации...

Изменено пользователем Indomito
Ссылка на комментарий
Поделиться на другие сайты

В дополнение к посту #18 скрипт для безусловной компиляции с запуском.

;***********************************************;Компиляция для AllSystemOS.ahk,; не стал делать параметризованную,; т.к. проще внести поправки где необходимо.;***********************************************;Закрываем редактор, что бы не забыть сохранить изменения в исходнике перед компиляциейvWin := "Notepad++" ; Окно должно содержать хотя бы этот текст. Case Sensitive!!!!fNP := falseSetTitleMatchMode, 2IfWinExist, %vWin% {   WinClose   fNP := true }; Завершаем процесс ASOS.exeProcess, Close, ASOS.exesleep 3000 ; Чуть подождём = 3 сек; Параметры для компиляции.;--------------------------------;Два последних ключа;--> 1-й;/bin библиотека - Libraries, but not all, depending on the encoding of the source!!!;AutoHotkeySC.bin;ANSI 32-bit.bin;Unicode 32-bit.bin;Unicode 64-bit.bin;--> 2-й;/mpress  ;сжатие EXE ON = 1;сжатие EXE OFF = 0;--------------------------------vTarget := "Ahk2Exe.exe /in C:\AHK\AllSystemOS\AllSystemOS.ahk /out C:\ASOS.exe /icon C:\AHK\AllSystemOS\ASOS_RES\Os_Settings_Gear.ico /bin ""Unicode 32-bit.bin"" /mpress 1"; Рабочая папка компилятораvWorkingDir := "C:\Program Files (x86)\AutoHotkey\Compiler"; Запуск компилятораRun, %vTarget% , %vWorkingDir%sleep 3000 ; Чуть подождём = 3 сек; Имя запускаемого процессаvTarget := "ASOS.exe"; Его рабочая папкаvWorkingDir := "C:\"; Запускаем ASOS.exeRun, %vTarget% , %vWorkingDir%;Запускаем редактор Notepad++ , если он был запущен ранееif (fNP){   vTarget := "C:\Program Files (x86)\Notepad++\notepad++.exe"   vWorkingDir := "C:\Users\SASA\AppData\Local\Temp\nppLocalization"   Run, %vTarget% , %vWorkingDir%   sleep 3000 ; Чуть подождём = 3 сек  }exit ; И выходим
Изменено пользователем Indomito
Ссылка на комментарий
Поделиться на другие сайты

Bestiya и так проблемы со скриптом.

Решение №1. Использовать вместо букв скан-коды. Может быть у тебя клавиатура от ноута или мультимедийная.

Вот программка для получения их, правда есть таблица, но программа может определить любую клавишу - в таблице не всё есть.

#Persistent  OnExit, Exit  hHookKeybd := DllCall("SetWindowsHookEx"  , Int, WH_KEYBOARD_LL := 13  , UInt, RegisterCallback("LowLevelKeyboardProc", "Fast")  , UInt, DllCall("GetModuleHandle", UInt, 0)  , UInt, 0)  ReturnExit:  DllCall("UnhookWindowsHookEx", UInt, hHookKeybd)  ExitAppLowLevelKeyboardProc(nCode, wParam, lParam){  Critical  SetFormat, Integer, H  ToolTip, % wParam . "| vkCode: " . NumGet(lParam+0, 0) . " scCode: " . NumGet(lParam+0, 4)  . " Extended: " . NumGet(lParam+0, 8) & 1 . " Time: " . NumGet(lParam+0, 12)  Return DllCall("CallNextHookEx", UInt, 0, Int, nCode, UInt, wParam, UInt, lParam)}

Запускаешь её, нажимаешь на кнопку и там где курсор мышки появится - 3.png тебе нужно то что начинается с vkCode записываешь его и далее a и b заменяешь на vk41 и vk42

Получаем такой скрипт

; Скрипт не выгружается#Persistent; Активизация хука клавиатуры, т.е. внутри директивы #UseHook клавиша может вызывать самою себя;#UseHook, Onvk41::vk42returnvk42::vk41return; Деактивизация хука клавиатуры;#UseHook, Off

Да, после этого будет поддерживаться раскладка/переключение клавиатуры RU <-> EN (Для букв a и b)

Решение №2. Убери комментарии с #UseHook, On и #UseHook, Off

Решение №3. Ты поставила не AHK_L, а AHK BASIC (в нём много что не работает и много ограничений + он давно не обновлялся). Запусти скрипт C:\Program Files (x86)\AutoHotkey\Update.ahk и посмотри версию или же просто сделай скриншот.

P.S. Работать должно на 100% это очень простая программа переназначения.

post-37016-0-26519000-1357520296_thumb.p

Изменено пользователем Indomito
Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Для тех кто использует Mozilla Thunderbird как почтовую программу по умолчанию в загрузке или запускает в ручную.

Исходный код, его цель спрятать Mozilla Thunderbird просто она иногда этого делать не хочет

Sleep, 500ToolTiploop 10 {SetTitleMatchMode, 2if WinExist("Thunderbird"){ ToolTip fnWinTray() WinMinimize WinClose ; Убрать если нет дополнения Sleep, 100 ToolTip}}returnfnWinTray(){Send, {F9 Down}KeyWait, % A_ThisHotkeySend, {F9 Up}return}

В коде есть вызов встроенной функции для закрытия окна WinClose, если у вас нет дополнения обрабатывающего Вместо Закрыть окно -> Минимизировать/Убрать в трей, то данную функцию следует удалить.

Кому не лень компилировать, то используйте библиотеки Unicode 32-bit.bin или Unicode 64-bit.bin

Для тех кому лень компилировать, я прикладываю в архивы с EXE- файлми.

1. С WinClose - TbHideTray1.rarПолучение информации...

2. Без WinClose - TbHideTray2.rarПолучение информации...

Сразу предупреждаю. Программа, т.е. TbHideTray.exe упакована mpress.exe для уменьшения размера, так что программы типа ResHacker.exe не смогут работать с ресурсами, сначала требуется её распаковать.

TbHideTray1.rarПолучение информации...

TbHideTray2.rarПолучение информации...

Изменено пользователем Indomito
Ссылка на комментарий
Поделиться на другие сайты

  • 8 месяцев спустя...

Всем привет подскажите если у кого скрипты или мог бы их сделать для кликера пилот на игру русская рыбалка или фантастическая рыбалка для того что бы рыбу сама ловила)) заранее спс.

Ссылка на комментарий
Поделиться на другие сайты

@Леха Н, можно и делали на AHK... загляни на "Серый Форум". Просто не хочется копи-пасте заниматься, я здесь публикую что сам написал и на 99,9% работает.

 


UPD Хотя могу помочь, но нужно описание задачи.
  Леха Н сказал:
для кликера пилот
... что за  "пилот" - используй обычные скриптовые языки приспособленные для управления клавиатурой, мышкой и событиями в приложениях, так намного проще. Изменено пользователем Indomito
Ссылка на комментарий
Поделиться на другие сайты

Я тут решил поиграть в Saints Row: The Third (THQ), ну и началось - это не нравиться это не так нажимается и так далее...

Открыл я Notepad++ и решил написать небольшой скриптик на AHK, но как всегда это закончилось, ну понятно чем закончилось  :)

В скрипте есть практически всё, что может кому либо пригодиться - таймеры, потоки, динамическое переназначение клавиш, срабатывание на событие и так далее.

Даю только текст, а кому нужен сам файл пишите тут или в ЛС.

Приношу извинения, комментарии на английском языке, т.е. они были изначально на русском, но когда я его опубликовал на одном форуме этой игры - людям понравилось и они попросили приблизительно сделать перевод.

 

Не рекомендую открывать, если не нужно  :bigsmile:

  Показать контент

THQ._ahk.txtПолучение информации...

Изменено пользователем Indomito
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу



×
×
  • Создать...