【问题标题】:shift pressed, and automatically up?(to avoid long press and hold)按下shift,然后自动向上?(避免长按)
【发布时间】:2014-05-11 15:56:05
【问题描述】:

一些帮助...如何在按下 shift 时使其成为可能,

然后系统瞬间自动释放,

因此即使它仍然被用户在键盘上按下,

但是 vb.net 系统已经释放了 shift 键?

为了避免长按或按住键...


我已经很想不通了,因此在进行了一些认真的研究后决定在这里发布一个问题,如果您知道一些技巧可以使这成为可能,请回复...

【问题讨论】:

  • 您这样做是为了解决什么问题?什么情况?
  • 你想模仿StickyKeys吗?
  • 我能想到的最简单的解决方案...stackoverflow.com/questions/23444021/…
  • 粘键可能吗?听起来对我所追求的很熟悉,但是如何在 vb 上做到这一点......

标签: vb.net release shift


【解决方案1】:

您可以处理 KeyDown 事件并检查是否按下了Shift

e.KeyCode = Keys.Shift

您可以使用 user32.dll 库并发送密钥版本。 &H10Shift 密钥代码。 Here 是所有密钥代码的列表(将 0x 替换为 &H)。 &H2 表示释放。如果您想,请输入&H0

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)

keybd_event(&H10, 0, &H2, 0)

您可能想要处理整个表单的 KeyDown 事件。

Form.KeyPreview = True

这是一个例子。

Public Class Form1
    Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)

    Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        Me.KeyPreview = True
    End Sub

    Private Sub Form1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        If e.KeyCode = Keys.Shift Then
            Form1.keybd_event(&H10, 0, &H2, 0)
        End If
    End Sub
End Class

【讨论】:

  • 感谢您的回复!我需要为此导入一些东西吗?它显示了一些不正确的下划线,我对此尝试了“End sub”,但事情仍然不正确......
  • @Kaozty 放课后Declare。将 KeyDown 事件 放在活动表单的 KeyDown 事件上。
  • 感谢您的快速响应...这里还有一个小问题,我根本没明白...抱歉这么菜鸟...fbcdn-sphotos-c-a.akamaihd.net/hphotos-ak-prn1/t1.0-9/…
  • @Kaozty 将Home_KeyDown(&H10, 0, &H2, 0) 替换为keybd_event(&H10, 0, &H2, 0)
  • 这就是发生的事情...所以我尝试在之前的评论中更改 keybd_event...fbcdn-sphotos-e-a.akamaihd.net/hphotos-ak-ash3/t1.0-9/…
猜你喜欢
  • 2019-08-02
  • 1970-01-01
  • 2014-01-22
  • 2012-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-12
  • 1970-01-01
相关资源
最近更新 更多