运行程序,可以关闭windows(包括2000和XP)程序代码(急加上结)

解决方案 »

  1.   

    procedure TForm1.AdjustToken;
    var
      hdlProcessHandle : Cardinal;
      hdlTokenHandle   : Cardinal;
      tmpLuid          : 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;//关闭电脑执行以下语句
    AdjustToken;
    ExitWindowsEx(EWX_FORCE + EWX_SHUTDOWN + EWX_POWEROFF,0);
      

  2.   

    在 gobal extenal中声明
    Function ulong ExitWindowsEx(ulong uFlags,ulong dwReserved) LIBRARY "user32.dll"然后直接在需要的地方调用就可以了:)
      

  3.   

    调用 exitwindowsex() 就可以了吧
      

  4.   

    多谢joky1981(共享) 与zzw0598(口是心非) 。我已从joky1981(共享)程序中解决问题了。再次多谢joky1981(共享)。