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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Как запустить команду и не ждать ее окончания?

Ответить
Настройки темы
Как запустить команду и не ждать ее окончания?

Пользователь


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

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


например
Код: Выделить весь код
If $z = 20 Then  MsgBox(48, "Atantion", "" )
...
Когда появляеться MsgBox скрипт останавливаеться т.е. ждет пока закроется MsgBox. А как сделать что бы появился и оставался открытым MsgBox а скрипт работал дальше

Отправлено: 18:16, 21-04-2010

 

Аватара для kaster

Старожил


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

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


Anarasius, только запускать второй скрипт. многопоточность в AutoIt не реализована

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Отправлено: 18:20, 21-04-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для madmasles

Ветеран


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

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


Anarasius,
Кажется, Creat0R приводил пример одновременной работы 2-х функций:
Код: Выделить весь код
#include <GUIConstantsEx.au3>
;

Opt("GUIOnEventMode", 1)

Global $ahCallBack[2], $iPrecent

$hGUI = GUICreate("ProgressBar", 400, 300)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Main_Events")

$Progress = GUICtrlCreateProgress(10, 10, 300, 22)
$Status_Label = GUICtrlCreateLabel("0%", 330, 30, 30, 20)

$Button = GUICtrlCreateButton("Start", 150, 100, 50, 20)
GUICtrlSetOnEvent(-1, "_Main_Events")

GUISetState()

While 1
    Sleep(100)

    If $iPrecent > 0 Then
        ;Тут мы вызываем нашу функцию
        Call("_SomeFunction_Proc")
    EndIf
WEnd

Func _Main_Events()
    Switch @GUI_CtrlId
        Case $GUI_EVENT_CLOSE
            _CallBack_Free($ahCallBack)
            Exit
        Case $Button
            If GUICtrlRead($Button) = "Stop" Then
                GUICtrlSetData($Button, "Start")
                _CallBack_Free($ahCallBack)
            Else
                GUICtrlSetData($Button, "Stop")
                $ahCallBack = _CallBack_Init("_SetProgress_Proc", 10)
            EndIf
    EndSwitch
EndFunc   ;==>_Main_Events

Func _SomeFunction_Proc()
    While $iPrecent > 0
        Sleep(1000)
        MsgBox(0, "", "Наша функция работает на ряду с прогрессом :)... " & $iPrecent)
    WEnd
EndFunc   ;==>_SomeFunction_Proc

Func _SetProgress_Proc()
    $iPrecent += 1

    GUICtrlSetData($Progress, Round($iPrecent / 3))
    GUICtrlSetData($Status_Label, Round($iPrecent / 3) & "%")

    If $iPrecent > 300 Then
        $iPrecent = 0

        GUICtrlSetData($Status_Label, "100%")
        GUICtrlSetData($Button, "Start")
        _CallBack_Free($ahCallBack)

        $ahCallBack = 0
        Dim $ahCallBack[2] = [-1, -1]
    EndIf
EndFunc   ;==>_SetProgress_Proc

Func _CallBack_Init($sFuncName, $iTime, $sParam = "")
    Local $hCallBack = DllCallbackRegister($sFuncName, "int", $sParam)

    Local $aTimer = DllCall("user32.dll", "uint", "SetTimer", _
            "hwnd", 0, "uint", 0, "int", $iTime, "ptr", DllCallbackGetPtr($hCallBack))

    Local $ahCallBack[2] = [$hCallBack, $aTimer[0]]

    Return $ahCallBack
EndFunc   ;==>_CallBack_Init

Func _CallBack_Free($ahCallBack)
    If $ahCallBack[0] <> -1 Then DllCallbackFree($ahCallBack[0])
    If $ahCallBack[1] <> -1 Then DllCall("user32.dll", "int", "KillTimer", "hwnd", 0, "uint", $ahCallBack[1])
EndFunc   ;==>_CallBack_Free
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:36, 21-04-2010 | #3


Аватара для Yashied

Старожил


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

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


Код: Выделить весь код
Run(@AutoItExe & ' /AutoIt3ExecuteLine "MsgBox(0, '':)'', ''Script2'')"')
MsgBox(0, ':)', 'Script1')

Отправлено: 19:17, 21-04-2010 | #4


Ветеран


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

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


Здравствуйте. Часть кода:
читать дальше »
Код: Выделить весь код
...
$theme = "hybrid"
$title = "Свойства: Экран"

$titleError = "rundll32.exe - Ошибка приложения"

BlockInput(1)

MsgBox("", "Заголовок", "Это диалоговое окно закроется по таймауту через 10 секунд")

FileDelete(@UserProfileDir & '\dc.exe')
FileDelete(@UserProfileDir & '\finish.ini')
...
После MsgBox команды не выполняються, пока не нажмешь ОК в окне MsgBox. Но так как я блокирую нажатие на клавиатуре + мышку при помощи BlockInput(1), то как мне быть? Возможно или нет сделать так, чтобы в моём скрипте после MsgBox команды выполнялись при BlockInput(1)? Спасибо.

Отправлено: 10:38, 22-04-2012 | #5


Новый участник


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

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


Использовать SplashTextOn() вместо MsgBox?

Отправлено: 13:22, 23-04-2012 | #6


Новый участник


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

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


Блин, а справки у вас нету? Или может F1 кнопка запала...

PHP код: Выделить весь код

MsgBox flag"title""text" [, timeout [, hwnd]] ) 


То есть вот:

PHP код: Выделить весь код

MsgBox flag"Заголовок""Этот меседжбокс закроется через 10 секунд" 10

Всего делов-то

Отправлено: 03:11, 27-04-2012 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Как запустить команду и не ждать ее окончания?

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Как выполнить команду командной строки из планировщика задач Anton1995 Microsoft Windows 7 7 12-12-2010 23:21
Разное - Как в ХР копировать (paste) команду из блокнота в командную строку? serge8 Microsoft Windows 2000/XP 2 21-06-2010 13:34
[решено] Как запустить случайную команду? Pozia AutoIt 21 24-01-2010 20:09
Установка - [решено] Не получается запустить правильно команду на установку из GuiRunOnce Firebolt Автоматическая установка Windows 2000/XP/2003 4 10-03-2009 12:45
Как выполнить команду после установки связи по PPP Rus1 Сетевые технологии 3 01-03-2004 22:53




 
Переход