對於以上功能,我們完全可以通過編程來實現,下面就以Delphi編程來完成。
關閉(或重啟)Windows
要關閉Windows,可利用API函數ExitWindowsEx(),它能夠實現“注銷當前用戶”、“關閉Windows”以及“關閉Windows並重啟”等功能,具體格式和用法如下:
ExitWindowsEx(關閉類型參數,系統保留參數);
其中,系統保留參數無特定意義,一般寫0即可;關閉類型可以是以下幾種:
EWX_FORCE:強制關閉,Windows不會發送任何消息給正運行的程序,這可能導致數據丟失;
EWX_LOGOFF:關閉所有正在運行的程序,注銷當前用戶並重新登錄;
EWX_POWEROFF:關閉Windows並關機,當然,系統必須支持電源管理;
EWX_REBOOT:關閉Windows並重新啟動;
EWX_SHUTDOWN:關閉Windows,緩沖區內的數據將被寫入磁盤。
我們來看一個實例,首先新建一窗體,在上面放置一組單選鈕,命名為rgExit,共三個選項:注銷當前用戶並重新登錄;關閉Windows並重新啟動;關閉Windows。再放置兩個按鈕,Botton1用於確認,Botton2用於取消。代碼如下:
Implementation
{ *.dfm}
Procedure tform1.button1click(sender: tobject);
Begin
case rgexit.itemindex of
0: exitWindowsex(ewx_
logoff,0); //注銷當前用戶並重新登錄
1: exitwindowsex(ewx_reboot,0); //關閉Windows並重新啟動
2: exitwindowsex(ewx_shutdown,0); //關閉Windows
end;
End;
Procedure tform1.button2click(sender: tobject);
Begin
close;
End;
防止關閉Windows
要實現“防止關閉Windows”這一功能其實很簡單,只要在程序主窗體的OnCloseQuery事件中加入以下代碼即可:
Procedure tform1.formclosequery(Sender: tobject; var canclose: Boolean);
Begin
If messagedlg('是否允許關閉?', mtconfirmation, mbokcancel, 0) = mrok then
Canclose := True
Else
Canclose := False;
End;
如果把CanClose設為False,表示不允許關閉Windows;如果CanClose設為True,則允許關閉。