Что нового

Реагирование на активность-неактивность конкретного окна

radioamator16

Чайник
Сообщения
33
Репутация
0
Версия AutoIt: 3.3.14

Описание:
Здравствуйте.
У меня возник вопрос по окнам.

Есть два открытых процесса Notepad.exe и Calc.exe.
Calc.exe - имеет свойство - поверх всех окон.
Посоветуйте - как скриптом назначать окну процесса Calc - данное свойство (поверх всех окон) - только при условии, что окно Notepad.exe - в настоящий момент активно и не свернуто ?

А во всех остальных случаях - чтобы окно процесса Calc.exe - было позади всех окон (или невидимым).

Примечания:
 

xXx

Меценат
Меценат
Сообщения
85
Репутация
25
Код:
;~ If Not ProcessExists('win32calc.exe') Then Run('calc.exe')
;~ If Not ProcessExists('Notepad.exe') Then Run('Notepad.exe')

Global $iOnTop_Calc, $hWnd_Calc, $hWnd_Notepad
Do ; Ждем актививации окон Calc и Notepad
	If Not $hWnd_Calc Then $hWnd_Calc = WinActive('[CLASS:CalcFrame]')
	If Not $hWnd_Notepad Then $hWnd_Notepad = WinActive('[CLASS:Notepad]')
	Sleep(50)
Until ($hWnd_Calc And $hWnd_Notepad)

While WinExists($hWnd_Notepad)
	If WinActive($hWnd_Notepad) Then
		If Not $iOnTop_Calc Then $iOnTop_Calc = WinSetOnTop($hWnd_Calc, '', 1)
	Else
		If $iOnTop_Calc And WinSetOnTop($hWnd_Calc, '', 0) Then $iOnTop_Calc = 0
	EndIf
	Sleep(50)
WEnd
 
Автор
R

radioamator16

Чайник
Сообщения
33
Репутация
0
xXx, в общем-то работает.
Только есть один вопрос.

Этот код работает только на одном окне класса CLASS:CalcFrame
Если калькуляторов открыто несколько - то код не воспринимает другие окна калькуляторов, только одно из них.
Хотя по идее - эти окна тоже имеют класс CLASS:CalcFrame
Почему же код не срабатывает на них ?
 

xXx

Меценат
Меценат
Сообщения
85
Репутация
25
radioamator16 сказал(а):
Этот код работает только на одном окне класса CLASS:CalcFrame
Так и задумано. И я вам больше скажу: он работает только с одним экземпляром Notepad, как бы привязывает одно окно к другому.
А если открыта куча блокнотов и куча калькуляторов, то какое окно к какому "привязывать"? Вы не запутаетесь?
 
Автор
R

radioamator16

Чайник
Сообщения
33
Репутация
0
xXx, понятно.
Просто мне казалось, что класс распространяется на все окна с таким классом.

А как же сделать так, чтобы все без исключения окна - с классом [CLASS:CalcFrame] - учитывались в этом скрипте ?
 
Верх