前一部分,我已经完成了程序的基本框架,首先通过SPY查找到主窗体的主标题,然后在程序中根据主标题找到翻译软件的窗口指针,然后根据主窗口指针来枚举所有的子窗口(包括子窗口的子窗口);
在枚举子窗口的过程中,每找到一个子窗口,系统会调用 EnumProc函数来做相应的处理。
下面我要在 EnumProc函数中做些“动作”。
系统每找到一个子窗口就会进入 EnumProc函数,当然也包括找到我们的单词输入窗口,所以我现在要想办法确定 进入EnumProc时的子窗口是不是单词输入窗口。
使用spy窗口查找功能(CTRl+F),把瞄准器拖到单词输入窗口,然后释放瞄准器,这样就可以获得单词输入窗口的相关信息。
上面的图显示了,单词输入窗口的句柄和单词输入窗口的类型(Edit),这里单词输入窗口的标题是空的,因为我们的单词输入窗口没有任何单词。点查找窗口上的确定按钮,看下详细属性。
可以看到这里显示了单词输入窗口的详细信息,其中我们要用到的是“控件ID”,这个数据是单词输入窗口的ID号,这个编号
是永远不会改变的,你可以试试把翻译软件关闭后,再次打开翻译软件,然后定位到单词输入窗口看看他的ID号,就知道了。
(注:这个软件输入框的id号是不变的,但是我试验了下.net平台下的winform程序,发现控件ID却是变化的,我不知道为什么,对于那样的情况,我用的是根据控件在spy++中的相对主窗口的“位置”来确定子窗口的,这个以后