伙计们,如果这听起来像是一个新手问题我很抱歉,但我对整个Windows开发并不十分熟悉。所以我给了App A,它做了很多事情,一个特殊的功能就是渲染一张鸭子图片。在内部,它创建了标题为“DrawingBoard”的Window,稍后当程序准备渲染时,它将尝试找到这个“DrawingBoard”窗口。我只被告知这是App A找到渲染鸭子的窗口的方式:
static const TCHAR TITLE_NAME[] = "DrawingBoardParent";
static const TCHAR TITLE_CLASS_NAME[] = "DrawingBoard";
HWND parent = FindWindowExA(NULL, NULL, NULL, TITLE_NAME);
while (parent != NULL)
{
//find the child window by window title
window = findWindowRecursive(parent, TITLE_CLASS_NAME);
if (window != NULL)
{
break;
}
//no child by the given title name found, go down one level
parent = FindWindowExA(NULL, parent, NULL, TITLE_NAME);
}
现在我需要创建App B,我想在App B上创建自己的“DrawingBoard”窗口。因为App A使用上面的算法来查找渲染窗口,而不是使用它自己的App A“DrawingBoard”窗口,它将使用我的App B“DrawingBoard”窗口。
问题:
1)这是否属于可能性范围? 2)如果App A& B有两个窗口,标题相同“DrawingBoard”。 FindWindowEx中有哪一个(NULL,NULL,NULL,“”DrawingBoard“);返回? 3)如果FindWindowEx总是返回App A“DrawingBoard”窗口的句柄。我如何破解它以便它将返回App B“DrawingBoard”窗口。
感谢帮助人员。
答案 0 :(得分:0)
如果App A& B有两个标题为
"DrawingBoard"
的窗口。FindWindowEx(NULL, NULL, NULL, ""DrawingBoard")
返回哪一个?
这是不明确的。它将返回其中一个。您无法影响返回的内容。
如果FindWindowEx总是返回App A" DrawingBoard"的句柄。窗口。我如何破解它以便它将返回App B" DrawingBoard"窗口。
你做不到。另一个应用程序坏了。它搜索它创建的窗口是破坏的,因为它可能产生错误的窗口,一个来自另一个进程的窗口。
您可以使用窗口的其他名称来避免被此应用程序捕获。但是你真的应该修复或删除有缺陷的程序。这是明智的前进方向。