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

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

vxor 01-03-2012 16:38 1870142

Запуск 2GIS - пропуск первого окна, закрытие последнего.
 
Имеется 2GIS.
В начале запуска появляется окно с кнопкой "Далее". При нажатии на кнопку "Далее" или при нажатии ESC или при нажатии Alt+F4 - происходит запуск самой программы - карты.
Требуется при запуске 2GIS любыми путями избежать нажатия на кнопку "Далее" или нажатия ESC или Alt+F4. Вообщем чтобы автоматом происходила загрузка карты.

При закрытии появляется последнее окно с надписью "Esc - выход".
Требуется при закрытии 2GIS любыми путями автоматом и как можно быстрее скрывать это окно.

Код:

#NoTrayIcon
#cs ----------------------------------------------------------------------------
 AutoIt Version: 3.3.8.1
 Author:        myName
 Script Function:
        Template AutoIt script.
#ce ----------------------------------------------------------------------------
Opt("WinDetectHiddenText", 1)

Dim $i
$i = 0

;~ Запускаем карту..
Run("grym.exe")

;~ Ждем минуту появления первого рекламного окна..
While 1
    Sleep(10)
    If WinExists("[REGEXPTITLE:.*\Городская информационная система 2ГИС]") Then
                WinSetTrans("[REGEXPTITLE:.*\Городская информационная система 2ГИС]","", 0)
        WinClose("[REGEXPTITLE:.*\Городская информационная система 2ГИС]")  ; и закрываем его при появлении
                Sleep(100)
                If Not WinExists("[REGEXPTITLE:.*\Городская информационная система 2ГИС]") Then ExitLoop ; если оно исчезло (проверка) то выходим из этого цикла ожидания
    Else
                if $i = 6000 Then
                        MsgBox(0,"msg", "недождались..") ; недождались - завершаем работу скрипта
                EndIf
                $i = $i + 1
    EndIf
WEnd

;~ Ждем минуту появления последнего рекламного окна..
While 1
        Sleep(10)
    If WinExists("2ГИС") Then
                WinSetTrans("2ГИС","", 0)
        WinClose("2ГИС") ; и закрываем его при появлении
                Sleep(1000)
                If Not WinExists("2ГИС") Then
                        ExitLoop ; если оно исчезло (проверка) то выходим из этого цикла ожидания
                EndIf
        Else
                if Not WinExists("[REGEXPTITLE:.*\ - 2ГИС]") Then
                        Sleep(4000)
                        if Not WinExists("[REGEXPTITLE:.*\ - 2ГИС]") Then
                                ExitLoop ; программа закрыта не корректно - завершаем работу скрипта
                        EndIf
                EndIf
    EndIf
WEnd

Написал код выше. Он работает. Но второе окно (возникающее, при закрытии программы) на долю секунды мигает перед тем, как закрыться. С первым окном этого не происходит.
Вопросы:
1. Как избежать появления на долю последнего окна?
2. Как сделать все тоже самое только более правильно?


Время: 22:44.

Время: 22:44.
© OSzone.net 2001-