forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   PureBasic (http://forum.boolean.name/forumdisplay.php?f=90)
-   -   Выключение или перезагрузка компьютера по таймеру (http://forum.boolean.name/showthread.php?t=4915)

Prof. BiG BanG 02.11.2007 14:46

Выключение или перезагрузка компьютера по таймеру
 
Привет всем:)
Решил написать программку для выключения компа по таймеру,
самое сложное было, конечно, использование WinApi, но в общем, разобрался. Кому интересно полный исходный текст и саму программу можно скачать здесь: http://bigbang.nm.ru/ShutdownTimer.zip (44KB )
Вот фрагмент кода:
Код:

#SE_SHUTDOWN_NAME="SeShutdownPrivilege"
;странно, что эта кoнстантa не определена в PB
Error$="Error"
tkp.TOKEN_PRIVILEGES
;структура описывающая привилегии программы
; (требуется установить привилегии для выключения компьютера)
tkpo.TOKEN_PRIVILEGES
zero=0
hToken=0

Procedure ShowErrorMsg()
;показывает сообщение об ошибке на  понятном языке
  Global Error$
  lpMsgBuf=0
  FormatMessage_(#FORMAT_MESSAGE_ALLOCATE_BUFFER|#FORMAT_MESSAGE_FROM_SYSTEM,#NUL,GetLastError_(),#LANG_NEUTRAL,@lpMsgBuf,0,#NUL)
  MessageBox_(#NUL,lpMsgBuf,Error$,#MB_OK|#MB_ICONERROR)
  End
EndProcedure

If Not OpenProcessToken_(GetCurrentProcess_(),#TOKEN_ADJUST_PRIVILEGES|#TOKEN_QUERY,@hToken)
  ShowErrorMsg()
EndIf
If Not LookupPrivilegeValue_(#NUL,#SE_SHUTDOWN_NAME,tkp\Privileges[0]\Luid)
  ShowErrorMsg()
EndIf

tkp\PrivilegeCount=1
tkp\Privileges[0]\Attributes=#SE_PRIVILEGE_ENABLED
If Not AdjustTokenPrivileges_(hToken,#False,@tkp,SizeOf(tkp),@tkpo,@zero)
  ShowErrorMsg()
EndIf
If Not ExitWindowsEx_(#EWX_FORCE|#EWX_SHUTDOWN,0)
;собственно, само выключениe
  ShowError()
EndIf


kvitaliy 05.11.2007 19:56

Re: Выключение или перезагрузка компьютера по таймеру
 
У кого стоит либа Droopy, ( считаю, что должна быть у каждого, кто не хочет изобретать велосипед), код не будет работать, т.к. там Уже есть такая команда Reboot(), как в прочем и ShutDownAndPowerOff() тоже вызывается одной командой...
И вообще, CodeArchiv очень полезная вещь! Там и про прозрачность окон, и про синтез речи, и про много чего интересного можно найти... Рекомендую!!!

Prof. BiG BanG 05.11.2007 20:35

Re: Выключение или перезагрузка компьютера по таймеру
 
Цитата:

Сообщение от kvitaliy
У кого стоит либа Droopy, ( считаю, что должна быть у каждого, кто не хочет изобретать велосипед), код не будет работать, т.к. там Уже есть такая команда Reboot(), как в прочем и ShutDownAndPowerOff() тоже вызывается одной командой...
И вообще, CodeArchiv очень полезная вещь! Там и про прозрачность окон, и про синтез речи, и про много чего интересного можно найти... Рекомендую!!!

Действительно, CodeArchiv - очень полезная вещь, к сожалению, я узнал о ней только сегодня :)


Часовой пояс GMT +4, время: 15:42.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot