1 (изменено: akkustik, 2020-07-09 18:45:19)

Тема: AHK:Скрипт автозапуска-закрытия другого скрипта.

Доброго времени суток!
Хочу написать скрипт, который бы всегда находился в памяти, и при запуске игры запускал бы определённый скрипт.
А при выходе из игры, закрывал бы его.
Примерно вот так он должен выглядеть:

Loop 
{
Process, Wait, game.exe
Run, e:\Game.ahk
}
return
Loop
{
    WinWaitClose ahk_class Game
Process, Close, Game.ahk
}
return

Помогите пожалуйста

2 (изменено: __Михаил__, 2020-07-10 23:03:56)

Re: AHK:Скрипт автозапуска-закрытия другого скрипта.

Я лично использую кнопку на мышке, в каждом окне она имеет своё значение:
-В играх - кликер / зажим.
-В проводнике - двойной клик для открытия файлов.
-В некоторых программах - на весь экран / свойства / закрыть окно.
-F клавиши почти все заняты и в каждом окне свои действия на них.

Loop - это цикл, тем более вечный в вашем случая, а зачем? Мало того что WinWait, например сам по себе вечный цикл (если не ошибаюсь), так он ещё в цикле поставлен - колхоз.

Мой вариант - используется конструкция по типу в зависимости от текущего окна - устанавливаем нужные кнопки в нём.

#IfWinActive, ahk_class Notepad

F1::
ToolTip,  F1 нажата в окне блокнота.
Sleep, 1000
ToolTip
Return

#If	; Завершаем условия



#IfWinActive, ahk_class Progman

F1::
ToolTip,  F1 нажата на раб. столе
Sleep, 1000
ToolTip
Return

#If

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

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

3

Re: AHK:Скрипт автозапуска-закрытия другого скрипта.

__Михаил__ пишет:

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

С #IfWinActive есть проблема. Допустим я запускаю скрипт-прицел:

x = 959
y = 539
w = 2
h = 2
Color = 0x66ff00 
WS_EX_TRANSPARENT := 0x20
WS_EX_LAYERED := 0x80000
Gui, +AlwaysOnTop -Caption +ToolWindow +LastFound
Gui, Color, % Color
Gui, Show, x%x% y%y% w%w% h%h% NA
WinSet, ExStyle, % "+" WS_EX_LAYERED|WS_EX_TRANSPARENT

Захожу в игру, поиграл-вышел, а точка прицела весит посреди экрана. На этот скрипт #IfWinActive не действует! (

4

Re: AHK:Скрипт автозапуска-закрытия другого скрипта.

akkustik

Если вы сделаете активацию / де активацию по кнопке, проблема решится.
Разве это сложно выполнить?

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

5

Re: AHK:Скрипт автозапуска-закрытия другого скрипта.

Впишите название игры вместо  'ahk_class Notepad' и будет активация прицела только в ней.

Включить / Выключить по кнопке F2.
Если текущее окно не является игрой - выключает точку-прицел.


#IfWinActive, ahk_class Notepad

F2::
In_Game :=! In_Game	; Сменить флаг, переменная указывает наличие точки.
If In_Game		; Если флаг = 1:
{
 x = 959
 y = 539
 w = 2
 h = 2
 Color = 0x66ff00 
 WS_EX_TRANSPARENT := 0x20
 WS_EX_LAYERED := 0x80000
 Gui, +AlwaysOnTop -Caption +ToolWindow +LastFound
 Gui, Color, % Color
 Gui, Show, x%x% y%y% w%w% h%h% NA
 WinSet, ExStyle, % "+" WS_EX_LAYERED|WS_EX_TRANSPARENT
}
Else
 Gui,  Hide	; Иначе скрыть точку.
Return

#If

#IfWinNotActive, ahk_class Notepad

F2::
Gui, Hide	; Скрыть окно.
In_Game := 0	; Флаг о выключении точки.
Return
Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

6

Re: AHK:Скрипт автозапуска-закрытия другого скрипта.

__Михаил__ пишет:

Впишите название игры вместо  'ahk_class Notepad' и будет активация прицела только в ней.

Я знаю как прописывать последовательность команды #IfWinNotActive, у меня это #IfWinActive ahk_class UnrealWindow. Все горячие клавиши работают правильно, и только в игре, НО код этого прицела игнорирует #IfWinNotActive! Можете сами проверить ) И теперь если забыть отключить прицел перед выходом из игры, точка так и будет висеть, и её не отключишь.

7 (изменено: __Михаил__, 2020-07-11 16:01:03)

Re: AHK:Скрипт автозапуска-закрытия другого скрипта.

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

В игре Ring of Elysium всё прекрасно работает.

В крайнем случае можете поставить таймер и в раз Н-ое количество секунд проверять текущее окно, затем выключить прицел...

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

8

Re: AHK:Скрипт автозапуска-закрытия другого скрипта.

__Михаил__ пишет:

В крайнем случае можете поставить таймер и в раз Н-ое количество секунд проверять текущее окно, затем выключить прицел...

А как это сделать?

9

Re: AHK:Скрипт автозапуска-закрытия другого скрипта.

Это же просто:

TimeWait := 1000*	60	; Время между проверкой времени (раз в минуту).
SetTimer, AutoOff, %TimeWait%	; Запускаем таймер.

;...основной код...
Return


AutoOff:
IfWinNotActive, Ahk_Group CloserGroup
{
 SetTimer, AutoOff, Off	; Вырубаем таймер
 Gui, Hide	; Скрыть окно.
 In_Game := 0	; Флаг о выключении точки.
}
Return
Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

10 (изменено: banf, 2020-07-12 09:23:52)

Re: AHK:Скрипт автозапуска-закрытия другого скрипта.

Ребята, сделайте пожалуйста скрипт, который будет зажимать шифт и отпускать через определённое время!!!
Который можно будет включить, выключить одной кнопкой.Желательно, чтобы запуск на F7 был.

11

Re: AHK:Скрипт автозапуска-закрытия другого скрипта.

banf, Вам сюда.

12

Re: AHK:Скрипт автозапуска-закрытия другого скрипта.

__Михаил__ пишет:

Это же просто:

Оно исчезает, но оно потом и не появляется. ) Я придумал как сделать, пропишу код твоего отключения кнопкой до #IfWinActive ahk_class UnrealWindow. И тогда можно будет выключить прицел после того как выйду из игры. ) Спасибо за помощь!