文章收藏-FAQ 位置:电脑学习网

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

    以前有介绍如何使用命令行调用系统的关机对话框: http://blog.csdn.net/scz123/archive/2005/09/30/492991.aspx

    具体方法:开始/运行:rundll32.exe shell32.dll #60

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

    既然使用explorer.exe调用可以,我们可以尝试使用脚本来实现。实现原理:

    激活explorer.exe,按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进程的系统,就可能不正常工作了,如开了远程终端服务的多用户环境下。

     [文章来源:“十万个为什么”电脑学习网]
     [网络地址:http://why100000.com]
     [版权声明:除本站部分特别声明禁止转载的专稿外,其他的文章可以自由转载,但请务必注明出处和原始作者。本站文章版权归文章原作者所有。如果本站转载的文章有版权问题请联系本站,我们会尽快予以更正。]
 

【字体:[大] [中] [小] 【加入收藏】 【发表评论】 【关闭本窗口】

Copyright © “十万个为什么”电脑学习网 2000-2007 陕ICP备06007929号
站务联系:MSN & Email:zhangking2008@gmail.com  QQ:9365822