【问题标题】:VB.net SendKeys to send keys combined not using "ALT" or "CTRL", like "{INS}(S)"VB.net SendKeys 发送不使用“ALT”或“CTRL”组合的键,如“{INS}(S)”
【发布时间】:2015-10-08 16:42:00
【问题描述】:

我需要同时发送击键组合 INSERT + S 键,但似乎 VB 只使用 ALT 键组合,CTRL 和 SHIFT.

有什么办法吗?

我试过了:

{INS}(S)
{INS}S

还有很多其他的,但这不起作用。

非常感谢。

【问题讨论】:

  • Insert 不是 Shift/Alt/Ctrl 等修饰键。在发送 S 时,没有任何方法可以模拟它被 SendKeys 按住。您必须改为 pinvoke SendInput()。
  • 谢谢汉斯,我会试试 SendInput()
  • 你好,我用过 SendInput() 并且它可以工作,但是......它让“ins 键”被按下...... KEYEVENTF_KEYUP 不起作用

标签: vb.net combinations sendkeys


【解决方案1】:

确实如此。看: https://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

你试过“{INS}(S)”吗?

更新

我做了以下测试:

Private Sub TextBox1_Click(sender As Object, e As EventArgs) Handles TextBox1.Click
    SendKeys.Send("{Ins}S")
End Sub

Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown
    MsgBox(e.KeyCode)
End Sub

看,我在 KeyDown 事件中收到了 2 个代码:INS 和“S” 问题在于 KeyDown 事件将提交两次,我的意思是,您无法通过一次读取获得 INS-S 代码。

因此,您必须考虑有一个 FRIEND/PUBLIC 变量来接收这两个代码,并且只有在此之后,才对这些进行批评。

祝你好运

【讨论】:

  • 大卫,我尝试了 "{INS}(S)" 和更多组合但没有成功...我将尝试使用 SendInput()...谢谢!
  • 大卫您好,感谢您的关注。我不能这样做,因为我需要将组合发送到在后台运行的另一个第三方程序,并且我需要发送带有一个读数的密钥...
  • @jakama,SendKeys 将同时发送 {INS} 和“S”键,但它会在用户按下 INS 和 S(两个触发的事件)时触发 - 它' s 合乎逻辑,因为用户必须按 2 个键。我的意思是,如果第三方可以检查这一点,您的程序将 100% 运行,否则,您只需分别检测(和“缓冲”)每个键。无论如何,不​​客气。祝你好运。
猜你喜欢
  • 2013-11-18
  • 1970-01-01
  • 1970-01-01
  • 2012-01-17
  • 2011-06-30
  • 2020-09-14
  • 1970-01-01
  • 2011-03-12
  • 1970-01-01
相关资源
最近更新 更多