VBScript中的SendKeys不适用于taskmgr

时间:2017-05-25 11:57:41

标签: vbscript sendkeys

在Windows 10中,我使用完全相同的vbscript代码一次用于“calc”,一次用于“taskmgr”。为什么SendKeys(这里是alt + space)适用于“calc”而不适用于“taskmgr”?

<package>
  <job id="vbs">
    <script language="VBScript">
      set WshShell = WScript.CreateObject("WScript.Shell")
      WshShell.Run "calc"
      WScript.Sleep 100
      WshShell.SendKeys "% "
    </script>
  </job>
</package>

(按预期工作,打开下拉菜单)

<package>
  <job id="vbs">
    <script language="VBScript">
      set WshShell = WScript.CreateObject("WScript.Shell")
      WshShell.Run "taskmgr"
      WScript.Sleep 100
      WshShell.SendKeys "% "
    </script>
  </job>
</package>

(不工作,没有下拉菜单......)

2 个答案:

答案 0 :(得分:0)

好的。感谢大家的评论。 因此,要使sendKeys为taskmgr工作,脚本必须以管理员身份运行。这可以通过以管理员身份打开命令提示符然后

来完成
cscript myScript.wsf

答案 1 :(得分:0)

我认为您错过了第二次击键。 对我来说,这有效:

DIM shell

SET shell = WScript.CreateObject("WScript.Shell")

shell.Run "taskmgr.exe", 1, False
WScript.Sleep(100)
shell.SendKeys "% "
shell.SendKeys "n" '<- this is what you might have missed

但是它仅在由同一用户运行时才起作用(请注意,您不能同时运行两个taskmgr实例。当有一个“旧”实例时,该实例将被带到前台,而没有新实例即使“旧”实例在其他用户下运行,也会被创建。在这种情况下,您可能需要使用taskkill /im taskmgr.exe

关闭/杀死“旧”实例