-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
Здраствуйте.
Есть проблемка.
Никак не могу поймать активное окно. Процес инсталяции такой:
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..?
|
Если я правильно понял ...
Код:
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()
|
Вы не забывайте, окно может существовать, но при этом быть в скрытом состоянии, и 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.
© OSzone.net 2001-