Что нового

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

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,320
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,320
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:
 
Верх