SendKeys并不总是有效

rex*_*rex 7 excel vba excel-vba sendkeys

我正在使用.SendKeys()Excel VBA将键击发送到我使用shell .AppActive方法激活的外部窗口.问题是,SendKeys根本不是表现一致,有时发送密钥,有时不发送密钥.我认为这与根据MSDN文档将密钥存储在缓冲区中有关.

怎么绕过这个?

rex*_*rex 3

我发现解决这个问题的方法就是让应用程序暂停一小会儿。这似乎允许清除缓冲区(如果我错了,请纠正我)。

为了让Excel VBA休眠,我Sleep通过在模块顶部编写来暴露Windows API函数:

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Run Code Online (Sandbox Code Playgroud)

然后在每个SendKeys命令之后,我只使用:

Sleep 1
Run Code Online (Sandbox Code Playgroud)

从字面上看,1 毫秒就产生了巨大的差异,并且密钥始终能够正确发送。