Форум: "Система";
Текущий архив: 2004.02.29;
Скачать: [xml.tar.bz2];
ВнизЗавершение работы Виндовс Найти похожие ветки
← →
~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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c