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

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

Ответить
Настройки темы
[решено] progressbar (прогресс-бар) до появления конкретного окна

Ветеран


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


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

Профиль | Отправить 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

 

Аватара для FlatX007

Ветеран


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

Профиль | Отправить 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
Благодарности: 161

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


FlatX007, долго объяснять, просто изначально в проге выбрал его и теперь переписывать очень много. Сам уже 10 раз пожалел.

-------
мы рождены, чтоб сказку сделать былью


Отправлено: 19:54, 28-09-2010 | #3


Аватара для FlatX007

Ветеран


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

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


Не уверен в правильности действий ...

OnEvent

Код: Выделить весь код
Local $hSplash

$hProgressSplash = _SplashTextProgress("Внимание! Идет сбор системной информации. Ждите...")
Sleep(1000) ; Имитация сбора информации
If IsDeclared("hSplash") Then GUIDelete($hSplash)

Отправлено: 19:59, 28-09-2010 | #4


Ветеран


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

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


FlatX007, спасибо, только, наверно правильнее ставить GUIDelete($hSplash) после GUISetState(@SW_SHOW)?

-------
мы рождены, чтоб сказку сделать былью


Отправлено: 20:02, 28-09-2010 | #5


Аватара для FlatX007

Ветеран


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

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


Переменная $hSplash деклариуется после вызова функции _SplashTextProgress()

Извращаюсь просто.

Отправлено: 20:05, 28-09-2010 | #6


Ветеран


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

Профиль | Отправить 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
FlatX007, оффтопик, но все же - как Вы такой код вставляете? Имею в виду разноцветный...

-------
мы рождены, чтоб сказку сделать былью


Отправлено: 20:08, 28-09-2010 | #7


Аватара для madmasles

Ветеран


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

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


saavaage,
Au3ToPost - Инструмент для расскраски AutoIt-кода.
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:24, 28-09-2010 | #8



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Как дождаться РЕАЛЬНОГО появления окна 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




 
Переход