使用脚本调用系统的关机对话框实现代码_vbs

以前有介绍如何使用命令行调用系统的关机对话框:
具体方法:开始/运行:

复制代码 代码如下:

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

时间: 2024-10-07 11:04:21

使用脚本调用系统的关机对话框实现代码_vbs的相关文章

VBS 显示“选择文件或文件夹”对话框的代码_vbs

一.显示"选择文件"的对话框 问: 嗨,Scripting Guy!有没有什么方法可以让我使用脚本向用户显示一个对话框,供用户选择文件使用? 答:您好.| 如果您使用的是 Windows 2000,我们不知道实现此操作的方法,至少操作系统中没有内置这样的方法. 但如果您使用的是 Windows XP,情况就不同了.在 Windows XP 上,您可以使用"UserAccounts.CommonDialog" 对象向用户显示一个标准的"文件打开"对

关于脚本调用外部对像和类型库_vbs

先举个例子,最近的flash网马调用: var Flashver = (new ActiveXObject("ShockwaveFlash.ShockwaveFlash.9")).GetVariable("$version").split(","); 这个ShockwaveFlash.ShockwaveFlash.9从何而来,用exescope打开flash9f.ocx选择typelib,即可看到ShockwaveFlash.ShockwaveF

用VBS修改(设置)系统时间和日期的代码_vbs

那天跟别人聊到 Y2K38 问题,于是想到一个恶作剧:用 VBS 把系统的时间修改到2038年1月19日3时14分07秒之后,这样某些依赖于 Unix 时间戳的程序就会出问题.那么怎样用 VBS 修改系统的时间呢? 最简单也是最没有技术含量的方法就是调用 cmd 的 date 和 time 命令: 复制代码 代码如下: 'Author: Demon 'Website: http://demon.tw 'Date : 2011/4/27 Dim WshShell Set WshShell = Cr

VBS调用Photoshop批量生成缩略图的代码_vbs

模仿腾讯新闻页,给KingCms添加了新闻页图片点播的代码,代码要求的图片点播格式如下: 0###yun_qi_img/@@@/small/123.gif@@@8标题一***yun_qi_img/@@@/small/456.gif@@@标题二***yun_qi_img/@@@/small/789.gif@@@标题三 格式解释如下: 0代表第0页出现图片点播: yun_qi_img/是第一幅原图地址./small/123.gif是第一幅缩略图地址,原图和缩略图名字一样,后缀不一样,原图是jpg,缩

用VBS脚本实现更换Windows Xp序列号的代码_vbs

ON ERROR RESUME NEXT Dim VOL_PROD_KEY if Wscript.arguments.count<1 then VOL_PROD_KEY =InputBox("使用说明:"&vbCr&vbCr&"   本程序将自动替换你当前 Windows 的序列号,通过微软验证完全正版."&vbCr&vbCr&"序列号(OEM版无效,默认版本为 XP VLK):"& 

使用vbs脚本添加程序到自启动项的代码_vbs

因编辑器过滤了一些字符,比如&,所以下面的脚本可能会运行错误..看官添加&&这个字符就可以了. vbs脚本的功能呢是很多的,不过有时候我们只需要其中的某些功能,今天我突然想研究下怎么用vbs脚本实现添加程序到自启动项...... 首先来一段吧... 复制代码 代码如下: '========================================================================== ' ' VBScript Source File -- Cre

使用vbscript脚本在表单中进行选择的代码_vbs

问: 嗨,Scripting Guy!我想创建一个带有四个单选按钮的表单,其中每个按钮各代表一台计算机.可以选择一个单选按钮,单击另一个按钮,然后脚本将在所选的计算机上运行.我怎样才能做到? -- CW 答: 嗨,CW.如果我们所说的只是 VBScript 和 Windows Script Host,那么这个问题很简单:办不到.除了显示消息框以外,VBScript 和 WSH 都无法创建图形用户界面:没办法通过脚本使用单选按钮.列表框.下拉列表以及其他图形元素. 但是--噢,你们以前一定见过这种

用vbscript脚本实现返回 IP 配置数据的代码_vbs

用以返回配置数据(类似于 IPCONFIG 命令返回信息)的 WMI 脚本.' Returning IP Configuration Data ' WMI script that returns configuration data similar to that returned by IpConfig. strComputer = "." Set objWMIService = GetObject("winmgmts:\\"& strComputer &

利用VBS脚本自动创建计算机帐户的代码_vbs

mcse注:其实这是 按照ADSI(Active Directory Services Interface:活动目录服务接口)写的程序.如果你安装了resource kit,这段代码可以用netcom这条命令进行工作,下面是netcom的一个例子:  NETDOM /Domain:MYDOMAIN /user:adminuser /password:apassword MEMBER MYCOMPUTER /ADD  复制代码 代码如下: *********************** '* St