使用microsoftspy++工具可以检查系统中所有窗口的层次关系,查看其属性遍历窗口,捕捉并查看特定窗口的消息。查看任意windows界面的handle,caption,class信息.另外DELPHI和BCB里有一个WINSIGHT好像和SPY++差不多。领创币是怎么赚钱
打开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);
至此,基本操作实现。其实我觉得,只要做的好,完全可以自己做一个界面来,取
代它的界面。
展开内容
8.2/1,139.0M
潮潮语音app是一款非常专业的交友类社区app,这里有很多小姐姐,可以同时和很多小姐姐互动,帮你找到接近灵魂的TA。聊天氛围很好,大家素质都超高。潮潮语音app...
9.8/1,334.3M
随着人们的生活水平越来越好,大部分的家庭都有空调,但是很多情况下租房是没有的,以下是一份家用空调租赁合同模板,给大家进行参考。家用空调加氟多少钱一次加氟也会有明...
7.6/1,918.5M
歌单助手APP_v1.0,民间大神开发的音乐软件,内置5个音源!歌单助手一款供大家免费使用的音乐软件,软件顾名思义,里面的内容都是以歌单的形式展现给大家的,小伙...
8.5/1,828.8M
新上线一个区块链加交友加项目爆粉加精准引流的一个平台,友趣社区app现在注册就可以送一个任务卷轴,支持30天可以产12糖果,支持交易秒变现,目前已开放了商城兑换...
9.8/467.8M
即答法律APP为律师和客户提供高效法律服务,包含智能咨询、案件追踪、电子签名等功能,既帮助律师管理案源,又让客户能一键联系律师,其智能安全设计保障了服务的便捷可...
8.4/792.6M
阿盘搜是一个手机上非常好用的资源搜索软件,这款软件无需登录,打开即用,大家只要输入自己想要的资源,就可以出来全网的资源信息的,覆盖面很广,很好用的。软件介绍阿盘...
8.0/1,697.0M
这是一篇元宵节手抄报大全内容比较丰富,里面共有4篇元宵节手抄报图片,有需要准备元宵节手抄报的同学可以来我们东坡免费的下载这篇元宵节手抄报大全,对大家书写元宵节手...
9.3/1,184.1M
拳汇app下载分享给大家。这是一款专为健身搏击爱好者们打造的平台,一键搜索附近健身搏击畅快,快速预约场馆或者教练课程,无论你是搏击、拳击、格斗、柔术爱好者都非常...
8.4/620.4M
游戏模拟真实的物理环境,RollingLove(物理画线)精心设计的数十个关卡,每一个关卡都有它的特别之处,你可以在游戏中体验到生活中常见的物理知识。游戏特色独...
7.5/1,890.4M
极速优贝app:在线提供的优惠好货商品是真的比较多,随时都可以买到你喜欢的商品还不是分分钟,种类相当全面,喜欢买啥就买啥就是这么方便的事情,消费起来比较放心极速...
8.8/1,379.2M
睡眠小镇是结合睡眠管理与虚拟建造的软件,助力用户建立规律作息习惯。其核心机制是将每日按时入睡、起床的行为,转化为小镇虚拟建筑的建造进度。用户只要遵守设定的作息时...
9.3/1,434.5M
心流AI助手APP是一款聚焦高效知识获取与复杂任务处理的智能工具类应用,APP依托自研大模型技术,整合智能搜索、长文本解读、辅助创作、高级研究等多元功能,主打“...
9.9/1,811.9M
停划算商家app是一款很好用的停车管理软件,软件为商家版本,你可用来发停车券,可以获取停车订单,是一个非常实用的助手软件!软件介绍停划算商家版是一款由中智华清(...
8.4/1,949.4M
小猪狂欢节8游戏是一款特别新颖有趣的冒险闯关挑战游戏,玩法轻松以上手,操作起来难度也不是很高,而且游戏关卡丰富多样,各种刺激的趣味挑战,带给你不一样的游戏乐趣,...
8.4/1,955.6M
NFL生活3D手游是一款非常好玩的橄榄球模拟游戏,你扮演一名橄榄球运动员,需要完成任务并且胜利!我们可以选择玩更多种类的游戏。我们也可以通过参加比赛变得更好。游...
8.7/380.7M
呼唤森林app是一款很不错的森林树认养软件,用户可以在这里了解最新的行业资讯,也可以在这里认养属于自己的树,为未来打造一个美好的森林!一款可以种树的软软件软件介...
9.7/306.1M
J刻出行app是一款非常方便实用的出行软件,在线实时定位出行,快车、专车任你挑选,还支持提前预约打车,随时随地方便节省,J刻出行是你出行的好伙伴!J刻出行app...
9.8/1,791.7M
Autostitch是一款图片剪辑工具,能够自动合成全景照,无需手动p图。喜欢的快来东坡下载吧!Autostitch的特点:1、免费无需安装。2、友好的用户界面...
8.4/717.9M
搭桥达人是一款有趣的休闲益智手游,牛郎织女要相见,但是鹊桥没有了,需要玩家为他们搭一座桥,这需要玩家巧妙的构思,设计出能成功通行的桥梁,感兴趣的小伙伴快来东坡下...
8.1/273.1M
小夏yy注册机为小号全自动注册机,电脑必须为拨号网络才可使用,软件自动读取拨号账号密码,打码采用的是第三方远程打码,方便快捷。有需要的赶紧来下载使用吧。小夏yy...
8.8/821.1M
幽灵狙击手是一款很好玩的枪战类游戏,游戏采用3D技术打造的画面场景,玩家在游戏中将要选择拿手的武器来进行战斗,最终你要作为一个现代的狙击手成功击败敌人。游戏介绍...
8.8/518.4M
可以将企业的价值进行最详细的分析和了解,企业价值评估全套课件ppt在网上需要花几十块钱才可以下载到完整的版本,东坡这里免费分享给大家完整ppt,共有443页,可...
8.3/1,655.8M
爱贝尔月嫂平台APP上线启动仪式,让月嫂与宝妈面对面交流。这个软件是为月嫂端、公司段设计的,有用户下单,根据用户的需求制定服务,在线沟通等等,建立双向的选择,不...
8.6/1,445.0M
热血街篮手游内购版是可以让我们体验自由竞技的篮球游戏,养成你的球星然后开启你的街篮战斗,主要就是3v3的玩法,游戏玩家很多,因为不氪金,而且优化做的也比灌篮高手...
9.0/1,367.0M
标注画笔是一款辅助工具,对图片或者文字进行简单的标注,提供画笔,图形,文字,箭头等工具;在日常生活中,有一些图片标注出来会更醒目,所以标注工具是非常实用的。标注...