【问题标题】:How to click the enter button on the keyboard?如何点击键盘上的回车键?
【发布时间】:2019-12-09 15:04:03
【问题描述】:

除了 SendKeys.Send("{ENTER}" 之外,还有其他方法可以单击键盘上的 ENTER 键吗? 我有一个我在 VB.net 中创建的应用程序,它将创建一行文本,然后使用 AppActivate 将其发送到另一个应用程序,当接收应用程序是用 C++ 创建时它工作得很好。但是当在 Java 中创建接收应用程序时,SendKeys.Send("{ENTER}" 将不起作用。所有文本都将传输到 Java 应用程序,但不会单击 ENTER 按钮。 是否有其他方法可以在键盘上单击 ENTER 或模拟它?

谢谢

【问题讨论】:

  • 您在发送 {ENTER} 之前是否尝试过短暂的延迟?只是为了测试,您可以在发送文本之后但在发送 {ENTER} 之前添加Threading.Thread.Sleep(500)
  • 我已经设置好了,我把它增加到 5000 只是为了看看,但它不会点击。我也试过用“~”代替“{ENTER}”,但没有成功。

标签: vb.net


【解决方案1】:

你试过 P/Invoke 吗?

例如:

<DllImport("user32.dll", SetLastError:=True, EntryPoint:="PostMessageA")>
Public Shared Function PostMessage(ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Boolean

Public Const WM_KEYDOWN As Integer = &H0100 'Key Down Event
Public Const VK_RETURN As Integer = &H0D 'Enter Key

Public Shared Sub SendKeyDownEvent(ByVal hWnd As IntPtr, ByVal key As Integer)
    PostMessage(hWnd, WM_KEYDOWN, key, 0)
    System.Threading.Thread.Sleep(500)
End Sub

你可以这样称呼它:

SendKeyDownEvent(handleToApplication, VK_RETURN)

有大量资源可用于获取其他应用程序的句柄:

【讨论】:

  • 记得之后也发送WM_KEYUP
  • @Dekryptid 感谢您将我带往新的方向。我正在尝试使其正常工作,但遇到了一些错误。 DllImport 说声明预期和更多错误。我还在学习,所以这可能是我缺少的东西。我会继续努力的。
  • @Andrew Morton 我在 2019 年使用
  • @Malachilee 以防万一您还没有这样做,最好将Option Strict On 设置为默认值。这样做的一个副作用是它让 VS 在编码方面为您提供更多帮助,因此它可能会建议解决您遇到的错误的方法。
猜你喜欢
  • 2021-11-22
  • 2017-11-11
  • 1970-01-01
  • 2015-05-25
  • 2018-03-07
  • 1970-01-01
  • 2011-06-16
  • 2018-10-16
  • 2013-08-08
相关资源
最近更新 更多