
类型: 理财工具 版本: V4.4
大小: 1,757.5 时间: 2025-11-21





使用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);
至此,基本操作实现。其实我觉得,只要做的好,完全可以自己做一个界面来,取
代它的界面。
处电交友app怎么赚钱
361.0M
推理找茬大师,谁占了我的座?《人菜瘾还大》是一款以“画线闯关”为核心的休闲益智游戏,结合了趣味性、挑战性和社交互动元素,为玩家带来轻松又烧脑的游戏体验。游戏还设...
手机网络兼职调查问卷
267.9M
boss通app专业广大企业者打造的线上资源共享服务平台,能够大幅拓宽你的商业资源,众多商企老板们在线交流促进合作,为你的成功之路奠定更为坚实的基础,绝对是每位...
水晶矿场赚钱
650.4M
Vice在线是一款角色扮演类游戏,玩家将会在洛杉矶或迈阿密等大城市的世界中展开各种各样不同的自由探索玩法。这是一个独特的虚拟世界,玩家能够在这里与更多的人们来进...
偏门0成本犯法
1,750.6M
这里是为大家带来的一篇2016年白色情人节活动策划方案范文,内容策划的十分全面,对整个活动的规划准备也是十分完善,有需要制作相关的活动方案的朋友们可以来我们这免...
开黑坑到底赚不赚钱
590.9M
现在各种活动的结果都是通过抽签投票来进行的,随机抽签与自动计时工具是一款非常简单实用的计时抽签工具,通过随机抽签与自动计时工具能够自定义的进行各种设置,感兴趣的...
什么比直播好赚
1,819.0M
童年是美好的,童年的回忆是五彩缤纷的。随着时间的慢慢流逝,我们渐渐长大,童年和我们渐行渐远。但是童年的回忆我们永远无法忘怀,就和那蓝蓝的天空一样,永远不会褪色。...
点点开黑赚钱吗
258.4M
Hyperdroid中文版是由binaryinc.开发的一款创新型安卓桌面模拟工具,核心功能是在安卓设备上高度还原Windows11桌面系统的UI界面与操作逻辑...
uu棋牌代理
1,376.0M
大家平时在各种专业的论坛或者网站下载资料的时候经常需要各种积分,而这些积分却不是那么好拿,因此很多人看着自己需要的资料却没法得到,那么怎么解决这个问题呢?小编给...
男的学什么技术最挣钱
293.9M
心电图竞速手游是一款跑酷风格的休闲益智游戏,玩家需要控制两个人物进行电图跑酷,在跑酷中要躲避电量聚集点,通过调整快慢的速度,奔跑到终点才算通关。跑酷益智躲避游戏...
网上写作兼职哪个好
472.8M
湘约出行(约租管家)是一个长沙汽车西站推出的省内首款官方汽车票App,市民朋友可以通过app在线购票,并推出预约租车等功能服务,欢迎来下载使用!湘约出行app介...
500棋牌中心
260.1M
安运网上教育app是为道路运输工作者所打造的一款就业资格培训软件,该软件提供了报名、培训、考试一站式服务,帮助每一位学员学习行业安全专业知识,学习内容全面,海量...
火狐提现流水
346.4M
问雄淘宝长尾关键词采集器(淘宝长尾关键词提取器)是一款绿色好用的针对淘宝进行长尾关键词的采集抓取工具。软件功能强大,数据源于淘宝官方,软件根据输入的原关键词(可...
快手刷快币怎么赚钱吗
334.7M
自拍Selfies是一款非常给力的手机图片社交平台,用户通过自拍Selfies能够自由的上传各种图片并且浏览其他用户分享的图片。自拍Selfies介绍用户不仅可...
太极崛起赚钱方法
440.1M
欢迎来到泡泡小镇博物馆!在这里足不出户就可以了解世界各地的知名藏品!和藏品进行互动,让历史变得生动和有趣!更加全面的了解历史知识!让博物馆就住在你的手机里!Pa...
热博rb88提现不成功
64.3M
这是一款手机安全软件,保障你的手机不被病毒的干扰,可以随时备份你的手机数据,全方位保护你的手机安全,智能安全管家软件可以帮助用户提供防泄露,防骚扰,防病毒等特色...
淘宝招聘在家兼职
2025/11/23 07:28
有什么软件能赚q币
2025/11/13 16:09
世界赚钱软件
2025/11/11 00:45
如何网上日赚200
2025/11/12 02:33
广东十一选五赚钱方法
2025/11/08 06:25
小投资景区游乐项目
2025/11/21 23:22
在线棋牌提现
2025/11/18 22:24
财富星课堂兼职
2025/11/23 09:30
2018小投资生意项目
2025/11/21 23:07
正规可提现的梭哈游戏
2025/11/18 15:49
娱网棋牌游戏大厅官方
2025/11/17 15:42
偏门创业冷门生意
2025/11/22 13:22
什么众包挣钱
2025/11/20 12:40
100个棋牌游戏开发
2025/11/17 23:52
挣佣金有保障么
2025/11/25 09:39
挣佣金有保障么
2025/11/25 09:39更新
慢动作视频特效app是一款深受广大用户喜爱的视频转换器,可以放慢你的视频速度,为你带来更多软件的精彩内容,美化了应用运行环境带给我们不一样的感觉。慢动作视频特效...
支持 ( 60 ) 盖楼(回复)
支持 ( 69 ) 盖楼(回复)
支持 ( 30 ) 盖楼(回复)
支持 ( 165 ) 盖楼(回复)
支持 ( 53 ) 盖楼(回复)
支持 ( 135 ) 盖楼(回复)
支持 ( 123 ) 盖楼(回复)
支持 ( 18 ) 盖楼(回复)
支持 ( 41 ) 盖楼(回复)
支持 ( 52 ) 盖楼(回复)
支持 ( 29 ) 盖楼(回复)
支持 ( 95 ) 盖楼(回复)
支持 ( 142 ) 盖楼(回复)
支持 ( 42 ) 盖楼(回复)
支持 ( 68 ) 盖楼(回复)
支持 ( 28 ) 盖楼(回复)
支持 ( 31 ) 盖楼(回复)
支持 ( 41 ) 盖楼(回复)
支持 ( 188 ) 盖楼(回复)
支持 ( 83 ) 盖楼(回复)