[Delphi (Object Pascal)] Delphi操作计算机重启的代码 →→→→→进入此内容的聊天室

来自 , 2019-07-01, 写在 Delphi (Object Pascal), 查看 108 次.
URL http://www.code666.cn/view/e5ba7c3b
  1.     procedure TForm1.RebootSystem;
  2. var
  3.   osVerInfo: TOSVersionInfo;
  4.   rl: Cardinal;
  5.   hToken: Cardinal;
  6.   tkp: TOKEN_PRIVILEGES;
  7. begin
  8.   if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or
  9.     TOKEN_QUERY, hToken) then
  10.   begin
  11.     osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
  12.     if GetVersionEx(osVerInfo) then
  13.       case osVerInfo.dwPlatformId of
  14.         VER_PLATFORM_WIN32_NT: // Windows NT/2000/XP
  15.           begin
  16.             OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or
  17.               TOKEN_QUERY, hToken);
  18.             if LookupPrivilegeValue(nil, 'SeShutdownPrivilege',
  19.               tkp.Privileges[0].Luid) then
  20.             begin
  21.               tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
  22.               tkp.PrivilegeCount := 1;
  23.               AdjustTokenPrivileges(hToken, False, tkp, 0, nil, rl);
  24.             end;
  25.             // ExitWindowsEx(EWX_SHUTDOWN + EWX_FORCE + EWX_POWEROFF, 0);   //关闭计算机
  26.             ExitWindowsEx(EWX_REBOOT, $FFFF); // 重启
  27.           end;
  28.         VER_PLATFORM_WIN32_WINDOWS: // Windows 95/98/98SE/Me
  29.           begin
  30.             // ExitWindowsEx(EWX_SHUTDOWN + EWX_FORCE + EWX_POWEROFF, 0);   //关闭计算机
  31.             ExitWindowsEx(EWX_REBOOT, $FFFF); // 重启
  32.  
  33.           end;
  34.       end;
  35.   end;
  36. end;
  37.  
  38. 调用 :
  39. procedure TForm1.X1Click(Sender: TObject);
  40. begin
  41.   if MessageBox(0, '你要重启计算机吗?', '警告', MB_ICONQUESTION or MB_YESNO) = idyes then
  42.   begin
  43.     RebootSystem;
  44.   end;
  45.   application.Terminate;
  46. end;
  47. //delphi/6751

回复 "Delphi操作计算机重启的代码"

这儿你可以回复上面这条便签

captcha