在vb6中发送密钥

时间:2008-11-26 20:40:55

标签: vb6 sendkeys

在vb6中延迟一段时间后,只是试着按下回车键,我找到的所有例子似乎都没有用,有什么帮助吗?

试图模拟击键。焦点并不重要。

6 个答案:

答案 0 :(得分:2)

您可能需要提供更多详细信息。但是,如果您尝试将输入密钥发送到VB6创作的应用程序并且它没有提取它通常是您没有将窗体的KeyPreview属性设置为true的事实。没有当前焦点的控制权就会吸收您发送的按键。

如果您创作了接收回车键的应用程序。我强烈建议您重构应用程序,以便输入触发的任何代码都可以通过代码完成。这通常通过将代码移动到两个应用程序都可访问的区域来完成。这是因为Sendkeys众所周知是非确定性的,可能会引起很多陌生感。

您可以在Win32 API信息中使用keybd_event here 我发现它比SendKeys更可靠。

答案 1 :(得分:0)

你想做什么?你怎么知道它不起作用?

如果您尝试触发事件处理程序,可以在代码中调用它而不是发送按键。

答案 2 :(得分:0)

SendKeys应该永远是最后的选择。

问题确实是焦点。您必须在每次发送之前设置焦点。

几乎所有东西都可以通过Scripting完成,那么你还想做什么?

答案 3 :(得分:0)

我制作了一个vb6测试应用。 1个表格,1个默认按钮,1个计时器:

Private Sub Command1_Click()
  Debug.Print CStr(Now) + " Command1"
End Sub
Private Sub Timer1_Timer()
    Debug.Print CStr(Now) + " Sendkeys"
    SendKeys "{Enter}"
End Sub

发送给自己似乎有效。 11/30/2008 6:11:38 PM Sendkeys 11/30/2008 6:11:38 PM Command1 11/30/2008 6:11:43 PM Sendkeys 11/30/2008 6:11:43 PM Command1 11/30/2008 6:11:48 PM Sendkeys 11/30/2008 6:11:48 PM Command1

您想发送给其他流程吗?

答案 4 :(得分:0)

您可以尝试我的PushKeys程序available here。它与SendKeys语法兼容,但使用keybd_event API并内置了睡眠功能。

答案 5 :(得分:0)

Vista上的SendKeys存在一些问题。有关详细信息和解决方案,请参阅Karl Peterson的this article