
类型: 娱乐影音 版本: V1.5
大小: 402.0 时间: 2026-01-12





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的图标至目标窗口即可.
北京书法培训班兼职
121.9M
瞭望东方周刊是一款非常大型的综合类新闻周刊,能让我们在里面了解什么的知识,学习很多的内容!瞭望东方周刊的基本介绍《瞭望东方周刊》由新华社主管,瞭望周刊社主办,瞭...
手机网上轻松赚钱
1,273.5M
文明5时代复兴手游是所有的喜欢玩帝国游戏的朋友都是非常的喜欢玩的,本站就正式的提供游戏攻略以及礼包,需要的就可以直接的来免费的下载!文明5时代复兴手游礼包礼包内...
2018年水产养殖好赚钱
783.5M
专为成都政务中心打造的一款服务软件,壹点政务app支持天气查询,违章查询,快递查询,政务办事和生活服务等内容,为用户提供了图片,视频和音频等素材上传。功能介绍首...
淘宝客佣金为什么不同
700.0M
葫芦猫是一款买资源非常多的社区平台,这里聚集了各种各样的资源,满足不同用户的需要,涵盖工作、生活和娱乐方面的所有资源,用户能直接下载无需充值,所有软件资源全部都...
每天薅羊毛的平台
268.6M
实力搬砖游戏:这是一款比较另类的跑酷游戏,道路可以自己来创造,在奔跑的过程中你要尽可能收集那些砖块,遇到空缺的地方就能够将其填补。在这款游戏中,玩家需要操控自己...
网上兼职放单
307.1M
宏碁电源管理软件是一款比较专业的电源管理软件,功能很是强大。界面整洁。有需要的可以来东坡下载使用!宏碁电源管理软件说明宏碁电源管理软件是宏碁为旗下笔记本产品提供...
做民宿一个月能赚多少
1,050.3M
如今有很多的人都是在使用各种各样的运动手环的,那么有没有朋友是使用乐跑手环,有的就可以下载这款手环的app,同时还是可以看看是怎么使用的!乐跑手环app介绍乐跑...
养梅花鹿一年能赚多少
470.2M
这个是模拟人生4的STBL编辑器,可以用来导入、导出、编辑STBL文件的内容,比如修改游戏的翻译,有需要的玩家可以下载试试。使用说明1、双击应用程序运行编辑器2...
淘宝模特兼职工资
1,260.7M
NBA2K18是一款非常不错的手机NBA体育游戏,在这里有非常真实的手机篮球对战玩法,还有真实的人物角色,非常的逼真,下面小编就为大家带来NBA2K18解锁版下...
微商团购代理怎么挣钱
273.5M
每一个省级行政中心城市都是有一个飞机场的,喜欢做飞机的朋友都知道,飞机厂是很大的,里面各种设施都很齐全,那么你如何才能找到你需要的东西了?那就要使用机场达人了!...
深圳兼职设计师
1,867.0M
真方便APP作为一款家政服务app,从保洁家政到月子护理,新生儿制品服务。东坡小编推荐,目前支持支付宝和V认证功能。真方便APP软件介绍真方便APP为客户选择家...
越南十大暴利生意
1,764.4M
迷你部队(TinyBusters)是一款很棒的策略战争游戏,在游戏中玩家需要带领自己的部队防御各种敌人,游戏画面是常见的卡通风格,制作精致美观,配乐上休闲成分较...
利用大数据怎么赚钱
810.1M
豌豆荚手机精灵是一款手机电脑系统同步软件,它能帮助您简单快速的管理手机,也为您提供了一个丰富的免费资源获取平台。豌豆荚手机精灵介绍把手机和电脑连接上后,可通过“...
搞什么养殖最赚钱
696.8M
富豪闯三国微信登录版本是款大富翁玩法的原创3D手游,在传统大富翁土地经营玩法的基础上,加入了创新的卡片战斗,卡片合成,房屋建造,运气酒馆,角色必杀等玩法。富豪闯...
网络解答问题赚钱软件
1,417.4M
逍遥修仙诀是一款角色扮演类型的手游,以玄幻仙侠世界为背景,还有超清画质和酷炫的特效哦,玩家将在逍遥世界里尽情遨游,体验激战仙魔界的乐趣。野外激情PK逍遥修仙诀介...
58发网络兼职是真的吗
2025/12/22 10:56
斗音小视频怎么赚钱
2025/12/21 00:05
马路边边加盟赚钱吗
2025/12/27 17:05
能免费抢红包的软件
2025/12/24 13:54
网络兼职发布文章
2025/12/23 09:08
留学中介靠什么赚钱
2025/12/28 11:59
联盟赚
2025/12/30 03:07
牛市股票能赚钱
2025/12/26 22:47
手机做哪些能赚零花钱
2025/12/31 07:45
加盟芙蓉兴盛有钱赚吗
2025/12/30 13:51
玩消消乐游戏赚钱是真的吗
2025/12/31 17:23
装修公司施工队赚钱吗
2025/12/28 21:34
亲友棋牌官网安卓版
2025/12/17 11:52
攀枝花棋牌有电脑版没
2025/12/16 19:12
唱歌的赚钱的软件
2025/12/26 07:50
唱歌的赚钱的软件
2025/12/26 07:50更新
绿城置换二手房官网是极为优质的房屋出售服务平台,在这里涵盖各色优质的房源,用户可以随时随地在线进行看房,非常的方便又实用,如果你也对此方面有所需求的话,那就快来...
支持 ( 91 ) 盖楼(回复)
支持 ( 37 ) 盖楼(回复)
支持 ( 114 ) 盖楼(回复)
支持 ( 161 ) 盖楼(回复)
支持 ( 58 ) 盖楼(回复)
支持 ( 98 ) 盖楼(回复)
支持 ( 26 ) 盖楼(回复)
支持 ( 173 ) 盖楼(回复)
支持 ( 103 ) 盖楼(回复)
支持 ( 105 ) 盖楼(回复)
支持 ( 43 ) 盖楼(回复)
支持 ( 54 ) 盖楼(回复)
支持 ( 110 ) 盖楼(回复)
支持 ( 83 ) 盖楼(回复)
支持 ( 14 ) 盖楼(回复)
支持 ( 90 ) 盖楼(回复)
支持 ( 199 ) 盖楼(回复)
支持 ( 102 ) 盖楼(回复)
支持 ( 14 ) 盖楼(回复)
支持 ( 156 ) 盖楼(回复)