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++差不多。小极WiFi钥匙下载-小极wifi钥匙安卓版(小极wifi钥匙免费版)2.06 官网最新版
打开microsoftspy++,在工具栏选择Find工具,在弹出的windowsearch窗口中拖动Findertool的图标至目标窗口即可.
迪拜pc蛋蛋 亚博注册就送 博彩娱乐中心 双色球 走势图 时时彩外围网站展开内容
智慧荷城app下载-贵港智慧荷城预约口罩平台1.4.2 安卓版
迪哒互动iPhone版下载-迪哒互动苹果版1.0 ios最新版
动管家app-动管家统计app3.9.0 中文免费版
LSPLibrary app下载-LSPLibrary创意工坊1.0.0
兔扑KOL下载-兔扑KOL1.0 安卓版
党建公益app下载-党建公益app3.0 安卓版
2017消防知识竞赛试题及答案-2017年全国首届中小学生消防安全知识竞赛试题及答案1.0 官网版
极光写作app下载-极光写作1.0.0 安卓版
DJ舞曲解析下载工具-dj网站3站合一版高品质舞曲解析下载工具1.0 绿色最新版 【2015DJ舞曲
aecs5.5下载-After Effects cs5.5官方版10.5.0.253 完整版+注册机
孕妇伴侣5.0.2 安卓最新版
猫咪追寻神秘探险手游下载-Kitty Quest(猫咪追寻神秘探险游戏)0.83 安卓版
万能快递单号查询软件-天缘快递查询软件(全能型)1.0 绿色版
派蒙跳下载安装-派蒙跳广告2.2 安卓版
office2016安装包-office2016免费版(Office Professional Pl
Little Warriors.io游戏下载-Little Warriors.io(小勇士大作战)0
猜火车下载-猜火车(火车信息查询)7.8.9 中文安卓版
亿万富婆赚钱游戏下载-亿万富婆app1.8最新版
企业萤石云app下载-企业萤石云安卓版2.5.6 手机最新版
百乐购商城app-百乐购1.0.0手机版
Lake涂色书下载-Lake涂色书app2.3.17 最新版
9.7/507.6M
Lake涂色书app,一款非常好用的解压神器,缓缓地为黑白画布上色,你很快就能感受到情绪压力渐渐消散,还有许多免费画作可以让你尽情发挥。软件特色-每日一幅免费画...
9.4/1,043.2M
麦田儿歌是一款专注儿童早教的儿歌软件,这里包含了非常优美的儿歌童谣,而且不仅有中文版还有英文版,可以很好的提升儿童的语言能力,还可以从很多的方向对孩子们的语言天...
8.7/658.2M
外贸直通车助手就是款能够帮助你在淘宝上做排名的工具,使用它之后就能让你的业务变得的更加轻松快捷,而且还能是实现竞价排名,使其让你节省大量的时间去做其他事情!外贸...
釜底抽薪GM折扣平台版下载-釜底抽薪传奇GM版1.0.5 最新版
9.3/145.2M
釜底抽薪gm版是真正拥有超高福利的变态折扣版传奇哦。是一款经典单职业传奇动作手游,游戏上线即送VIP4+328充值红包+千万元宝+十万天道币,全新打造更新的游戏...
影子世界之暗影国度下载-影子世界之暗影国度1.0.2 安卓版
9.1/1,082.7M
《火柴人战争遗产:来自暗影军团的复仇》是终极的火柴人战争传奇!在这款清新画风的高清实时战略游戏中,体验简单、复古、独立的史诗级战斗。升级你的作战单位,突破极限,...
morgain2016破解版-MorGain 2016.05(结构快速设计)破解版【附注册机】
8.2/1,729.3M
MorGain是非常专业的建筑结构设计软件,功能非常强大,采用的是智能的交互界面,东坡为用户带来的是MorGain2016破解版,里面有注册机,可以生成注册码,...
9.4/69.1M
高达上的作战方式,Q萌可爱的高清画面,令人脑洞大开的策略方式,绝对是你不可错过的手游史收藏品之一,逆天创意玩法,超饱满3D临场感视觉冲击,千万不要错过。勇士传说...
宁归来app官网下载-宁归来(金陵网证)5.0.1 安卓手机版
8.6/1,439.3M
南京市正式开通了网上来宁返宁人员线上登记平台,名字叫宁归来平台,它借助于金陵网证app,用户可以通过此平台登记在南京的各个信息,更方便疫情的管控。南京宁归来平台...
全面战争领主之战下载-全面战争领主之战手游1.0.1 安卓版
10.0/288.5M
有趣会让人上瘾的实时战略游戏,全面战争领主之战以火材人为角色,有不同的游戏模式,控制战士开始进行战斗,将对手摧毁。全面战争领主之战手游特点1.控制你的军队形成编...
北京开学第一课观后感范文大全-2018北京春季开学第一课观后感范文doc 精选版
7.5/1,338.8M
2018北京春季开学第一课观后感范文是由北京市教委和北京电视台联合打造的2018春季开学第一课,主要为了培育孩子们的师德教育,将于26日晚直播,这里附上观后感范...
口袋觉醒qq微信登录版下载-口袋觉醒qq微信版3.1.0.89811 安卓版
9.5/563.6M
口袋觉醒是一款回合制卡牌手游,游戏的玩法非常经典,这款游戏以宠物精灵为主题,玩起来非常可爱,大家在游戏里可以选择各种不同的宠物进行搭配,想怎么搭配阵容就怎么搭配...
8.3/1,292.1M
一伏快充app是一个为新能源电动汽车服务的软件,可以指引车主快速充电,非常方式,支持在线支付!软件介绍通过目的地电站搜索,收藏的电站快速导航,指引用户快速充电!...
云顶之弈刷鸡里奥宝典下载-云顶之弈挂机自动刷鸡里奥工具免费绿色版
9.4/979.0M
云顶之弈刷鸡里奥工具是款免费的辅助脚本,利用这款软件能够轻松的吃到鸡,简单的货到比赛的胜利。云顶之弈刷鸡里奥工具使用说明1.屏幕分辨率设置为1920×10802...
孤胆惊魂2消失的207下载-孤胆惊魂2消失的207游戏v1.1.0 安卓版
8.6/861.6M
孤胆惊魂2消失的207是一款非常好玩的冒险游戏,玩家需要控制角色在地图上探索,击杀各种怪物,寻找游戏世界中的秘密,欢迎来下载体验!孤胆惊魂2消失的207游戏故事...
9.0/74.3M
天天有料是一个关于新闻资讯的软件,在里面有各种搞笑的段子,好玩的图片等,而且每天都有推送更新,喜欢的快来下载使用吧!天天有料app功能特性1、每日新闻抢先看;2...
椒盐音乐app下载安卓-Salt Player椒盐音乐10.8.3 正式版
9.1/1,655.8M
椒盐音乐(此时相望不相闻)这是一个比较有意思版本的音乐软件,主要是用来听歌的,这款软件体积很小,用起来很方便,软件功能也很一目了然,歌曲资源很丰富,喜欢听歌的朋...
9.6/25.1M
互赞联盟是款可以相互点赞提升人气的工具,点赞没有任何的上限,可无限制的进行刷取,各种扣扣,抖音,快手等点赞。互赞联盟软件特色免费在线互刷赞 软件绿色安...
9.7/578.8M
尽可能长时间保持你的球在墙上,只能通过点击屏幕来改变球的方向,这就是小球急转(NyoxZag),速度以及控制力都是不可以缺少的,看看你可以得到多少分!游戏特色玩...
开心通关最新版领红包游戏下载-开心通关1.0.5.9 安卓版
7.7/13.7M
开心通关是一款休闲娱乐的答题游戏,玩家通过答题获得任务奖励,每次通关还有红包赠送,福利多多,题目新颖有趣,玩家在游戏既可以体验到乐趣也可以增长知识。解压必备神器...
8.4/1,343.7M
qq电脑管家cpu温度检测软件是一款可以让你快速的检测自己电脑的cpu温度的小插件,让你可以随时监测自己电脑的情况,需要的下载吧。qq电脑管家cpu温度检测软件...
7.7/987.3M
迸发v20171010十七项修改器是一款使用十分方便的游戏修改器,该软件支持无线生命、无线体力、无限能量、无线科技残片等修改,赶紧下载试试吧。支持无线生命、无线...
7.7/1,956.1M
我们是共荣的少先队员,记得东坡小编读小学的时候,经常要带着红领巾、升国旗、为成为一名优秀的少先队员而自豪。这份2016少先队活动课程,是一份ppt课件,非常的详...
魔天记3D 60倍返利版下载-魔天记3D定制60倍返利版1.0 高返版
8.9/618.2M
魔天记3D定制60倍返利版是一款非常唯美的3D仙侠手游大作,全新的福利版本,最高有机会获得60倍充值返利哦!这款游戏有着传统仙侠手游的各种玩法,很丰富,玩法模式...
湘潭三打哈下载白金岛-白金岛湘潭三打哈官方下载4.0.0.16 安卓版
8.6/748.2M
白金岛湘潭三打哈是一款非常流行的扑克游戏,玩法与经典的斗地主不同,是湖南的一种扑克打发,游戏趣味性十足,玩家可以在游戏中体验到最真实的牌局,湘潭三打哈是一种扑克...
8.2/1,429.4M
鼎盛赚是一款火爆上线的转发资讯赚钱的平台,目前最高单价有0.9元一条,新人注册还有红包福利奖励相送,转发文章更能获得大额收益,上分非常的快!鼎盛赚app好用吗鼎...