Windows程序都是基于消息机制的,每个程序中都会有各种各样的消息,
如果想通过消息来控制程序的运行,我们只用关心程序中的命令消息
(WM_COMMAND)就行了,其他关于程序界面等等的消息,可以不管。要查看程
序运行的消息,使用VisualStudio中自带的工具spy++。足球大小球
打开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++,在工具栏选择Find工具,在弹出的windowsearch窗口中拖动Findertool的图标至目标窗口即可.
使用microsoftspy++工具可以检查系统中所有窗口的层次关系,查看其属性遍历窗口,捕捉并查看特定窗口的消息。查看任意windows界面的handle,caption,class信息.另外DELPHI和BCB里有一个WINSIGHT好像和SPY++差不多。
中福app下载 欧博平台网站 信博彩票网站 信博彩票违法 澳门博彩纳税展开内容
琪琪和菲菲宠物好朋友1.1 安卓版
抖音聊天电脑版下载-抖音聊天客户端软件1.0.0 windows版
828奔现吧表情包-828奔现吧表白表情包免费下载
软件评测师考试app-希赛软件评测师考试2.8.9 安卓版
Moldflow Communicator2014官方下载-Autodesk Moldflow Communicator 2014官方版正式版【附详细教程】
esc模拟神器下载-esc模拟神器1.0.0 安卓版
动宝足球app下载-动宝足球手机客户端5.1.2安卓版
乐高漫威超级英雄完美存档3DM版
乐桃app下载最新版-乐桃APP(乐课网)5.0.8 官方版
酷酷爱魔兽2手游私服下载-酷酷爱魔兽2手游公益服1.0 安卓福利版
三界独尊魔王手游下载-三界独尊魔王安卓版2.2.1 官方版
河北机关事务保障卡APP下载-河北机关事务保障卡APP1.1.21 最新版
免费翻译软件下载-邦宁翻译通14.10.24.1 官方版
弹珠打砖块游戏下载-弹珠打砖块Balls Break1.2.3151 最新手机版
恐龙模拟2018下载-恐龙模拟2018游戏v4.2 安卓手机版
9.3/1,537.0M
18卡管家app是一款管理你的信用卡的手机软件,支持全国各大银行,可以随时查看自己的信用卡信息!软件亮点安全:独家保单服务,app使用更安全可靠简单:一键使用储...
7.5/147.0M
钢琴掌悦是一款真实模拟钢琴发音以及按键的软件,在这款软件中有些很丰富的功能可以让你来使用,直接一部手机就可以让随时随地打开手机弹起钢琴。钢琴掌悦app介绍一款小...
9.3/1,565.8M
尘落电影网是一个影视资源分享平台,为用户带来了丰富的影视资讯,最新大片,电视剧,综艺,你想要的影视资源这里都有!软件介绍轻松收看最新电影大片,最新网剧的手机播放...
7.7/1,485.1M
致富小镇是一款经营类型的赚钱手游,在游戏中玩家管理一座小镇,你需要用尽办法将小镇经营的更加富强,然后就能领取现金红包啦,在游戏中赚点零花钱没问题,但是想赚大钱就...
ico图标制作软件-CF余音最新ICO转换器1.0 绿色免费版
9.2/1,238.0M
CF余音最新ICO转换器是一款功能强大的ico图标制作工具,本软件不仅支持各种常见格式的图片,还能够自定义生成各种尺寸大小和不同背景颜色的ico图标,非常的实用...
trademanager国际版官方下载-trademanager阿里旺旺国际版8.13.01E 官方最新安装版
9.8/271.0M
阿里巴巴的业务遍布全球,这里东坡小编提供阿里巴巴国际站旺旺——trademanager,简称TM,可以通过TradeManager主动和同行业的买家进行交流联系...
8.4/366.7M
中医医经,无需注册登录,打开即可直接使用,操作零门槛。初次进入显示繁体中文,点击进入阅读页面后自动切换为简体,阅读更顺畅。软件涵盖丰富多样的中医知识内容,支持按...
8.8/1,804.7M
华为小时光是配合华为荣耀立方实用的app,安装后手机都可以荣耀立方当作遥控器使用,非常的方便。华为小时光功能介绍-查看/播放荣耀立方中照片、视频、音乐,并支持推...
查看
7.9/349.0M
各种各样的皮包都是女性的朋友非常的喜欢的,那么快到中秋节了,一些皮包的商家就喜欢做一些活动的,那么现在小编就给你介绍一些中秋节皮包促销psd免费模板素材给你,让...
9.7/1,204.8M
贪吃狗大作战游戏与最新非常火热的贪吃的苹果蛇玩法类似,控制贪吃狗在关卡中越过重重困难,最终成功的吃到食物即可通过关卡,游戏会随着关卡的增加而越来越难,各种卡通的...
7.9/1,512.2M
现在很多的朋友都是开始选择一些很不错的艺术签名的,不管是在手机上的还是在现实中的,那么现在小编就给你的手机上介绍下面的这款点点艺术签名!点点艺术签名介绍超酷艺术...
9.8/1,960.5M
汽车人招聘是一款专门为从事汽车行业的人准备的招聘app,各大汽车行业在里面寻找人才,在线咨询,帮助用户找到心仪的岗位,丰厚的条件,快来下载使用,寻找属于你的职业...
8.1/322.7M
电影频道客户端,可以阅读影视资讯和观看电影频道直播,海量片库任你看,院线新片,新片最权威影评光速送达您手中请签收。应用简介电影频道客户端是一款基于精准推荐有品位...
8.0/757.8M
大阪语音导游是一款专为在大阪而设计的旅游软件,在大阪语音导游app上面你可以随时的查看到众多的周边食品,和相关旅游景点推荐,软件还是十分的实用的感兴趣的可以看看...
8.8/606.7M
魔幻大陆1.6是一款魔兽解密地图,游戏中有6个英雄可以进行选择,喜欢这款魔兽地图的朋友马上下载吧。魔兽魔幻大陆1.6地图介绍地图名称: 魔幻大陆1.6地图类型:...
8.8/1,792.2M
传递伞app是一款共享雨伞应用软件,软件旨在为大家提供专业的、便捷的雨伞共享服务。用户可以轻松扫描二维码使用雨伞,支持三种还伞方式,更重要的是完全免费哦,有需要...
10.0/790.0M
四川12320app是一款四川地区的医疗服务软件,为用户带来了最新的医疗行业资讯,丰富的医疗健康知识,还有最新政策法规等信息!四川12320app功能说明首页:...
7.8/1,135.6M
悠回收app是一款手机回收类型的软件,悠回收可以回收众多的手机,然后直接的进行产品估价,悠回收软件使用起来是完全的免费的,如果你有什么不需要的手机就可以使用这个...
OCR图文识别软件下载-OCR图文识别app1.0.6 安卓免费版
9.1/28.5M
手机上的智能文字图片识别软件,OCR图文识别app可以将多种证件,图片上的文案等信息一键识别出来,反应速度很快,为用户提供了高速,方便的操作,识别出来的文本直接...
勤学app官方下载安装最新版本-勤学app1.8.6 手机版
8.7/400.9M
勤学能够提供智能课程管理服务,支持课表查询、调课转班、课余时间规划等功能,内置班级群聊与多样化学习工具,优化学习流程,帮助用户高效管理学业并提升知识获取效率。勤...
9.0/1,907.4M
猫咪钓鱼是一款简单以及休闲的钓鱼类型的游戏,你可以使用不同的鱼竿来进行钓鱼,同时也是可以通过一些小游戏来提高你钓鱼的气氛,还有特殊的天气系统哦!猫咪钓鱼新手玩法...
8.0/1,830.2M
硬鹅app一款数码爱好者的互相交流平台,更多精彩的话题讨论,可以在线沟通,了解最新的数码资讯,拥有大量的电子产品,可以查看到所要了解到的任何参数,是爱好数码人群...
8.2/1,386.4M
东润智点(北京)科技有限公司官方打造的一款手机拍照识图软件,老马识图app支持一键拍照识别花和物的种类及名字,并支持自动保存记录,对于好奇宝宝来说是必备的神器。...
3D Anatomy破解版下载-3D Anatomy解锁高级版6.8 免费版
8.8/802.1M
3DAnatomy是一个高级的3D解剖平台,提供了详细的3D男女解剖模型、3D肌肉运动模拟、超过1500个教学视频、放射学和横断面解剖视图,以及增强现实功能。该...