日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

关机与禁止关机代码

發布時間:2024/1/3 综合教程 26 生活家
生活随笔 收集整理的這篇文章主要介紹了 关机与禁止关机代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天抽空,寫完了定時關機程序的代碼,測試了一下,還不錯,以前寫過個禁止關機的程序,用來測試一下,看哪個強,先運行禁止關機的程序,用Windows xp的關閉計算機試了一下,關不了.

代碼很少:

private
procedure QueryEndSession(var Msg:TMessage);Message WM_QueryEndSession;

procedure TForm1.QueryEndSession(var Msg:TMessage);
begin
Msg.Result:=0;
end;
就是收到關機消息后返回0,告知還不能關機.

而定時關機這邊主要是用這條API指令來關機:

BOOL ExitWindowsEx(
UINT uFlags, // 關閉操作
DWORD dwReserved // 保留,0即可.
) ;

其中參數uFlags的取值及其含義:
EWX_FORCE 在緊急情況下強制關機。
EWX_LOGOFF 以其他用戶身份登錄。
EWX_POWEROFF 關閉系統并關閉電源。
EWX_REBOOT 重新啟動。
EWX_SHUTDOWN 安全地關機。

測試了一下,在開啟了禁止關機程序的情況下,使用EWX_SHUTDOWN,EWX_POWEROFF都不能關機.只有加上EWX_FORCE這個參數,禁止關機的程序不起作用了.

//關機代碼,CMD用 EWX_FORC可以突破禁止關機.
procedure TForm1.CloseWin(cmd:Cardinal);
var
VerInfo:TOSVersionInfo;
hToken:THANDLE;
tkp:TOKEN_PRIVILEGES;
Nothing:Cardinal;
begin
VerInfo.dwOSVersionInfoSize:=SizeOf(VerInfo);
GetVersionEx(VerInfo);
if VerInfo.dwPlatformId=VER_PLATFORM_WIN32_NT then
Begin
OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken);
LookupPrivilegeValue(nil,'SeShutdownPrivilege',tkp.Privileges[0].Luid);
tkp.PrivilegeCount:= 1;
tkp.Privileges[0].Attributes:= SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, tkp, 0,nil, Nothing);
End;
ExitWindowsEx(CMD,0);

end;

總結

以上是生活随笔為你收集整理的关机与禁止关机代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。