Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.29;
Скачать: 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 вся ветка

Текущий архив: 2004.02.29;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
1-93874
MadGhost
2004-02-15 12:29
2004.02.29
можно ли использовать один класс в разных модулях?


1-93985
fc
2004-02-15 22:29
2004.02.29
Регистрирование собственного расширения файлов


14-94177
Soft
2004-02-06 22:34
2004.02.29
Что дyмают о pyсских пpогpаммистах их западные коллеги


14-94157
Lucky[ELF]
2004-02-08 12:13
2004.02.29
Что же лучше C или Pas? Linux или Windows?


3-93807
Анонимщик
2004-02-02 17:19
2004.02.29
Движок базы данных