Windows程序都是基于消息机制的,每个程序中都会有各种各样的消息,
如果想通过消息来控制程序的运行,我们只用关心程序中的命令消息
(WM_COMMAND)就行了,其他关于程序界面等等的消息,可以不管。要查看程
序运行的消息,使用VisualStudio中自带的工具spy++。志愿北疆app下载-志愿北疆app1.1.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++,在工具栏选择Find工具,在弹出的windowsearch窗口中拖动Findertool的图标至目标窗口即可.
使用microsoftspy++工具可以检查系统中所有窗口的层次关系,查看其属性遍历窗口,捕捉并查看特定窗口的消息。查看任意windows界面的handle,caption,class信息.另外DELPHI和BCB里有一个WINSIGHT好像和SPY++差不多。
九游7游戏盒子 电竞竞彩怎么买 博亚娱乐首页 众博真人网址 体彩名词猜谜展开内容
x展架psd素材-可爱卡通的招财进宝展架psd模板素材高清分层【折扣狂欢】
百度云直链提取满速下载器-百度云直链获取真实下载地址解析1.0 最新免费版
打金合击版传奇手游下载-打金合击服1.0 高爆版
七月再见八月你好每日说说大全下载-七月再见八月你好每日说说素材TXT完整版
贝拉电竞下载安装-贝拉电竞app1.10 免费
一念倾心手游1.0.9 官方版
OPPO混沌起源送主题时装版下载-混沌起源OPPO渠道服1.0.9送时装版
轻快pdf阅读器app下载-轻快pdf阅读器安卓版1.1.3 官方手机版
聊城聊app-聊城聊3.0.3 官网最新版【聊城社交】
三鱼小说app下载-三鱼小说安卓版1.11.0 正版
滑稽小球io手游1.0安卓版
买不起iphone8表情包下载-IPhone8买不起表情包图片完整无水印版
妙收烟盒app下载-妙收回收烟盒1.0.6 安卓版
从贫民到大亨奇妙人生中文版下载-从贫民到大亨奇妙人生手游1.8.1 最新版
Q宠之森动物花园手游下载-Q宠之森动物花园安卓版138 最新版
8.4/1,220.3M
换钱花app,有信用/信用回收平台,平台具有高价、便捷、安全等特点,用户对旧机评价之后,就可在线下单,审核后,将快速为您安排放款。换钱花app功能【一键检测、智...
9.5/1,184.4M
南海云课堂是一款专为佛山市南海区的学生带来的线上学习平台,整合多个学校的资源,打造我拿个红教师线上课程,让学生在手机上买呢也可以放心上课,学到更多课程。随时随地...
8.2/73.3M
顶端土豪账号让你随意玩,宙斯租号app提供了页游、端游和手游,时下热门的游戏都有包含,价格合理,满足玩一切租号玩的需求。 功能介绍汇聚人气热游:网罗全...
坦克战争未来之战iOS官网下载-坦克战争:未来之战(Tank Combat : Future Battles of Iron Force)1.5.3苹果版
8.0/914.2M
坦克战争:未来之战(TankCombat:FutureBattlesofIronForce)是一款非常火热的科幻战争坦克手机游戏,高清的3D影视画质,犹如科幻大...
7.6/1,752.5M
狗狗汪汪汪的叫、小猫也在不停的叫,不明白它们的意思?那么这款宠物趣味翻译器软件就能让你和猫狗进行对话交流;除此之外,还提供相机功能,时时刻刻的记录下宠物的美好瞬...
9.9/1,910.3M
杺楠IKUN盒是一款语音盒与游戏盒合二为一的软件,在这里你既能听到完整ikun的语音梗,又能玩到各种二次创作的魔性小游戏,感兴趣的小伙伴快来东坡下载吧!杺楠IK...
蚁路行车记录仪app下载-蚁路行车记录仪app1.0.77.210801 官方版
9.6/1,949.2M
蚁路智能车载监控终端,对蚁路行车记录仪进行参数设置等,通过WiFi连接,轻松回看快速连接设备,还原真实现场。蚁路行车记录仪app介绍蚁路App让用户可以通过连接...
8.1/253.3M
温馨校车查询app是一款专为青岛市家长们打造的校车查询软件,家长们通过这款软件能随时了解校车到站情况,途径站点和车牌信息等等,让父母更好的送孩子上学,放心又便捷...
9.6/1,017.8M
主题键盘皮肤是一款可以让用户自定义手机键盘外观的应用程序。通过这款APP,用户可以更改键盘的颜色、字体和背景,使其更符合个人喜好和风格。此外,主题键盘皮肤还提供...
8.2/698.0M
火柴人越狱逃脱是一款休闲益智的密室逃脱游戏,玩家在监狱内将会看到钥匙的所在位置,安全拿到钥匙走出门外就可以获得胜利了,注意避开红色的感应区。游戏介绍在高度设防监...
中国大学mooc慕课下载-中国大学Mooc app5.4.10 安卓最新版
9.5/1,225.4M
MOOC在线教育平台最近也是很多软件开发商的热闹项目,中国大学MOOC是由网易与爱课程网联合推出的在线教育平台,每一个想提升自己的人都可以在这里获得免费的高等教...
9.9/1,084.4M
有药是一款古风卡牌对战策略游戏,玩家需要在游戏中收集到较多的人物角色,不同的人物角色有自己独特的技能和招式,玩家需要用智慧经营自己的角色,让自己变得强大起来,不...
8.8/1,751.0M
法酷律师端app是一个法律服务平台,为律师朋友提供移动工作平台,律师朋友可以接单,拥有丰富法律知识!软件介绍让法律无处不在,让人人有法可依,金牌律师响应,专业分...
俱乐部R在线停车游戏下载-俱乐部R在线停车游戏1.0.8.2 安卓版
9.6/734.0M
俱乐部R在线停车是一款好玩的模拟赛车游戏,玩家在游戏中可以驾驶各种样式的汽车,玩家在游戏中可以选择不同的车型进行尝试,利用自己的车技将不同的车辆稳稳的停到指定的...
10.0/470.5M
巴兔手游盒子app是一个专业的福利游戏盒子,里面有超多福利游戏,超低的折扣,让你体验土豪一般的玩法,各种礼包、随时都可以领取,非常适合喜欢玩游戏的朋友!巴兔手游...
9.2/1,668.2M
千牛特价版app是阿里巴巴旗下专门为卖家开发的移动工作平台,卖家可以使用这款软件轻松地管理商品订单,可以在第一时间接收到买家的咨询信息,同时提供了店铺管理、发货...
帮作业搜答案拍照搜题下载-帮作业搜答案拍照软件1.0.4 最新版
9.1/1,556.0M
帮帮题作业是一款提供便捷优质学习辅导软件,丰富优质的在线题库资源能够全面满足用户相关的学习需求非常实用。经典习题直接收藏这样就能在任意时间查看帮助进行习题复习,...
太极神器app下载安装-太极神器14.0.6.11231507 安卓版
8.1/1,023.7M
太极神器是一款可以帮助用户开启手机中更多权限的实用工具,工具界面布局相当简洁,没有杂七杂八的骚扰广告,除了本身的功能以外,还能当做框架来用,有需要的朋友们快来u...
史莱姆怪物战争游戏下载-史莱姆怪物战争游戏(Monster War - FPS Shooter)1.3 安卓版
8.7/1,136.7M
史莱姆怪物战争是一个充满惊喜和挑战的可爱冒险游戏。通过探索、收集、培养和升级史莱姆怪物,玩家可以打造一支强大的冒险队伍,参与各种丰富多彩的任务和挑战,还可以结交...
两性私人医生app-两性私人医生3.19.1023.1 安卓官网免费版
9.9/14.4M
成长期的和长大成人后,身体上面总是有很多的问题不能够理解,不知道为什么,又不好意思跟爸爸妈妈或者同学老师们说,就可以来问问专业的医生,两性私人医生app匿名制的...
豌豆荚助手电脑版-豌豆荚电脑客户端3.0.0.3003官方正式版
10.0/309.9M
豌豆荚是一款针对android系统的pc管理工具。当您把和电脑连接上后,您可以通过豌豆荚精灵在电脑上方便地管理中的通讯录、短信、应用程序和音乐等。它也能在电脑上...
8.2/1,658.9M
飞象星球是猿辅导旗下打造的互动教育课程,提供了很丰富的功能,专业的教研教学团队,分级模块系统学,进度条灵活掌握,满足教学全场景的技术与服务需求。飞象星球客户端介...
小米5刷机包免费下载-小米5手机专用刷机工具(小米5 Win10刷机工具包)1.0 稳定完整版 【附赠小米5刷机图文】
8.6/1,869.9M
有了小米5之后,到底该怎么刷机呢?这个当然是需要借助小米5Win10刷机工具包,通过这款软件,在借助东坡下载专业教程,就可以帮着你实现完美刷机!小米5刷机工具包...
9.5/949.1M
智慧工具集是一个手机工具箱软件,这款软件为大家提供了很多免费的功能,在这里都是直接使用的不需要下载,打开软件就可以直接用了,而且还会不断的新增新的功能哦。智慧工...
花生壳2.2-花生壳内网版(支持主机映射功能)2.2 官方全能版
7.9/1,776.8M
一款支持支持主机映射功能官方全能版花生壳内网版。新花生壳裸奔,再无束缚无需公网IP无需路由端口映射常见诊断类型(1)不能启动网出现此错误的情况很少,可能的情况是...