|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Остановить Func нажатием на кнопку... |
|
|
[решено] Остановить Func нажатием на кнопку...
|
Новый участник Сообщения: 29 |
Профиль | Отправить PM | Цитировать Надо остановить Func нажатием на кнопку или даже не только остановить func а вообще закрыть.
Func _Timer() For $Start = $paz To 0 Step -1 Select Case $Start >= 7 GUICtrlSetColor($Label1, 0x00FF00) GUICtrlSetData($Label1, $Start) Case $Start > 3 GUICtrlSetColor($Label1, 0xFF8000) GUICtrlSetData($Label1, $Start) Case $Start >= 0 GUICtrlSetColor($Label1, 0xFF0000) GUICtrlSetData($Label1, $Start) EndSelect Sleep(1000) Next Return EndFunc |
|
Отправлено: 16:54, 21-04-2010 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать |
Отправлено: 18:10, 21-04-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 29
|
Профиль | Отправить PM | Цитировать |
Отправлено: 19:02, 21-04-2010 | #3 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Насколько я знаю GUICtrlCreateButton создает кнопку для GUI,соответственно у вас есть окно,а почему бы тогда не сделать так:
#include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> $Form1 = GUICreate("Form1", 164, 162, 388, 278) $Button1 = GUICtrlCreateButton("Button1", 40, 104, 75, 25) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 Exit EndSwitch WEnd |
Отправлено: 20:03, 21-04-2010 | #4 |
$AutoITer Сообщения: 446
|
Профиль | Отправить PM | Цитировать Только вся проблема заключается в том, что цикл While..WEnd не обрабатывается во время выполнения определенной функции. Поэтому нужно устанавливать проверку на нажатие кнопки $bitton1 в самой функции...
|
|
------- Отправлено: 23:13, 21-04-2010 | #5 |
Новый участник Сообщения: 29
|
Профиль | Отправить PM | Цитировать Medic84 ага именно так...
Цитата Medic84:
|
|
Отправлено: 23:42, 21-04-2010 | #6 |
$AutoITer Сообщения: 446
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 23:46, 21-04-2010 | #7 |
Новый участник Сообщения: 29
|
Профиль | Отправить PM | Цитировать пробовал во все участки функции вставлять... =((( не помогает, может быть что не так делаю? попробуй сам вставь вот func
Func _Timer() For $Start = $paz To 0 Step -1 Select Case $Start >= 7 GUICtrlSetColor($Label1, 0x00FF00) GUICtrlSetData($Label1, $Start) Case $Start > 3 GUICtrlSetColor($Label1, 0xFF8000) GUICtrlSetData($Label1, $Start) Case $Start >= 0 GUICtrlSetColor($Label1, 0xFF0000) GUICtrlSetData($Label1, $Start) EndSelect Sleep(1000) Next Return EndFunc |
Отправлено: 00:34, 22-04-2010 | #8 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать JaguarSP,
А если примерно так: #include <GuiConstantsEx.au3> Global $minuts = 00, $secunds = 10 $hGUI = GUICreate("Test", 200, 100) $vremya = StringFormat("%02i:%02i", $minuts, $secunds) $button = GUICtrlCreateButton($vremya, 65, 35, 75, 25) GUISetState() AdlibRegister("_TimerCount", 1000) While 1 $msg = GUIGetMsg() Switch $msg Case $GUI_EVENT_CLOSE ExitLoop Case $button AdlibUnRegister() GUICtrlSetData($button, "00:00") _MyFunc() EndSwitch WEnd Func _TimerCount() $secunds -= 1 GUICtrlSetData($button, StringFormat("%02i:%02i", $minuts, $secunds)) If $secunds = 0 Then If $minuts >= 1 Then $minuts -= 1 $secunds = 60 Else If $secunds = 0 And $minuts = 0 Then AdlibUnRegister() _MyFunc() EndIf EndIf EndIf EndFunc ;==>_TimerCount Func _MyFunc() MsgBox(0, "_MyFunc", "Кнопка нажата") EndFunc ;==>_MyFunc |
Отправлено: 02:28, 22-04-2010 | #9 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать В таком случае обычно в цикле самой функции опрашивают событие нажатой кнопки, или ещё лучше, изменить режим обработки событии и проверять значение некой глобальной переменной:
#include <GuiConstantsEx.au3> Global $iStop = False $hGUI = GUICreate("Test", 200, 100) $nStop_Button = GUICtrlCreateButton("Stop _Timer()", 65, 35, 75, 25) GUISetState() _Timer() While 1 $msg = GUIGetMsg() Switch $msg Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd Func _Timer() $iOld_Opt = Opt("GUIOnEventMode", 1) GUICtrlSetOnEvent($nStop_Button, "_Main_Events") GUISetOnEvent($GUI_EVENT_CLOSE, "_Main_Events") $paz = 10 For $Start = $paz To 0 Step -1 ;~ Select ;~ Case $Start >= 7 ;~ GUICtrlSetColor($Label1, 0x00FF00) ;~ GUICtrlSetData($Label1, $Start) ;~ Case $Start > 3 ;~ GUICtrlSetColor($Label1, 0xFF8000) ;~ GUICtrlSetData($Label1, $Start) ;~ Case $Start >= 0 ;~ GUICtrlSetColor($Label1, 0xFF0000) ;~ GUICtrlSetData($Label1, $Start) ;~ EndSelect If $iStop Then MsgBox(64, 'Title', '_Timer() Stopped.') $iStop = False ExitLoop EndIf Sleep(1000) Next Opt("GUIOnEventMode", $iOld_Opt) Return EndFunc Func _Main_Events() Switch @GUI_CtrlId Case $GUI_EVENT_CLOSE Exit Case $nStop_Button $iStop = True EndSwitch EndFunc #include <GuiConstantsEx.au3> Opt("GUIOnEventMode", 1) Global $iStop = False $hGUI = GUICreate("Test", 200, 100) $nStop_Button = GUICtrlCreateButton("Stop _Timer()", 65, 35, 75, 25) GUICtrlSetOnEvent($nStop_Button, "_Main_Events") GUISetOnEvent($GUI_EVENT_CLOSE, "_Main_Events") GUISetState() _Timer() While 1 Sleep(10) WEnd Func _Timer() $paz = 10 $iStop = False For $Start = $paz To 0 Step -1 ;...... If $iStop Then MsgBox(64, 'Title', '_Timer() Stopped.') $iStop = False ExitLoop EndIf Sleep(1000) Next Return EndFunc Func _Main_Events() Switch @GUI_CtrlId Case $GUI_EVENT_CLOSE Exit Case $nStop_Button $iStop = True EndSwitch EndFunc |
------- Отправлено: 13:30, 22-04-2010 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Отправка письма одним нажатием | borolgin | Программное обеспечение Windows | 11 | 22-10-2010 14:12 | |
Проблема запуска файлов Word, Excel Office 2007 из проводника нажатием мышки | uglevdv | Лечение систем от вредоносных программ | 2 | 30-09-2009 19:45 | |
[решено] Func: Досрочный выход из функции | snoitaleR | AutoIt | 5 | 10-09-2009 17:07 | |
C/C++ - Остановить USB-устройство | Alexej77 | Программирование и базы данных | 2 | 12-11-2007 23:53 | |
Установка одним нажатием | e9990638 | Автоматическая установка Windows 2000/XP/2003 | 8 | 05-02-2006 22:46 |
|