|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] MsgBox (Ok, Cancel) с обратным отсчетом времени. |
|
|
[решено] MsgBox (Ok, Cancel) с обратным отсчетом времени.
|
Новый участник Сообщения: 6 |
Профиль | Отправить PM | Цитировать Перерыл гугл, но не нашел изящного решения данной задачи.
Необходимо сделать форму вроде этой:
с обратным отсчетом времени (не просто таймаутом) то есть чтобы секунды в форме изменялись $isSend должен принимать нужное значение (по умолчанию - отправить СМС = 1) |
|
Отправлено: 18:13, 01-09-2009 |
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать |
Отправлено: 18:54, 01-09-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Я же написал:
> с обратным отсчетом времени (не просто таймаутом) |
Отправлено: 18:57, 01-09-2009 | #3 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Если по проще, то вот:
Global $subject = "Заголовок", $sms = "Проверка" Global $Wait = 10 Global $smsWinTitle = "Оповещение SMS" Global $smsMessage = _ 'Тема: ' & $subject & @CRLF & 'Сообщение: ' & $sms & @CRLF & 'Время до отправки SMS: %s' & @CRLF & _ 'сек. ' & @CRLF & @CRLF & 'Нажмите Отмена, если Вы НЕ хотите получить эту СМС' $isSend = _MsgBoxTimer(1, $smsWinTitle, $smsMessage, $Wait) Func _MsgBoxTimer($iFlag, $sTitle, $sText, $iMBTimeOut = 0, $hWnd=0) Local $hFile, $sMBLine, $sSet_Text, $iRet $sSet_Text = StringReplace($sText, @CRLF, '\n') $sMBLine = '#NoTrayIcon' & @CRLF $sMBLine &= 'Opt("WinWaitDelay", 1)' & @CRLF $sMBLine &= 'While Not WinExists("' & $sTitle & '")' & @CRLF $sMBLine &= ' Sleep(10)' & @CRLF $sMBLine &= 'WEnd' & @CRLF $sMBLine &= 'ControlSetText("' & $sTitle & '", "", "Static1", StringFormat("' & $sSet_Text & '", ' & $iMBTimeOut & '))' & @CRLF If $iMBTimeOut > 0 Then $sMBLine &= _ '$TimerInit = TimerInit()' & @CRLF & _ '$iTime = ' & $iMBTimeOut & @CRLF & _ 'While $iTime > 0' & @CRLF & _ ' ControlSetText("' & $sTitle & '", "", "Static1", StringFormat("' & $sSet_Text & '", $iTime))' & @CRLF & _ ' If Not WinExists("' & $sTitle & '") Then ExitLoop' & @CRLF & _ ' Sleep(1000)' & @CRLF & _ ' $iTime -= 1' & @CRLF & _ 'WEnd' EndIf $hFile = FileOpen(@TempDir & '\MiscMMB.tmp', 2) FileWrite($hFile, $sMBLine) FileClose($hFile) Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & @TempDir & '\MiscMMB.tmp"') $iRet = MsgBox($iFlag, $sTitle, StringFormat($sText, $iMBTimeOut), $iMBTimeOut) While FileExists(@TempDir & '\MiscMMB.tmp') FileDelete(@TempDir & '\MiscMMB.tmp') WEnd Return $iRet EndFunc |
------- Отправлено: 19:10, 01-09-2009 | #4 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать эм, мне необходимо автономное от самого autoit приложение..
Вообще сейчас я использую вот такой вариант:
хреновость варианта в том, что я не могу отслеживать нажатие кнопки Cancel то есть в идеале мне нужно сделать обратную функцию По ОК или по истечении таймера - отправлять смс При нажатии Отмена - выходить из программы В моём вариант Ок - это выход из программы а Cancel и таймаут - отправка. P.S. Подскажите каким bb-кодом правильно подсвечивать синтаксис? |
|
Отправлено: 19:18, 01-09-2009 | #5 |
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать Если по проще то это так
Сам подгониш под себя ... таймер тикает #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> Global $subject = "Заголовок", $sms = "Проверка" Global $Wait = 10 Global $smsMessage = 'Тема: ' & $subject & @CRLF & 'Сообщение: ' & $sms & @CRLF & "Время до отправки SMS: " Global $smsMessagEnd = "сек. " & @CRLF & @CRLF & "Нажмите Отмена, если Вы НЕ хотите получить эту СМС" Global $smsWinTitle = "Оповещение SMS" $nForm = GUICreate($smsWinTitle, 442, 147, 192, 124) $Button1 = GUICtrlCreateButton("OK", 272, 112, 75, 25) $Button2 = GUICtrlCreateButton("Отмена", 360, 112, 75, 25) $Label1 = GUICtrlCreateLabel("", 8, 8, 420, 81) GUISetState(@SW_SHOW) $Begin = TimerInit() While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE, $Button2 Exit Case 0 $vTime = $Wait - Round(Round(TimerDiff($Begin)) / 1024) GUICtrlSetData($Label1, "Времени осталось :" & $vTime) If $vTime = 0 Then $isSend = MsgBox( 1, $smsWinTitle, $smsMessage & $Wait & ' ' & $smsMessagEnd) Exit EndIf EndSwitch WEnd |
Отправлено: 19:23, 01-09-2009 | #6 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата A4S:
Цитата A4S:
$isSend = _MsgBoxTimer(1, $smsWinTitle, $smsMessage, $Wait) If $isSend = 2 Then Exit ;нажали Отмена If $isSend = 1 Or $isSend = -1 Then SendSMS_Proc() ;Нажали OK или истекло время Цитата A4S:
|
|||
------- Отправлено: 19:29, 01-09-2009 | #7 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать В моём примере функция $isSend возвращает 2 и когда истек таймер и когда нажата кнопка отмены
то есть $isSend = -1 такого нет. твой пример мне не подходит к сожалению, т.к. exe должен быть автономен (работать без AutoIt) FlatX007, спасибо за вариант, но хотелось бы обойтись без рисования GUI, обычным msgbox |
Отправлено: 19:38, 01-09-2009 | #8 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата A4S:
Цитата A4S:
|
||
------- Отправлено: 20:00, 01-09-2009 | #9 |
Старожил Сообщения: 307
|
Профиль | Отправить PM | Цитировать Цитата A4S:
P.S. Если твой код должен работать без Autoit, так пиши его на другом языке, или используй батник, или winapi. |
|
------- Отправлено: 20:04, 01-09-2009 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Изменить текст кнопки MSGBOX'a | sashadeg | AutoIt | 13 | 20-11-2009 18:00 | |
[решено] Абзац в MsgBox | teverus | AutoIt | 5 | 13-08-2009 15:05 | |
[решено] MsgBox. Как расположить текст в столбик? | Firebolt | AutoIt | 5 | 26-05-2009 23:35 | |
Использование кнопок MsgBox'a | sashadeg | AutoIt | 4 | 15-05-2009 19:29 | |
[решено] Фиксация времени | Tosha_l | Microsoft Windows 2000/XP | 2 | 09-06-2007 13:06 |
|