Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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
1-94011
Kreon
2004-02-16 20:39
2004.02.29
Отображение русских шрифтов


3-93789
magic
2004-02-01 16:14
2004.02.29
DBLookupComboBox


14-94093
able
2004-02-06 20:02
2004.02.29
PHP Host


1-93928
ser_ega
2004-02-15 00:36
2004.02.29
Ярлык


1-94012
heady
2004-02-16 17:49
2004.02.29
Активная ссылка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский