Windows程序都是基于消息机制的,每个程序中都会有各种各样的消息,
如果想通过消息来控制程序的运行,我们只用关心程序中的命令消息
(WM_COMMAND)就行了,其他关于程序界面等等的消息,可以不管。要查看程
序运行的消息,使用VisualStudio中自带的工具spy++。autocad2016精简版-cad2016珊瑚海精简版M.107.0.0 简体中文免费版
打开spy++,选择spy|Windows,然后就会显示出当前的所有窗口,一
些主窗口中的字窗口也会显示出来,比如说工具栏窗口,编辑窗口等等。在
其中找到目标窗口。
以下是我运行spy++时显示的部分spy++窗口,其中有FineReader窗口
001702A6-tooltips_class32
000C01FE-"M"MSCTFIMEUl
001C02A0-"DefaultIME"IME
002401DO-tooltips_class32
003B009A-"Microsoft Spy++-[Windows2]"Afx:100000:0:10011:0:2600515
00300244-"M"MSCTFIMEUl
002E032E-FineReaderTipWindowClass
004F02B4-tooltips_class32
00410254-"Untitledbatch-ABBYYFineReader7.0ProfessionalEdition"
FineReader7MainWindowClass
003E0370-"DDEServerWindow"OleDdeWndClass
005002DC-ComboLBox
000D02B6-ComboLBox
00270320-ComboLBox
00AB0366-ComboLBox
00A000A4-tooltips_class32
(注:以上是使用printscreen抓图,然后使用FineReader识别的结果)
选择FineReader窗口,点击右键,弹出菜单中选择“Messages”,即可开始
监听该窗口的消息。你要是实际操作一下就会发现,消息非常多,根本无法从中
找到自己想看的消息。为了选出我们想看的消息,我们需要对消息进行过滤。选择
Messages|Options,弹出菜单中选择MessagesTab页,可以看见很多消息过滤选项。
我想监听WM_COMMAND消息,所以我ClearAll之后,只选择General消息。
以上设置好之后,开始监听消息,然后到FineReader窗口中点击Read快捷按钮
(安该按钮之后,FineReader开始识别当前选择的图片),然后回到spy++,监听到
的消息仍然不少,但是可以找到我们要查看的消息。如果你只按了一个按钮或者一个
菜单,在监听到的消息中间,你应该可以找到两个WM_COMMAND消息,一个发送出去的
消息,一个返回的消息,相信信息见下文。
以下是我在spy++中监听到的消息,其中有一个WM_COMMAND消息
<00039>00410254R...................WM_NOTIFY
<00040>00410254S...................WM_COMMANDv/NotifyCode:0(sentfroma
menu]wlD:4O2O3
<00041>00410254S...................WM_GETTEXTcchTextMax:512
lpszText:0012E200
<00042>00410254R...................WM_GETTEXTcchCopied:72
lpszText:0012E200f'U'l
(注:以上是使用printscreen抓图,然后使用FineReader识别的结果)
双击这个WM_COMMAND消息,可以看见关于这个消息的详细信息,如下
WindowHandle001F00AA//FineReader窗口句柄
NestingLevel2
Message0111(Sent)//WM_COMMAND消息ID,这个消息是发送出的消息
WM_COMMAND
wParam00009D0B//WM_COMMAND消息的两个参数
lParam00000000
在spy++中监听到的另外一个WM_COMMAND消息
<00089>00410254S...................WM_GETTEXTcchTextMax:512
lpszText:0012E1E0
<00090>00410254R...................WM_GETTEXTcchCopied:71
lpszText:0012E1E0(V")
<00092>00410254S...................WM_NOTIFYidCtrl:177pnmh:0012F988
(注:以上是使用printscreen抓图,然后使用FineReader识别的结果)
双击这个WM_COMMAND消息,可以看见关于这个消息的详细信息,如下
WindowHandle001F00AA//FineReader窗口句柄
NestingLevel2
Message0111(Return)//WM_COMMAND消息ID,这个消息是的消息
WM_COMMAND
wParam00009D0B//WM_COMMAND消息的两个参数
lParam00000000
既然可以查看到程序中消息的ID及消息的参数,那么我们可以自己编写
程序,向被控制的程序发送对应的消息,从而控制程序的运行。
第一步,在自己的程序中打开目标程序,使用一下API,具体请查看MSDN。
HINSTANCEShellExecute(
HWNDhwnd,
LPCTSTRlpOperation,
LPCTSTRlpFile,
LPCTSTRlpParameters,
LPCTSTRlpDirectory,
INTnShowCmd
);
在我的程序中,目标程序为FineReader,打开程序的代码如下:
HINSTANCEhRet=0;
hRet=ShellExecute(m_hWnd,
NULL,
"D:\ProgramFiles\ABBYYFineReader7.0Professional
Edition\FineReader.exe",
NULL,
NULL,
SW_HIDE);
if((int)hRet<=32)
{
MessageBox("打开FineReader失败!");
}
第二步,找到目标窗口,获得目标窗口的句柄
CWnd*pWnd=NULL;
//可能程序启动较慢,需要尝试多次才能找到目标窗口
while(pWnd==NULL)
{
Sleep(1000);
pWnd=FindWindow(NULL,"Batch-ABBYYFineReader7.0Professional
Edition");
}
第三步,向目标窗口发送消息。
可以使FineReader开始运行时,自动打开最后一次运行的一个Batch,所以我们只用
发送消息,
让FineReader开始识别就可以了。通过spy++可以查看到FineReader识别的WM_COMMAND
信息如下
Message0111(Sent)
WM_COMMAND
wParam00009D0B
lParam00000000
按以下方式向FineReader发送这个消息,使用SendMessage,等待消息返回后,再进
行下一步操作
::SendMessage(pWnd->GetSafeHwnd(),0x0111,0x9D0B,0);
FineReader识别完成之后,可以选择把结果保存为文件,或者发送到剪贴板,我选
择的是让其
把识别结果发送到剪贴板。同样使用spy++监听消息及其参数,然后发送对应的消息,
如下:
Message0111(Sent)
WM_COMMAND
wParam00009DA1
lParam00000000
::SendMessage(pWnd->GetSafeHwnd(),0x0111,0x9DA1,0);
进行这些操作之后,FineReader识别之后,就可以直接从剪贴板得到识别结果了,
相关代码如下
if(!IsClipboardFormatAvailable(CF_TEXT))
return;
if(!OpenClipboard())
return;
HGLOBALhglb=GetClipboardData(CF_TEXT);
if(hglb!=NULL)
{
LPTSTRlptstr=(char*)GlobalLock(hglb);
if(lptstr!=NULL)
{
MessageBox(lptstr,"识别结果");
GlobalUnlock(hglb);
}
}
EmptyClipboard();
CloseClipboard();
第四步,操作完毕之后,关闭目标程序,同样通过发送消息完成。
最先我以为直接发送WM_QUIT消息就可以了,后来发现不行,用spy++监听后发现,
应该发送WM_CLOSE消息。
::SendMessage(pWnd->GetSafeHwnd(),WM_CLOSE,0,0);
至此,基本操作实现。其实我觉得,只要做的好,完全可以自己做一个界面来,取
代它的界面。
使用microsoftspy++工具可以检查系统中所有窗口的层次关系,查看其属性遍历窗口,捕捉并查看特定窗口的消息。查看任意windows界面的handle,caption,class信息.另外DELPHI和BCB里有一个WINSIGHT好像和SPY++差不多。
打开microsoftspy++,在工具栏选择Find工具,在弹出的windowsearch窗口中拖动Findertool的图标至目标窗口即可.
展开内容
智能积木(Smart Blocks)1.1 安卓版
守卫剑阁0.12.1X下载-守卫剑阁神昏末劫0.12.1X修改版p闪隐藏英雄密码+攻略
智能连连看9.2020 安卓版
安信盾个人版2.8.12 最新版
车源享下载-车源享app1.0.24 安卓最新版
像素盒子手游下载-像素盒子0.2 安卓最新版
蓝屏修复软件下载-win10蓝屏修复软件1.0 绿色版
小老虎QQ空间日志访问小助手(刷QQ空间日志访问量)v1.0 绿色免费版
万能连点器APP下载安卓版-万能连点器1.1.6 最新版
随易租车app-随易租车1.0.6 安卓版
跨火盆模拟器下载安装最新版-跨火盆模拟器0.1.0 安卓版
信好有田app1.0.1苹果版
鸡你太美2游戏下载-鸡你太美:只因你太美1.0 安卓版
道王手游益玩版下载-道王手游益玩版3.0.1 安卓版
烹饪冒险安卓下载-烹饪冒险官方下载(Cooking Adventure)64100 最新版
9.6/500.1M
金研在线app是一款非常实用的手机线上行业技能学习培训阅读软件,用户下载这款软件能够在上面了解到关于钱塘江金融港湾的所有实时新闻资讯,以及学术在线交流也是非常的...
9apps中文版下载-9apps中文版20254.1.6.27 安卓版
7.6/1,412.4M
9apps中文版应用商店,这是一款专门可以用来下载国际服的游戏的应用商店,类似于我们的应用市场一样的,这里有很多游戏都是最新版本的资源,如果你喜欢玩国际服版本的...
10.0/83.1M
冒险王之旅是一款非常好玩的萌系风格的横版冒险RPG,融入了大量的动作冒险元素,玩家将在野外展开激情的大乱斗,更有百变时装系统,可以充分展现你的个性,喜欢的玩家千...
思而优app下载-思而优手机版(在线学习软件)1.0 最新版
9.6/692.1M
一款为广的学子提供在线学习的软件,为学生提供最好的老师,帮助学生进步,这里有着专业的老师,喜欢的朋友快下载试试吧。思而优手机版(在线学习软件)产品功能学校没学懂...
乐趣英语app下载-乐趣英语ios版4.1.16820 免费版
9.6/689.0M
乐趣英语ios版是一款不错的在线英语学习软件,用户可以根据这款软件来进行定时段的学习英语,帮助你的英语成绩快速提高!软件介绍乐趣英语采用先进的教育理念来进行青少...
家居装饰大亨游戏下载-家居装饰大亨游戏(Home Decor Tycoon)1.0 安卓版
9.8/1,015.2M
家居装饰大亨游戏是一款极具挑战性和趣味性的养成类游戏。它能够让玩家在游戏中体验到成为家居装饰大亨的成就感,同时也能够让玩家通过游戏学习到经营和管理的方法,是一款...
8.2/889.5M
免看作文大全是一个为大家提供美词佳句学习指导的软件,包含有多种类型的相关作文素材内容,帮助用户能够轻松获取对应写作灵感。摘取范文段落练习作文智能辅导给出相应写作...
黑玄TV精简版下载-黑玄TV电脑版【全网VIP视频免费看】1.0绿色纯净版
9.2/386.6M
黑玄TV是一款功能强大的视频播放器软件,上百个电视台,全网VIP视频免费在线观看,支持爱奇艺、腾讯视频、乐视、优酷等主流视频网站,各种视频资源免费观看,想要免费...
9.4/715.9M
湖巴随行是一款方便市民坐车出行的服务应用,公交车路线、到站时间、距离几站等等一键查询服务,是你出行省时省力的必备神器。万众出行评论实时掌握公交线路运行的情况,还...
8.3/353.4M
鹰明司机端app是一款网约车司机使用的手机软件,通过app可以查看自己的订单,在线接单,随时查看自己的业务流水!鹰明司机端app介绍“鹰明司机端”是一款为租车司...
人类游乐场4手机版下载-人类游乐场4游戏1.0.7 安卓最新版
9.4/1,744.2M
人类游乐场4是一款很有意思的像素风格横版休闲手游。玩家将控制角色进行冒险,丰富的游戏内容,你可以自己开展剧情。完成不同的挑战和任务,多种游戏模式,给你不一样的游...
9.4/277.1M
蜀山仙尊是一款玄幻修仙手游。华丽的时装,非常好玩的玩法,可以热血对战,原创的剧情,帮派跨服对战,专属的华丽坐骑,可以轻松养成神装,轻松养成。蜀山仙尊手游介绍蜀山...
8.1/1,182.0M
日常的教务管理工作比较繁杂,若不处理好完全会变得一团糟糕,来使用这款软件吧,功能齐全,操作便捷,无需专门培训,帮你轻松解决复杂问题,让教务工作简单而有序。具才教...
9.3/341.4M
刀剑神域虚空幻界手柄兼容工具是一款可以让你在玩游戏的时候兼容自己的游戏手柄的一个软件,让你可以在电脑上设置手柄的按键和功能,需要的下载吧。刀剑神域虚空幻界手柄兼...
7.6/406.8M
蓝猫动漫苹果版提供给大家,这是一款专门观看动漫的播放软件,无论是国漫,还是日漫、美漫等,都可以在这里及时看到,满足大家的追番需求,且画质超清及以上,播放一点也不...
8.4/1,372.2M
任性猫app是一款致力于为女性提供服务的电商平台,这里拥有海外大牌美妆产品,各种高平直美妆商品在这里都能找到,海外直购,更加放心,权威考察测评,给你更好的购物体...
Replace Studio Pro 专业版8.3.0 最新免费版
9.8/1,317.7M
ReplaceStudioPro是一款非常专业的文本搜索替换软件,这个软件完全的免费的使用,包含多个不同的功能,需要的可以看看!ReplaceStudioPro...
冰火人公主与王子游戏下载-冰火人公主与王子官方版1.2.7 手游版
9.9/1,984.4M
冰火人公主与王子手游需要玩家交替操控勇敢的冰火人王子与公主,在充满魔法元素的关卡中穿梭,破解机关、跨越障碍,只为让两人冲破重重阻隔相聚。更有独特双人合作模式,让...
肆格app下载-肆格app(分享生活圈社交)0.0.38安卓最新版
8.9/546.3M
肆格app是一个改变生活方式直播社交平台,每个人都有自己的生活方式及生活格调,在这里你可以分享出来,找到志趣相投的好友。肆格app软件简介把你有格调的生活分享给...
8.7/1,986.4M
数学口算天天练,包含了多种练习模式,丰富的题目,大量的数字结合在一起,对试题的分解,重组、变形,培养学生的思维能力。口算数学算术手机版介绍非常有趣的口算速算练习...
7.6/1,587.8M
在经常我们在上网的时候是不知道怎么去连接上网,以及一些上网的时候出现的问题都是不知道怎么去解决的,那么现在小编就给你介绍下面的这款不错的电信宽带拨号客户端来帮助...
8.8/1,818.7M
会计从业资格总题库是一款专门帮助会计从事者快速拿到各种会计证书的考试必备软件。不仅有着历年以来的各种考试真题,还有最专业的专家为你在线答疑补缺,让你快速的通过各...
9.6/133.1M
德客软件是一个智能化程序管理软件,它包含了多个不同的管理系统,最为出名的是德客只能收银系统,德客智能管理系统使用非常的简单,打开设置相关数据即可!德客软件介绍专...
末日竟在我身边3下载安装-末日竟在我身边3游戏1.9.0 最新版
8.2/630.4M
末日竟在我身边3是一个全新末日题材的游戏,还有点意思,游戏本身的玩法还不错,这部是续作,像素风格,游戏质量上还是没得说,游戏比较的烧脑,推荐入坑。末日竟在我身边...
搜狗输入法小米小爱下载-搜狗输入法小爱老师定制版1.2.00无广告版
8.1/632.1M
搜狗输入法小爱老师定制版是一个提取版本,也是一个老版本,软件功能简单,没有任何广告和一些花里胡哨的东西,喜欢简洁清爽的版本的朋友可以使用试试。版本介绍搜狗输入法...