中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-12 11:32
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助:VBS调用键盘{Ctrl}{Alt}{Del} 查看 1,449 回复 10
楼 主 求助:VBS调用键盘{Ctrl}{Alt}{Del} 发表于 2009-08-11 23:05 ·  中国 河南 郑州 联通
初级用户
★★
积分 136
发帖 59
注册 2006-06-02 16:05
20年会员
UID 56438
状态 离线
我想用VBS做一个快速重启的脚本,利用任务管理器中{Ctrl}+U实现,脚本如下:


Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys ("^%{DEL}") '同时按下{Ctrl}{Alt}{Del}
WScript.Sleep 500 '等待启动任务管理器
WshShell.SendKeys ("%u") '同时按下{Alt}+U
WshShell.SendKeys ("^r") '同时按下{Ctrl}+R


数次尝试均不成功,请帮忙修改下
2 发表于 2009-08-11 23:13 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
为什么不直接run taskmgr……
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
3 发表于 2009-08-11 23:24 ·  中国 河南 郑州 联通
初级用户
★★
积分 136
发帖 59
注册 2006-06-02 16:05
20年会员
UID 56438
状态 离线
run可以运行,但是{Alt}+U仍然调用不了
4 发表于 2009-08-12 00:12 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
我这里测试可以。。。
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
5 发表于 2009-08-12 00:14 ·  中国 北京 海淀区 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
{Alt}+U是什么操作?{Alt}+U

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
6 发表于 2009-08-12 01:02 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
访问 菜单
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
7 发表于 2009-08-12 23:25 ·  中国 天津 联通
高级用户
★★★
据说是李先生
积分 609
发帖 400
注册 2008-04-23 15:55
18年会员
UID 116706
性别 男
状态 离线
可能是你机器性能的问题,你可以试试把等待时间延长,比如加个 0 改成 5000, 再在 Alt+U 之后再等 500 ms.

要实现重启或者关机可以试试这个:


Set WMI = GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}!\\.\root\cimv2")
Set colOS = WMI.ExecQuery("Select * from Win32_OperatingSystem")
For Each OS in colOS
OS.Reboot() ' 关机为 OS.Win32Shutdown(1)
Next
8 发表于 2009-08-14 06:57 ·  中国 河南 郑州 联通
初级用户
★★
积分 136
发帖 59
注册 2006-06-02 16:05
20年会员
UID 56438
状态 离线
WshShell.SendKeys ("^%{DEL}") '同时按下{Ctrl}{Alt}{Del}

原来windows不允许vbs同时调用这三个键


Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys ("^+{ESC}") '同时按下{Ctrl}{Shift}{ESC}
WScript.Sleep 500 '等待启动任务管理器
WshShell.SendKeys ("%u") '同时按下{Alt}+U
WScript.Sleep 200 '延时
WshShell.SendKeys ("^r") '同时按下{Ctrl}+R


这样可以执行,但是执行重启的时候不是预期的不保存任何进程快速重启,仍然是按照正常的重启步骤:注销-保存-关机-重启……

不知道何故,高手给下解释

[ Last edited by vlq5299 on 2009-8-14 at 07:03 ]
9 发表于 2009-08-16 22:59 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
那个按住CTRL键不放再按R

不是CTRL+R

这个VBS模仿不了。

直接调用
shutdown.exe -r -f -t 0
可以吗?

套用上面的WMI

Set WMI = GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}!\\.\root\cimv2")
Set colOS = WMI.ExecQuery("Select * from Win32_OperatingSystem")
For Each OS In colOS
OS.Win32Shutdown(6)
Next
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
10 发表于 2009-08-28 04:55 ·  中国 河南 郑州 联通
初级用户
★★
积分 136
发帖 59
注册 2006-06-02 16:05
20年会员
UID 56438
状态 离线
Originally posted by slore at 2009-8-16 22:59:
那个按住CTRL键不放再按R

不是CTRL+R

这个VBS模仿不了。


Ctrl+Esc vbs就可以模仿的
11 发表于 2009-08-28 11:32 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
汗~

你一起按看它出来不。。。

VBS发送的是一起的。。。不是按住的。。。

那个快捷键可以2个都行罢了
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
论坛跳转: