【发布时间】:2019-01-18 05:28:26
【问题描述】:
我正在尝试在循环中获取其他 MFC 应用程序的窗口文本(我正在使用 ProcessId 获取其他进程的句柄)。但是,有时我会变得空白。当我在其他 MFC 应用程序上执行某些活动时,有时会得到窗口文本,有时它会消失。我尝试使用 GetLastError 但它在 GetWindowText 返回空白时返回 0。那么有什么方法可以找出我的应用程序或其他 MFC 应用程序中可能存在的错误?
示例代码:
HWND hWnd = GetProcessHWND(<processid>); //This is function created to get
hWnd using process id
if (hWnd)
{
CWnd *pWnd = CWnd::FromHandle(hWnd);
while (pWnd->GetParent())
{
pWnd = pWnd->GetParent();
}
TCHAR chTitle[MAX_PATH];
pWnd->GetWindowText(chTitle, MAX_PATH);
}
【问题讨论】:
-
编辑您的问题以包含minimal reproducible example。
-
请从您的代码中提取minimal reproducible example,没有它,您的问题还没有准备好。此外,您应该在再次发布时添加winapi。作为新用户,也可以使用tour 并阅读How to Ask。
-
我也这么认为,但我在这里读到 (blogs.msdn.microsoft.com/oldnewthing/20030821-00/?p=42833) GetWindowText 不会为其他进程发送 WM_GETTEXT。但是当尝试发送注册消息以获取窗口文本时,但我发现当 GetWindowText 当时返回空白时,该注册消息也无法到达其他应用程序。那么可能是什么原因呢?主线程挂了?