2014-05-11 109 views
0

一些幫助的......如何使人們有可能被按下換擋時,SHIFT鍵,並自動嗎?(避免長時間按住)

然後系統自動發佈的一剎那,

因此即使它仍然在用戶的鍵盤按下,

但是vb.net系統已經發布了shift鍵嗎?

避免長按或按住鍵...


我做出來的想法已經,因此決定在這裏張貼問題,做一些嚴重的研究後,請如果你知道迴應一些技巧使之成爲可能...

+2

你試圖通過這樣做來解決什麼問題?現在是什麼狀況? –

+0

你想模仿[StickyKeys](http://en.wikipedia.org/wiki/StickyKeys)嗎? –

+0

我能想到解決這個問題的最簡單的解決方案... http://stackoverflow.com/questions/23444021/keys-overlapping-on-vb-net-a-macro-project-on-external-program – Kaozty

回答

1

您可以處理KeyDown事件並檢查是否按下了Shift

e.KeyCode = Keys.Shift 

你可以用user32.dll中的lib工作和發送鍵釋​​放。 &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 
+0

感謝您的迴應! 我需要爲此導入一些東西嗎? 它顯示了一些不正確的下劃線 我試過「End sub」對此,但事情仍然不正確... – Kaozty

+0

@Kaozty把_Declare_課後開始。將_KeyDown event_放在活動窗體的KeyDown事件上。 –

+0

感謝您的快速響應... 這裏是另一個小問題,我根本得不到... 對不起,這麼noob ... https://fbcdn-sphotos-ca.akamaihd.net /hphotos-ak-prn1/t1.0-9/10292516_854816244534001_4054059025862689093_n.jpg – Kaozty