使用脚本调用系统的关机对话框

     以前有介绍如何使用命令行调用系统的关机对话框: http://blog.csdn.net/scz123/archive/2005/09/30/492991.aspx
具体方法:开始/运行: rundll32.exe shell32.dll #60

    但是,上述方法会存在一问题,XP下无法正常使用该方法进行关机(感谢网友
沐烨 发现该问题) 。问题原因可能是:正常情况下,关机对话框是有explorer.exe调用,直接使用rundll32调用时无法触发相关命令。

    既然使用explorer.exe调用可以,我们可以尝试使用脚本来实现。实现原理:
  1. 激活explorer.exe
  2. 按ALT+F4
编写VBS脚本如下(将下述内容另存为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} "

上述脚本运行环境为:XP SP2
其他环境也可能正常工作,不过对于有多个explorer.exe进程的系统,就可能不正常工作了,如开了远程终端服务的多用户环境下。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值