App忽略了VBS SendKeys

时间:2013-01-20 13:52:00

标签: winapi vbscript sendkeys wsh

尝试通过向应用程序发送击键来自动生成报告。 我可以将应用程序向前移动,但它会忽略所有SendKeys命令。 问题是什么?我接下来应该尝试什么? 这是我的代码:

    Const App_Title = "AccountRight Plus"  ' Window title
    Dim Wsh, win_title
    ' Create the WshShell object, which Run and AppActivate require.
    Set Wsh = WScript.CreateObject("WScript.Shell")
    Wsh.AppActivate App_Title
    WScript.Sleep 800
    Wsh.SendKeys "^i"
    WScript.Sleep 800
    Wsh.SendKeys "{TAB}"
    WScript.Sleep 800
    Wsh.SendKeys "{TAB}"

1 个答案:

答案 0 :(得分:0)

可能你对大写锁定键和笔画“^ i”感到困惑。无论如何只是假设。如果情况并非如此,那么至少不要评判我。

所以我制作了一个代码,我可以在这里测试,解释一下我的意思。

Set Wsh = WScript.CreateObject("WScript.Shell")
Wsh.Run "notepad"
Wsh.AppActivate "Untitled - Notepad"
WScript.Sleep 100
Wsh.SendKeys "111..."
WScript.Sleep 100
Wsh.SendKeys "^a" ' (ctrl+a) Select All command

如果大概锁定了大写锁定键,则上面的代码将选择所有文本,但如果大写锁定打开,则行程“^ a”(或甚至“^(a)”)将失败。相反,如果你使用“^ A”将失败并且大写锁定。

没有办法在VBScript中获得大写锁定(或其他键)的状态,但是我找到2个解决方法,如果你愿意,可以称它们作弊:)

  1. 有点奇怪的方法是复制你的SendKeys命令。

    Wsh.SendKeys“^ a”:Wsh.SendKeys“^ a”

  2. 预先将笔划发送到大写锁定。

    Wsh.SendKeys“{CAPSLOCK}”:Wsh.SendKeys“^ a”