Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
[решено] как выдать сообщение не остонавливая скрипт до закрытия его пользователем?

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


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

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


MsgBox устраивает всем, кроме того что до закрытия сообщения пользователем скрипт останавливается, а надо чтобы он не прекращал работать.
Как можно это реализовать, таймаут в MsgBox не предлагать

Отправлено: 19:52, 07-01-2010

 

Аватара для Creat0R

Must AutoIt


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

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


Цитата snoitaleR:
Мой пример сначала не подходил, а теперь подходит »
Не совсем, т.к нужно каждый раз следить за событиями дочернего окна, и что если нужно несколько сообщений выводить?

Если делать по этому методу, тогда лучше так:

Код: Выделить весь код
Global $aMsgBox_Data[2][2] = [[0, -1], [0, -1]]

$hGUI = GUICreate("", 300, 300)
$nEDIT = GUICtrlCreateEdit("", 0, 0, 300, 200, 0x1000)
$nBUTTON1 = GUICtrlCreateButton("MsgBox", 0, 200, 300, 50)
$nBUTTON2 = GUICtrlCreateButton("GUI2", 0, 250, 300, 50)

GUISetState(@SW_SHOW, $hGUI)

AdlibEnable("_SetEditData_Proc", 50)

While 1
    $nMsg = GUIGetMsg()

    Switch $nMsg
        Case -3
            ExitLoop
        Case $nBUTTON1
            MsgBox(48, "Внимание!", "Приложение заблокировано" & @CRLF & "Нажмите OK, чтобы закрыть окно", 0, $hGUI)
        Case $nBUTTON2
            _GUI_MsgBox("Внимание!", "Приложение продолжает работу" & @CRLF & "Нажмите OK, чтобы закрыть окно", $hGUI)
        Case 0
            ;None
        Case Else ;Any event except 0, it's can be only the new created elements of child GUIs
            Local $aTmp_Arr[1][2]

            For $i = 1 To $aMsgBox_Data[0][0]
                If $aMsgBox_Data[$i][1] <> $nMsg Then
                    $aTmp_Arr[0][0] += 1
                    ReDim $aTmp_Arr[$aTmp_Arr[0][0]+1][2]
                    $aTmp_Arr[$aTmp_Arr[0][0]][0] = $aMsgBox_Data[$i][0]
                    $aTmp_Arr[$aTmp_Arr[0][0]][1] = $aMsgBox_Data[$i][1]
                Else
                    GUISetState(@SW_HIDE, $aMsgBox_Data[$i][0])
                    GUIDelete($aMsgBox_Data[$i][0])
                    If Not WinActive($hGUI) Then WinActivate($hGUI)
                EndIf
            Next

            $aMsgBox_Data = $aTmp_Arr
    EndSwitch
WEnd

Func _SetEditData_Proc()
    GUICtrlSetData($nEDIT, Chr(Random(32, 127, 1)), 1)
EndFunc

Func _GUI_MsgBox($sTitle, $sMsg, $hWnd)
    Local $hGUI, $nButton, $iIndex

    $hGUI = GUICreate("GUI #" & $aMsgBox_Data[0][0] + 1 & " - " & $sTitle, 200, 100, -1, -1, 0x00400000, -1, $hWnd)
    GUICtrlCreateLabel($sMsg, 10, 10)
    $nButton = GUICtrlCreateButton("Ok", -1, 45, 50, 25)

    GUISetState(@SW_SHOW, $hGUI)

    $iIndex = -1

    For $i = 1 To $aMsgBox_Data[0][0]
        If $aMsgBox_Data[$i][0] = $hGUI Then
            $iIndex = $i
            ExitLoop
        EndIf
    Next

    If $iIndex = -1 Then
        $aMsgBox_Data[0][0] += 1
        $iIndex = $aMsgBox_Data[0][0]
        ReDim $aMsgBox_Data[$iIndex+1][2]
    EndIf

    $aMsgBox_Data[$iIndex][0] = $hGUI
    $aMsgBox_Data[$iIndex][1] = $nButton
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


Отправлено: 23:42, 09-01-2010 | #11



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

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



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Как написать програмку для открытия и закрытия DVD-RW, если буква диска неизвестна? Fraks AutoIt 11 30-08-2009 18:40
Доступ - [решено] Перезагрузка после закрытия программы hsperm Microsoft Windows 2000/XP 2 21-07-2009 09:49
V. 5.5/2000/2003 - [решено] Сообщение еще не доставлено. Microsoft Exchange продолжит попытки доставить сообщение exo Microsoft Exchange Server 1 28-05-2009 23:23
Разное - AutoIt Помогите написать скрипт закрытия окна выполнения сценария в трее ShadowMas Программирование и базы данных 1 05-07-2008 14:04
нужен скрипт для добавления сайта в избранное и сделать его стартовой страницей Denis Shutka Вебмастеру 2 30-01-2005 11:03




 
Переход