利用spy++查找对话框的类名、窗口名,然后FindWindow,FindWindowEx得到句柄,发送相应的消息,就是一个模拟人的操作的基本步骤。
这里记录一个windows的bug(不知道算不算bug,也许是特性??反正找了半天才解决这个问题)
在程序内如果点击Fild->Open会新建一个模式对话框,用spy++查找可以看到父窗口就是程序的主窗口,然后这时候会发现有两个问题:
1、从主窗口找子窗口,然后一个一个的枚举下去是不能找到这个窗口的
2、利用FindWindowEx,不管你怎么搭配参数也是找不到这个窗口的(MAKERESOUREATOM, class name,window name)
后来我明白了:
1、主窗口是这个模式对话框的父窗口,但是模式对话框却不是主窗口的子窗口(也就是单向关系)
2、要想查找这个窗口要用FindWindow,也就是说模式对话框实际是一个top-level的窗口
具体的代码如下
do {
hwndLoad = FindWindow(L"#32770", NULL);
if (GetParent(hwndLoad) &