Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Как вывести сообщение во время выолнения команды? (http://forum.oszone.net/showthread.php?t=166938)

Centrinar 10-02-2010 13:54 1343837

Как вывести сообщение во время выолнения команды?
 
Цитата:

RunWait('"tets.exe" -a') MsgBox(16, "Проверка", "Идет проверка, ждите", WinGetHandle("Проверка"))
Надо что бы окно Проверка высвечивалась во время выполнения tets.exe поверх окна. Спасибо!

madmasles 10-02-2010 14:01 1343845

Вот:
Код:

$iRet = _MsgBoxEx(36, "My Title", "Message", 10, 0, "_SetData")

MsgBox(64, "", "Returned Value is: " & $iRet)

Func _SetData($iCount)
    ConsoleWrite("The script is not paused " & $iCount & " second(s)" & @LF)
EndFunc

Func
_MsgBoxEx($iType, $sTitle, $sText, $iTimeOut=0, $hWnd=0, $sCallBackFunc="")
    Local $sAu3Line = '"ConsoleWrite(MsgBox(' & $iType & ', ''' & $sTitle & ''', ''' &  $sText & ''', ' & _
        $iTimeOut & ', ' & $hWnd & '))"'
    Local $iAu3PID = Run(@AutoItExe & ' /AutoIt3ExecuteLine ' & $sAu3Line, '', @SW_SHOW, 6)

    Local $iStdOutRead
    Local $iTimerInit = TimerInit(), $iTimerDiff = Round(TimerDiff($iTimerInit)/1000, 0), $iLastTimer = $iTimerDiff
    Local $iOld_WWD_Opt = Opt("WinWaitDelay", 0)

    WinWait($sTitle, $sText)

    Opt("WinWaitDelay", $iOld_WWD_Opt)

    While 1
        $iStdOutRead &= StdoutRead($iAu3PID)
        If @error <> 0 Then ExitLoop

        If
$sCallBackFunc <> "" Then
            $iTimerDiff = Round(TimerDiff($iTimerInit)/1000, 0)

            If $iLastTimer <> $iTimerDiff Then
                $iLastTimer = $iTimerDiff
                Call($sCallBackFunc, $iTimerDiff)
            EndIf
        EndIf


        Sleep(1)
    WEnd

    Return
$iStdOutRead
EndFunc

Нашел у себя пример , кажется, от Creat0R.

Creat0R 10-02-2010 16:45 1343988

Цитата:

Цитата Centrinar
Надо что бы окно Проверка высвечивалась во время выполнения tets.exe поверх окна. »

Код:

$iPID = Run('"tets.exe" -a')

While ProcessExists($iPID)
    MsgBox(262144+16, "Проверка", "Идет проверка, ждите")
WEnd


Centrinar 10-02-2010 17:02 1344007

Creat0R Всё хорошо, но после окончания test.exe окно всеранво остаеться, как сделать чтобы оно само закрывалось.

Creat0R 10-02-2010 20:57 1344165

Цитата:

Цитата Centrinar
после окончания test.exe окно всеранво остаеться, как сделать чтобы оно само закрывалось »

Тогда нужен не Msgox, а самопальный GUI:

Код:

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <ProgressConstants.au3>

$hGUI = GUICreate("Проверка", 300, 120, -1, -1, BitOR($WS_POPUP, $WS_BORDER), $WS_EX_TOPMOST)

GUICtrlCreateLabel("Идет проверка, ждите", 0, 40, 300, -1, $SS_CENTER)
$nProgress = GUICtrlCreateProgress(120, 70, 60, 22, $PBS_SMOOTH, $WS_EX_DLGMODALFRAME)

GUISetState(@SW_SHOW, $hGUI)

$iPID = Run('"tets.exe" -a')

$iProgress = 0
$iStep = 5

While ProcessExists($iPID)
    GUICtrlSetData($nProgress, $iProgress)
    $iProgress += $iStep
    If $iProgress >= 100 Or $iProgress <= 0 Then $iStep = -$iStep
   
    Sleep(100)
WEnd


Centrinar 10-02-2010 21:11 1344174

все хорошо, только табличка на заднем плане, ее не видно)))

Creat0R 11-02-2010 00:40 1344318

Цитата:

Цитата Centrinar
табличка на заднем плане, ее не видно »

Поправил свой пост.


Время: 23:57.

Время: 23:57.
© OSzone.net 2001-