1

只是想在 vb6 中延迟一段时间后按下回车键,我发现的所有示例似乎都不起作用,有什么帮助吗?

只是试图模拟击键。重点无所谓。

4

7 回答 7

2

您可能需要提供更多详细信息。但是,如果您尝试向 VB6 编写的应用程序发送回车键并且它没有接收它,通常是因为您没有将表单的 KeyPreview 属性设置为 true。没有当前焦点的控件会吸收您发送的按键。

如果您创作了接收回车键的应用程序。我强烈建议您重构应用程序,以便 enter 触发的任何代码都可以通过代码完成。这通常通过将代码移动到两个应用程序都可以访问的区域来完成。这是因为 Sendkeys 是出了名的不确定性,并且会引起很多奇怪。

您可以从此处的 Win32 API 信息中使用 keybd_event, 我发现它比 SendKeys 更可靠。

于 2008-11-26T20:55:10.783 回答
0

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

于 2008-11-26T20:50:36.987 回答
0

SendKeys 应该始终是最后的手段。

问题真的是重点。您必须在每次发送之前设置焦点。

几乎所有事情都可以通过脚本完成,那么您要做什么?

于 2008-11-26T20:58:57.983 回答
0

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

于 2009-05-21T06:52:43.050 回答
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

你想发送到另一个进程吗?

于 2008-12-01T00:10:32.823 回答
0

你可以试试我的 PushKeys 程序,这里有。它的语法与 SendKeys 兼容,但使用 keybd_event API 并内置了 sleep 功能。

于 2009-05-19T13:43:14.750 回答
0

如果我想延迟脚本中的某些操作,我会执行以下操作:

t = Timer + 5        'Change 5 to a higher number if you need more time to wait
Do While Timer < t
    DoEvents           'This is necessary to prevent freezing 
Loop

SendKeys "{ENTER}"

SendKeys "{ENTER}", True    'This might also work
于 2012-11-07T07:04:29.643 回答