打开microsoftspy++,在工具栏选择Find工具,在弹出的windowsearch窗口中拖动Findertool的图标至目标窗口即可.淘客街怎么赚钱
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++差不多。
展开内容
8.0/917.3M
现在的很多程序运行时都会修改或编辑注册表,而且常用的清理软件也会进行注册表清理,虽然说这些都是必要的,但一旦出现失误,就会影响到系统的稳定性,可以说注册表是...
7.6/52.2M
沈阳住房公积金手机APP正式的上线以及发布了,全新的功能以及方便所有的市民可以在手机上面直接的办理各种各样的业务,心动以及有需要的现在就可以来免费的下载!沈阳公...
9.6/851.3M
阡陌车驿站app是,一款专为“中小型汽车车行门店”打造的一站式管理软件。充分利用了手机客户端:体积小、方便携带、可拍照、可联网等优秀的特性,最大程度地提高汽车车...
7.8/1,199.1M
3D相机app是一款3D拍照app,用户可以通过这款照相机来实现照片3D效果,非常逼真,让你的照片显现出一片真实的场景。真实3D相机软件介绍现场可让您捕捉和分享...
8.0/1,146.4M
这是一个可以连接s60无人机的软件,非常强大的功能,可以帮助你快速操作无人机上面的摄像头,非常好玩的体验,手机操作也比较方便哦!Starlink(s60无人机手...
9.6/1,959.8M
足球相扑SoccerSumos是一款可以多人玩的休闲益智游戏,游戏以足球为主题,玩家控制足球进行进攻或防守,游戏场景逼真,拥有欧美风格,喜欢足球的小伙伴们赶快来...
9.9/956.8M
哎呦TV软件是一款免费追剧app,为不同年龄段的影迷综合了各地区电影电视剧资源,全方位满足大家的需求。用户可以按照个人喜好在对应的视频栏目中进行筛选和观看,同时...
9.9/789.9M
现在出门旅游都最好提前预定酒店,要不然到了旅游景点很难找到满意的酒店,一呆公寓app是一款度假酒店预订软件,专业为i用户提供专业、高效的订房服务,让你拥有一个愉...
8.6/870.9M
我是市长2021无限金币绿钞是一款超级好玩的模拟游戏。玩家将在游戏中成为这座城市的市长。利用各种特殊的方法来不断地赚钱,操作简单方便,还有各种的游戏模式,让你享...
9.6/338.5M
乌鸦(匿名社交软件)是一款具有独特创新的社交软件,在“乌鸦”的世界里,没有利益关系的熟人,想说啥就说啥!畅说欲言!喜欢这款软件的网友赶紧来下载吧!乌鸦软件介绍有...
8.1/1,427.9M
风云高爆版是根据风云的动漫改编而来的游戏,游戏的亮点在于上线送v15而且爆率非常的高,在游戏之中我们可以体验到最真实的武侠格斗,用你的操作征服所有,感受国风武侠...
7.8/258.4M
这款游戏是超热血的爆射手机游戏,以经典的热血奇兵系列为玩法,超多的英雄角色可以挑战,游戏关卡是非常之多的,玩起来十分刺激,游戏可以自由升级你的角色,轻松获得战胜...
8.8/1,843.4M
米卡盒子是一款非常好用的桌面美化工具,内置海量高清壁纸、手机小组件、多样主题套装等,软件占用内存小,使用方法简单,帮助用户轻松打造个性手机桌面!米卡盒子如何应用...
8.3/1,528.5M
抽棍子大挑战游戏很好玩,不仅可以锻炼大脑还可以锻炼反应能力,锻炼小孩子的思维逻辑,画面音乐也轻快有力,即好玩,又不会沉迷其中,闲下来的时候可以打发时间,还可以锻...
9.6/1,596.0M
我的换装娃娃是一款非常具有趣味性的卡通风格休闲换装游戏,游戏中有很多不同的服饰,玩家可以自由的选择各种服装,不同的道具让大家来自由的搭配,按照自己的想法,更换不...
9.8/1,375.5M
僵尸岛3新世纪1.5.0正式版是一张生存加防守玩法的地图,现在已经更新到了1.5.0正式版本了,小编附带攻略和隐藏英雄密码分享,非常刺激的一张图,难度可以任意挑...
8.7/251.0M
这款游戏是简单好玩的投掷暗器解谜休闲游戏,可以通过点击发射飞镖,通过射击士兵来过关,游戏采用关卡玩法,每一个关卡难度都是不同,越到后面需要射击的人就越多,并且还...
7.8/1,718.8M
一款搞笑的图片,喜欢的朋友就千万不要错过,这款抱着各种水果哭图片,是小编我辛苦的帮大家找的一款最新的抱着各种水果哭图片。抱着各种水果哭图片使用方法下载软件,手机...
8.4/1,916.6M
iuv软件是一款聚焦“社交娱乐”场景的交友应用,核心以“语音连麦、兴趣匹配、直播互动”为特色,旨在帮助用户快速结识志趣相投的朋友,兼顾“日常社交、游戏开黑、情感...
8.7/1,162.2M
花城电视课堂广州广播电视台是广州市针对疫情推出的线上课堂。支持电视和手机渠道,广大中小学生可以进行线上教育学习。这里有教学视频资源同步放出,学生不返校,在家安心...
9.2/128.8M
该安全输入控件补丁程序是针对少部分电脑在安装了广东农信网上银行密码输入控件(版本2.4.20.0)后无法正确识别大小写,导致登录时报“用户名或密码无效”的错误,...
8.3/964.7M
史上最坑爹的游戏4电脑版来了,一波更比一波坑爹。真是太好玩,太坑爹了,有着各种特别的关卡,让你爆笑不停,而且游戏画面十分搞笑,还有更多的搞笑语言尽在史上最坑爹的...
9.9/313.7M
雷霆传奇折扣版是一款MMOPRG传奇类经典手游大作。游戏完美复刻了经典传奇的玩法内容,你可以使用喜欢的战法道三职业加入战斗进行pk。千人同屏攻城战斗,细腻的操作...
8.2/877.8M
星月辰途手游全新版本推出,这是一款高质量的仙侠神作,跌宕起伏的新冒险,扣人心弦的新玩法,无与伦比的全新剧情故事,飞仙问道御剑临空,一起解锁星月辰途的全新游戏内容...
7.8/582.4M
牧场大亨是一款以农场为题材的模拟经营类产品,适合的人群较广,在这个世界里,你可以发挥你天生的创造天赋,玩家想要拥有一个什么样的家园,就可以用自己的辛勤劳动建造成...