|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как скрыть графические окна программы, устанавливаемой с помощью AutoIt? |
|
[решено] Как скрыть графические окна программы, устанавливаемой с помощью AutoIt?
|
Новый участник Сообщения: 36 |
Профиль | Отправить PM | Цитировать Можно ли скрыть с помощью AutoIt графические окна устанавливаемой программы? Если да то как? Заранее благодарен за оказанную помощь!
|
|
Отправлено: 21:50, 26-03-2009 |
Старожил Сообщения: 460
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать Спасибо! Сейчас попробую
|
Отправлено: 22:50, 26-03-2009 | #3 |
Старожил Сообщения: 460
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать Спасибо все рабоотает
|
|
------- Отправлено: 14:12, 27-03-2009 | #5 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Здрасьте, уважаемые!
Как уже было сказано, не все приложения позволяют скрывать свои окна с помощью @SW_HIDE. Хорошо. А если я тупо запущу инсталятор на пример так: ? Вроде работает, устанавливается скрытно, но по окончании в трее висит иконка скрипта, если кляцкнуть по ней мышкой - появляется вкладка с галочкой 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]") Вот еще мой 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 |
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать |
Отправлено: 15:30, 11-09-2009 | #7 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать venOOm
Точна. Всё заработало как надо. Чета я ступил конкретно, усложнил всё, по незнанию. Спасибо, дружище! |
Отправлено: 21:25, 11-09-2009 | #8 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Создание 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 |
|