Como desligar o windows2000. Não funciona este codigo

12/02/2003

0

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

Responder

Posts

12/02/2003

Navoid

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é


Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar