如何重新開機
出自VFP Wiki
(修訂版本間差異)
小 (→Windows 2000或以後) |
小 (→Windows 2000或以後) |
||
第42行: | 第42行: | ||
或者是 | 或者是 | ||
<pre> | <pre> | ||
- | #Define | + | #Define EWX_LOGOFF 0 |
- | #Define | + | #Define EWX_SHUTDOWN 1 |
- | #Define | + | #Define EWX_REBOOT 2 |
- | #Define | + | #Define EWX_FORCE 4 |
- | #Define | + | #Define EWX_POWEROFF 8 |
- | #Define | + | #Define EWX_FORCEIFHUNG 16 |
Declare INTEGER ExitWindows IN "user32" As "ExitWindows"; | Declare INTEGER ExitWindows IN "user32" As "ExitWindows"; | ||
第58行: | 第58行: | ||
* 登出 | * 登出 | ||
- | =ExitWindowsEx | + | =ExitWindowsEx(EWX_LOGOFF, 0) |
* 關機 | * 關機 | ||
- | =ExitWindowsEx | + | =ExitWindowsEx(EWX_SHUTDOWN, 0) |
* 重新開機 | * 重新開機 | ||
- | =ExitWindowsEx | + | =ExitWindowsEx(EWX_REBOOT, 0) |
</pre> | </pre> | ||
在2006年10月16日 (一) 15:27的最新修訂版本
目錄 |
作法
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)