Что нового

[Элементы GUI] Кнопка паузы в интерфейсе

amauron

Новичок
Сообщения
3
Репутация
0
Доброго времени суток.
Я совсем недавно изучаю AutoIT и вот возникла необходимость использовать кнопку паюзы в GUI интерфейсе. Описание реализации такой возможности я найти не смог, но поиски продолжаю ;)
везде идет указание на использование HotKeySet, и пауза через нажатие на иконку в трее тоже не подходит.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
amauron
Попробуйте в Ваш код вставить следующее:
Код:
Global $Paused
;Ваш код
;...
	Case $Button1;кнопка паузы
		TogglePause()
;...

Func TogglePause()
    $Paused = Not $Paused
    While $Paused
        Sleep(100)
    WEnd
EndFunc   ;==>TogglePause
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Ты должен сам это реализовать. Запустил программу, что-то начало происходить. Нажал на кнопку, это что-то перестало происходить. Нажал еще раз, опять происходит. Это тривиальная задача и зависит от конкретных нужд. Для более детального ответа нужен исходный код.

;)


Добавлено:
Сообщение автоматически объединено:

В примере madmasles GUI будет зависать во время паузы, что не есть хорошо.
 
Автор
A

amauron

Новичок
Сообщения
3
Репутация
0
через хоткей у меня все отрабатывает прекрасно.

Код:
Func TogglePause()
 $Paused += 1
    If $Paused = 2 Then $Paused=0
    While $Paused
        Sleep(100)
    WEnd
EndFunc


Yashied смысл в том, что программа формирует отчет в другом приложении и выполнение программы занимает около 10-15 минут и пауза может потребоваться в любой момент этого времени.

как пример можно рассмотреть вот этот код :smile:
MsgBox там просто для просмотра изменения ключа

Код:
#include <GUIConstantsEx.au3>

Global $Paused
HotKeySet("{esc}", "TogglePaused")

GUICreate ("pause",300,70)
$btnstart=GUICtrlCreateButton("Запуск",20,20,50,30)
$btnexit=GUICtrlCreateButton("Выход",230,20,50,30)
$btnpaus=GUICtrlCreateButton("pause",115,20,71,30)


GUISetState (@SW_SHOW)
While 1
    $msg = GUIGetMsg()
    select
 		Case $msg = $btnexit
 			Exit
 		Case $msg=$btnstart
			start()
		Case $msg = $GUI_EVENT_CLOSE
			Exit
		Case $msg = $btnpaus
			;;;
	EndSelect
Wend

Func TogglePaused()
    $Paused += 1
    If $Paused = 2 Then
		$Paused=0
		MsgBox (0,"PAUS",$Paused)
	EndIf
	if $Paused = 1 Then MsgBox (0,"PAUS",$Paused)
	WinActivate("Безымянный - Блокнот")
	WinWaitActive("Безымянный - Блокнот")
    While $Paused
        Sleep(100)
    WEnd
EndFunc

Func start()
	Run("notepad.exe")
	WinWait("Безымянный - Блокнот")
	WinActivate("Безымянный - Блокнот")
	;действия
	for $l=1 to 100 step 1
		send ("text ")
	Next
EndFunc
 
Автор
A

amauron

Новичок
Сообщения
3
Репутация
0
Нашел решение ;D
Добавил обработку событий по GUIOnEventMode в основной код программы
 
Верх