Сделал по новому, теперь в виде нормальной проги, косяки возможно не все вычистил.
#NoEnv
#SingleInstance Force
Menu, Tray, Icon, Shell32.dll, 76
CoordMode, Mouse, Screen ; Задаём для курсора мышки отсчёт координат относительно всего экрана.
SetTitleMatchMode, 2
DetectHiddenWindows, On
Menu, tray, add, Открыть окно, Open
Menu, tray, add, - Перезапуск -, Exit2
Menu, tray, add, Показывать кол-во, Clicker
Menu, tray, add, ? Справка ?, Help
Menu, tray, add, < Сбросить счётчик >, Slear
Menu, tray, add, [ Закрыть ], Exit
Menu, tray, NoStandard ; Удалить стандартные ф-и из меню.
Menu, Tray, Click, 1 ; Активация одним щелчком по иконке (так удобнее).
Menu, tray, Default, Открыть окно ; Активировать окно программы из трея при нажатии на иконку.
OnExit, Exit ; Установить метку, которая выполнит сохранение данных в ini файл при выходе.
Set = Key_log.ini ; Название файла настроек программы.
TextNo = -Окно не указано-
IniRead, History, % Set, Log, History, 0 ; Кол-во нажатий.
IniRead, App1, % Set, Log, App1, ahk_exe chrome.exe ; Первое окно в котором подсчитывать.
IniRead, App2, % Set, Log, App2, % TextNo ; Второе окно.
IniRead, Info, % Set, Log, Info, 0 ; Подсказка при клике.
IniRead, X, % Set, Position, Pos_X, 200 ; X - позиция начала.
IniRead, Y, % Set, Position, Pos_Y, 200 ; Y - позиция начала.
IniRead, W, % Set, Position, Width, 550 ; Ширина (X + это значение).
IniRead, H, % Set, Position, Height, 250 ; Высота (Y + это значение).
If Info
Menu, Tray, Check, Показывать кол-во
If !App1
App1 = % TextNo
If !App2
App2 = % TextNo
GroupAdd, KeyGroup, % App1
GroupAdd, KeyGroup, % App2
Text0 = Gui Key log
Help = Можно указать два окна для подсчёта кликов`nДля определения нового окна просто кликнете в нём.`nЗатем скопируйте появившийся текст в 3 форме и вставьте его в одну из форм заполнения выше.`nЧто бы заработали изменения - перезапустить программу.`nКлавиша Pause - для паузы в определении окна (пока активно это окно).`n09-11.09.2020 __Михаил__`nhttp://forum.script-coding.com/viewforum.php?id=13
;Коррекция Gui окна:
Xcorr := 0
Ycorr := 0
Wcorr := 7
Hcorr := 7
Return
#IfWinActive, Ahk_Group KeyGroup
~vk1:: ; 'Скрытый' перехват левой кнопки мыши.
If F2S
Return
MouseGetPos, X_pos, Y_pos ; Текущая позиция курсора.
If (X_pos >= X) and (Y_pos >= Y) and (X_pos <= X+W) and (Y_pos <= Y+H) ; Магия определения.
{
History++
If Info
Tool("Нажатие № " History)
}
Return
#If
Get:
Sleep, 100
MouseGetPos,,,id
WinGetClass, Class, ahk_id %id%
WinGetTitle, Title, ahk_id %id%
WinGet, Exe, ProcessName, ahk_id %id%
If (Title = Text0)
Return
Text = %Title% ahk_class %Class% ahk_exe %Exe%
GuiControl,, % hText3, % Text
Return
Pause:
KeyWait, %A_ThisHotkey%, U
If (F2S = 1)
{
Tool("Пауза снята.`nКлик для определения окна.",5000)
Try
Hotkey, ~vk1, On
F2S = 2
}
Else
{
Tool("Пауза в определении окна.`nНажмите Pause повторно чтобы снять её.",5000)
Try
Hotkey, ~vk1, Off
F2S = 1
}
Return
Закрыть:
KeyWait, %A_ThisHotkey%, U
Try
{
Hotkey, ~vk1, Off
Hotkey, Pause, Off
}
GoSub, GetSet
F2S := 0
Return
GetSet:
If (F2S < 1)
Return
Gui, Submit
WinGetPos,X0,Y0,W0,H0, %Text0% ahk_class AutoHotkeyGUI
X := (X0-Xcorr)
Y := (Y0-Ycorr)
W := (W0-Wcorr)
H := (H0-Hcorr)
Gui, Destroy
Return
Open:
KeyWait, %A_ThisHotkey%, U
If (F2S > 0)
GoTo, Закрыть
F2S = 1
Gui, +LastFound +AlwaysOnTop
Gui, -Caption +LastFound +AlwaysOnTop -SysMenu +ToolWindow +Resize +MinSize20x20
Gui, Color, 354EA3
Gui, Add, Text, W999, Название 1 окна:`t`tКликов: %History%
Gui, Add, Edit, HWNDhText1 w9999 r1 vApp1, % App1
Gui, Add, Text, W200, Название 2 окна:
Gui, Add, Edit, HWNDhText2 w9999 r1 vApp2, % App2
Gui, Add, Text, W999, Текущий клик в окне: (Титул, Класс, *.Exe)
Gui, Add, Edit, HWNDhText3 w600 vApp3, (Нажмите на нужное окно)
Gui, Add, Text, W999, % Help
X0 := X-Xcorr
Y0 := Y-Ycorr
W0 := W-Wcorr
H0 := H-Hcorr
Try
Gui, Show, NoActivate x%X0% y%Y0% w%W0% h%H0%, % Text0
Catch ; При ошибках:
{
ToolTip, Ошибка данных:`nx%X0% y%Y0% w%W0% h%H0%,0,0
X := 100
Y := 100
W := 100
H := 100
Sleep, 2000
GoSub, Open
ToolTip
Return
}
Trans = 230 ; Прозрачность GUI окна
WinSet, Transparent, %Trans%
Hotkey, ~vk1, Get
Hotkey, ~vk1, On
Hotkey, Pause, Pause
Hotkey, Pause, On
Return
GuiSize:
If ErrorLevel = 1
Return
WinGetPos,,,W0
Loop, 3
GuiControl, Move, % hText%A_Index%, % "W" . (W0 - 33)
Return
;05:44 19.07.2020 ToolTip на время:
; Wait = таймер если != 0, иначе ожидает отжатия клавиши.
Tool(Text, Wait := 1000, X := -1, Y := -1)
{
If (X+Y < 1)
ToolTip, % Text
Else
ToolTip, % Text, %X%, %Y%
If !(Wait = 0)
SetTimer, T_Off, % Wait
Else
{
SetTimer, T_Off, Off
KeyWait, %A_ThisHotkey%, U
ToolTip
}
Return
}
T_Off:
SetTimer, T_Off, Off
ToolTip
Return
Exit:
GoSub, Save
ExitApp ; Вырубить скрипт.
Return
Slear:
History := 0
Return
Exit2:
GoSub, Save
Reload
Return
Save:
GoSub, GetSet
IniWrite, % History, % Set, Log, History
If !(App1 = TextNo)
IniWrite, % App1, % Set, Log, App1
If !(App2 = TextNo)
IniWrite, % App2, % Set, Log, App2
IniWrite, % Info, % Set, Log, Info
If X
{
IniWrite, % X, % Set, Position, Pos_X
IniWrite, % Y, % Set, Position, Pos_Y
IniWrite, % W, % Set, Position, Width
IniWrite, % H, % Set, Position, Height
}
Return
Clicker:
If Info
Info = 0
Else
Info = 1
Menu, Tray, ToggleCheck, Показывать кол-во
Return
Help:
MouseMove, X+W-10,Y+H-10, 10
If F2S < 1
GoSub, Open
ToolTip, <-- Это окно для настройки программы.`nОткрыть его можно кликнув на иконку в трее.
Sleep, 10000
ToolTip, -Определяет до двух окон.`n-Позиция настраивается изменением размеров этого окна.
Sleep, 10000
ToolTip, -Для применения изменений - нужен перезапуск программы.`n-Для отключения определения - стереть текст в форме.
Sleep, 10000
ToolTip, -Клики можно посмотреть в первой строчке (сейчас их %History%)`n-Очистить можно выбрав пункт в менюшке.
Sleep, 10000
ToolTip
Return