按下shift,然后自动向上?(避免长按)

Posted

技术标签:

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

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

然后系统瞬间自动释放,

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

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

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


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

【问题讨论】:

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

以上是关于按下shift,然后自动向上?(避免长按)的主要内容,如果未能解决你的问题,请参考以下文章

vbs长按某键

iOS结合长按和滑动手势

【Android开发】如何 使得 android长按按钮=多次按下按钮

如何用Arduino检测长按按键的按下和弹起,包括去抖动

如何检测“长按”

检测触摸按压与长按与移动?