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++工具可以检查系统中所有窗口的层次关系,查看其属性遍历窗口,捕捉并查看特定窗口的消息。查看任意windows界面的handle,caption,class信息.另外DELPHI和BCB里有一个WINSIGHT好像和SPY++差不多。
打开microsoftspy++,在工具栏选择Find工具,在弹出的windowsearch窗口中拖动Findertool的图标至目标窗口即可.
3d走势图尾 pc蛋蛋教学 乐鱼现金网充值 360九游会 亚博官网合法吗展开内容
返小妞送优惠券版下载-返小妞2.0.8 手机版
迷鹿云app4.0.0 安卓版
局域网ARP攻击免疫器绿色版
仙剑奇侠传5全版本十项修改器1.0 绿色免费版
米兔定位电话app官方下载-米兔定位电话app安卓版2.2.21.10659 官网最新版
游戏脑筋急转弯6.6.54 安卓最新版
比熊语音app下载-比熊语音安卓版2.4.0 最新版
文件监控软件(FileTrack)下载-文件监控软件(FileTrack)0.1绿色免安装版
华为welink app下载安装-华为welink app7.50.11 最新版
吆乎管理版app1.19 安卓手机版
多乐够级官方版下载-多乐够级带捕鱼版本2.21.3 通用版
暗黑末日1.0.0 iOS版
九州谕官方下载-九州谕手游v1 官方正版
真赵云无双九游版1.4.5 九游客户端
免费软件库.apk最新版下载-免费软件库合集软件2.0.4 安卓版
8.8/413.3M
最近有一个小公鸡爬楼梯手机游戏非常火爆,这款游戏叫TwistySky,游戏玩法很有特色,超好玩的冒险游戏模式,欢迎来下载挑战!超好玩的休闲闯关游戏iphone游...
9.9/763.1M
探索神秘的学校,解开事件的真相,私立高校谋杀案手游拥有诡异的场景,惊悚的bgm,还有详细的故事背景,玩家需要根据重重线索来抽丝剥茧,解开各种离奇事件。私立高校谋...
7.9/1,441.3M
广东话和普通话有很大的区别,主要流行于广东,台湾等地方。这是一个可以将普通话转换成广东话,也可以将广东话转换成普通话的小工具。广东话翻译器有什么用广东话翻译器主...
祭品公主菲娜的冒险汉化版下载-祭品公主菲娜的冒险手机版5.0.0中文版
8.5/1,948.8M
祭品公主菲娜的冒险游戏中你能够扮演公主菲娜,挑战副本的不断开放,能够给每个玩家带来全新挑战,能够带来非常特色的挑战体验,带来精彩多多的掌上英雄对决;展开奇幻的冒...
马钢精益通APP下载-马钢精益通app最新版2.3.79 官方版
8.6/153.2M
由安徽马钢自动化信息技术有限公司开发的一款用于安全预警的办公终端。马钢依托“马钢精益通”搭建了一个“让经验分享、让知识流动”的平台,在全公司推广和分享,营造了“...
大美肥东app下载-大美肥东手机客户端5.3.4 安卓官方版
9.8/1,036.9M
大美肥东手机客户端是肥东地区的生活实用软件,在这里有各种各样的生活服务,包括肥东热点新闻,各种圈子社区交流,还有最新活动消息,本地购物消息等等!肥东本地社区软件...
派克大作战游戏下载-派克大作战(Fling.io)1.0.2 安卓最新版
8.9/1,067.1M
派克大作战(Fling.io)是一款休闲对战游戏,它的玩法非常有意思,玩家在非常大的地图中操作一个小方块,使用回旋镖来攻击对方,获得的分数越高,排名就越高,趣味...
FGTeeV Ape Chase安卓下载-Ape Chase(无尾猿追逐)1.0 安卓版
8.8/914.7M
一款非常好玩的街机游戏,FGTeeVApeChase(无尾猿追逐),你需要到处去搜集一些金币,多样的可爱人物等你解锁。游戏玩法只需来回拖动手指即可安全降落在平台...
个人租车合同电子完整版-个人租车合同范本(简单版)2021新版
8.2/878.0M
我们租车时合同要怎么签呢?这里为大家提供一个规范的租车租赁合同范本,大家在租车的时候还是要有一个书面合同比较好,免得引起不必要的纠纷。个人租车合同范本预览个人租...
UUme欢乐视频官网下载-UUme欢乐视频1.0.6.17官方版
8.8/93.3M
UUme欢乐视频是一款非常好用的视频播放软件。它可以为用户提供高清、流畅的视频体验。同时还支持各种视频格式,还能在线观看视频。有这方面需要的朋友不要错过了,快来...
海南广告网手机客户端-海南广告网app5.0.0 安卓免费版
7.9/1,146.9M
作为一款专业的广告投放平台,海南广告网app为需要进行广告推广的用户提供了更多的广告服务,支持户外和线上各种不同渠道的广告的推送,为有需要的商家提供最全面的服务...
arrow.io苹果-arrow.io(弓箭大作战)1.1.2 ios中文版
7.9/1,598.7M
球球大作战的游戏开发者又出新游戏了,就是这款arrow.io手游,小编为大家带来了苹果版的,赶快拿起你的弓箭,对准敌人,开始射击吧,苹果版的可以选择和好友联机对...
磁盘分区加密工具(BitLocker Drives Unlocker)v1.21 单文件免费版
9.3/1,816.4M
我们每个人的磁盘中,或多或少都有一些不像让人看到的小秘密,毕竟不是每个人都像陈老师一样把自己的作品和大家分享~这款BitLockerDrivesUnlocker...
7.5/209.5M
花式灌篮手游是一款篮球题材的休闲小游戏,为玩家带来了简单的玩法,玩家需要不停的点击屏幕来控制篮球弹跳,让篮球精准的进篮筐就过关了!花式灌篮手游特色1、简单的操作...
9.1/1,894.7M
斗霸皇城是一款非常好玩的ARPG类型的手游。在这款游戏中,创新的玩法,搭配上超爽的视觉特效,一定会带你体验最经典的传奇游戏!而且游戏中还有变态BOSS,杀死掉落...
10.0/1,467.8M
光武帝app用户可以通过APP实时监控光伏电站的运行状态,包括发电量、系统效率、设备工作温度等关键参数。APP可以存储和管理光伏电站的历史发电数据,用户可以随时...
安卓应用推荐-安卓游戏应用推荐平台(人人优推)1.1.0.4 首发版
8.4/550.0M
轻松了解最新的流行趣事,每天都有礼包领取。会员权益大不同,人人优推业界新闻抢先知道。一键下载,零流量。从海量游戏中精挑细选,展示最高清真实的游戏图片,为你提供最...
9.8/1,825.0M
傻瓜水印相机APP,拍照、记录、加水印三合一!海量专业水印模板,覆盖工程、考勤、品牌等全场景,还能自定义文字样式。操作简单,轻松给照片加上专属水印,工作生活都好...
Visual Studio转换器下载-Visual Studio转换器2017版本2.0 绿色免费版
8.5/1,141.4M
VisualStudio转换器2017版本是一款功能强大的VisualStudio版本转换工具,能将vs各版本之间互相转换的,操作简单,使用方便,是编程工作者必...
汇思生活app-汇思生活(智能电风扇控制软件)1.0 手机版
7.5/467.8M
这款软件是一款智能化电风扇控制app,使用这个app你可以对电风扇进行智能化控制,通过点击可以直接的操作风速,可以远程控制进行摇头开关等功能!汇思生活app介绍...
BeetGame下载-BeetGame电竞平台app1.123 官网安卓版
8.8/1,598.0M
BeetGame是一个电竞互动平台,为网友搭建一个虚拟的电竞平台,网友可以在这里关注电子竞技联赛,还能亲身体验电竞经理人的身份,欢迎来下载!BeetGame软件...
Flight Unlimited X游戏下载-Flight Unlimited X1.3 最新版
9.1/1,980.5M
FlightUnlimitedX游戏,一款驾驶飞机模拟飞行的游戏,无限利用先进的流技术,拯救囚犯从恶魔岛,新飞机每周发布一次。游戏简介飞越旧金山湾、拉斯维加斯和...
千米神眼摄像头app安卓下载-千米神眼app2.9.4 手机版
8.8/1,110.6M
智能摄像头管理软件,千米神眼app可以随时的查看到监控画面,各种回放视频都会保留上传到云端随时都可以进行查看。千米神眼app介绍网络摄像头管理终端,帮助连接和管...
skipad跳广告神器下载安装-skipad跳广告软件8.1.1 手机版
8.4/1,752.9M
Skipad跳广告App是一款智能广告屏蔽工具,能自动跳过开屏广告、弹窗广告和视频前贴广告,一键开启即可享受纯净无干扰的使用体验,有效节省用户时间。Skipad...
8.5/1,909.8M
电巢app是一个电子技术交流平台,为电子工程师及爱好者们提供一个学习与讨论的社区,大家一起提高自己!软件介绍电巢是国内最受欢迎的电子工程平台,EDA365粉丝大...