说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

VB如何使键盘、Mouse失效(JournalPlayBack Hook)

HTML文档下载 WORD文档下载 PDF文档下载
VB如何使键盘、Mouse失效(JournalPlayBack Hook)
我们常见一些导览系统或教学系统,会自动移动Mouse与Keyin字,而那个时候,我们
不管Keyin或动Mouse都没有效,直到完成了导览系统的某个动作後才让使用者可以移
动Mouse与做Keyin的动作;想做到这个,要借重JournalPlayBack Hook。

JournalPlayBack Hook,它和JournalRecord Hook合称Journal Hook,它们作用
的范围是整个System,也就是挂上这个Hook後,影响的层面不单是这个Process,而是
所有的Process,而这两Hook又不用写在Dll之中,所以很好用。

首先我们要知道由键盘和Mouse输入等的硬体讯息,会存到一个System Queue而後OS会
到该System Queue看有没有讯息在其中,若有则撷取出来,看目前Active的Window是谁
而将讯息Post给它。而挂上JournalRecord Hook时,当有讯息被撷取出来时,会先执行
我们所设定的Hook Function(在vb中,一定要放在.BAS档之中)。这可以做什麽事呢?
例如们可以Check整个系统是否有按了键盘或有没有移动Mouse(一般来说,KeyUp,KeyDown
, MouseMove等Event只有Form在Active 时才收得到,挂上JournalRecord hook後,执行
Hook的thread便能收到所有这些讯息)。再如,它既然能收到Keyboard、Mouse的讯息,那
便可以将收到的讯息记录起来(记录於Memory或Disk都可以),之後再依方才的顺序重新
将讯息放送出来,可重新执行方才的动作(这不就是巨集的作法吗),或许
它叫JournalRecord便是这个原因。再来便是播放记录讯息的问题了,如果一面播放,一
面有其他讯息插队(如移动Mouse),那就不对了,所以JournalPlayBack这个Hook它会
让Mouse、Keyboard都失效,当OS 要求读System Queue时,便会启动这个Hook,就在此
时,我们可以把方才记录起来的讯息丢出一个出来,OS再要求读System Queue时,再丢
下一个讯息,如此达重播的效果(所以才叫JournalPlayBack),正因它会让键盘、Mouse
失效,拿它来做导览、教学系统的自动Move Mouse或文字显示是最适合的了。

Mouse的自动导引系统制作方式,可参考如何自动移动Mouse

'以下在.Bas中
Declare Sub Sleep Lib "KERNEL32" (ByVal dwMilliseconds As Long)
Const WM_MOUSELAST = &H209
Const WM_MOUSEFIRST = &H200
Public Const WM_KEYLAST = &H108
Public Const WM_KEYFIRST = &H100
Public Const WH_JOURNALRECORD = 0
Public Const WH_JOURNALPLAYBACK = 1

Type EVENTMSG
message As Long
paramL As Long
paramH As Long
time As Long
hwnd As Long
End Type
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
Declare Function UnhookWindowsHookEx Lib "user32" _
(ByVal hHook As Long) As Long
Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _
ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
Public hNxtHook As Long ' handle of Hook Procedure
Public msg As EVENTMSG

Sub EnableHook()
hNxtHook = SetWindowsHookEx(WH_JOURNALPLAYBACK, AddressOf HookProc, App.hInstance, 0)
End Sub
Sub FreeHook()
Dim ret As Long
ret = UnhookWindowsHookEx(hNxtHook)
End Sub
Function HookProc(ByVal code As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long
HookProc = CallNextHookEx(hNxtHook, code, wParam, lParam)
End Function

'以下在Form中,需求:一个Command1, 一个text1
Private Sub Command1_Click()
Dim str5 As String, len5 As Long, i As Long

Call EnableHook
str5 = "这是一个测试JournalPlayBackHook的程式"
len5 = Len(str5)
For i = 1 To len5
Text1.Text = Mid(str5, 1, i)
Text1.Refresh
Sleep (200)
Next
Call FreeHook
End Sub

VB6制作Win98风格的工具栏 VB实现窗口的弹出式菜单 用VB做个漂亮的进度条 Cool 3D 浮動按鈕的模擬作法-VB资料 VB 5.0中实现鼠标拖放 VB5.0下工具条的制作 VB5.0中基于桌面的屏幕技巧 VB5.0中实现字体闪烁效果 VB5实现窗口图像缩放、滚动技巧 VB6.0动态加载ActiveX控件漫谈 VB编程步步高-表单篇 VB编程常见问题 VB编程中如何锁定鼠标 VB创建位图菜单 VB实现按钮浮动效果 VB应用程序中的工具提示和状态显示 VB中处理长列表框项的两种方法 VB中多级下拉列表的实现 VB中防止将重复项目添加到列表框控件中 VB中实现菜单分割 VB中实现带预览的对话框 VB中实现同一窗口的多个实例及控件的动态增减 VB中阴影字体的实现 VB自定义数据结构的传输转换 Visual Basic 窗体背景花纹的实现 Visual Basic 中的界面设计原则和编程技巧 Visual Basic 中文本框处理技巧集萃 Visual Basic 中字符淡出淡入的实现 Visual Basic窗体背景花纹的实现 Visual Basic下工具条的制作 Visual Basic中的界面设计原则和编程技巧 我在SQL2000中有个字段类型是SMALLDATE,与CEDIT控件联结后,类型是CTIME,但显示不出? 我该怎么学? 怎样让我的程序运行时,始终在最前面 散分!!!回到CSDN!! 经常在运行屏幕保护时VC6.0 就出现了运行错误 嘻嘻~`问同学借了一台数码相机回家,自已拍了几张房间里的照片.大家有兴趣的就去吧!小A房间大暴光 请众位大侠,能不能强烈的推荐一本关于Delphi入门级的经典著作!谢谢了!推荐者必有分 请教! 关于Win32下的字符串操作 菜鸟提问,估计大家都会,指点一下 为什么我用ie的时候,新打开一个页面,他的还原形式的大小总是最小化的? var oXL = new ActiveXObject("Excel.Application")这句话有什么问题? 高分求算法 如何根据IP来得的到对方的操作系统类型 怎么这么老套,大家想想办法啊! 我要学DirectX了,请大家帮忙找一些这方面的资料。 关于出错信息的问题,多谢指教! Csdn,为什么你现在不忙了! asp.net的优点到底在哪里 大家能否推荐几本无线应用方面的书(如:短信编程、WAP编程), 谢了! 最基本问题 哪位写过控制摄像头的例子, 如何使用XP的远程桌面管理?远程控制. float 5.29 显示出来会是什么? 要不要学c++ 不能保存文件了,怎么回事? CString的一个问 在vs,net中创建用户控件和组件有什么区别? Lotus Notes and Domino与LOTUS 1-2-3有什么差别? 问路 JBuilder中类找不到 Montaque,看到后请进,问题有点菜,但希望你尽快回答! 大家帮帮我啊谢谢 private的意义是什么呢? 这是怎么回事啊,经常遇到的问题 请问windows编程和windows网络编程哪种编译器最好 新手提问--初装redhat7.2问题多多 请问如何在iis中提供证书认证?急! ASP.NET能不能用记事本写?! ??如何获得在DataGrid控件中选中一条纪录的消息?? 在win2000上调试好的程序,为什么到了xp的iis下面关于access数据库写入的页就打不开了? 不通过键盘,不通过初始化,不用SetWindowText(),如何向一个编辑控制加字符串 maya里的动画如何渲染? 数据库中的超键是什么意思? 组件如何发布? 一个小问题(请斑竹不要删) 菜鸟提问:怎样才能在编程中把一个数据库生成一个HTML文件! long型能转换为int型么? datagrid中RadioButtonList被自动选择问题? c#中如何比较两个string的大小,如"AB">"AA" return * this 问题 人口过快增长会给国家造成哪些压力?人类的哪些活动会导致水污染?如题 many,much的最新反义词是什么much 不是 little many 不是few除了这个还有什么 蛇的牙齿有毒吗?蛇的牙齿有没毒!他的毒液是从牙齿里输出吗? 用一般现在时介绍你和家人是怎样度过春节的(英语)急,急,急 各位精通英语的哥哥姐姐们, 弟子规圣人训什么意思急用帮帮忙 想找一些英语的动画片,最好有剧本 春节用英语对家人说的一句话 弟子规是儒家的吗?它的里面有一句:圣人训:的圣人指谁?又有什么关系呢? 有人知道美国动画片《新三只小猪》的英文剧本? 弟子规总序的第一章是从哪到哪啊 弟子规,圣人训,下一句是什么 造句,有水平点幸福是贫穷中相濡以沫的一块糕饼,患难中心心相印的一个眼神.仿写这个句子 第六题, 弟子规圣人训 背面滑滑黑色,腹部黄色的小蛇是什么蛇,有毒么? 第六题 弟子规,圣人训 神学(包括上帝,佛,道)除了心理上(可以归类为心理学哲学)到底能不能给个人以实际的帮助 弟子规内容 东阿拉伯语的朋友帮我看看这是什么意思 是否可以推荐一些神学、哲学、心理学的书籍?(与EVA挂钩的) 第6题, 哪位朋友帮我看看这两句阿拉伯语什么意思? 心理学和哲学,在学术上结合得紧密么?它们是怎么结合的? 弟子规谁有 整样捉有毒的蛇要安全!能否再详细一点 英语翻译我有格朋友在国外,英语不好,请问有能直接翻译整句汉语的发音词典啊? 2012年世界末日电影?2012年世界末日电影 哪里可以看?不要预告片 刚才抓了一条蛇,不知道是否有毒,请问是什么蛇? 为什么会要求具备这三种学问:哲学、心理学、金融学.而且重要性是这样依次排列的. much的反义词 请问一下这是什么蛇,在家里抓到的,有毒没毒? 1英汉双解高级词典是不是分别用英语和汉语解释一个英语单词2《中学英语语法》在市里的新华书店能买到吗 very much 反义词 抓到条蛇, 中西方文化的矛盾以前喜欢中国古典文化,现再则更倾向於西方文化,注意:是倾向一些,更注重的还是中国文化,比如说:以前喜欢故宫类型的建筑,现再比较喜欢欧州建筑风格等等等等……… too much的反义词?太少?有too little这种表达吗?顺便帮我讲一下little、less、much的用法吧~ 哪里有弟子规全文 "随便"的英语怎么说 和家长的对话写—遍150多字的作文. 弟子规 全文全文,尽量有翻译(谢谢) "我们离得好远"用英语怎么说 这个英国男孩姓格林名叫汤姆英语怎么写?这个英国男孩姓格林英语怎么说我的意思是整句话的意思 弟子规多少为一则 要弟子规的全文,坚决不要它的意思.有意思的不给分.好的多给. 请问广大网友哲学里的"范畴"是什么意思?在哲学里"范畴"这个词常常出现,但我就是不知道它的确切涵义,望广大网友帮帮我. 弟子规里面的一个问题弟子规 圣人训 首孝悌 次谨信泛爱众 而亲仁 有余力 则学文出 则 悌为什么经常有人把这个悌打成弟字?仅仅是因为打错了? 《苏菲的世界》 中按顺序分别提到哪几个哲学家、谢谢哈~~ 什么是哲学范畴 全国大学英语四级评分标准 各个题几分 苏菲的世界中苏菲和席德到底是怎么个关系啊?苏菲就只是席德的爸爸写的小说中的人物?席德的爸爸为什么那么神奇? 英语四级的每大题分值是多少 09年英语四级的评分标准是怎样的啊?09年英语四级的评分标准,就是每道题的每个小题多少分. 在《苏菲的世界》一书的最后,那本书已经结束了,为何还有关于苏菲与艾伯特的故事继续呢,请教作者是何用有没有比较权威的答案? 请写出四种会导致水污染的人类活动 CET4的每道题目的评分标准是怎样的? 为什么蛇的牙齿会有毒?还是最毒的,而人为什么没有 大学英语四级的每大题的分值各是多少每题的具体分值 求高手写以家长的角度写一篇作文主要内容是孩子入学考试时成绩中等、通过老师、 、 、 、的栽培在第一次月考中取得优异成绩、表示感谢、对学校高效课堂的学习方式表示赞赏.再在结尾 请问这是什么蛇,有毒么,现在还是幼蛇,还没长牙,应该怎么饲养,喂些什么,现在小蛇不张嘴吃东西,应该怎么灌喂
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘