Como desligar o windows2000. Não funciona este codigo

Delphi

12/02/2003

Usei estes comandos para tentar ligar o windows2000, mais ele só da logoff, porem gostaria de saber como proceder para desligar o windows 2000.


unit TESTE1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ShutDown;
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  function ExitWindowsEx(uFlags : integer; dwReserved : word): boolean; external ´user32.dll´ name ´ExitWindowsEx´;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
const EWX_LOGOFF = 0;
const EWX_SHUTDOWN = 1;
CONST EWX_REBOOT = 2;
CONST EWX_FORCE = 4;
CONST EWX_POWEROFF = 8;
begin
 ExitWindowsEx(EWX_POWEROFF, 8);
end;

procedure TForm1.ShutDown;
CONST EWX_POWEROFF = 8;
var
TokenPriv: TTokenPrivileges;
H: DWORD;
HToken: THandle;
begin
{ Flag := EWX_POWEROFF;}
  (* WIN 2000 e NT *)
  if Win32Platform = VER_PLATFORM_WIN32_NT then
  begin
    OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, HToken);
    LookUpPrivilegeValue(nil, ´SeShutDownPrivilege´,
    TokenPriv.Privileges[0].Luid);
    TokenPriv.PrivilegeCount := 1;
    TokenPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
    H := 0;
    AdjustTokenPrivileges(HToken, False, TokenPriv, 0,PTokenPrivileges(nil)^, H);
    CloseHandle(HToken);
  end;



Pfrazatto

Pfrazatto

Curtidas 0

Respostas

Navoid

Navoid

12/02/2003

seguinte pessoal, eu fiz um programinha que chamei de halt e ele desliga o nt (nt/2000/xp)

vou mandar pro master uploaders pra ver se eles aceitam, senão coloco aqui no fórum disponível

até


GOSTEI 0
POSTAR