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的图标至目标窗口即可.
乐鱼流水没走够 众博网赞助英超 米勒体育 双色球福彩开奖 双色球期期公开展开内容
巫妖王的崛起千古恩怨下载-魔兽地图巫妖王的崛起4.25 千古恩怨
孙亚龙接假发游戏下载-孙亚龙戴假发的手游1.0.3 正式版
OOTD(今日装)3.1安卓最新版
故事树手机版下载-故事树ios版1.0 苹果版
太乙仙魔录2.28地图下载-太乙仙魔录2.28正式版【附攻略】
找抽app下载-找抽app1.12安卓免费版
影音先锋超越版V4.80官方中文安装版
电鸽app免费下载-电鸽网页登录入口1.3.3 安卓版
福建放心粮油平台手机版1.0 苹果版
肥仔快乐餐厅游戏下载-肥仔快乐餐厅红包版1.6 福利版
大主宰第二季a6下载-大主宰第二季a6传送之物附攻略+隐藏密码
惜缘时间助手2.0 绿色免费版
高中数学坚果app1.1.0 安卓最新版
极简线稿下载-极简线稿app头像转线稿1.0.0 免费版
大圣觉醒末日刷充版下载-大圣觉醒末日刷充刷现金boss打金版10.10.10 满v版
AudioLab PRO汉化版下载-AudioLab PRO音乐剪辑软件1.2.997 安卓最新版
真实赛车3国际服下载-真实赛车3国际服2025官方版(Real Racing 3)v13.0.7 北美服
嘉仁普惠app1.1 安卓版
史上最恶搞的游戏1.7.0 关卡解锁版
苦无大师忍者刺客游戏下载-苦无大师忍者刺客小游戏0.4.2 安卓版
中华经典美韵邕城观后感500字-中华经典美韵邕城读后感范文精选优秀版
机器人框架插件论坛下载-机器人框架插件论坛app1.1 安卓版
文生视频AI下载安卓版-文生视频AI人工智能软件1.1.1 最新版
计数扫描王app下载-计数扫描王app1.0.0 安卓版
英雄之时手机版游戏下载官方版-英雄之时中文版0.1.1 最新版
9.1/1,603.9M
QQ空间礼物代刷是一个非常强力的刷空间礼物软件,支持多个小号代刷,2014年新年送礼物神器!使用方法软件使用很简单,只需要准备几个小号,然后使用该软件登陆小号,...
9.9/1,668.1M
OBS虎牙弹幕助手是一款由小葫芦出品的专业用与虎牙直播平台使用的虎牙弹幕助手工具,主播使用这款弹幕助手能够在直播的时候更加方便的读取到粉丝们发的弹幕消息,有需要...
12d1图集-新12D1图形符号与技术资料pdf格式【免费高清电子版】
9.0/495.5M
新12D1图形符号与技术资料,一般又被称为12d1图集。该图集为新疆维吾尔自治区地方标准图集之2012系列建筑电气标准设计图集之一。本节内容东坡小编为大家整理带...
RubyMine2022破解版下载-JetBrains RubyMine 2022.1 破解版221.5080.196 中文免费版
7.7/618.6M
RubyMine2022是一款最新的代码编辑器,专为Ruby语言开发设计,拥有强大的代码编辑功能,还提供智能代码重构、代码深度分析、最简单的配置、完善的管理和控...
金池金融汇app下载-金池金融汇(手机发票软件)1.4.2 官网最新版
8.2/32.5M
想知道自己到底都是收集了哪些发票,如果你想跟更好的收集以及管理的话,现在就可以试试下面的这款最新的金池金融汇app,一键可以帮助你解决问题!金池金融汇app主要...
船务工app下载-船员找工作软件(船务工app)2.0.4 船员版
7.9/300.8M
船务工app是一款专为船员设计的找工作软件,让船务工作人员能够快速找到合适的工作,安全有保障,还能够找到同行业者,欢迎来下载使用!船员有广义和狭义之分。广义的船...
7.7/682.4M
济南招投标app,一款济南市公共资源信息查询软件,用户可以查询济南市建设工程招投标信息,也为“互联网+政务服务”再添新渠道。济南招投标app简介济南招投标是一款...
人教版小学英语三年级上unit2colours-unit2 colours第五课时ppt课件免费下载【人教版小学三年级英语上】
8.3/614.8M
unit2colours第五课时ppt课件也就是小学三年级英语上册新人教版pep的教学课件,非常的详细。完全免费哦,欢迎有需要的朋友前来东坡下载使用,让孩子们更...
9.7/10.4M
啵比大乱斗游戏是一款超好玩的小战场对抗大乱斗游戏,有十多种英雄任你选择,画质高清的经典MOBA竞技游戏。模拟经典公平大乱斗玩法,解锁更多角色,搭配技能组团开黑,...
9.7/98.7M
你的云盘智能助手,云盘万能钥匙在线查询,帮助用户获取百度网盘的提取密码,获得已失效的网盘链接,让网盘分享从此变得更简单。简介云盘万能钥匙,你的云盘智能助手自动识...
9.4/950.5M
阳光威宁app介绍多彩威宁APP客户端是威宁彝族回族苗族自治县融媒体中心旗下的一款新闻资讯发布客户端,是威宁彝族回族苗族自治县权威资讯发布平台。为推动威宁县新时...
8.0/603.3M
想要养成一个良好的生后习惯么?戒客app为用户们提供各种科学合理的习惯养成计划,通过戒客app能够帮助大家合理的安排各种各样的项目,有需要的可以下载。戒客app...
8.6/109.4M
光影修图是一款专业好用的全能修图软件,无论是摄影爱好者,还是生活随手拍,软件都能轻松处理美化照片。丰富多样的修图工具,海量的P图素材,让用户随手就能修好照片,还...
边狱巴士公司手游国际服下载-边狱巴士公司国际服(LimbusCompany)1.5.3 安卓版
9.9/1,058.2M
边狱巴士公司国际服已在海外上线,名称是叫“LimbusCompany”这是一款回合制策略冒险Jemima游戏,玩家将于12位不同的角色在巴士上斗智斗勇,率先找到...
三国志之九州战三国资料篇下载-三国志之九州战1.0.8 三国版
9.9/98.2M
三国志之九州战是一款三国题材的策略手游,汉室衰弱,流匪乱串,群雄割据,中原一片战乱,三国尽现英豪。欢迎下载体验!游戏内容在九州里,当你选择到某一个州,这个州将作...
iphone5se越狱软件官方下载-苹果5se越狱软件(iphone5se越狱助手)2.4.3 官方免费pp助手版
8.5/78.0M
很多人都希望给自己的5se进行越狱,但是又怕一不小心就变成砖头机,其实最好就是通过iphone5se越狱助手,这款是专门用来iphone5se越狱的,让你们不需...
7.5/521.5M
乐活宇宙是一款多功能软件,用户可创建个性化数字分身,使用3D编辑器定制虚拟空间,并支持虚拟商品交易和数字资产运营,打造完整的元宇宙社交体验。乐活宇宙app怎么用...
9.0/194.3M
童年大IP黑猫警长游戏来了,在游戏中玩家和黑猫警长一起公共抵御坏人进攻森林,共同保卫森林的安全,游戏完美的还原了黑猫警长动画的所有角色,经典永不褪色,游戏可玩性...
伪物语白金迪斯科动态壁纸-wallpaper engine伪物语白金迪斯科动态壁纸1080P高清版
9.0/1,676.9M
白金迪斯科是伪物语里的一首非常洗脑的歌曲,在这里为大家带来了wallpaperengine伪物语白金迪斯科动态壁纸,魔性的洗脑循环让你欲罢不能。喜欢的朋友不要错...
青木海报制作下载安装手机版-青木海报制作软件下载1.5.9 手机版
8.3/468.7M
青木海报制作是一款简单易用的专业海报设计工具,适合各类用户快速创建高质量海报,无需设计基础也能轻松上手。青木海报制作app功能介绍提供各行业专业海报模板,满足不...
ChicCam滤镜下载-Chic Cam相机安卓版3.7.13 手机免费版
9.3/1,486.7M
最近非常火的一款艺术相机软件,ChicCam相机有着超多艺术滤镜效果,东坡这里附上了ChicCam安卓版本,免费使用所有功能,操作操作,可以让你的照片一秒变身艺...
7.6/1,788.7M
五子棋啊五子棋,每天不玩几盘都不行,幸好有连珠终结者2008陪着我,有了连珠终结者2008以后,你就可以在这里练习五子棋啦!连珠终结者免费破解版(RenjuSo...
7.8/1,104.3M
寻仙绘卷是一款玄幻修仙的手游,游戏中有非常好玩的副本,可以自由的选择自己的职业,想要竞技玩法有完善的竞技体系,想要休闲的可以选择休闲的江湖悠悠的玩法。寻仙绘卷手...
9.5/756.5M
该软件可以高速下载您指定的任意经纬度范围的卫星地图,并且可以将下载的地图进行无缝拼接,让你能充分使用免费的卫星地图资源,快来下载吧,一起享受畅游世界的乐趣。诺基...
9.2/1,706.0M
九天畅听是一款支持大家免费听书的软件,大家可以凭借该软件免费听全网网络小说,不管是女频还是男频,仙侠还是都市,都能在这里听到你满意的小说,且该软件还有各种福利相...