Что нового

Периодическая отправка данных и меню в трее

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
Добрый день!
Помогите допилить чуть-чуть программу. Суть - каждые 15 минут происходит отправка данных командой RUN, но, помимо этого, должна быть возможность отправить данные "Сейчас".
Написал подобное:
Код:
#include <Constants.au3>
#NoTrayIcon

Opt("TrayMenuMode", 1 + 2) ; Не отображать в трее пункты меню по умолчанию (Script Paused/Exit) и не отмечать галочками при выборе.

$iAbout = TrayCreateItem("Запустить щас")
$iExit = TrayCreateItem("Выход")
TraySetState(1) ; Показывает меню трея

While 1

	Switch TrayGetMsg()
		Case $iAbout
			Run(@ComSpec & " /c " & 'upload.cmd', "")

		Case $iExit ; Выход
            Exit
	EndSwitch

	Run(@ComSpec & " /c " & 'upload.cmd', "", @SW_HIDE)   
	Sleep(900000)

WEnd

Но проблема в том, что, как я понимаю, она "залипает" в ожидании 15 минут, и пункты меню - по кнопке - показывает, но не выполняет их, ибо без цикла ожидания (15 минут) пункты меню срабатывают корректно.
 
A

Alofa

Гость
Пример 1:
Код:
Opt("TrayMenuMode", 1 + 2) ; Не отображать в трее пункты меню по умолчанию (Script Paused/Exit) и не отмечать галочками при выборе.
Opt('TrayOnEventMode', 1) ; Включить функции уведомления OnEvent для трея.

$iAbout = TrayCreateItem("Запустить щас")
$iExit = TrayCreateItem("Выход")

TrayItemSetOnEvent($iAbout, '_Run') ; Назначает пользовательскую функцию, вызываемую при клике пункта в меню трея.
TrayItemSetOnEvent($iExit, '_Exit')
TraySetState(1) ; Показывает меню трея

While 1
	Sleep(900000)
	If Not ProcessWaitClose('upload.cmd', 5) Then ContinueLoop
	_Run()
WEnd

Func _Run()
	Run('upload.cmd', '', @SW_HIDE)
EndFunc   ;==>_Run

Func _Exit()
	Exit
EndFunc

Пример 2:
Код:
Opt("TrayMenuMode", 1 + 2) ; Не отображать в трее пункты меню по умолчанию (Script Paused/Exit) и не отмечать галочками при выборе.

$iAbout = TrayCreateItem("Запустить щас")
$iExit = TrayCreateItem("Выход")
TraySetState(1) ; Показывает меню трея

AdlibRegister('_Run', 900000) ; Регистрирует Adlib-функцию

While 1
	Switch TrayGetMsg()
		Case $iAbout
			If Not ProcessWaitClose('upload.cmd', 5) Then ContinueLoop
			_Run()
		Case $iExit ; Выход
			Exit
	EndSwitch
WEnd

Func _Run()
	Run('upload.cmd', '', @SW_HIDE)
EndFunc   ;==>_Run
 
Верх