Board logo

标题: 求助:VBS调用键盘{Ctrl}{Alt}{Del} [打印本页]

作者: vlq5299     时间: 2009-8-11 23:05    标题: 求助:VBS调用键盘{Ctrl}{Alt}{Del}

我想用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
数次尝试均不成功,请帮忙修改下
作者: slore     时间: 2009-8-11 23:13
为什么不直接run taskmgr……
作者: vlq5299     时间: 2009-8-11 23:24
run可以运行,但是{Alt}+U仍然调用不了
作者: slore     时间: 2009-8-12 00:12
我这里测试可以。。。
作者: yishanju     时间: 2009-8-12 00:14
{Alt}+U是什么操作?{Alt}+U
作者: slore     时间: 2009-8-12 01:02
访问 菜单
作者: qinchun36     时间: 2009-8-12 23:25
可能是你机器性能的问题,你可以试试把等待时间延长,比如加个 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

作者: vlq5299     时间: 2009-8-14 06:57
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 ]
作者: slore     时间: 2009-8-16 22:59
那个按住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
作者: vlq5299     时间: 2009-8-28 04:55


  Quote:
Originally posted by slore at 2009-8-16 22:59:
那个按住CTRL键不放再按R

不是CTRL+R

这个VBS模仿不了。

Ctrl+Esc vbs就可以模仿的
作者: slore     时间: 2009-8-28 11:32
汗~

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

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

那个快捷键可以2个都行罢了