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 spcomm 接收数据不完整

Delphi�⒆执�传入到windows目前窗口cursor所在位置

Delphi 获取系统mydocuments文件夹路径

Delphi实现进制转化(2进制,8进制,10进制,16进制)

Delphi 防局域网控制网速代码

Delphi 随机程序名

Delphi实现阿里云印刷文字识别_身份证识别

Delphi获取webbrowser中的元素的值

Delphi 得到指定文件夹内文件名

Delphi app检测智能手机震动

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



打赏

取消

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

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

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

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

评论

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