因为我找不到这个问题的答案,所以我进一步研究了MSDN,我找到了isChild().它可能会给我另一个问题的答案.
现在,为了使用isChild(),我需要传递我要检查的父应用程序的HWND,在本例中是我自己的应用程序.如何获得自己应用程序的HWND?
我不知道标题因为它不断变化所以我不能使用FindWindow().
谢谢
编辑:
由于不清楚,我将添加更多信息:我不是在创建一个窗口.我无权访问窗口的创建.我的代码是一段代码,它与其他程序员编写的任何应用程序一起编译,我无法访问窗口的创建方式,标题或任何其他信息.那么,如何将HWND运行到我正在运行的应用程序的"WINDOW"中?
您的应用程序没有HWND.窗户确实如此.应用程序可能没有窗口,也可能有很多窗口,因此"获取应用程序的HWND"没有通用功能.
显而易见的解决方案就是在拿到手柄时握住手柄.创建窗口时,将返回HWND.存储它.
使用GetTopWindow()和GetNextWindow()来遍历windows z-order.
但是,不要认为这是必要的,但是你可以使用GetCurrentProcessId()和GetWindowThreadProcessId(),可能会有以下内容对你有所帮助:
HWND FindMyTopMostWindow()
{
DWORD dwProcID = GetCurrentProcessId();
HWND hWnd = GetTopWindow(GetDesktopWindow());
while(hWnd)
{
DWORD dwWndProcID = 0;
GetWindowThreadProcessId(hWnd, &dwWndProcID);
if(dwWndProcID == dwProcID)
return hWnd;
hWnd = GetNextWindow(hWnd, GW_HWNDNEXT);
}
return NULL;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14517 次 |
| 最近记录: |