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

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

亚信CFO武军谈进军海外市场成功经验 前瞻性思维是开路先峰 Swift,任重而道远! DevOps系统的变迁 玩转Docker镜像 “扫描建模”速建AR应用 Vuforia 4.0 SDK更新 硅谷里的外星人:纵观Reddit十年风雨路 不见不散 Cloud Foundry Meetup活动将首次走进杭州 独立开发者:新手做2D手游该用哪些工具? 求安全化危机!Uber研发生物识别技术、聘请前亚马逊运营 JavaScript社区开发者调查:服务端JS盛行 AngularJS使用者最多 去中心化、去中介化,微信商业化路径清晰了吗? 微信企业号认证简化了,你造吗? 专访瀚思安信联合创始人:大数据技术助力企业实现主动智能防御 挑选IBM Bluemix作为云平台的10大理由 10年技术积累成就极光压缩引擎,欧朋流量宝5.0面世 【图文实录】12月19日CTO俱乐部走进杭州 mlpack:可伸缩C++机器学习库 本地项目托管将死?类GitHub站点永存! 2014年讨论最多的编程语言:JavaScript称霸 移动Web应用UI框架大比拼:Ionic vs. Famo.us vs. F7 vs. OnsenUI 面包旅行CTO薛亮:做旅游与社交有机结合的先行者 盘点开发者最喜爱的Swift技巧 2017年,开发者还能从移动广告中收获什么? 《近匠》茄子快传,让设备更好地连接 面向移动应用程序的DevOps五大挑战和十个最佳实践 Ruby 2.2.0发布,支持回收Symbol类型对象 听UnitedStack、IBM、HP专家如何谈“OpenStack 存储”技术 专访POWER 8编程挑战赛选手孙冬冬:从C语言到人工智能、深度学习的技术演变 盘点2014:十家最酷的大数据创业公司 盘点2014:最受关注的十大云服务创业公司 基于Kubernetes构建Docker集群管理详解 请教各位高人,一个循环定义问题 Win98下为什么拦截不到从另一线程发过来的自定义消息 public class myclass 与 class myclass 一样吗? dbgrid 中,titleclick事件,如何判断选中的是 哪个字段 呢? 很简单 ADOtable 不支持 FindKey, 请教: 应该如何解决记录定位? 火急请教个“重新验证组织单元”问题! 想做一个报表但设置DataEnvironment的连接失败,不知为何错? 请教!linux下将.h和.c文件编译成动态连接库!!! 你真的懂SQL语句的编写吗?快来,我给你分 重载与模板的问题 出租魏公村西口两居之一 不知哪有好一点的聊天室,各位大虾请推荐几个小弟几个!!!! jsp里面有类似于asp的response.end语法吗? 求教各位大虾,这样的数据库程序如何实现。急切中。。。。。 vb中有没有像CommonDialog选文件的定位文件夹的控件? 怎么一次性加入多个子目录中的CPP文件到VC工程中 关于pos系统数据同步传输,欢迎大家进入讨论! 怎么得到本机的ip地址? 关于package 的问题 关于打开网页的问题 怎么在文本文件中的两行中添加一行?怎么删除一行? “split”分割问题 请教:怎么配置Tomcat可以禁止访问目录 ,比如访问 http://127.0.0.1/test 不会出现文件列表? 请问怎样在对话框窗口中的Edit控件里按下Enter键后不要退出 有关dremveaver ultradev 的动态网页制作问题, 请教高手。。 在delphi中如何实现全屏?? 100分。请大虾帮忙搞定 谁有存储过程的学习资料? 怎样判断计算机上有没有装madc数据库连接,? 项目中的一个问题,急待解决,请帮忙,谢谢 无聊散分 鼠标在图片上移动所发生的事件 一个怪问题:ping得通却NetTerm不上? JBuilder中如何拖动控件到面板,位置放置的问题。(高手指教) 请问在那里有csdn helper 下载 是否可以给表的字段编号? 我想让程序启动该怎么做 这样一个项目计划怎么写? vb.net 附值问题,请教高人 一次檢索出DataSet數據存至Session還是每次DataGrid翻頁時檢索為好? 一个程序不停的写一个文件,越来越大。怎样把以前的数据拷出来然后把他们从文件里删去? 会自动关机的电脑 怎样在listCTRL中加入彩色字?Waiting Online 请问到哪里去找w2k下编译需要的头文件和库文件呀 请问各位哪里有UNIX平台或LINUX平台的POWERBUILDER下载? 吐血给分!小问题,简单的很! 请教有关ServerSocket的问题 请问到哪里去找w2k下编译需要的头文件和库文件呀 想玩网络游戏,各位给推荐一下,谢了先!!! 请各位在这里留下已知的并已解决的BCB的BUG问题,也好让大家少走弯路了,谢谢! CMOS的问题,我是XP系统! 2011诺贝尔物理学奖获得者 我为留守儿童做什么300字作文 英文我爱你,丽丽简写怎么写 学生怎么理解“塞翁失马,安知非福”.学生价值观对吗? 会作文的点一下,300字题目为《盲人和我们》,这是看图写作,图上是一个健全人垃圾乱扔,和一个盲人:他用拐杖找垃圾桶扔垃圾.2011年1月14日前给我!谁快谁分多,+20啊. 关于和谐的作文(小学六年级500字) 宇宙将变成冰怎么回事,科学家说的怎么回事? 献你一束花答案“失败和胜利对于你同样重要”的意思“让失败属于过去,胜利才属于未来”的意思快╯﹏╰ ╯﹏╰ 求电影地球人乘飞机去火星遇到了火星人,没想到火星人非常害怕地球人前几年拍一个动画片(也算是电影吧),讲地球人第一次登上火星,然后那个人把国旗插上去的时候却发现火星上面有房 抗日战争片观后感五年级 尊严 这篇课文中描写哈默外貌、动作、语言的词语有哪些 一地球人去火星旅游见到火星人,火星人说什么? 为什么宇宙膨胀会变成冰? 献你一束花的第四自然段的叙述方法是( ). 与寒假有关的英语作文,70词 要带汉语 抗日电影观后感感人的 500字 第七课尊严,描写哈默外貌,动作,和语言的句子有那些. 让我们在从今天开始早睡英语怎么说急!!!!!! 雨过天晴,会有彩虹吗?的英文是什么 献你一束花中的“她”到底是谁?急用!作者是冯骥才.有人说是桑兰,有人也说只是代表了一种精神.可是到底是谁啊? 王阿姨骑自行车3分之2小时行了8千米平均每小时行多少千米 雨过天晴有彩虹吗? 尊严 :这篇课文描写哈默外貌.快,我要写作业 王阿姨骑自行车行9千米要5分之3小时,平均每小时行多少千米?把一根铁丝不折叠的剪断,剪五次,每段都是5分之4米,这根铁丝原来长? 骡子,马和驴的关系 献你一束花的情节曲线. 小亮骑自行车三分之二小时行了16km,照这样计算 他三小时行多少千米? 谁给我把马,驴,骡子的关系说清楚,给好评 中国抗日战争纪念馆的观后感200字 赶花——原文谁有, 中国人民抗日战争纪实片观后感! 求抗日战争纪念馆观后感!急!400字--500字 《自己的花是让别人看的》小学课本原文季羡林写的 整个宇宙将变为冰会是什么样子 《献你一束花》阅读答案,45分钟之内给我,鲜花,理应呈送给凯旋的英雄.难道献给这黯淡无光的失败者?  她一直垂着头.四天前,她从平衡木上打着旋儿跌在垫子上时,就把这美丽而神气的头垂 汽车的速度是60km/时,自行车的速度是15km/时.自行车驶的速度是汽车速度几分之几? 地球人都知道!除非你是火星人!(地球人)我家是木地板,不知怎么最近发现了小黑虫,个头跟大米一般,还长着小翅膀呢!不知是否吃木板呢?怎样去除,消灭它呢?不然的话.可想而知...它有时在地板 献你一束花 答案急用~~~~~~~~~~~~~ 《花的启示》原文急求1月31日要用,有的发一下,谢^-^ 宇宙的结局是什么? 以友善为话题的800字作文 花儿年年红 阅读原文 课文献你一束花的近义词,反义词,多音字 有关友善的作文400字 1和3是反义词的成语 献你一束花"是不是这就加重了她的思想负担?"中的"这"指的是 (用原文中的话回答),但实际指的是 (用自己的话回答) 五年级献你一束花课后问题正确答案快! (在有限数列{an}中,Sn是{an}的前n项和,若把(S1+S2+S3+…+Sn)/n称为数列{an}的“优化和”,现有一个共2006项的数列{an}:a1,a2,a3,…,a2006,若其“优化和”为2007,则有2007项的数列1,a1,a2,a3,…,a2006的“优 献你一束花 以友善为话题的作文 描写人物心里活动的句子块 跨 块 块 关于家庭温馨的场面 作文 300字以上 我爱你的英文和缩写 急 设Sn为数列{an}的前n项和,Sn=(-1)^n an - 1/(2^n),n∈N*,则 (1)a3=___ (2)S1+S2+…+S100=___ 地球人的祖先会是火星人吗人类的祖先是猿人但是他不可能是从石头里蹦出来的吧.我怀疑.火星人发现了地球.但是又舍不得自己的星球,就把一些低等生物恐龙放到了地球上去生活.但是由于 谁能告诉我 [我说] 的英文简写 比如说 我说我爱你 [两个字母]我爱你那我发誓 有没有英文简写? 设sn为数列an的前n项和,Sn=(-1)^n-1/2^n,n属于N*,则(1)a3=? (2)S1+S2+...+S100=?问题如上!求助! 塞翁失马,安知非福.——佚名 的意思 抗日战争的故事有感 要800字左右 快.......... 英语我爱你的缩写是什么?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘