Delphi實現強制關機(適用於各個Win系統)

2021-06-22 14:02:14 字數 2143 閱讀 7285

unit unit1;

inte***ce

uses

windows, messages, sysutils, variants, classes, graphics, controls, forms,

dialogs, stdctrls;

type

tform1 = class(tform)

button1: tbutton;

label1: tlabel;

procedure button1click(sender: tobject);

private

public

end;

function getoperatingsystem(): string;

procedure shutdowncomputer();

procedure get_shutdown_privilege();

var form1: tform1;

implementation

procedure tform1.button1click(sender: tobject);

begin

shutdowncomputer();

end;

procedure shutdowncomputer();

begin

if getoperatingsystem() = 'windows nt/2000/xp' then

begin

get_shutdown_privilege();

//呼叫此函式會出現系統關機提示視窗,並允許使用者取消關機動作

// initiatesystemshutdown去掉的話就不顯示提示視窗

exitwindow***(ewx_shutdown+ewx_force+ewx_poweroff+ewx_forceifhung,0);

endelse

begin

exitwindow***(ewx_shutdown+ewx_force+ewx_poweroff+ewx_forceifhung,0);

end;

end;

function getoperatingsystem(): string; //獲取作業系統資訊

var osverinfo: tosversioninfo;

begin

result:= '';

osverinfo.dwosversioninfosize:= sizeof(tosversioninfo);

if getversionex(osverinfo) then

case osverinfo.dwplatformid of

ver_platform_win32_nt:

begin

result:= 'windows nt/2000/xp'

end;

ver_platform_win32_windows:

begin

result := 'windows 95/98/98se/me';

end;

end;

end;

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', tkp.privileges[0].luid) then

begin

tkp.privileges[0].attributes:= se_privilege_enabled;

tkp.privilegecount:= 1;

adjusttokenprivileges(htoken, false, tkp, 0, nil, rl);

end;

end;

end.

強制橫屏 僅適用於present情景

property nonatomic,assign bool allowrotation 然後新增 方法 return uiinte ceorientationmaskportrait 在需要設定橫屏的檢視present前設定為yes delegate.allowrotation yes 在橫屏檢視...

多執行緒適用於阻塞式IO場景,不適用於平行計算場景

python的標準實現是cpython。cpython執行python 分為2個步驟 首先,將文字原始碼解釋編譯為位元組碼,然後再用乙個直譯器去 解釋執行位元組碼。位元組碼直譯器是有狀態的,需要維護該狀態的一致性,因此使用了gil global interpreter lock,全域性直譯器鎖 gi...

js複製文字功能實現,適用於Android和IOS

首先文字只有選中才可以複製,所以簡單的做法就是建立乙個隱藏的input,然後繫結需要複製的文字。另外如果將input設定為 type hidden 或者display none則無法選中文字,也就無法複製,可以設定position absolute left 999px 來隱藏文字域。const c...