Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   не могу поймать активное окно (http://forum.oszone.net/showthread.php?t=129555)

SerZzz 16-01-2009 12:42 1009476

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

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

Никак не могу поймать активное окно. Процес инсталяции такой:
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 1130762

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

FlatX007 30-05-2009 09:08 1130776

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

Код:

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 1130901

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



Время: 14:58.

Время: 14:58.
© OSzone.net 2001-