VC 关机代码{========================================================== =========================================================== == 关闭 Window s函数 ExitWindowsEx(UINT uFlag,DWORD:dwReserved) 说明: 控制 WINDOWS 的开关:如关闭 WINDOWS ,重新启动 WINDOWS 等, ExitWindowsEx(UINT uFlags,DWORD dwReserved); 是实现这一功能的 API 函数。 plile 时提示 EWX_XXXX 未定义, 那么请手动定义这几个常数,默认情况下是无需我们手动定义的。 const EWX_FORCE=4; // 关闭所有程序并以其他用户身份登录? (!! 应为“强制执行否”吧!!) EWX_LOGOFF=0; // 重新启动计算机并切换到 MS-DOS 方式 EWX_REBOOT=2; // 重新启动计算机 EWX_SHUTDOWN=1;// 关闭计算机 EWX_POWEROFF=5;// 好象是 5 ,记不太清了 EWX_FORCEIFHUNG=7;//7 ?不记得了,有谁好心查下 MSDN 调用方法: ExitWindowsEx(EWX_REBOOT,0); // 重启计算机 ExitWindowsEx(EWX_FORCE+EWX_SHUTDOWN,0); // 强行关机不过博主经常听到有人说这一 API 只在 Windows 95/98/98SE/Me 下有效,而在 Windows NT/2000/XP 下无效。其实这是不正确的, 这一 API 在上述平台下均是有效的, 只是我们在 Windows NT/2000/XP 平台下执行此函数之前,必须要获取得关机特权罢了,其实就算是 Windows NT/2000/XP 系统自身关机也必须要走这一流程的。获取关机特权函数如下: procedure Get_Shutdown_Privilege; // 获得用户关机特权,仅对 Windows NT/2000/XP var rl: Cardinal; hToken: Cardinal; tkp: TOKEN_PRIVILEGES; begin OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken); if LookupPrivilegeValue(nil, 'SeShutdownPrivilege ', [0].Luid) then begin [0].Attributes := SE_PRIVILEGE_ENABLED; := 1; AdjustTokenPrivileges(hToken, False, tkp, 0, nil, rl); end; end; 另一个关机 API , InitiateSystemShutdown(puter_Name),PChar(Hint_Msg), Time,Force,Reboot);
VC关机代码 来自淘豆网www.taodocs.com转载请标明出处.