Что нового

Как активировать два окна с одинаковым заголовком и классом

A

at

Гость
Здравствуйте!

Пожалуйста, подскажите, как одновременно или по очереди активировать два окна, у которых одинаковый TITLE и CLASS.
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Код:
For $i = 1 To 2
   $iHandle = WinGetHandle("") ;~ Title или Class
   If WinGetState($iHandle) < 15 Then
      WinActivate($iHandle)
   EndIf
Next
 
Автор
A

at

Гость
Viktor1703, так только одно окно становиться активным.
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Код:
$sList = WinList()

For $i = 0 To $sList[0][0]
   ConsoleWrite($sList[$i][0] & @CRLF)
   If $sList[$i][0] = 'title' Then
      WinActivate($sList[$i][1])
   EndIf	  
Next
 
Автор
A

at

Гость
CreatoR: А два окна не могут быть активными одновременно
Спасибо, понял, а как сделать, чтобы по очереди ...

Viktor1703, так выводиться в консоль весь перечень открытых и скрытых окон (и так тоже: "title" = "моя программа"). Нужные окна при этом остаются неактивными.
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Сомневаюсь, я тестировал скрипт, открыл 2 папки диска E: и сделал активным окно SciTE, запустил скрипт и 2 окна стали активными по очереди, уберите запись
Код:
ConsoleWrite($sList[$i][0] & @CRLF)

и в консоль ничего писаться не будет, и что это (и так тоже: "title" = "моя программа"), покажите пример как вы используете?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
at,
Попробуйте так.
Код:
$sTitle = '[Title:My Program; Class:AutoIt v3 GUI]'
$aList = WinList($sTitle)
If $aList[0][0] Then
	For $i = 1 To $aList[0][0]
		WinActivate($aList[$i][1])
		$hTemp = WinWaitActive($aList[$i][1], '', 5)
		If $hTemp Then
			MsgBox(64, 'Info', 'Active: ' & $aList[$i][0] & @TAB & $aList[$i][1])
		Else
			MsgBox(16, 'Error', 'No Active: ' & $aList[$i][0] & @TAB & $aList[$i][1])
		EndIf
	Next
Else
	MsgBox(16, 'Error', 'No Windows: ' & $sTitle)
EndIf
 
Автор
A

at

Гость
Viktor1703: покажите пример как вы используете?

Код:
$sList = WinList()

For $i = 0 To $sList[0][0]
   If $sList[$i][0] = 'Моя программа' Then
      WinActivate($sList[$i][1])
   EndIf      
Next



Добавлено:
Сообщение автоматически объединено:

madmasles: Попробуйте так.
... так работает.

Спасибо всем большое за помощь.
 
Верх