Delphi xe5 重启 关闭 windows 8


本文整理自网络,侵删。

 procedure TFmain.RebootOrShutDownSystem(bz: Byte);
var
  osVerInfo: TOSVersionInfo;
  rl: Cardinal;
  hToken: THandle;
  tkp: TOKEN_PRIVILEGES;
begin
  if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
  begin
    osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
    if GetVersionEx(osVerInfo) then
    case osVerInfo.dwPlatformId of
      VER_PLATFORM_WIN32_NT: // Windows NT/2000/XP
      begin
        OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or
          TOKEN_QUERY, hToken);
        if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid) then
        begin
          tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
          tkp.PrivilegeCount := 1;
          AdjustTokenPrivileges(hToken, False, tkp, 0, nil, rl);
        end;
        case bz of
          0: ExitWindowsEx(EWX_SHUTDOWN + EWX_FORCE + EWX_POWEROFF, 0);   //关闭计算机
          1: ExitWindowsEx(EWX_REBOOT, $FFFF); // 重启
        end;
      end;

      VER_PLATFORM_WIN32_WINDOWS: // Windows 95/98/98SE/Me
      case bz of
        0: ExitWindowsEx(EWX_SHUTDOWN + EWX_FORCE + EWX_POWEROFF, 0);   //关闭计算机
        1: ExitWindowsEx(EWX_REBOOT, $FFFF); // 重启
      end;
    end;//case
  end;//if
end;
  
调用 :
procedure TForm1.X1Click(Sender: TObject);
begin
  if MessageBox(0, '你要重启计算机吗?', '警告', MB_ICONQUESTION or MB_YESNO) = idyes then
  begin
    RebootOrShutDownSystem;
  end;
  application.Terminate;
end;
//该代码片段来自于: http://www.sharejs.com/codes/delphi/6751

相关阅读 >>

Delphi strtodatetime 这个函数在win7下出错

Delphi 窗体只显示控件

Delphi中判断操作系统是否是windows7

Delphi app如何禁掉安卓锁屏

Delphi d10.x 安卓app开发中按返回键后程序不退出程序的方法

Delphi调用sql分页存储过程实例

Delphi 中format的字符串格式化使用说明

Delphi 加载excel 导入数据库

Delphi httpencode

Delphi的combobox不能输入只能选择

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...