- 我能够成功地在 Windows 窗体之外显示 ContextMenuScript (CMS)。
- 我可以使用鼠标指针选择/点击项目。
- 然而,在窗体没有焦点的情况下,它不支持键盘控制(上下箭头、ESC)。
- 如果窗体有焦点并且 CMS 显示出来,则键盘可以控制它,但是在没有焦点时不能控制 :(。
- 我需要代码方面的帮助,以实现在没有窗体焦点的情况下进行控制。
谢谢
Public Const CTRL_Key As Integer = &H2
Public Const Hot_Key As Integer = &H312
Public Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Integer
Public Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As IntPtr, ByVal id As Integer) As Integer
Private Sub Hot_Key_Register() Handles MyBase.Load
RegisterHotKey(Me.Handle, 100, CTRL_Key, Keys.NumPad1)
RegisterHotKey(Me.Handle, 200, CTRL_Key, Keys.NumPad2)
RegisterHotKey(Me.Handle, 300, CTRL_Key, Keys.NumPad3)
End Sub
Protected Overrides Sub WndProc(ByRef Window_Message As Message)
If Window_Message.Msg = Hot_Key Then
Dim id As IntPtr = Window_Message.WParam
Select Case (id.ToString)
Case "100"
CMS_01.Show(Cursor.Position.X, Cursor.Position.Y)
Case "200"
CMS_02.Show(Cursor.Position.X, Cursor.Position.Y)
Case "300"
CMS_03.Show(Cursor.Position.X, Cursor.Position.Y)
End Select
End If
MyBase.WndProc(Window_Message)
End Sub
NativeWindow
的解决方案,则还要确保正确地处理窗口的释放(在关闭或销毁时)。 - Reza Aghaei