借助Spy++向指定的窗口发送消息—2

本文介绍如何借助Spy++找到翻译软件的单词输入窗口句柄,并利用SDK的SendMessage函数发送WM_SETTEXT消息,实现向窗口输入文字。通过获取控件ID并检查其是否匹配来定位目标窗口,从而实现自动输入功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 前一部分,我已经完成了程序的基本框架,首先通过SPY查找到主窗体的主标题,然后在程序中根据主标题找到翻译软件的窗口指针,然后根据主窗口指针来枚举所有的子窗口(包括子窗口的子窗口);

在枚举子窗口的过程中,每找到一个子窗口,系统会调用 EnumProc函数来做相应的处理。

下面我要在 EnumProc函数中做些“动作”。

 

系统每找到一个子窗口就会进入 EnumProc函数,当然也包括找到我们的单词输入窗口,所以我现在要想办法确定 进入EnumProc时的子窗口是不是单词输入窗口。

 

使用spy窗口查找功能(CTRl+F),把瞄准器拖到单词输入窗口,然后释放瞄准器,这样就可以获得单词输入窗口的相关信息。

 

 

上面的图显示了,单词输入窗口的句柄和单词输入窗口的类型(Edit),这里单词输入窗口的标题是空的,因为我们的单词输入窗口没有任何单词。点查找窗口上的确定按钮,看下详细属性。

 

 

可以看到这里显示了单词输入窗口的详细信息,其中我们要用到的是“控件ID”,这个数据是单词输入窗口的ID号,这个编号

是永远不会改变的,你可以试试把翻译软件关闭后,再次打开翻译软件,然后定位到单词输入窗口看看他的ID号,就知道了。

注:这个软件输入框的id号是不变的,但是我试验了下.net平台下的winform程序,发现控件ID却是变化的,我不知道为什么,对于那样的情况,我用的是根据控件在spy++中的相对主窗口的“位置”来确定子窗口的,这个以后

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值