#SingleInstance Force
#NoEnv
SetBatchLines -1
Name = Cam OverLay
GroupAdd, AppGroup, % Name
;Gui +ToolWindow
Gui Add, Button, x125 y50 w102 h23, Подтвердить
Gui Add, ListBox, vG1 gПодтвердить hwndhListbox x25 y151 w196 h160
Gui Add, Button, gNewApp hwndhBut x125 y19 w102 h23, Отследить игру
Gui Add, Button, gGames x15 y19 w102 h23, Папка GAMES
Gui Add, Button, gOBS x15 y50 w102 h23, Запустить OBS
Gui Add, Button, gReverse x125 y104 w102 h23, Реверс
Gui Add, Text, x18 y90 w210 h2 +0x10
Gui Add, GroupBox, x18 y134 w211 h188, Выбрать процесс
Gui Add, Edit, hwndhSear gGet vPoisk x17 y105 w100 h21, Поиск процесса...
;Gui Add, Edit, gGet vPoisk x8 y16 w200 h21, Поиск... ; Ищет сразу, если не нужно убрать 'gGet'.
;Gui Add, ListBox, vG1 gOk hwndhListbox x8 y40 w200 h160
;Gui Add, Button, x8 y208 w80 h23, OK
for Process in ComObjGet("Winmgmts:").ExecQuery("Select * From Win32_Process")
Txt .= Process.Caption "|"
GuiControl,, % hListbox, % Txt ; Вставить из переменной.
Gui Show, w246 h340, % Name
Return
GuiEscape:
GuiClose:
ExitApp
Games:
Run, C:\Users\Администратор\Desktop\Games
OBS:
Run, C:\Program Files\obs-studio\bin\64bit\obs64.exe
#IfWinActive, Ahk_Group AppGroup
; Перехват клавиши Enter в своём окне:
Enter::
KeyWait, %A_ThisHotkey%, U
ControlGetFocus, F_Now, % Name ; Получить текущий выбранный контрол.
If (F_Now = "ListBox1") ; Если фокус на списке сохранить пункт и выйти:
{
Gui, Submit, NoHide
ToolTip, Переменная = %G1%
Sleep, 300
ToolTip
Return
}
Else If (F_Now = "Edit1") ; Поиск в списке:
{
GoTo, Get
}
;Else
; Send, {%A_ThisHotkey%} ; Нажать Enter если нет совпадений.
Return
#If
Get:
Gui, Submit, NoHide
T=
Loop, Parse, Txt, |
{
If InStr(A_LoopField, Poisk)
{
SendMessage, 390, A_Index-1, 0,, ahk_id %hListbox% ; Выделить найденный пункт.
T := A_Index
Break
}
}
If !T
{
ToolTip, Нет такого.,0,0
Sleep, 400
}
ToolTip
Return
Подтвердить:
Gui, Submit, NoHide
;ToolTip, Пункт: %G1% ; отображение выбранного пункта
Return
Reverse:
Reverse := !Reverse
GoSub, App
If Reverse
Sort, Txt, R D|
GuiControl,, % hListbox, | ; Очистить список.
GuiControl,, % hListbox, % Txt ; Вставить из переменной.
Return
NewApp:
Txt2 := Txt ; Резерв тек. списка.
GuiControl,, % hListbox, | ; Очистить список.
GuiControl,, % hListbox, "Ожидание..."
GuiControl, Disable, % hBut ; Блок кнопки.
GuiControl, Disable, % hSear ; Разблок поиска.
SetTimer, NewP, 1000 ; Тест каждую секунду.
Return
NewP: ; Отсев новых программ.
GoSub, App
Txt_New =
D = |
Loop, Parse, Txt, %D%
{
If !InStr(D Txt2 D, D A_LoopField D)
Txt_New := A_LoopField "|"
}
If Txt_New
{
Txt := Txt_New
SetTimer, NewP, Off ; Выключить тестер.
GuiControl,, % hListbox, | ; Очистить список.
GuiControl,, % hListbox, % Txt_New ; Вставить из переменной.
GuiControl, Enable, % hBut ; Разблок кнопки.
GuiControl, Enable, % hSear ; Разблок поиска.
}
Return
App: ; Создать список запущенных.
Txt =
for Process in ComObjGet("Winmgmts:").ExecQuery("Select * From Win32_Process")
Txt .= Process.Caption "|"
Return
F9::
; If Not ОкноБезРамокДляИгр
{
BorderSize:=0
WinMove, ahk_exe %G1%,, -BorderSize, -BorderSize, 1920+2*BorderSize, 1080+2*BorderSize
WinSet, Style, -0xC00000, ahk_exe %G1% ; убрать рамку
; ОкноБезРамокДляИгр := true
}
; If Not ОкноБезРамокДляВебки
{
WinMove Оконный проектор (Источник) - Вебка,, 1510, 0, 410, 310 ; перемещаем окошко в угол + ресайз
WinSet Style, -0x800000, Оконный проектор (Источник) - Вебка ; -рамка
WinSet Style, -0x40000, Оконный проектор (Источник) - Вебка ; -рамка
WinSet Style, -0x400000, Оконный проектор (Источник) - Вебка ; -рамка
; ОкноБезРамокДляВебки := true
}
IfWinExist ahk_class Qt5152QWindowIcon ahk_exe obs64.exe
{
WinGet ExStyle, ExStyle
if Not (ExStyle & 0x8) ; 0x8 is WS_EX_TOPMOST. The window is always-on-top.
{
WinSet ExStyle, +0x20 ; чтобы клики проходили сквозь окошко
WinSet Transparent, 255 ; прозрачность окна: 0 - максимальная, 255 - непрозрачное
WinSet AlwaysOnTop, On
} else
{
WinSet ExStyle, -0x20
WinSet Transparent, 255
WinSet AlwaysOnTop, Off
; переключаем режим "поверх всех" в окне игры, чтобы окошко ушло на задний план
WinSet AlwaysOnTop, On, A
WinSet AlwaysOnTop, Off, A
}
}
Return