1

Тема: AHK: Как получить такой же ahk_class как и в Windows Spy?

Добрый день.
Есть BlueStacks, у него есть свой ahk_class который я могу взять из Windows Spy.
Однако, каждый раз при обновлении стакса циферки меняются, и править программу вручную как то не комфортно.
Windows Spy дает мне "ahk_class Qt5154QWindowOwnDCIcon"
Однако, если я пытаюсь сделать "WinGetClass, Clipboard, BlueStacks", он выдает мне "Qt5154QWindowToolSaveBitsOwnDC"
Как и через что мне правильно обратиться чтобы у меня в переменной оказалось "Qt5154QWindowOwnDCIcon" ?

2

Re: AHK: Как получить такой же ahk_class как и в Windows Spy?

Нажать клавишу - получить текущий класс активного окна (+запишет в переменную) - решит проблему редактирования скрипта вручную.

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

3 (изменено: Gh0sTG0, 2021-07-11 01:06:35)

Re: AHK: Как получить такой же ahk_class как и в Windows Spy?

__Михаил__

	IfWinExist, BlueStacks
		WinActivate
	Sleep, 1000
	WinGetClass, Clipboard, A

Дает мне Qt5154QWindowToolSaveBitsOwnDC
Для того чтобы он выдал правильно, мне нужно тыкнуть в окно выполняемой апкшки, но это уже вообще не вариант, ТАКОЕ количество условий...
Если так, то вроде как уже и никак, да. Но тогда можно попробовать получить только циферки, 5154, и уже от них плясать дальше, остальное вроде как должно быть одинаково.
Хм. Вроде в гугле чего то про это нашел. Пойду попробую сделать, хм.
Как то так вроде работает:

	WinGetClass, class_line, BlueStacks
	BS_num := RegExReplace(class_line, "\D")
	BS_click := "Qt" . BS_num . "QWindowOwnDCIcon"

4

Re: AHK: Как получить такой же ahk_class как и в Windows Spy?

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

5

Re: AHK: Как получить такой же ahk_class как и в Windows Spy?

Если что, можно использовать не только класс окна:

#IfWinActive, ahk_exe Bluestacks.exe

;21:11 21.09.2020	ПКМ=ЛКМ.
vk2::
Send, {vk1 Down}
KeyWait, %A_ThisHotkey%, U
Send, {vk1 Up}
Return

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

6 (изменено: Gh0sTG0, 2021-07-11 01:18:25)

Re: AHK: Как получить такой же ahk_class как и в Windows Spy?

__Михаил__
Срабатывает правильно только ПОСЛЕ тыка в запущенное приложение. Иначе выдает неправильно. Условие тыка в окно... Не очень вписывается в логику моей программы которую я для себя пилю и которая должна для меня работать по принципу запустил автозапуском и забыл...
В общем вот тот код выше вроде отрабатывает корректно.

PS у меня там некоторое количество gdip imagesearch'а, и клики controlclick по координатам.
Я хз как оно работает и почему, но у меня controlclick по bluestacks'у завелся ТОЛЬКО при клике по классу окна при правильно написанном классе.

7

Re: AHK: Как получить такой же ahk_class как и в Windows Spy?

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

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

8 (изменено: Gh0sTG0, 2021-07-11 01:24:50)

Re: AHK: Как получить такой же ahk_class как и в Windows Spy?

__Михаил__
1) Loop
2) в котором идет gdip imagesearch (это как imagesearch но может и в окне которое не свернуто, но которого не видно на экране)
3) если gdip imagesearch находит заданное изображение, кликает по нему controlclick'ом.
Использую чтобы ежедневки фармить в одной игрушке, там чет многовато кликов, а так запустил и забыл. Потом проверил что все сделало.
ControlClick кликает только по указанному ahk_class, иначе клик не проходит в игру.
Все работает, но хотелось отвязаться от вручную введенного ahk_class который меняется при обновлении стакса. Вроде отвязался, да (код выше, получаю изменяющиеся цифры, собираю правильное название класса).