怎样屏蔽win2000系统里的热键啊?

coolroy2000 2003-05-19 05:53:51
怎样屏蔽win2000系统里的热键啊?譬如windows键,求api源码。请各位高手细解!
...全文
40 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
coolroy2000 2003-05-20
  • 打赏
  • 举报
回复
理解!看来我看的帮助说明是有误的。差点误入歧途.....
叶帆 2003-05-20
  • 打赏
  • 举报
回复
WH_KEYBOARD_LL--指调用下一个(WH_KEYBOARD_LL-扩展键盘钩子)钩子。同类型的。都是针对WH_KEYBOARD_LL
coolroy2000 2003-05-20
  • 打赏
  • 举报
回复
CallNextHookEx(WH_KEYBOARD_LL, nCode, wParam, lParam)应该是CallNextHookEx(lngHook, nCode, wParam, lParam)吧,第一个参数不是应该是当前钩子的句柄么,而不是钩子类型WH_KEYBOARD_LL吧?
Nxfhcsj 2003-05-19
  • 打赏
  • 举报
回复
UP
junwhj 2003-05-19
  • 打赏
  • 举报
回复
屏蔽Win键(稍作修改可以屏蔽除Ctrl+Alt+Del外的任何按键或按键组合),
本程序在Windows2000 + VB6.0环境下通过

'***************************
'把以下程序粘贴到模块中
'***************************
Option Explicit

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

Private 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

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

Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(Destination As Any, _
Source As Any, _
ByVal Length As Long)

Private Type PKBDLLHOOKSTRUCT
vkCode As Long
scanCode As Long
flags As Long
time As Long
dwExtraInfo As Long
End Type

Private Const WM_KEYDOWN = &H100
Private Const WM_SYSKEYDOWN = &H104
Private Const WM_KEYUP = &H101
Private Const WM_SYSKEYUP = &H105

Private Const VK_LWIN = &H5B
Private Const VK_RWIN = &H5C

Private Const HC_ACTION = 0
Private Const WH_KEYBOARD_LL = 13

Private lngHook As Long

'使用底层KeyboardHook拦截按键消息
Public Function LowLevelKeyboardProc(ByVal nCode As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Dim blnHook As Boolean
Dim p As PKBDLLHOOKSTRUCT

If nCode = HC_ACTION Then
Select Case wParam
Case WM_KEYDOWN, WM_SYSKEYDOWN, WM_KEYUP, WM_SYSKEYUP
Call CopyMemory(p, ByVal lParam, Len(p))
If p.vkCode = VK_LWIN Or p.vkCode = VK_RWIN Then '按下了左/右Win键
blnHook = True
End If
Case Else
'do nothing
End Select
End If

If blnHook Then
LowLevelKeyboardProc = 1
Else
Call CallNextHookEx(WH_KEYBOARD_LL, nCode, wParam, lParam)
End If
End Function

Public Sub HooK()
lngHook = SetWindowsHookEx(WH_KEYBOARD_LL, _
AddressOf LowLevelKeyboardProc, _
App.hInstance, _
0)
End Sub

Public Sub UnHooK()
Call UnhookWindowsHookEx(lngHook)
End Sub



'***************************
'把以下程序粘贴到窗体中
'***************************
Private Sub Form_Load()
Hook
End Sub

Private Sub Form_Unload(Cancel As Integer)
UnHook
End Sub

1,486

社区成员

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

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