PDA

Показать полную графическую версию : не могу поймать активное окно


SerZzz
16-01-2009, 12:42
Здраствуйте.

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

Никак не могу поймать активное окно. Процес инсталяции такой:
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
30-05-2009, 08:31
Может поздно пишу, но мало ли..
А данные по окнам ты вписываешь "на глаз" или пользуешься AutoIt Window Info..?

FlatX007
30-05-2009, 09:08
Если я правильно понял ...

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
30-05-2009, 13:02
Вы не забывайте, окно может существовать, но при этом быть в скрытом состоянии, и 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




© OSzone.net 2001-2012