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

Название темы: [решено] Прогресс бар
Показать сообщение отдельно

Аватара для Creat0R

Must AutoIt


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

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


Цитата mr.Zorg:
как индикатор работы »
Можно так:

Код: Выделить весь код
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
;

Global $aProgress_Ctrls[10]
Global $hCallBack, $ahTimer
Global $iProgress_InitSet

_Progress_Initialize()

Sleep(1500)

_Progress_Set(5)

Sleep(2500)

_Progress_Set(25)

Sleep(2500)

_Progress_Set(55)

Sleep(2500)

_Progress_Set(85)

Sleep(2500)

_Progress_Set(100, "Main Progress: ", "Working Progress", "Done!", 100)

Sleep(2500)

_Progress_ShutDown()

Func _Progress_Initialize($sMain_Data="Please wait...", $sMainPrgrs_Data="Main Progress: 0%", $sCrntPrgs_Data="Working Progress")
    $aProgress_Ctrls[1] = GUICreate("Installation Progress", 300, 150, -1, -1, -1, $WS_EX_TOOLWINDOW)

    $aProgress_Ctrls[2] = GUICtrlCreateLabel($sMain_Data, 20, 10, 260, 30)
    GUICtrlSetFont(-1, 10, 800)

    $aProgress_Ctrls[3] = GUICtrlCreateLabel($sCrntPrgs_Data, 20, 50, 260, 20)
    $aProgress_Ctrls[4] = GUICtrlCreateProgress(20, 65, 260, 17)

    $aProgress_Ctrls[5] = GUICtrlCreateLabel($sMainPrgrs_Data, 20, 100, 260, 20)
    $aProgress_Ctrls[6] = GUICtrlCreateProgress(20, 115, 260, 20)

    GUISetState(@SW_SHOW, $aProgress_Ctrls[1])
EndFunc

Func _Progress_Set($iMPrgrs, $sMPrgrs_Data="Main Progress: ", $sCrntPrgs_Data="Working Progress", $sMain_Data="", $iCrntPrgrs=-1)
    GUICtrlSetData($aProgress_Ctrls[6], $iMPrgrs)

    If $hCallBack = 0 Then
        $hCallBack = DllCallbackRegister("_Callback_ProgressSet_Proc", "int", "hwnd;int;int;dword")
        $ahTimer = DllCall("User32.dll", "int", "SetTimer", _
            "hwnd", 0, "int", TimerInit(), "int", 50, "ptr", DllCallbackGetPtr($hCallBack))
    EndIf

    If $iCrntPrgrs > 0 Then
        If $hCallBack > 0 Then DllCallBackFree($hCallBack)
        DllCall("user32.dll", "int", "KillTimer", "hwnd", 0, "int", $ahTimer[0])

        $hCallBack = 0
        $ahTimer = 0

        GUICtrlSetData($aProgress_Ctrls[4], $iCrntPrgrs)
    EndIf

    GUICtrlSetData($aProgress_Ctrls[3], $sCrntPrgs_Data)
    GUICtrlSetData($aProgress_Ctrls[5], $sMPrgrs_Data & $iMPrgrs & "%")

    If $sMain_Data <> "" Then GUICtrlSetData($aProgress_Ctrls[2], $sMain_Data)
EndFunc

Func _Progress_ShutDown()
    If $hCallBack > 0 Then DllCallBackFree($hCallBack)
    If IsArray($ahTimer) Then DllCall("user32.dll", "int", "KillTimer", "hwnd", 0, "int", $ahTimer[0])

    $hCallBack = 0
    $ahTimer = 0

    GUIDelete($aProgress_Ctrls[1])
EndFunc

Func _Callback_ProgressSet_Proc($hWnd, $iIDEvent, $iElapse, $pTimerFunc)
    $iProgress_InitSet += 5
    If $iProgress_InitSet > 100 Then $iProgress_InitSet = 0

    GUICtrlSetData($aProgress_Ctrls[4], $iProgress_InitSet)
EndFunc
Вместо пауз, естественно нужно использовать запуск приложении и прочую обработку.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

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

Отправлено: 01:28, 24-03-2009 | #14

Название темы: [решено] Прогресс бар