Что нового

[Время, дата] Выполнение действий по таймеру

Makrut

Новичок
Сообщения
44
Репутация
2
Здравствуйте, дорогие форумчане. У меня такая проблема: никак не получается прикрутить таймер к данной программе. Суть ее работы: пользователь нажимает кнопку и происходит действие (выключение пк, перезагрузка, выход из системы). нужно, чтобы эти действия выполнялись через заданное пользователем время.
Прошу прощения, если вопрос глупый или банальный. :IL_AutoIt_1:
 

Ksaan

Знающий
Сообщения
207
Репутация
15
Так?
Код:
HotKeySet("{F1}", "_Reset")

$Delay = 2 ; Секунд(ы)
$Code = 1 ; Завершить работу операционной системы
;~ $Code = 6 ; принудительная перезагрузка
;~ $Code = 0 ; Завершение сеанса пользователя

While 1
	Sleep(100)
WEnd

Func _Reset()
	$hTimer = TimerInit()
	Sleep($Delay * 1000)
	$iDiff = TimerDiff($hTimer) ;
	If Int($iDiff) > ($Delay * 1000) Then Shutdown($Code)
EndFunc
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Почитайте справку по
Код:
AdlibRegister
AdlibUnRegister
 

Ksaan

Знающий
Сообщения
207
Репутация
15
Можно и как предложил edyapd
Код:
;~ $Code = 1 ; Завершить работу операционной системы
;~ $Code = 6 ; принудительная перезагрузка
;~ $Code = 0 ; Завершение сеанса пользователя


#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Global $Code

GUICreate("PcSwitch", 160, 185, 192, 124)
$Reset = GUICtrlCreateButton("Перезагрузка", 16, 64, 123, 25)
$Exit = GUICtrlCreateButton("Выключить", 17, 99, 123, 25)
$System = GUICtrlCreateButton("Выйти из системы", 15, 135, 123, 25)
$Delay = GUICtrlCreateInput("0", 88, 24, 49, 21, $ES_NUMBER)
GUICtrlCreateLabel("Таймер (Сек)", 16, 27, 71, 17)
GUISetState(@SW_SHOW)


While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

		Case $Reset
			$Code = 6
			AdlibRegister("_Reset", GUICtrlRead($Delay) * 1000)

		Case $System
			$Code = 0
			AdlibRegister("_Reset", GUICtrlRead($Delay) * 1000)

		Case $Exit
			$Code = 1
			AdlibRegister("_Reset", GUICtrlRead($Delay) * 1000)

	EndSwitch
WEnd


Func _Reset()
	If GUICtrlRead($Delay) > 0 Then
		GUISetState(@SW_HIDE) ; Скрыть окно программы
		Shutdown($Code)
		AdlibUnRegister("_Reset")
	Else
		MsgBox(0,"","Не задано время паузы")
		AdlibUnRegister("_Reset")
	EndIf
EndFunc
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Makrut,
Предупреждение За нарушение общих правил (пункт В.2):
Старайтесь избегать “Over quoting” (преувеличенное цитирование) - цитируйте только необходимую часть сообщения, которая наилучшим образом подчеркнёт суть цитируемого.


С уважением, ваш Глобальный модератор.
 
Верх