Что нового

Нажатие на кнопку в окне без заголовка

joker2d

Новичок
Сообщения
166
Репутация
0
Постоянно беспокоит окно с рекламой
как я выяснил в AutoIt Window Info в поле Title у этого окна нет заголовка
Это окно появляеться когда запущенна основная программа

Как можно нажать на такое окно и неплохо бы сделать это в цикле чтобы пока запущенна основная прога отслеживалось появление этого окна?
достаточно послать этому окну enter и оно закроиться

вот данные окна

>>>> Window <<<<
Title:
Class: PTIODEVICE
Position: 897, 442
Size: 402, 264
Style: 0x96000000
ExStyle: 0x00000000
Handle: 0x00190214

>>>> Control <<<<
Class:
Instance:
ClassnameNN:
Name:
Advanced (Class):
ID:
Text:
Position:
Size:
ControlClick Coords:
Style:
ExStyle:
Handle:

>>>> Mouse <<<<
Position: 952, 456
Cursor ID: 0
Color: 0xFCFFFB

>>>> StatusBar <<<<

>>>> ToolsBar <<<<

>>>> Visible Text <<<<


>>>> Hidden Text <<<<
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
попробуй так
Код:
ControlSend("[CLASS:PTIODEVICE]", "", "", "{ENTER}")
 
Автор
J

joker2d

Новичок
Сообщения
166
Репутация
0
спасибо помогло окно закрылось!

А как эту команду в цикл поместить чтобы скрипт ждал появления этого окна и если оно появиться посылал туда команду?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
joker2d
Так попробуйте
Код:
;...
While 1
	If WinExists("[CLASS:PTIODEVICE]") Then
		ControlSend("[CLASS:PTIODEVICE]", "", "", "{ENTER}")
	EndIf
	If Not WinExists("Основное окно") Then ExitLoop ;чтобы выйти из цикла
	;If Not ProcessExists("процесс.exe") Then ExitLoop ;или так
	Sleep(50)
WEnd
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Лучше так. своего рода монитор окна. если окна нет, ничего не делает. как только окно появляется - оно прибивается. и так до бесконечности. ну или скажем пока не будет нажата комбинация ctrl+shift+del
Код:
HotKeySet("^+{DEL}", "_Exit")

While 1
    If WinExists("[CLASS:PTIODEVICE]") Then ControlSend("[CLASS:PTIODEVICE]", "", "", "{ENTER}")
    Sleep(100)
WEnd

Func _Exit()
    Exit
EndFunc
 
Автор
J

joker2d

Новичок
Сообщения
166
Репутация
0
Как оказалось очень много окон нужной проги имеют Class: PTIODEVICE
и поэтому в цикле скрипт жмет на все окна без перерыва

А можно как то добавить в условие что надо нажимать на окно с Class: PTIODEVICE и где Title отсутствует ?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
joker2d
Попробуйте так:
Код:
;...
If WinExists("[CLASS:PTIODEVICE]") And WinGetTitle("[CLASS:PTIODEVICE]") = "" Then
;...
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Попробуй так, если уверен что только у требуемого окна нет заголовка
Код:
Opt("WinTitleMatchMode", 3)
HotKeySet("^+{DEL}", "_Exit")

While 1
	$aWins = WinList("[CLASS:PTIODEVICE]")
	For $i = 1 to $aWins[0][0]
		If $aWins[$i][0] = '' Then WinClose($aWins[$i][1])
	Next
	Sleep(100)
WEnd

Func _Exit()
	Exit
EndFunc
 
Автор
J

joker2d

Новичок
Сообщения
166
Репутация
0
все работает спасибо!
Вчера целый день ждал окна с рекламой но оно не появилост, оказалось что я забыл вырубить скрипт который отлично работает :IL_AutoIt_1:
 
Верх