Форум: "Система";
Текущий архив: 2002.03.11;
Скачать: [xml.tar.bz2];
ВнизКак завершить работу компьютера ? Найти похожие ветки
← →
volph (2001-11-13 15:45) [0]Как завершить работу компьютера без спрашивания о подключенных пользователей и о незакрытых дос-приложений!
← →
Knight (2001-11-13 17:51) [1]Удалено модератором
← →
AlexKniga (2001-11-13 18:29) [2]То бишь:
"rundll32.exe shell32.dll,SHExitWindowsEx 4"
← →
Knight (2001-11-13 18:35) [3]Это не интересно, долго, нудно, не по-Дельфийчки... :)))
← →
bob1 (2001-11-13 19:00) [4]От Andrey Klimov"a
Работает как часы
unit WinReboot;
(* TWinReboot component (freeware)
by Barry Brannan, September 1997
(barrylb@poboxes.com)
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("Samples"! , [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.
← →
Filat (2001-11-13 20:02) [5]Красиво, но долго и нудно, есть функция для завершения, похожая на эту, поищешь, но перегрузить тачку, не зависимо от того что открыто
-> ExitWindowsEx(EWX_REBOOT,0);
Дёшево и сердито. Первый раз когда проверял даже в некоторой степени прикололся :))))))))))
← →
Tosov (2001-11-13 20:16) [6]Для NT/Win2000/XP посмотри здесь:
http://delphi.xonix.ru/faq/system/shutdown01.shtml
http://delphi.xonix.ru/faq/system/shutdown02.shtml
← →
bob1 (2001-11-14 08:39) [7]Для Filat
Эта функция не работает на NT4, без установки соответствующей
привелегии
← →
Zyv (2001-12-07 17:17) [8]Очень подробно для всех систем см.
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1007368114&n=2
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.03.11;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c