我有段代码,使关于全局快捷键的, 但发现如果用CTRL+~隐藏了窗口, 就无法用 ALT+~显示窗口了.....如果把那个隐藏的代码全部注释掉, 有可以了, 奇怪....看不出问题在哪里 , 谁帮忙看看, !!谢谢
'=====窗口里头的过程========
Private Sub Form_Load()
Timer1.Interval = 100
End SubPrivate Sub Timer1_Timer()
'ctrl+~全部隐藏
If Hotkey2(17, 192)Then '这个用了 下面的快捷键就失效....
Msgbox "hide"
Me.visible = False
End If
'alt+~全部显示
If Hotkey2(18, 192) Then
Msgbox "show"
Me.Visible = True
End If
End Sub测试发现如果用2个timer控件倒是可以实现效果,,,,,但究竟为什么会这样,,,,,,不搞懂实在难受呀....肯定有它的道理的.....
'=====窗口里头的过程========
Private Sub Form_Load()
Timer1.Interval = 100
End SubPrivate Sub Timer1_Timer()
'ctrl+~全部隐藏
If Hotkey2(17, 192)Then '这个用了 下面的快捷键就失效....
Msgbox "hide"
Me.visible = False
End If
'alt+~全部显示
If Hotkey2(18, 192) Then
Msgbox "show"
Me.Visible = True
End If
End Sub测试发现如果用2个timer控件倒是可以实现效果,,,,,但究竟为什么会这样,,,,,,不搞懂实在难受呀....肯定有它的道理的.....
2.不知道你这个hotkey2是啥函数,具体封闭的是啥。以前我用全局快捷键的时候是自己封闭API的,我记得好像要有个ID的吧,就像打开文件一样,要有个文件号,你是不是没有区分ID,导致覆盖了?
3.全局键盘钩子,想做啥都可以了。
'全局判断按键状态
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
'判断2个键的组合为快捷键
Public Function Hotkey2(lkey As Long, Rkey As Long) As Boolean
lkey = GetAsyncKeyState(lkey)
Rkey = GetAsyncKeyState(Rkey)
If lkey And Rkey = -32767 Then Hotkey2 = True
End Function
就这个了.....不知道是不是不对 ?
lkey = GetAsyncKeyState(lkey)
Rkey = GetAsyncKeyState(Rkey)
Form1.Text1.Text = lkey & "&&" & Rkey
If lkey And Rkey = -32767 Then Hotkey2 = True
'If lkey And Rkey = -32768 Then Hotkey2 = True
End Function你就会发现,如果你按的是ctrl+~,textbox的值是-32767,显示msgbox hide,如果你按的是alt+~textbox的值是-32768,显示msgbox show也就是说按不同的键,GetAsyncKeyState的值不同,而对于alt+~,你的hotkey没有返回true。所以你的hotkey要加上If lkey And Rkey = -32768 Then Hotkey2 = True