分数全给回答我的第一个人~
要快啊

解决方案 »

  1.   

    刚做了一个~小心用
    unit shundown;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Timer1: TTimer;
        
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
      private
        procedure AdjustToken;
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.AdjustToken();
    var
     hdlProcessHandle : Cardinal;
     hdlTokenHandle : Cardinal;
     tmpLuid : Int64;
     tkpPrivilegeCount : Int64;
     tkp : TOKEN_PRIVILEGES;
     tkpNewButIgnored : TOKEN_PRIVILEGES;
     lBufferNeeded : Cardinal;
     Privilege : array[0..0] of _LUID_AND_ATTRIBUTES;
    begin
            hdlProcessHandle := GetCurrentProcess;
            OpenProcessToken(hdlProcessHandle,
                            (TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY),
                             hdlTokenHandle);        // Get the LUID for shutdown privilege.
            LookupPrivilegeValue('', 'SeShutdownPrivilege', tmpLuid);
            Privilege[0].Luid := tmpLuid;
            Privilege[0].Attributes := SE_PRIVILEGE_ENABLED;
            tkp.PrivilegeCount := 1;   // One privilege to set
            tkp.Privileges[0] := Privilege[0];
            // Enable the shutdown privilege in the access token of this
            // process.
            AdjustTokenPrivileges(hdlTokenHandle,
                                  False,
                                  tkp,
                                  Sizeof(tkpNewButIgnored),
                                  tkpNewButIgnored,
                                  lBufferNeeded);end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
        AdjustToken;
        ExitWindowsEx((EWX_SHUTDOWN Or EWX_FORCE Or EWX_REBOOT), $FFFF);
        //showmessage('ok');
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    timer1.Enabled:=true;
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    var i:integer;
    begin
         for i:=1 to 60 do
         begin
         sleep(80);
         form1.Caption:=inttostr(i);
         end;
         timer1.Enabled:=false;
         showmessage('对不起,关机了!');
         button1.Click;
    end;end.