以前有介紹如何使用命令行調(diào)用系統(tǒng)的關(guān)機對話框rundll32.exe shell32.dll #60,但是,上述方法會存在一問題,XP下無法正常使用該方法進行關(guān)機
以前有介紹如何使用命令行調(diào)用系統(tǒng)的關(guān)機對話框:
具體方法:開始/運行:
代碼如下:
rundll32.exe shell32.dll #60
但是,上述方法會存在一問題,XP下無法正常使用該方法進行關(guān)機(感謝網(wǎng)友沐燁 發(fā)現(xiàn)該問題)。問題原因可能是:正常情況下,關(guān)機對話框是有explorer.exe調(diào)用,直接使用rundll32調(diào)用時無法觸發(fā)相關(guān)命令。
既然使用explorer.exe調(diào)用可以,我們可以嘗試使用腳本來實現(xiàn)。實現(xiàn)原理:
激活explorer.exe
按ALT+F4
編寫VBS腳本如下(將下述內(nèi)容另存為shutdown.vbs):
代碼如下:
Dim objWMI,wsh
Dim colProcesses,objProcess
pid=0
set objWMI = GetObject( "winmgmts:{impersonationLevel=impersonate}//. /root/cimv2" )
set colProcesses = objWMI.ExecQuery( "SELECT * FROM Win32_Process" & _
" WHERE Name='explorer.exe'" )
for Each objProcess In colProcesses
pid = objProcess.ProcessId
Next
set wsh = WScript.CreateObject("WScript.Shell")
wsh.AppActivate pid
wsh.sendKeys "%{F4}"
上述腳本運行環(huán)境為:XP SP2
其他環(huán)境也可能正常工作,不過對于有多個explorer.exe進程的系統(tǒng),就可能不正常工作了,如開了遠程終端服務(wù)的多用戶環(huán)境下。