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

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

Ответить
Настройки темы
[решено] Остановить Func нажатием на кнопку...

Аватара для JaguarSP

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


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

Профиль | Отправить 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
http://forum.oszone.net/thread-150169.html это не подходит...

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

 

Аватара для alt-andrew

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


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

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


А если задать горячие клавиши?
Код: Выделить весь код
HotKeySet("{ESC}", "Terminate")

Func Terminate()
	 Exit 0
EndFunc

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



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

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


Аватара для JaguarSP

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


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

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


так то оно да... а можно сделать чтобы хоткей был переменной что то типа:
Код: Выделить весь код
 HotKeySet("$cancel", "Terminate")
$cancel = GUICtrlCreateButton("Cancel", 295, 422, 100, 53, 0)


Func Terminate()
	 Exit 0
EndFunc

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


Аватара для alt-andrew

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


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

Профиль | Отправить 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


Аватара для Medic84

$AutoITer


Автор проектов


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

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


Только вся проблема заключается в том, что цикл While..WEnd не обрабатывается во время выполнения определенной функции. Поэтому нужно устанавливать проверку на нажатие кнопки $bitton1 в самой функции...

-------

AutoIT Русское сообщество| Моя лаборатория


Отправлено: 23:13, 21-04-2010 | #5


Аватара для JaguarSP

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


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

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


Medic84 ага именно так...
Цитата Medic84:
устанавливать проверку на нажатие кнопки $bitton1 в самой функции... »
вот именно это и надо... а как это сделать?

Отправлено: 23:42, 21-04-2010 | #6


Аватара для Medic84

$AutoITer


Автор проектов


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

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


Ну как. В коде пишешь чуть ли не после каждой строчки
Код: Выделить весь код
if $nMsg = $button1 Then Exit

-------

AutoIT Русское сообщество| Моя лаборатория


Отправлено: 23:46, 21-04-2010 | #7


Аватара для JaguarSP

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


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

Профиль | Отправить 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


Аватара для madmasles

Ветеран


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

Профиль | Отправить 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


Аватара для Creat0R

Must AutoIt


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

Профиль | Сайт | Отправить 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

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

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

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:30, 22-04-2010 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Отправка письма одним нажатием 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




 
Переход