![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как без лишних вопросов выключить комп под WinXP? [D6, WinXP]
Zheks © (2004-04-09 15:21:00)Моё почтение мастерам и начинающим программерам! Те варианты которые я попробовал в WinXP не прокатывают :(
Wiz@rd (2004-04-09 16:04:00) [1]function ZwSystemShutdown (Z: Byte): DWORD; external 'ntdll.dll',
Z: 1 - по-моему ребут, 2 - выключение - тут на форуме это было
WebErr (2004-04-09 15:56:00) [2]
> WebErr © (09.04.04 15:55) [2]
Это надо привелегии сначала получить - потом юзать.
WebErr (2004-04-09 15:55:00) [3]BOOL InitiateSystemShutdown(
LPTSTR lpMachineName, // address of name of computer to shut down
LPTSTR lpMessage, // address of message to display in dialog box
DWORD dwTimeout, // time to display dialog box
BOOL bForceAppsClosed, // force applications with unsaved changes flag
BOOL bRebootAfterShutdown // reboot flag
); :))))
tpa (2004-04-09 15:29:00) [4]В 2к работает. Попробуй на XP и если не лень сообщи. А то вокруг только 2k.
procedure ExitWindows2k(Flags: UINT);
var Token: THandle;
TP1, TP2: TTokenPrivileges;
D: DWORD;
begin
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, Token);
LookupPrivilegeValue( nil, 'SeShutdownPrivilege', TP1.Privileges[0].Luid);
TP1.PrivilegeCount:= 1;
TP1.Privileges[0].Attributes:= SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(Token, False, TP1, SizeOf(TTokenPrivileges), TP2, D);
ExitWindowsEx(Flags, 0);
end;