RSS registrovat login
Navigace: předchozí stranaúvodní strana
Vypnutí Windows v Delphi

další relativně častý dotaz je, jak vypnout windows z aplikace v Delphi. K tomu lze použít přiložený kód, ten jsem zkopíroval z builderu a původně je prý z báze znalostí Peprsoftu , ale přispěvovatel tam už nedal link :-)

unit
Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 =
class
(TForm) Button1: TButton;
procedure
Button1Click(Sender: TObject); private
{ Private declarations }
public
{ Public declarations }
end
;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure
TForm1.Button1Click(Sender: TObject);
const
SE_SHUTDOWN_NAME =
'SeShutDownPrivilege'
;
var
hToken : THandle; tkp : TTokenPrivileges; tkpo : TTokenPrivileges; zero : DWord;
begin
zero :=
0
;
if
not
OpenProcessToken(GetCurrentProcess(), Token_Adjust_privileges
or
Token_Query, hToken)
then
begin
MessageBox(
0
,
'Exit Error'
,
'OpenProcessToken() Failed'
, MB_OK); Exit;
end
;
if
not
LookupPrivilegeValue(
nil
,SE_SHUTDOWN_NAME, tkp.Privileges[
0
].Luid)
then
begin
MessageBox(
0
,
'Exit Error'
,
'LookupPrivilegeValue() Failed'
, MB_OK); Exit;
end
; tkp.PrivilegeCount :=
1
; tkp.Privileges[
0
].Attributes := SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, False, tkp, SizeOf(TTokenPrivileges), tkpo, zero);
if
Boolean(GetLastError())
then
begin
MessageBox(
0
,
'Exit Error'
,
'AdjustTokenPrivileges() Failed'
, MB_OK); Exit;
end
else
ExitWindowsEx(EWX_FORCE
or
EWX_REBOOT,
0
); Halt(
0
);
end
;
end
.

Syntax higlighted by Syntax highlighter, available at www.4ITDevelopers.net and www.JakNaWin.com


Informace ke stavu builder.cz zde


vytvořil Mi.Chal. 22.11. 2005 21:32, naposledy změněnil Mi.Chal. 22.11. 2005 21:38
přečteno: 3031x

Komentáře:
Žádné komentáře dosud nebyly vloženy.

Přidat komentář:
Jméno
E-mail
Web
Titulek
Obsah
thomas sabo rea mbt outlet thomas sabo charms sale louis vuitton taschen kaufen thomas sabo boutique mbt kaufen