|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] progressbar (прогресс-бар) до появления конкретного окна |
|
[решено] progressbar (прогресс-бар) до появления конкретного окна
|
Ветеран Сообщения: 903 |
Профиль | Отправить PM | Цитировать Есть скрипт прогресс-бара:
#include <WindowsConstants.au3> #include <StaticConstants.au3> #include <SendMessage.au3> ;Needed for _SendMessage function. #include <ProgressConstants.au3> #include <GUIConstantsEx.au3> $hProgressSplash = _SplashTextProgress("Внимание! Идет сбор системной информации. Ждите...") ; скрипт с гуи + задержка на появление 10 сек Opt("GUIOnEventMode", 1) sleep(10000) $hMain_GUI = GUICreate("OPPPPP", 619, 442, 189, 122) GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") $Tab1 = GUICtrlCreateTab(8, 16, 601, 377) $DriverErrors = GUICtrlCreateTabItem("XXXXXXXXXX") GUICtrlCreateTabItem("") GUISetState() While 1 Sleep(100) WEnd Func CLOSEClicked() Exit EndFunc Func _SplashTextProgress($sText) SplashOff() ;Turn previous splash text screens off. $hSplash = GUICreate("", 500, 150, -1, -1, BitOR($WS_POPUP, $WS_BORDER), BitOR($WS_EX_TOPMOST, $WS_EX_WINDOWEDGE, $WS_EX_TOOLWINDOW)) ;~ $iProgressBar = GUICtrlCreateProgress(100, 325, 305, 25, $PBS_SMOOTH) $iProgressBar = GUICtrlCreateProgress(30, 100, 440, 35, $PBS_MARQUEE) ;A Marquee progress bar. _SendMessage(GUICtrlGetHandle(-1), $PBM_SETMARQUEE, True, 80) ;last parameter is update time in ms. Sends message to run the Marquee progress bar. $iMessage = GUICtrlCreateLabel($sText, 0, 20, 500, 50, $SS_CENTER) GUICtrlSetFont(-1, 16, 500, 0, "Courier New") GUISetState(@SW_SHOW) Return SetExtended($iProgressBar, $hSplash) EndFunc как сделать так, чтобы прогресс-бар исчезал при появлении гуи-окна скрипта? Дело в том, что у меня утилита довольно долго грузится, собирая всю необходимую инфо и необходимо привязать прогресс-бар к появлению ее окна на дисплее. PS Autoit 3.3.6.1 |
|
------- Отправлено: 18:25, 28-09-2010 |
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать Опять OnEvent! да чтож вы его как любите то, а он точно тут нужен ?
#include <WindowsConstants.au3> #include <StaticConstants.au3> #include <SendMessage.au3> ;Needed for _SendMessage function. #include <ProgressConstants.au3> #include <GUIConstantsEx.au3> Global $hSplash $hProgressSplash = _SplashTextProgress("Внимание! Идет сбор системной информации. Ждите...") Sleep(5000) ; Имитация сбора информации GUIDelete($hSplash) $hMain_GUI = GUICreate("OPPPPP", 619, 442, 189, 122) $Tab1 = GUICtrlCreateTab(8, 16, 601, 377) $DriverErrors = GUICtrlCreateTabItem("XXXXXXXXXX") GUICtrlCreateTabItem("") GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func _SplashTextProgress($sText) SplashOff() ;Turn previous splash text screens off. $hSplash = GUICreate("", 500, 150, -1, -1, BitOR($WS_POPUP, $WS_BORDER), BitOR($WS_EX_TOPMOST, $WS_EX_WINDOWEDGE, $WS_EX_TOOLWINDOW)) ;~ $iProgressBar = GUICtrlCreateProgress(100, 325, 305, 25, $PBS_SMOOTH) $iProgressBar = GUICtrlCreateProgress(30, 100, 440, 35, $PBS_MARQUEE) ;A Marquee progress bar. _SendMessage(GUICtrlGetHandle(-1), $PBM_SETMARQUEE, True, 80) ;last parameter is update time in ms. Sends message to run the Marquee progress bar. $iMessage = GUICtrlCreateLabel($sText, 0, 20, 500, 50, $SS_CENTER) GUICtrlSetFont(-1, 16, 500, 0, "Courier New") GUISetState(@SW_SHOW) Return SetExtended($iProgressBar, $hSplash) EndFunc |
Отправлено: 19:52, 28-09-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 903
|
Профиль | Отправить PM | Цитировать FlatX007, долго объяснять, просто изначально в проге выбрал его и теперь переписывать очень много. Сам уже 10 раз пожалел.
|
------- Отправлено: 19:54, 28-09-2010 | #3 |
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать |
Отправлено: 19:59, 28-09-2010 | #4 |
Ветеран Сообщения: 903
|
Профиль | Отправить PM | Цитировать FlatX007, спасибо, только, наверно правильнее ставить GUIDelete($hSplash) после GUISetState(@SW_SHOW)?
|
|
------- Отправлено: 20:02, 28-09-2010 | #5 |
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать Переменная $hSplash деклариуется после вызова функции _SplashTextProgress()
Извращаюсь просто. |
Отправлено: 20:05, 28-09-2010 | #6 |
Ветеран Сообщения: 903
|
Профиль | Отправить PM | Цитировать FlatX007, старый вариант удачно работает, только как я и думал надо GUIDelete($hSplash) ставить после GUISetState(@SW_SHOW), иначе сплэш даже не успевает подгрузиться (у меня в проге слипа вначале скрипта нет, он сам долго грузиться).
Итого решение (благодаря FlatX007): #include <WindowsConstants.au3> #include <StaticConstants.au3> #include <SendMessage.au3> ;Needed for _SendMessage function. #include <ProgressConstants.au3> #include <GUIConstantsEx.au3> Global $hSplash $hProgressSplash = _SplashTextProgress("Внимание! Идет сбор системной информации. Ждите...") Opt("GUIOnEventMode", 1) $hMain_GUI = GUICreate("OPPPPP", 619, 442, 189, 122) GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") $Tab1 = GUICtrlCreateTab(8, 16, 601, 377) $DriverErrors = GUICtrlCreateTabItem("XXXXXXXXXX") Sleep(5000) ; Имитация сбора информации GUICtrlCreateTabItem("") GUISetState() GUIDelete($hSplash) While 1 Sleep(100) WEnd Func CLOSEClicked() Exit EndFunc Func _SplashTextProgress($sText) SplashOff() ;Turn previous splash text screens off. $hSplash = GUICreate("", 500, 150, -1, -1, BitOR($WS_POPUP, $WS_BORDER), BitOR($WS_EX_TOPMOST, $WS_EX_WINDOWEDGE, $WS_EX_TOOLWINDOW)) $iProgressBar = GUICtrlCreateProgress(30, 100, 440, 35, $PBS_MARQUEE) ;A Marquee progress bar. _SendMessage(GUICtrlGetHandle(-1), $PBM_SETMARQUEE, True, 80) ;last parameter is update time in ms. Sends message to run the Marquee progress bar. $iMessage = GUICtrlCreateLabel($sText, 0, 20, 500, 50, $SS_CENTER) GUICtrlSetFont(-1, 16, 500, 0, "Courier New") GUISetState(@SW_SHOW) Return SetExtended($iProgressBar, $hSplash) EndFunc |
------- Отправлено: 20:08, 28-09-2010 | #7 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать |
Отправлено: 20:24, 28-09-2010 | #8 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Как дождаться РЕАЛЬНОГО появления окна | NewOLDi | AutoIt | 12 | 03-11-2019 12:13 | |
[решено] [PHP] Прогресс-бар (счетчик игроков) | D_Master | Вебмастеру | 3 | 27-03-2009 18:41 | |
[решено] Прогресс бар | semiono | AutoIt | 17 | 24-03-2009 23:18 | |
Надо запретить ответы с конкретного IP | Barit | Сетевые технологии | 2 | 14-03-2006 12:17 | |
Момент появления чужого окна | SASHA 333 | Программирование и базы данных | 3 | 10-01-2005 14:22 |
|