我可以創建和使用RegisterHotkey和UnregisterHotkey()使用全系統熱鍵,如下:更多定製系統熱鍵
Enum HotkeyModifier As UShort
None = &H0
Alt = &H1 'Alt key
Control = &H2
Shift = &H4
Windows = &H8
WM_HOTKEY = &H312
Norepeat = &H4000
End Enum
'
<Runtime.InteropServices.DllImport("User32.dll")> _
Public Shared Function RegisterHotKey(ByVal hwnd As IntPtr, ByVal id As Integer, _
ByVal fsModifiers As Integer, ByVal vk As Integer) As Integer
End Function
<Runtime.InteropServices.DllImport("User32.dll")> _
Public Shared Function UnregisterHotKey(ByVal hwnd As IntPtr, ByVal id As Integer) As Integer
End Function
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
If m.Msg = HotkeyModifier.WM_HOTKEY Then
Dim id As IntPtr = m.WParam
Select Case (id.ToInt32)
Case 100
MessageBox.Show("You pressed ALT+D key combination")
Case 300
MessageBox.Show("You pressed CTRL+SHIFT+F12 key combination")
Case 399
SwitchTopMost()
End Select
End If
MyBase.WndProc(m)
End Sub
Friend Sub SwitchTopMost()
Me.TopMost = Not Me.TopMost
If Me.TopMost Then
Me.Show()
Me.ClientSize = New Size(Me.RestoreBounds.X, Me.RestoreBounds.Y)
Me.ClientSize = RestoreSize
Else : Me.Hide()
End If
End Sub
Private Sub Unregister(ByVal sender As System.Object, ByVal e As _
System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
UnregisterHotKey(Me.Handle, 100)
UnregisterHotKey(Me.Handle, 300)
UnregisterHotKey(Me.Handle, 399)
End Sub
Private Sub Register(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
RegisterHotKey(Me.Handle, 100, HotkeyModifier.Alt, Keys.D)
RegisterHotKey(Me.Handle, 300, HotkeyModifier.Control + HotkeyModifier.Shift, Keys.F12)
RegisterHotKey(Me.Handle, 399, HotkeyModifier.Alt, Keys.None)
End Sub
但有什麼,可以創造更多的可定製的全系統熱鍵樣空間 + 小號,數字鎖定 + 控制 + P或標籤 + 大寫鎖定 + F5?我用完了熱鍵。
有關這些熱鍵更多信息:Another post about hotkeys
也希望像this post沒有其他程序。
編輯:我寧願像上面的鏈接最喜歡的方式。
號您可以用修改器(Ctrl鍵或Alt鍵)結合鍵,但不只是多個鍵,如空間+ S(這只是兩個字符)。您可以使用之類的東西Ctrl + P鍵,然後在處理,你可以檢查的NumLock的狀態,而不是作爲一個單一的組合(同樣適用於CapsLock鍵)的代碼。 –
@KenWhite檢查是否會阻止Ctrl + P組合? – Happypig375
沒有,檢查將完成* *後的按Ctrl + P發生,因此它無法阻止它。您會檢測到Ctrl + P,然後在處理程序中查看NumLock是否打開並作出相應的反應。想想這個邏輯:*如果組合鍵是Ctr + P那麼(如果NumLock打開,那麼做這個否則做)*。 –