![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
выключить комп под XP [D6, WinXP]
pag77 © (2002-11-07 19:51:00)я тут в форуме нашел кое-что, перезагружается он хорошо, а вот выключается не всегда (или зависает, или идет на перезагрузку, причем первое чаще). Помогите кто-чем может!
// перезагруз и выключение
procedure TForm1.Button1Click(Sender: TObject);
begin
ExitWinNT(false);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ExitWinNT(true);
end;
// ********* выключить/перезагрузить
procedure Tform1.ExitWinNT(AShutdown: Boolean);
var
hToken: THandle;
tkp: TTokenPrivileges;
ReturnLength, What: Cardinal;
begin
if AShutdown then
What := EWX_SHUTDOWN or EWX_POWEROFF
else
What := EWX_REBOOT;
if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
begin
LookupPrivilegeValue(nil, "SeShutdownPrivilege", tkp.Privileges[0].Luid);
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
if AdjustTokenPrivileges(hToken, False, tkp, 0, nil, ReturnLength) then
ExitWindowsEx(What, 0)
end
end;
daan_m (2002-11-11 11:11:00) [1]> pag77
я испытал твой вариант. У меня он работал!
Song (2002-11-11 09:07:00) [2]http://pascal.sources.ru/cgi-bin/forum/YaBB.cgi?board=delphi;action=display;num=1036752968
k-sergey (2002-11-11 07:40:00) [3]Дома есть примерчик...напиши на мыло, я тебе в обратку отправлю...
pag77 (2002-11-08 20:06:00) [4]ну хоть кто-нибудь.........