如何重新開機

出自VFP Wiki

跳轉到: 導航, 搜尋

目錄

作法

Windows是XP或以後的版本

可直接使用Windows XP以後內建的 shutdown 指令,指令的語法可以使用 shutdown /? 取得。

使用方式: shutdown [-i | -l | -s | -r | -a] [-f] [-m \\computername] [-t xx] [-c "comment"] [-d up:xx:yy]

沒有引數 顯示這個訊息 (和 -? 相同)
-i 顯示 GUI 介面,必須是第一個選項
-l 登出 (不能和 -m 選項一起使用)
-s 電腦關機
-r 關機並重新啟動電腦
-a 中止系統關機
-m \\\\computername 從遠端進行關機/重新啟動/中止
-t xx 將關機等候時間設定成 xx 秒
-c "comment" 關機註解 (最多 127 個字元)
-f 強制關閉執行中的應用程式,不顯示警告
-d [u][p]:xx:yy 關機原因代碼
u 是使用者代碼
p 是預先計劃的關機代碼
xx 是主要原因代碼 (小於 256 的正整數)
yy 是次要原因代碼 (小於 65536 的正整數) 

於是要重新開機的話,程式就可以這麼寫:

!/n shutdown -r 

若是要關機的話,就可以這麼寫:

!/n shutdown -s
Windows 2000或以後

可以使用 WinAPI 來達成。

DECLARE SHORT InitiateSystemShutdown IN advapi32;
    STRING  lpMachineName,;
    STRING  lpMessage,;
    INTEGER dwTimeout,;
    SHORT   bForceAppsClosed,;
    SHORT   bRebootAfterShutdown
* 表示十秒後開始進行重開機
InitiateSystemShutdown( "", "", 10, 0, 1 )

或者是

#Define EWX_LOGOFF                 0  
#Define EWX_SHUTDOWN             1  
#Define EWX_REBOOT                 2  
#Define EWX_FORCE                   4  
#Define EWX_POWEROFF             8  
#Define EWX_FORCEIFHUNG     16  
   
Declare   INTEGER   ExitWindows   IN   "user32"   As   "ExitWindows";  
          INTEGER   dwReserved,;  
          INTEGER   uReturnCode  
   
Declare   INTEGER   ExitWindowsEx   IN   "user32"   As   "ExitWindowsEx";  
          INTEGER   uFlags,;  
          INTEGER   dwReserved  
   
* 登出
=ExitWindowsEx(EWX_LOGOFF,   0)  
   
* 關機
=ExitWindowsEx(EWX_SHUTDOWN,   0)  
   
* 重新開機
=ExitWindowsEx(EWX_REBOOT,   0)  

參考資料