| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 892 人关注过本帖
标题:求助HOOK键盘ISSUE
只看楼主 加入收藏
chenwind17
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-9-25
收藏
 问题点数:0 回复次数:0 
求助HOOK键盘ISSUE
下面的程序纪录按键时为什么把同样的按键纪录两次?
例如:我按a键,Key.txt中纪录的内容为

65,"1E0001",#2006-11-24#,#1899-12-30 09:42:18#
65,"1E0001",#2006-11-24#,#1899-12-30 09:42:18#

怎样改动才能只记录一次??
谢谢大家


Public Function MyKBHook(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If nCode >= 0 Then
If (lParam And &HC0000000) = 0 Then '只接收KEYDOWN发送的消息
Open "C:\Key.txt" For Append As #1 '将键盘的操作记录在文件之中
'记录所操作的键、操作时间、日期操作时的按键状态,用16进制记录
Write #1, wParam, Hex(lParam), Date, Time
Close #1
End If
'i = i + 1
'屏蔽ALT+F4组合键
If wParam = 115 And (lParam And &H20000000) <> 0 Then
MyKBHook = 1 '钩子吃掉这个消息
Else
MyKBHook = 0 '表示要处理这个消息
End If
End If
Call CallNextHookEx(hHook, nCode, wParam, lParam) '将消息传给下一个钩子
End Function

Ps:
lParam与WM_KEYDOWN同,占四个字节,其包括的内容较多,其二进制结构如下:

0 1 …… 15 16 ……… 23 24 25 …… 28 29 30 31

  0-15位(Key repeat count),键码重复次数。16-23位(Scan code),按键的扫描码。24位(Extended_Key flag),扩展键(功能键、数字小键盘上的键)标志,为1则是扩展键,否则为0。25-28位被保留。29位(Context Code),状态描述码,ALT键被按下则为1,否则为0。30位(Previouskey_stateflag)指定先前的键状态,如果消息被发出之前键处于按下状态,则为1;键处于释放状态则为0。31位(Transiton_stateflag)状态转换标志,如果键是被按下值为1,如果键被放开值为0。
搜索更多相关主题的帖子: ISSUE HOOK 键盘 Long 
2006-11-24 09:54
快速回复:求助HOOK键盘ISSUE
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.010712 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved