Что нового

[Окна, Диалоги] Как сделать одновременный контроль за двумя окнами?

winkot

Новичок
Сообщения
190
Репутация
0
Необходимо одновременно следить и управлять двумя окнами. Конечно. можно для каждого из них написать и скомпилировать скрипты. Но в этом случае придется ставить в автозагрузку два файла. А если контролируемых окон будет еще больше, то, соответсвенно и файлов будет много. Этого не хотелось бы. Попробовал написать эти две задачи в одном цикле while 1. Но вторая задача не выполняется. Подскажите, как можно объдинить эти две задачи в одну.
Вот мой пример:
Код:
While 1
   Opt("WinDetectHiddenText", 1)
   Opt("WinTitleMatchMode", 2) 
If WinWait("Окно 1", "") Then
   WinSetState("Окно 1", "", @SW_HIDE)
   	  If WinWait("Окно 1", "Загрузка завершена") Then
		 ControlSend("Окно 1", "", "", "{ENTER}")
	  EndIf
EndIf
If WinWait("Окно 2", "") Then
	  ControlSend("Окно 2", "", "", "{ESC}")
EndIf
WEnd
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
winkot
Конечно. можно для каждого из них написать и скомпилировать скрипты. Но в этом случае придется ставить в автозагрузку два файла. А если контролируемых окон будет еще больше, то, соответсвенно и файлов будет много. Этого не хотелось бы.
Ну ваще! :D :D
Или так можно:
Код:
Opt("WinDetectHiddenText", 1)
Opt("WinTitleMatchMode", 2)
While 1
If WinExists("Окно 1", "") Then
   WinSetState("Окно 1", "", @SW_HIDE)
      If WinExists("Окно 1", "Загрузка завершена") Then
         ControlSend("Окно 1", "", "", "{ENTER}")      EndIf
EndIf
If WinExists("Окно 2", "") Then
      ControlSend("Окно 2", "", "", "{ESC}")
EndIf
Sleep(500)
WEnd

ну или так:
Код:
Opt("WinDetectHiddenText", 1)
Opt("WinTitleMatchMode", 2)
While 1
If WinActive("Окно 1", "") Then
   WinSetState("Окно 1", "", @SW_HIDE)
      If WinActive("Окно 1", "Загрузка завершена") Then
         Send("{ENTER}")
      EndIf
EndIf
If WinActive("Окно 2", "") Then
      Send("{ESC}")
EndIf
Sleep(500)
WEnd
 
Автор
W

winkot

Новичок
Сообщения
190
Репутация
0
Все равно вторая задача не выполняется. В вашем варианте появилась только sleep (500),ну а что это дает?
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
winkot
совсем одновременно не получится. многопоточности нет. можно добавить вторую функцию через
Код:
AdlibRegister
 
Автор
W

winkot

Новичок
Сообщения
190
Репутация
0
Ну пусть не одновременно, так хотя бы последовательно. А у меня получается, что цикл while полностью не выполняется. Ведь после проверки If первой задачи должна выполняться вторая? А уменя получается, что цикл останавливается. Почему?
 
Верх