1

Тема: AHK: WinGetTitle - Запрет на получение названия всех окон Gui

Добрейшего всем. Можно ли как-то более компактно (чем перечислять все окна) запретить получение всех окон Gui, через команду WinGetTitle ? Перечислить не лень, окон не много. А если бы их было много, просто вдруг есть другой способ ?


gamewin = 

^5::
	WinGetTitle, gamewin, A
	if (gamewin == "Main"
	|| gamewin == "Menu1"
	|| gamewin == "Menu2"
	|| gamewin == "Menu3") ; перечисление всех окон подконтрольных главному "Main"
	{
		gamewin =
		OnHelp()
	}
	else
	WB.document.getElementById("fc1").placeholder := gamewin
return

- Предположим, есть главное окно скрипта "Gui :Parent" с WinTitle "Main", в котором можно открыть еще окна "Gui :Menu", "Gui :Menu1" и т.д. со своими названиями (WinTitle = Menu1, Menu2, Menu3 ...).
- Клавишей "ctrl + 5" можно получить название окна. Если оно относится к окну скрипта, то переменная будет пустой, а если нет, то получит значение.

GD

2

Re: AHK: WinGetTitle - Запрет на получение названия всех окон Gui

Botsy пишет:

подконтрольных главному

Проверяйте активное окно на принадлежность основному окну с помощью GetParent.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

3

Re: AHK: WinGetTitle - Запрет на получение названия всех окон Gui

Хотя как у вас дочернее окно становится активным? Оно же внутри родительского.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

4

Re: AHK: WinGetTitle - Запрет на получение названия всех окон Gui

serzh82saratov
Так создаю главное окно, то что видно при запуске скрипта:


Gui, Parent: New, ,Main
Gui, Parent: -DPIScale 
Gui, Parent: Margin, 0, 0
Gui, Parent: Add, ActiveX, w1080 h854 vWB, about:<meta http-equiv="X-UA-Compatible" content="IE=edge"> 
WB.document.write(html)
Gui, Parent: Show

... Допустим что-то делается...
... Вызываю функцию...

Это окно из вызванной функции:


Gui, Stats: New, , Menu
Gui, Stats: Margin, 0, 0
Gui, Stats: Add, ActiveX, w500 h300 vWBStats, about:<meta http-equiv="X-UA-Compatible" content="IE=edge"> 
WBStats.document.write(html)
Gui, Stats: Show
return

StatsGuiClose:
Gui, Destroy
return
GD

5

Re: AHK: WinGetTitle - Запрет на получение названия всех окон Gui

Botsy пишет:

есть главное окно скрипта "Gui :Parent" с WinTitle "Main", в котором можно открыть еще окна

Ну так это просто другое окно, вы его не в окне Parent открываете.
Проверяйте что окно принадлежит процессу скрипта.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

6

Re: AHK: WinGetTitle - Запрет на получение названия всех окон Gui

Через "ProcessName" не получилось, записывался результат последнего найденного окна, а не активного. Решил через класс:


	WinGetClass, gamewin1, A
	if (gamewin1 == "AutoHotkeyGUI") 
	{
		OnHelp()
	}
	else
	{
	WinGetTitle, gamewin, A
	WB.document.getElementById("fc1").placeholder := gamewin
	}
GD

7

Re: AHK: WinGetTitle - Запрет на получение названия всех окон Gui

Botsy пишет:

Решил через класс

Под это любой другой скрипт подойдёт.

Тут отсечено главное окно.


CurPID := DllCall("GetCurrentProcessId")
Gui, +HWNDhMain
Gui, Show, x222 w222 h222, Main
Gui, New 
Gui, Show, x444 w222 h222
Gui, New 
Gui, Show, x666 w222 h222

1:: 
	WinGet, PID, PID, A 
	MsgBox % (PID = CurPID) && (hMain != WinExist("A"))
	Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.09 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

8

Re: AHK: WinGetTitle - Запрет на получение названия всех окон Gui

serzh82saratov Спасибо, разобрался.

GD