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

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

专访InMobi CEO Naveen Tewari:Banner广告已经OUT 效力苹果18年的资深高管Katie Cotton将退休 主打“全、新、独、准”,华为推出游戏中心平台 阿里云计算出海挑战亚马逊 首站香港及东南亚 TIOBE 2014年5月编程语言排行榜:Adobe ActionScript挤进Top20 秒杀iPad Mini?微软或将下月发布Surface Mini 大道手游:详解应用内购买的定价趋势与技巧 与英特尔软硬合作,Cloudera将在中国建立业务机构 准备迎接第一个量子计算软件公司吧! 搜狗搜索发布新LOGO和移动App 正全面入驻腾讯各条产品线 做好扁平化设计-视觉篇 关于敏捷研发的跨界反思 《近匠》雨血,一个“独立游戏人”的反思 一周消息树: 阿里巴巴赴美IPO的种种及马云内部邮件全文 一周热点:准备迎接第一个量子计算软件公司吧! 【云先锋】多备份:云端数据物流平台为企业提供云备份服务 不容错过!开发者必备的十二大开发资源 为Canvas而生:开源2D HTML5渲染引擎CutJS 第九届中国互联网创业者大会在京举办 腾讯发布“三驾马车”组合拳产品 入手Beats,苹果史上最大手笔收购为哪般? Gmail有生以来最大手术 全新设计曝光 Python开发者最常犯的10个错误 博康智能副总裁张善海:活化运用大数据 实现传统交通系统间的数据融合和共享 刘刚:从互联网到传统行业 Hadoop发展迅猛! OpenFlow多级流表在云计算网络中的应用 分享大数据最佳落地实践 助力企业数据驱动型转型 怎样成为优秀的产品经理? Google发布新版AdMob 将在更多市场推出 触控ARM“结连理”,Cocos2d-x性能提速70% Per Brashers:智能、能耗、安全将是未来数据中心发展的关键! 梁博:OpenStack已在IaaS层面扮演重要角色 cview里的precreatewindow和cframewnd的precreatewindow应该调用那个? 如何在dw4中给已做好的FLASH动画加上超链接? 关于Jmail组件的问题! 袁飞请进! redhat linux下jbuilder安装问题!!!帮帮忙!! 怎样得到一天的起始时间,例如:今天是2001-11-1,则我希望得到:2001-11-1 00:00:00 求教CEditView 华硕P2B主板怎么装联想商博士6xxx的内猫,猫是好的,可插上后怎么也找不着,怎么办? CSDN的服务器太差劲了!老是结不了分的! 有没有第二种方法加入2000的域呢?(详见正文) 时钟的实现初始化问题?? 我今天买了一本,这本书如何? 那儿有perl for win32的开发资料下载的! 我想知道鼠标在COMBOBOX上移动时所处的选项,在LISTBOX上可以实现,在COMBOBOX上如何实现,它没有MOUSEMOVE事件。 请问怎样自动捕捉网格啊? 定义以下变量,并以赋确定的值:char w;int x;float y;double z;则表达式:w*x+z-y所求的值的数据类型是什么 为什么我的treeview 值都成了双份的呢??? 哪人在线观看的源代码?比如:CIH,I LOVE YOU 怎样自动捕捉网格啊? 本人就快作毕业设计了,想作个vc项目,大家给我点意见吧! 怎么把CByteArray型数组转换成char*型. 关于纯资源DLL的问题! 超难问题:如何将一个EXE转换成SWF? 关于PHP程序员工资待遇问题的讨论! 网页中嵌入ActiveX控件,遇到的问题。 问个比较简单的问题:关于ASP上传的 送分啦~~~~~~~用什么方法可以获得鼠标的移动到那里的句柄(包括窗体和环境),就向SPY++里面的findwindows一样的功能 关于vb数据库的问题,请教了!!!!! 1982.12.12,2001.12.12是19岁生日还是20岁生日? 寻找调查投票程序,66分 在printf格式字符串中,用于输出字符串的格式字符是什么? 哪里有这样的jsp程序 轻松一分钟,统计一下看流星雨的程序员们是单身还是成双成对? c语言程序的基本单位是什么? 是什么原因产生stop:0x0000001e故障的,有办法解决吗 如何虚拟键盘输入?急!!! 请问怎样才能将用户选择的行或列在打印预览窗口中? 如何获得所运行的进程列表 设i,j,k均为int形变量,执行下列语句:for(i=0,j=10;j<=j;i++,j--)k=i+j;则k的值是多少? 怎样把kv3000解密到一张软盘????? 是高手的进来赚点分(全给) delphi中如何定义过程与函数,请帮我各写一行带参数与不带参数的例子, 有谁用过EXPRESSO开发过JSP吗 如何在MTS对象中使用现有控件? 求救!!!WINNT 4.0下无法显示中文! 请各位指导,如何查出QQ的区IP地址? .怎样将多个文件用MAKECAB。EXE制作成CAB文件 请问变量声明问题 该怎么让客户端浏览网页时自动完成对服务器端网页中ActiveX控件的注册? 一直困惑我的问题! 请问printf( "\t\b\b" )是什么意思? 苯甲酸钠和山梨酸钾两个哪个当防腐剂更健康 sin75=?求过程,求解析,求方法!给好评! 那些食物不含碳水化合物? 什么酱油不含苯甲酸钠和山梨酸钾 请问苯甲酸钠有什么危害 苯甲酸钠是防腐剂还是什么?有何作用? 防腐剂,苯甲酸钠、山梨酸钾在我国还是被允许使用的是吗?不被允许使用的食品添加剂,防腐剂有哪些? 25/28怎样约分? 不含淀粉碳水化合物脂肪蛋白质的食品? 甲乙两圆的周长比是4:5,两个圆的面积相差2.7平方分米,甲的面积是() 哪些食物含碳水化合物 哪些食物不含碳水化合物不要复制的,请一一例举,例多的加20分, 山梨酸钾和苯甲酸钠如何鉴别如题,从化学的角度如何鉴别这两者请从从山梨酸和苯甲酸各自的功能基团的角度,谢谢 以在食品中做添加剂为主,纯品的用焰色反应就够了是吧? 28分之12进行约分 如果一个圆的周长是31.4厘米,那么这个圆的面积是( )平方厘米? 食品中的苯甲酸钠的测定 有什么标准吗? 什么食物含碳水化合物? 化简求值:8sin15°cos15°cos30°cos60° 食品中苯甲酸钠如何测定(主要是样品的处理不会) 什么食物含碳水化合物多 关于健身饮食补充碳水化合物和蛋白质的问题,健身前后分别补充多少?我健身有快半年了,现在打算开始注重饮食,请问胡老师我是应该在健身前后如何补充,目前我是这样的:健身前吃一个鸡 如果两个圆的面积比是1:9,呢么两个圆的周长比是 一个圆的周长增加10%,这个圆的面积是( ) 锻炼后吃哪些食物或者饮料能补充碳水化合物 甲圆的半径是乙圆的3倍,甲圆的周长是乙圆的______,甲圆的面积是乙圆的______. sin75°两角差的余弦公示求 圆的周长从10π增加到12π,则圆的面积增加了几? 甲圆的半径是乙圆的4倍,甲圆的周长是乙圆的[ ]倍,甲圆的面积是乙圆的[ ]倍. 苯甲酸钠在食品的比例怎么用? 圆的周长从10派增加到12派,则圆的面积增加了多少 向某0.5mol/L的ALCL3溶液100ml中加入一定量的1mol/L的NaOH溶液,得到3.12g沉淀.问:加入的NaOH溶液可能是多少毫升? 苯甲酸钠是什么东西 四十二分之十六咋约分 90分之81约分是多少,怎么约分 食品级苯甲酸钠和药用级苯甲酸钠有什么区别? 碳水化合物的食物有哪些? 向10毫升1mol/l的Al2(SO4)3溶液中加入1mol/l的NaOh溶液求:(1)当沉淀的量达到最多时加入的NaOh溶液的体积 (2)当沉淀恰好完全溶解时加入的NaOh溶液的体积 焦糖色作为食品添加剂可能用于哪个方面 有哪些高碳水化合物食物? 向20mL 1mol/L Al2(SO4)3溶液中,加30mL NaOH溶液(1)反应中生成沉淀质量的最大值可能为多少?(2)充分反应后,得0.78g沉淀,求NaOH溶液的物质的量浓度可能是多少少? 食品添加剂 焦糖色对人身体有害吗 什么食物里面含碳水化合物最多啊面食和米饭还有薯类这些粮食作物含碳水化合物是不是最多啊!那水果和蔬菜呢?这两个哪个最多啊? 甲乙两个圆,甲圆的周长是9.42米,乙圆的面积是94.2平方米,甲圆与乙圆的半径之比是()两个圆周长的比是5:8,直径比是()半径比是()面积比是()?半圆的半径是d,周长是()面积是()?用 为什么黄酒的原料表里有焦糖色?那个起什么作用?能不能用这种黄酒做药引子? 圆的直径是20分米,圆的周长是(),圆的面积是() 今有0.1mol/L的Na2SO4溶液300mL,0.1mol/LMgSO4溶液200mL和0.1mol/L Al2(SO4)3溶液100mL.这三种溶液;硫酸根离子浓度之比是多少?问题很长,百度不让发.问题就在这里了要详细的解答步骤哦我们很多同学都算成3 【有关食品添加剂!】柠檬酸、柠檬酸钠、食用香精、维生素C、焦糖色...请问柠檬酸、柠檬酸钠、食用香精、维生素C、焦糖色对人体有什么危害?为什么?食用过多会怎么样?寒假作业,非常急! cos15度减cos30度等于? sin75度= 人体内的热能主要来自于()(单选) A.脂肪 B.碳水化合物 C.蛋白质 D.纤维素人体内的热能主要来自于()(单选)A.脂肪B.碳水化合物C.蛋白质D.纤维素 1.这个分数的分子和分母的和是42,约分得5分之1,原来这个分数是多少?2.36小时=( )日(分数)小明行了18千米的路用了4小时,平均每小时行全程的几分之几?平均每小时行多少千米?36小时=( ) 求解答316分之88约分和36,28的最小公倍数 128与625能约分吗? 一个分数约分前分子分母的和是36‘约分后是5分之4.原来的分数是().把30分之18,28分之21,49分之14,121分之22,40分之16这些分数先约分,再按从小到大的顺序排列起来. 人一天需要摄入脂肪、碳水化合物、蛋白质各多少g 如果要减肥的话,脂肪、碳水化合物和蛋白质的摄入不能低于多少g 人体内的蛋白质和脂肪能变成碳水化合物吗? 碳水化合物是什么?哪些食品算是碳水化合物? 苯甲酸钠和山梨酸钾能混用吗? 二十五分之四十八约分后等于多少? 苯甲酸钠有什么功效
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn