如何在XP下屏蔽热键??高手帮帮忙。。谢谢。。。

greensky3 2004-03-31 10:23:17
如何在XP下屏蔽热键??高手帮帮忙。。谢谢。。。
...全文
41 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodname008 2004-04-04
  • 打赏
  • 举报
回复
现在没有VB环境,不太好调试,实在抱歉。
这个参考一下:

http://www.sijiqing.com/vbgood/code/index.asp?action=read&id=621
http://www.sijiqing.com/vbgood/code/index.asp?action=read&id=1126
greensky3 2004-04-02
  • 打赏
  • 举报
回复
高手们能不能说的清楚一点。。??小弟有点不清楚。。还望帮忙。。。
greensky3 2004-04-01
  • 打赏
  • 举报
回复
试了试好像不起作用呀???怎么回事??
goodname008 2004-04-01
  • 打赏
  • 举报
回复
Hook的话只能Hook本进程内的。
要是屏蔽其它程序的热键,可以将该热键注册成系统热键,使之冲突,从而达到屏蔽的目的。
有点以毒攻毒的想法。
Huaraco 2004-03-31
  • 打赏
  • 举报
回复
模块里
ublic Const WH_KEYBOARD_LL = 13& 'enables monitoring of keyboard
'input events about to be posted
'in a thread input queue

Public Const HC_ACTION = 0& 'wParam and lParam parameters
'contain information about a
'keyboard message

Public Const LLKHF_EXTENDED = &H1& 'test the extended-key flag
Public Const LLKHF_INJECTED = &H10& 'test the event-injected flag
Public Const LLKHF_ALTDOWN = &H20& 'test the context code
Public Const LLKHF_UP = &H80& 'test the transition-state flag

Public Const VK_TAB = &H9 'virtual key constants
Public Const VK_CONTROL = &H11
Public Const VK_ESCAPE = &H1B

Public Type KBDLLHOOKSTRUCT
vkCode As Long 'a virtual-key code in the range 1 to 254
scanCode As Long 'hardware scan code for the key
flags As Long 'specifies the extended-key flag,
'event-injected flag, context code,
'and transition-state flag
time As Long 'time stamp for this message
dwExtraInfo As Long 'extra info associated with the message
End Type

Public Declare Function SetWindowsHookEx Lib "user32" _
Alias "SetWindowsHookExA" _
(ByVal idHook As Long, _
ByVal lpfn As Long, _
ByVal hmod As Long, _
ByVal dwThreadId As Long) As Long

Public Declare Function UnhookWindowsHookEx Lib "user32" _
(ByVal hHook As Long) As Long

Public Declare Function CallNextHookEx Lib "user32" _
(ByVal hHook As Long, _
ByVal nCode As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long

Public Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(pDest As Any, _
pSource As Any, _
ByVal cb As Long)

Public Declare Function GetAsyncKeyState Lib "user32" _
(ByVal vKey As Long) As Integer

Public m_hDllKbdHook As Long 'public variable holding
'the handle to the hook procedure




Public Function LowLevelKeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long


Static kbdllhs As KBDLLHOOKSTRUCT
If nCode = HC_ACTION Then
Call CopyMemory(kbdllhs, ByVal lParam, Len(kbdllhs))
'Ctrl+Esc --------------
If (kbdllhs.vkCode = VK_ESCAPE) And CBool(GetAsyncKeyState(VK_CONTROL) And &H8000) Then
LowLevelKeyboardProc = 1
Exit Function
End If 'kbdllhs.vkCode = VK_ESCAPE
'Alt+Tab --------------

If (kbdllhs.vkCode = VK_TAB) And CBool(kbdllhs.flags And LLKHF_ALTDOWN) Then
'Debug.Print "Alt+Tab blocked"
LowLevelKeyboardProc = 1
Exit Function
End If 'kbdllhs.vkCode = VK_TAB

'Alt+Esc --------------
If (kbdllhs.vkCode = VK_ESCAPE) And CBool(kbdllhs.flags And LLKHF_ALTDOWN) Then
LowLevelKeyboardProc = 1
Exit Function
End If 'kbdllhs.vkCode = VK_ESCAPE

'If (kbdllhs.vkCode = 91) And CBool(GetKeyState(91) < 0) Then
' LowLevelKeyboardProc = 1
' Exit Function
'End If

End If 'nCode = HC_ACTION

LowLevelKeyboardProc = CallNextHookEx(m_hDllKbdHook, nCode, wParam, lParam)

End Function

窗体里
private sub form_load(...)
m_hDllKbdHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, App.hInstance, 0&)
end sub

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧