---Zak---
Скриптер
- Сообщения
- 455
- Репутация
- 120
Добрый день.
Вопрос скорее литорический...
В общем есть небольшая программа, которая висит в диспетчере и если не запущен некий файл, то запускает его (сделано специально, чтобы через диспетчер задач не завершали).
Обзовем это так:
1. сервер - файл, который следит за запуском другого файла
2. клиент - файл, который должен постоянно быть запущенным
Но есть небольшая проблема - при завершении работы Windows сначало завершается "клиент", ну и соответственно "сервер" проявляет весь свой функционал и запускает "клиента"... Все пишется в лог файл. Как итог за секунду "клиент" не один раз был запущен.
Почитал тему - http://autoit-script.ru/index.php?topic=4304.0
Но суть в том, что пусть даже и невидимый GUI создается, чтобы зарегистрировать функцию... НО (!) возможно ли обойтись без него ?
Данная функция не подойдет, т.к. по сути должно отловится именно завершение работы ОС.
PS: идея в том, чтобы при завершении ОС "клиент" останавливал "сервер". А если остановить вручную клиент - значит остановится и сервер.
Пример:
Данная строка не отработает, т.к. ГУИ то не было...
Вопрос скорее литорический...
В общем есть небольшая программа, которая висит в диспетчере и если не запущен некий файл, то запускает его (сделано специально, чтобы через диспетчер задач не завершали).
Обзовем это так:
1. сервер - файл, который следит за запуском другого файла
2. клиент - файл, который должен постоянно быть запущенным
Но есть небольшая проблема - при завершении работы Windows сначало завершается "клиент", ну и соответственно "сервер" проявляет весь свой функционал и запускает "клиента"... Все пишется в лог файл. Как итог за секунду "клиент" не один раз был запущен.
Почитал тему - http://autoit-script.ru/index.php?topic=4304.0
Но суть в том, что пусть даже и невидимый GUI создается, чтобы зарегистрировать функцию... НО (!) возможно ли обойтись без него ?
Код:
OnAutoItExitRegister()
Данная функция не подойдет, т.к. по сути должно отловится именно завершение работы ОС.
PS: идея в том, чтобы при завершении ОС "клиент" останавливал "сервер". А если остановить вручную клиент - значит остановится и сервер.
Пример:
Код:
#Include <GUIConstantsEx.au3>
_WinAPI_SetProcessShutdownParameters(0x03FF)
GUIRegisterMsg(0x0011, 'WM_QUERYENDSESSION')
While 1
Sleep(100)
WEnd
Func WM_QUERYENDSESSION($hWnd, $Msg, $wParam, $lParam)
IniWrite(@ScriptDir & "/myfile.ini", "section2", "key", "this is a new value")
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_QUERYENDSESSION
Func _WinAPI_SetProcessShutdownParameters($iLevel, $iFlag = 0)
Local $Ret = DllCall('kernel32.dll', 'int', 'SetProcessShutdownParameters', 'dword', $iLevel, 'dword', $iFlag)
If (@error) Or (Not $Ret[0]) Then
Return SetError(1, 0, 0)
EndIf
Return 1
EndFunc ;==>_WinAPI_SetProcessShutdownParameters
Код:
IniWrite(@ScriptDir & "/myfile.ini", "section2", "key", "this is a new value")
Данная строка не отработает, т.к. ГУИ то не было...