не могу поймать активное окно

Ответить
Аватара пользователя
SerZzz

не могу поймать активное окно

Сообщение SerZzz »

Здраствуйте.



Есть проблемка.



Никак не могу поймать активное окно. Процес инсталяции такой:

1. Запускаю программу

2. Инсталятор проверяет была ли раньше установлена она.

2.1 если программа была записана раньше то выскакивает окно где преглагает варианты переустановки

2.2 если нет то инсталирует по стандартной процедуре (выбор куда инсталировать и т.д.)



Вот здесь и проблемка. WinActive и WinExists никак не могу зацепить активное окно чтобы определить по какому сценарию дальше производить установку.





Код:

Код: Выделить всё

_FileCopy($MS_Office_integracija_v2,"C:\Claims\MSOffice")
Run('C:\Claims\MSOffice\msoffice_v2.bat', 'C:\Claims\MSOffice')
If WinExists("Nazvanie okna","Tekst v okne NR1") Then 
   _MSOfficeIntegrate_Repair()
   ElseIF WinExists("Nazvanie okna","Tekst v okne NR2") then
   _MSOfficeIntegrate()
EndIf
Аватара пользователя
AzazeLHAck

Re: не могу поймать активное окно

Сообщение AzazeLHAck »

Может поздно пишу, но мало ли..

А данные по окнам ты вписываешь "на глаз" или пользуешься AutoIt Window Info..?
Аватара пользователя
FlatX007

Re: не могу поймать активное окно

Сообщение FlatX007 »

Если я правильно понял ...





Код:

Код: Выделить всё

AutoItSetOption("WinTextMatchMode", 1)
;~ AutoItSetOption("WinTitleMatchMode", 2) ; сопоставление с произвольным фрагментом
   AutoItSetOption("WinTitleMatchMode", 3) ; точное сопоставление
_FileCopy($MS_Office_integracija_v2,"C:\Claims\MSOffice")
Run('C:\Claims\MSOffice\msoffice_v2.bat', 'C:\Claims\MSOffice')
If WinExists("Nazvanie okna","Tekst v okne NR1") = 1 Then _MSOfficeIntegrate_Repair()
If WinExists("Nazvanie okna","Tekst v okne NR2") = 1 Then _MSOfficeIntegrate()
Аватара пользователя
Creat0R

Re: не могу поймать активное окно

Сообщение Creat0R »

Вы не забывайте, окно может существовать, но при этом быть в скрытом состоянии, и WinExists вернёт 1.



Иногда нужно проверять его “видимое” существование:





Код:

Код: Выделить всё

$hGUI = GUICreate("_WinExistsEx Example")
;WinSetState($hGUI, "", @SW_SHOW)
$iExists = _WinExistsEx($hGUI)
$iVisible = @extended
MsgBox(64, '_WinExistsEx', StringFormat("[%s]\n\nWin Exists:\t%i\nWin Is Visible:\t%i", WinGetTitle($hGUI), $iExists, $iVisible))
Func _WinExistsEx($sTitle, $sText="")
    Local $iExists = WinExists($sTitle, $sText)
    Local $iVisible = Number(BitAND(WinGetState($sTitle, $sText), 2) = 2)
    Return SetExtended($iVisible, $iExists)
EndFunc
Ответить

Вернуться в «AutoIt»