Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как скрыть графические окна программы, устанавливаемой с помощью AutoIt?

Ответить
Настройки темы
[решено] Как скрыть графические окна программы, устанавливаемой с помощью AutoIt?

Новый участник


Сообщения: 36
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Можно ли скрыть с помощью AutoIt графические окна устанавливаемой программы? Если да то как? Заранее благодарен за оказанную помощь!

Отправлено: 21:50, 26-03-2009

 

Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


пример:
Код: Выделить весь код
#region: - Option
    Opt('MustDeclareVars',      1)
    Opt('TrayIconDebug',        1)
    Opt('TrayIconHide',         0)
#endregion

#region: - Global
    Global  $iPid, $hHwd
#endregion

$iPid = Run('notepad.exe')
While 1
    $hHwd = _ProcessGetWindow($iPid, 1)
    If IsHWnd($hHwd) Then ExitLoop
WEnd

MsgBox(64, 'Внимание', 'Окно Блокнота отображается' & @CRLF & 'После нажатия OK окно будет скрыто')
WinSetState($hHwd, '', @SW_HIDE)
MsgBox(64, 'Внимание', 'Окно Блокнота скрыто' & @CRLF & 'После нажатия OK окно будет отображенно')
WinSetState($hHwd, '', @SW_SHOW)
WinActivate($hHwd)
MsgBox(64, 'Внимание', 'Окно Блокнота отображается' & @CRLF & 'После нажатия OK скрипт будет закрыт')

ProcessClose($iPid)

Func _ProcessGetWindow($iPID, $iRet=-1)
    Local $aWinList = WinList()
    Local $aRet[2]

    If IsString($iPID) Then $iPID = ProcessExists($iPID)

    For $i = 1 To UBound($aWinList)-1
        If WinGetProcess($aWinList[$i][1]) = $iPID Then
            $aRet[0] = $aWinList[$i][0] ;Title
            $aRet[1] = $aWinList[$i][1] ;WinHandle

            If $iRet = 0 Then Return $aRet[0]
            If $iRet = 1 Then Return $aRet[1]

            Return $aRet
        EndIf
    Next

    Return SetError(1, 0, $aRet)
EndFunc

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Отправлено: 22:44, 26-03-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 36
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо! Сейчас попробую

Отправлено: 22:50, 26-03-2009 | #3


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


или так, но в этом случае необходимо убедиться, что не запущенно других копий Блокнота:

Код: Выделить весь код
#region: - Option
    Opt('MustDeclareVars',      1)
    Opt('TrayIconDebug',        1)
    Opt('TrayIconHide',         0)
#endregion

While 1
    Local $iProcessExists = ProcessExists('notepad.exe')
    If $iProcessExists <> 0 Then
        If MsgBox(32+1, 'Внимание', 'Блокнот уже запущен' & @CRLF & _
                                    'Пожалуйста, закройте все копии Блокнота' & @CRLF & _
                                    'и повторите попытку' & @CRLF  & @CRLF & _
                                    'ОК - продолжить, Отмена - выход') == 2 Then
            Exit
        EndIf
    Else
        ExitLoop
    EndIf
    Sleep(10)
WEnd

Run('notepad.exe')
WinWaitActive('[CLASS:Notepad]')
MsgBox(64, 'Внимание', 'Окно Блокнота отображается' & @CRLF & 'После нажатия OK окно будет скрыто')
WinSetState('[CLASS:Notepad]', '', @SW_HIDE)
MsgBox(64, 'Внимание', 'Окно Блокнота скрыто' & @CRLF & 'После нажатия OK окно будет отображенно')
WinSetState('[CLASS:Notepad]', '', @SW_SHOW)
WinActivate('[CLASS:Notepad]')
MsgBox(64, 'Внимание', 'Окно Блокнота отображается' & @CRLF & 'После нажатия OK скрипт будет закрыт')

ProcessClose('Notepad.exe')

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:23, 26-03-2009 | #4


Новый участник


Сообщения: 36
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо все рабоотает

-------
Век живи, Век учись!!!


Отправлено: 14:12, 27-03-2009 | #5


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здрасьте, уважаемые!
Как уже было сказано, не все приложения позволяют скрывать свои окна с помощью @SW_HIDE.
Хорошо.
А если я тупо запущу инсталятор на пример так:
Код: Выделить весь код
Run("ccleaner.exe /VERYSILENT")
?
Вроде работает, устанавливается скрытно, но по окончании в трее висит иконка скрипта, если кляцкнуть по ней мышкой - появляется вкладка с галочкой Script paused, и Exit вторым пунктом. В Task Manager висит процесс - AutoIt3.exe, то есть скрипт сам не заканчивает свою работу, нужно завершить процесс в ручную из трея или таск менеджера. Это плохо, когда на пример устанавливаешь проги из RunOnceEx, вся эта тема виснет, пока не пошлешь Ctrl+Alt+Del и не перегрузишь систему, и так пока весь список не отработает...

Вот мой код для СиКлинера:

Код: Выделить весь код
Run("ccleaner.exe /VERYSILENT")
WinWait("Установка — Ccleaner", "")
;WinSetState("Установка — Ccleaner", "", @SW_HIDE)
ControlClick("Установка — Ccleaner", "", "[CLASS:TButton; INSTANCE:1]")
WinWait("Установка — Ccleaner", "Выберите дополнительные задачи")
;WinSetState("Установка — Ccleaner", "Выберите дополнительные задачи", @SW_HIDE)
;ControlCommand("Установка — Ccleaner", "", "TNewCheckListBox1", "Check", "")
ControlClick("Установка — Ccleaner", "", "[CLASS:TButton; INSTANCE:2]")
WinWait("Установка — Ccleaner", "Всё готово к установке")
;WinSetState("Установка — Ccleaner", "Всё готово к установке", @SW_HIDE)
ControlClick("Установка — Ccleaner", "", "[CLASS:TButton; INSTANCE:2]")
WinWait("Установка — Ccleaner", "Завершение Мастера установки Ccleaner")
;WinSetState("Установка — Ccleaner", "Завершение Мастера установки Ccleaner", @SW_HIDE)
ControlClick("Установка — Ccleaner", "&Завершить", "[CLASS:TButton; INSTANCE:2]")
Всё уже перепробовал, по всякому, с @SW_HIDE получается не то, все нормально получается именно с ключами тихой установки. Не только, кстати, с СиКлинером, но и с WinRar, VLC playerom.. Как можно решить проблему зависания скрипта в конце установки? Чтоб скрипт убил сам себя, и таким образом продолжить установку по списку RunOnceEx. Если снять ключ /VERYSILENT, то всё отрабатывает идеально.

Вот еще мой RunOnceEx на всякий случай:
Код: Выделить весь код
cmdow @ /HID
@echo off

SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
SET i=100

REG ADD %KEY%\%i% /VE /D "WinRar 3.90" /f
REG ADD %KEY%\%i% /V 1 /D "%systemdrive%\Install\Software\winrar\install.exe" /f
SET /A i+=1

REG ADD %KEY%\%i% /VE /D "VLC" /f
REG ADD %KEY%\%i% /V 1 /D "%systemdrive%\Install\Software\vlc\install.exe" /f
SET /A i+=1

REG ADD %KEY%\%i% /VE /D "Ccleaner" /f
REG ADD %KEY%\%i% /V 1 /D "%systemdrive%\Install\Software\ccleaner\install.exe" /f
SET /A i+=1

REG ADD %KEY%\%i% /VE /D "Java" /f
REG ADD %KEY%\%i% /V 1 /D "%systemdrive%\Install\Software\java\install.exe" /f
SET /A i+=1

REG ADD %KEY%\%i% /VE /D "Adobe Reader" /f
REG ADD %KEY%\%i% /V 1 /D "%systemdrive%\Install\Software\adobereader\install.exe" /f
SET /A i+=1

REG ADD %KEY%\%i% /VE /D "Cleaning Up and Rebooting" /f
REG ADD %KEY%\%i% /V 1 /D "%systemdrive%\Install\cleanup.cmd" /f
SET /A i+=1

EXIT

Отправлено: 02:59, 11-09-2009 | #6


Аватара для ven00m

Пользователь


Сообщения: 76
Благодарности: 12

Профиль | Отправить PM | Цитировать


С ключом /VERYSILENT он у тя сам автоматом ставится, не надо ничо нажимать autoit ом! Просто тогда запусти
Код: Выделить весь код
Run("ccleaner.exe /VERYSILENT")
и не надо никаких winwait, controlclick и прочего, а так получается что он висит потому что ждет окно которое никогда не появится!
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:30, 11-09-2009 | #7


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


venOOm

Точна.
Всё заработало как надо.
Чета я ступил конкретно, усложнил всё, по незнанию.
Спасибо, дружище!

Отправлено: 21:25, 11-09-2009 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как скрыть графические окна программы, устанавливаемой с помощью AutoIt?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Создание VPN подключения с помощью Autoit, не прописывает имя сервера. Vic_tory AutoIt 20 14-03-2011 09:12
[решено] Как править ресурсы в файлах с помощью AutoIT CyberStyLe AutoIt 3 29-09-2009 08:07
[решено] Aвторизация на сайте с помощью AutoIt Yandex AutoIt 6 14-04-2009 20:08
Разное - Как с помощью AutoIt создать подраздел в реестре ShadowMas Программирование и базы данных 2 21-07-2008 18:32
как попасть в меню окна с помощью клавиатуры mrcnn Хочу все знать 29 11-05-2004 08:21




 
Переход