【发布时间】:2014-04-22 05:21:05
【问题描述】:
我试图让我的程序点击另一个程序的按钮。我遇到问题的部分是识别按钮的句柄。这是我到目前为止的代码:
BOOL CALLBACK EnumChildProc(HWND windowHandle, LPARAM lParam)
{
cout << "hwnd_Child = " << windowHandle << endl;
cout<<"WindowId: "<<GetWindowLongPtr(windowHandle, GWLP_ID)<<endl;
return TRUE;
}
HWND windowHandle = FindWindow(NULL, "nameOfProgramWindow");
EnumChildWindows(windowHandle, EnumChildProc, 0);
到目前为止发生的事情是我找到了程序父窗口的句柄。使用该句柄,我使用 EnumChildWindows 函数遍历每个子窗口......在其中一个子窗口中,我将拥有包含 3 个按钮的窗口,其中 1 个是我要按下的按钮。在回调函数中我需要放置 GetWindowLongPtr() 函数来获取我正在寻找的窗口的 ID ...但是有一个问题...
问题是每次我再次运行这个程序时,包含按钮的窗口的句柄和 ID 都会改变......所以我不能使用 spy++ 来获取一个 ID 来与得到的 ID 进行比较ID 发生变化。我什至已经测试过了(这就是为什么我有所有的“cout”代码);
问题:我如何在回调函数中识别我正在寻找的窗口(可能还有我正在寻找的按钮)?请不要说 spy++ 导致每次打开程序时 ID 和 Handle 值都会发生变化
【问题讨论】: