为什么按方向键显示4个

xzp1030 2004-05-14 08:29:17
做一个后台运行的程序,把在键盘上按下的所有键都记录下来。按一些字母键还可以只显示一个,可按方向键时,显示4个(我是把键盘上按下的所有键记录在richtext中内)uparrowuparrowuparrowuparrow,可我只按了一下键盘啊。
部分代码如下:

Public Function EnableKBDHook()
If hnexthookproc <> 0 Then
Exit Function
End If
hnexthookproc = SetWindowsHookEx(WH_KEYBOARD, AddressOf MyKBHFunc, App.hInstance, 0)
If hnexthookproc <> 0 Then
EnableKBDHook = hnexthookproc
End If
End Function

Public Function MyKBHFunc(ByVal iCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
MyKBHFunc = 0 '信息要处理
If iCode < 0 Then
MyKBHFunc = CallNextHookEx(hnexthookproc, iCode, wParam, lParam)
Exit Function
End If
If Not ConvChar(wParam) Then
Call UnHookKBD
frmwin.Show
Exit Function
End If
Call CallNextHookEx(hnexthookproc, iCode, wParam, lParam)
End Function

Private Function ConvChar(ByVal vData As Long) As Boolean
ConvChar = True
Dim KeyResult As Integer
Select Case vData
Case 107 '小键盘+
frmwin.RText.Text = frmwin.RText.Text + "+"
Case 109 '小键盘—
frmwin.RText.Text = frmwin.RText.Text & "-"
Case 106 '小键盘*
frmwin.RText.Text = frmwin.RText.Text & "*"
Case 111 '小键盘/
frmwin.RText.Text = frmwin.RText.Text & "/"
Case 37
frmwin.RText.Text = frmwin.RText.Text & "leftarrow"
Case 38
frmwin.RText.Text = frmwin.RText.Text & "uparrow"
Case 39
frmwin.RText.Text = frmwin.RText.Text & "rightarrow"
Case 40
frmwin.RText.Text = frmwin.RText.Text & "downarrow"
end select
end function
高手帮帮忙,解决后马上结贴。
...全文
64 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinweihong 2004-05-14
  • 打赏
  • 举报
回复
let me sese
bafony@163.com
supergreenbean 2004-05-14
  • 打赏
  • 举报
回复
偶也想看看诶~~ ^_^
yuan505@163.net
xzp1030 2004-05-14
  • 打赏
  • 举报
回复
to:zhujiechang(小朱) 能留下你的mail吗。我给您发过去,您也帮我检查一下。
xzp1030 2004-05-14
  • 打赏
  • 举报
回复
to:Kivic(享受·生活) , 我已发过去了,就麻烦你了。 :)

我编它编绎成.exe也不行,我运行的就是这些代码,怎么不行啊??
ryuginka 2004-05-14
  • 打赏
  • 举报
回复
up
zhujiechang 2004-05-14
  • 打赏
  • 举报
回复
编译成exe后,直接运行看一下。
Kivic 2004-05-14
  • 打赏
  • 举报
回复
kivic@sohu.com,发过来我看看
xzp1030 2004-05-14
  • 打赏
  • 举报
回复
我调试了一下,当程序一步一步的执行时richtext上显示的是一个。当我运行起来时就不行了,又显示4个了,这是什么原因??
xzp1030 2004-05-14
  • 打赏
  • 举报
回复
一些字母键可以,按一下只显示一个。可方向键,退格键按一下它就是richtext中写入4个。
开始监视键盘上的动作时就调用EnableKBDHook,调用的方式就是按照上面的那些代码,你是怎么调用的??
zhujiechang 2004-05-14
  • 打赏
  • 举报
回复
我看调用程序也没有不正确,这是通用的调用过程。
hnexthookproc = SetWindowsHookEx(WH_KEYBOARD, AddressOf MyKBHFunc, App.hInstance, 0)
改为
hnexthookproc = SetWindowsHookEx(WH_KEYBOARD, AddressOf MyKBHFunc, App.hInstance, App.ThreadID)
看一下。
wea1978 2004-05-14
  • 打赏
  • 举报
回复
我试着调用了一下,没什么问题。
wea1978 2004-05-14
  • 打赏
  • 举报
回复
看看你调用的方式。

7,763

社区成员

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

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