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

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

新细节披露:通过电信合作 美国75%网络遭NSA监控 实时Bug检测工具Bugsnag发布API更新 【观察】一大三小:亚马逊,微软、谷歌、IBM ,IaaS四足鼎立 “化云为雨”一小滴:北京,3G手机+蓝牙打印机实现智能抄表 金山云与蓝汛联合提供云基础设施服务 MongoDB出新招,增加对Hive的支持 编程语言收入榜 Java排第三 直接拿来用!10段超有用的Git命令行代码 Google Cast SDK正式版发布:自动适配,修复Bug 频受红杉资本青睐,商业智能初创公司Birst靠的是什么? 2013百度世界大会要点精华回顾 WebApp开发框架Clouda、轻应用... 对新手有用的JavaScript开发小建议 磨剑三载,且看从容应对14.3万TPS的Twitter是怎样炼成的! 兰亭集势:被高估的“长尾式采购” 谁说WP手机不行?微软称已成拉丁美洲第二大移动平台 Windows 8之父Steven Sinofsky加盟风投机构A16Z SDCC 2013演讲议题抢先看 腾讯、阿里、支付宝、网易…… [开源推荐]Google开源基于Deep Learning的word2vec工具 【开源专访】DWZ团队:致力打造最简单的Web前端开发方式 Linux黑客车库创业:服务器操作系统CoreOS颠覆互联网 时间序列数据处理的角逐:MongoDB vs. Cassandra 移动周报:Sphinx游戏引擎的前世今生 联想K900评测:英特尔X86兼容性明显提升(组图) 小米手机-HAXLR8on硬件黑客马拉松:32小时的创客狂欢 鲍尔默宣布下台后,微软应该做好这几件事情 IGT张奇伟:从空间物理到博彩游戏研发 Bing即将推出新功能 用户可直接在搜索结果页购买商品 【开源专访】郑晔谈Moco框架的前世今生以及Java编程之道 CTO俱乐部第108期下午茶:电商在微信上的现状与未来 SDCC 2013讲师议题确定 门票即将售罄(图) 简化工作流程,10款必备的HTML5开发工具 给分王,我要功成隐退了 关于fdisk的使用出现意想不到的问题!!!!! 在公司做好的本地程序,和数据库,如何上传 有缘人,送分人,功成身退 誰有Java的在線网絡游戲,就象263,yahoo上那樣的. error C2664是怎么回事?十万火急!!! 我的编译器总出 LINK : fatal error LNK1104: cannot open file "Debug/Typer.exe" 是什么原因? 送分喽 vb中的问题!!!急 请问:fastreport的自定义变量如何与delphi变量进行互相传递!!! 请问各位高手关于局域网共享上网的设置问题。 basic 的数据结构问题 asp与xml 百分求维护经验 初级问题 求救:如何用fileup组件将一个文件同时存到两台机子的硬盘上! 有关netmeeting、AVPhone或其它做视频会议相关控件的使用方法。 a question about String Type!Please help me! 关于%include的问题。高分 vb如何访问sql-server。 有用SDK编写的象“我的电脑”那样的程序吗? 请教:如何绘制成绩分析的正态分布曲线? bean里删除文件? 请问关于响应事件的问题?? 请问怎样用在Active DLL中调用ASP的response对象? 请介绍几本关于vb的书,不是入门的书,有没有向<delphi5开发人员指南》这样的书???? dos下编程,如何获得文件创建时间? 如何判断存储过程执行成功结束?(50分相送) 谁行行好吧,小弟谢过了!(sql的cd key) 请教现在是应该学习VB6还是VB.NET? 关于在mfc中自定义类的一个问题 请教现在是应该学习VB6还是VB.NET? 谁有在VB中开发DirectX的教程,请推荐下载地址. zrong(zr) TommyTong(童童) GreenWaterBlueSky(我的家在碧水蓝天) 进来看一看可以吗? 谁行行好吧,小弟谢过了!(sql的cd key) 这里是个关于Iczelion的win32的汇编教程中的一个问题,请各位指点! 请问如何让VB。NET编译的。EXE文件在没有装有。NET架构的系统上运行? 大白鲨:计算机软件专业到低学那些课程 窗口的最小化和最大化事件是什么? 怎样实现在主窗体显示后,出现登录窗口?? 三层结构系统的问题! 存储过程问题 如何从Select的结果中再查询数据? 求助:此书<<windows me程序设计手册>>附带光盘的源代码---作者台湾,位元文化 大白鲨:程序员的爱情问题 form1.WebBrowser1.Navigate('www.zz.ha.cn');showmessage('下载完成');总错误 提问:关于报时程序 如何用图像来显示一个灰度值矩阵? 终于下载完了77M的,高兴,爽! 树型控件中,我在itmexpanding 事件中写了代码,第一次展开树正常,但以后每展开一次,数据内容就会在原内容基础上增加,书上说必须清除 tab控件中的按钮怎样关闭对话框? 1 一个圆锤形零件 底面半径是3厘米 高是5厘米 将他浸没在一个圆柱体的玻璃缸中 上升了三米 这个玻璃钢的底面积是多少平方厘米2 一辆货车箱是一个长方体 他的长4米 宽1.5米 高是4米 装满 《最后一头战象》中嘎羧的内心感受要以“我”为主人公.[注:我为嘎羧] 最后一头战象 my father ,my friend英语作文大学英语作文- -,我英语挺差的,明天回学校了,其实不一定是my father ,my friend为题,要求是my father,my 不会的就不要回复了.轻轻的飘过即可~ 吾江南人斩竹而薪之 翻译 孟子和荀子都是战国人物,为什么他们会有不同的观点?孟子处于战国早期,荀子处于战国末期,他们的时代环境是相似的,但孟子提出了人性本善的政治观点,荀子提出了人性本恶的观点,这是为什 最后一头战象:嘎羧给你留下什么印象? 任光禄竹溪记里的吾江南人斩竹而薪之是什么意思? 荀子、孟子和孔子的思想有何异同?请各用一个名句来概括他们的突出特点. 最后一头战象小练笔:嘎羧在河畔回忆什么文章----------小练笔 Can you see —— No,let’s go and have a look .Maybe we can help them.what are they doing there 我想知道为什么不倒装?为什么不选 what is going on there 说错了,不是不倒装,是为什么不调换语序?后面那个不用解 孔子和孟子 荀子 有什么不同? 《最后一头战象》《词语手册》作业答案kuai. 英语翻译My Father My father is a kind man.He is not very tall but he is a man of perseverance.He works very hard and his services are highly appreciated.My father is a man of devotion.Every morning he gets up the earliest to make breakfast for us 用‘my father past life'写一篇初一的英语作文 求《最后一头战象》的好词好句越多越好不是课本上的,好词好句都要有啊,好段也行!快! I felt ( ) when I fell down on the playground.这里的空格答案里是painful,我想问的是,填pain行不行?我知道feel后面跟的是形容词,但课本里有一句话是 If you felt some pain,you'd stop running.为什么这里feel后面跟 my father is day 英语作文 字母都代表什么?比如V=?要全面 35.There are quite a few ______ in the hospital.A) man nurses B) men nurses C) men nurse D) man nurse 六级财富值是多少? 孔子云:何陋之有 翻译 一道初三英语题,希望有讲解谢谢,急在线等As we all know, wood and stones ______ bridges in the past.A) used to build B) used to building C) were used to build D) were used to building 需要多少财富值才能升到六级. 孔子云:何陋之有,怎么翻译 Jim found nobody in the classroom —— A.did heB.did Jim 我知道选A,但我想知道为什么不选B.这种从句不是应该看主句吗? 财富值是多少时是六级 英语翻译1子曰:“吾十有五而志于学,三十而立,四十而不惑,五十而知天命,六十而耳顺,七十而从心所欲,不逾矩.2温故而知新,可以为师矣.3学而不思则罔,死而不学则殆.4知之者不如好之者,好之 《最后一头战象》里的战象,在死做了什么事《最后一头战象》里的战象,在它死之前,做了什么事,请问下,3Q 百度知道六级财富值是多少? 用“简单”造两个句子,体现词语不同的意思答得好我再加高分 《最后一头战象》 嘎羧死前做了那些事 在现代市场经济体制中,政府越来越多的运用税收,利率等经济杠杆调节经济运行,经济杠杆能起到调节作用原因答案是直接关系着市场主体利益, "简单"一词有两种意思,用"简单"造两个句,要分别表达不同的意思. 最后一头战象讲了一件什么事? 利率是一国政府调控宏观经济的重要杠杆.变动利率对经济的影响的一般规律( )a.提高利率,储蓄减少.b.降低利率,投资会减少.c.提高利率,会抑制通货膨胀.d.降低利率,消费会减少.我选C.Ps:请 用“简单”造两个意思不同的句子要两个意思不同的句子哦! 请问《最后一头战象》中的象死前有何感想?作文 兼济天下和独善其身的意思不要达则兼济天下,穷则独善其身的解释.单独的解释, 用两个意思不同的“简单”分别造一个句子 最后一头战象嘎羧死前看到了什么?想到了什么? 兼济天下、独善其身的意思兼济天下、独善其身两个词语的含义,最好是自己的理解,只要词语的意思!不要什么“穷则”,“达则”,而且要是褒义 杠杆的作用是什么? 利率是如何作用的作用?请从宏观角度回答 独善其身 杠杆 的用途?什么是杠杆?杠杆的作用? 杠杆的作用是什么? 百度知道财富值多少才升到五级?六级?七级?八级?九级?最高到什么境界? 《最后一头战象》嘎羧告别村寨,屹立在江边回想往事,选择其中一个场景,想象嘎羧的内心感受,并写下来.200字 作者写《最后一头战象》当时的时代背景 有一列数,这样排列;1,22,333,4444,55555,666666,7777777······第二百个数是什么?讲得清楚点说错了,是1,3······ 数学应用题 赏20分财富值一筐苹果连筐共重50kg,卖出一半苹果后,剩下的连筐一共重28kg,求筐内原来共有多少千克苹果? 《最后一头战象》课后小练笔嘎羧内心的感受怎么写啊? 最后一头战象表达了作者怎样的感情请勿说一大堆。 先到先得 键入“你很帅”即可. 【急用!】《最后一头战象》小练笔,嘎羧告别村寨的场景和嘎羧的内心感受. 最后一头战象作者所表达的情感?急. 先到先得. 关于《最后一头战象》嘎羧告别村寨时场景的内心感受具体一点! 最后一头战象的简介
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘