gpt4 book ai didi

c++ - GetWindowText() 返回空字符串和奇怪的错误

转载 作者:太空宇宙 更新时间:2023-11-04 14:21:47 26 4
gpt4 key购买 nike

我在全局 CBT Hook 过程中使用以下代码:

TCHAR title[256];
int getT = GetWindowText(hWnd, title, 256);
if (getT == 0) {
int err = GetLastError();
logFile << "Error GetWindowText(): " << err << endl;
} else {
logFile << "getT = " << getT << endl;
}

问题是对于某些窗口,GetWindowText() 函数工作得很好,我得到了正确的窗口标题,但对于其他一些窗口,它返回 0,我得到一个空字符串。 GetLastError() 返回 183,即 ERROR_ALREADY_EXISTS:

Cannot create a file when that file already exists.

这个错误不是随机的:我总是在同一个应用程序打开同一种窗口时得到它,但对于所有其他窗口它似乎工作正常。

最佳答案

您可能无权从 Windows Vista 及更高版本的某些窗口中检索文本。

我的猜测是当您打印“Error GetWindowText():”时,ERROR_ALREADY_EXISTS 来自您的日志文件。在执行任何其他操作之前,您应该先获取错误代码。

另一种可能性是窗口从它的 WM_GETTEXT 处理程序返回 0 而没有设置最后一个错误。正如 GetWindowText 文档所述,如果您在属于同一进程的窗口上调用它,它会通过发送此消息来检索文本。由于您是从钩子(Hook)调用该函数,因此您可能处于同一进程中。

关于c++ - GetWindowText() 返回空字符串和奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7063316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com