Вниз
Скачать: CL | DM;

Завершение работы Виндовс   Найти похожие ветки 

← →
~GaMeRd~ ©   (2003-12-11 20:35) [0]

Очередной привет и очередной старый, как мир, вопрос.
Как осуществить выключение, спячку, вобщеи весь комплект?
Знаю, знаю, стар вопрос.
Просто нужно четко знать, отличие между осуществлением функций в разных виндах (ХР, 98). Плюс как вызвать Завершение сеанса?

Пасиба


← →
Aleksey ©   (2003-12-12 06:12) [1]

unit WinReboot;

{ Usage:

1. Drop TWinReboot component on a form.
2. Call WinReboot1.WinExit(flags)

Where flags must be one of the following:

EWX_LOGOFF - Shuts down processes and logs user off
EWX_REBOOT - Shuts down the restarts the system
EWX_SHUTDOWN - Shuts down system

The following attributes may be combined (OR"d) with above flags

EWX_POWEROFF - shuts down system and turns off the power.
EWX_FORCE - forces processes to terminate.

Example:
WinReboot1.WinExit(EWX_REBOOT or EWX_FORCE);
}

interface

uses
Windows, Classes;

type
TWinReboot = class(TComponent)
private
function SetPrivilege(privilegeName: string; enable: boolean): boolean;
public
function WinExit(flags: integer): boolean;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents("My Components", [TWinReboot]);
end;

function TWinReboot.SetPrivilege(privilegeName: string; enable: boolean): boolean;
var
tpPrev,
tp : TTokenPrivileges;
token : THandle;
dwRetLen : DWord;
begin
result := False;

OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, token);

tp.PrivilegeCount := 1;
if LookupPrivilegeValue(nil, pchar(privilegeName), tp.Privileges[0].LUID) then
begin
if enable then
tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
else
tp.Privileges[0].Attributes := 0;

dwRetLen := 0;
result := AdjustTokenPrivileges(token, False, tp, SizeOf(tpPrev), tpPrev, dwRetLen);
end;
CloseHandle(token);
end;

function TWinReboot.WinExit(flags: integer): boolean;
begin
Result := True;
SetPrivilege("SeShutdownPrivilege", true);
if not ExitWindowsEx(flags, 0) then
Result := False;
SetPrivilege("SeShutdownPrivilege", False);
end;

end.

Работает как под 9x так и под XP



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.025 c
1-94005
Rog
2004-02-16 13:01
2004.02.29
Как сохранить большой массив со строками


1-93906
SergP
2004-02-15 20:38
2004.02.29
Нужно ли уничтожать созданые объекты при закрытии приложения


14-94166
PaRL
2004-02-02 22:39
2004.02.29
---|Ветка была без названия|---


1-94009
Zarina
2004-02-17 07:33
2004.02.29
Выбор повторяющихся полей


14-94129
Домарощинер
2004-02-09 19:57
2004.02.29
Классный плагиат




   Наверх