有一个外部运行的程序,我需要能够调整大小。对我来说,最重要的是标题的一部分是与该实例相关的版本和其他特定信息。我知道跨版本应该一致的子字符串。我尝试了 Findwindow() 函数,如果你有标题的确切措辞,它会很好用,但当你只有一部分时就不行。我也尝试过 EnumWindows,但我相信它有同样的限制(我没有太多运气)。我觉得我能做的最简单的事情(如果可能的话)就是从图像名称中获取窗口句柄,以便调整大小。想法?
问问题
4647 次
2 回答
4
这是我刚刚在 MSVS 2010 上测试的一段工作代码,它运行良好:
#include <stdlib.h>
#include <string.h>
#include <tchar.h>
#include <windows.h>
BOOL CALLBACK FindWindowBySubstr(HWND hwnd, LPARAM substring)
{
const DWORD TITLE_SIZE = 1024;
TCHAR windowTitle[TITLE_SIZE];
if (GetWindowText(hwnd, windowTitle, TITLE_SIZE))
{
//_tprintf(TEXT("%s\n"), windowTitle);
// Uncomment to print all windows being enumerated
if (_tcsstr(windowTitle, LPCTSTR(substring)) != NULL)
{
// We found the window! Stop enumerating.
return false;
}
}
return true; // Need to continue enumerating windows
}
int main()
{
const TCHAR substring[] = TEXT("Substring");
EnumWindows(FindWindowBySubstr, (LPARAM)substring);
}
于 2012-09-13T15:19:35.940 回答
1
EnumWindows 就是专门为此而设计的。您创建自己的回调函数以传递给 EnumWindows,它将为它枚举的每个窗口调用您的回调函数,并将窗口的 hwnd 传递给它。您可以在回调函数中调用 GetWindowText 来获取窗口标题并像搜索任何其他文本一样搜索该文本。你对那个代码有什么问题?你为什么不发布它?
于 2012-09-13T15:09:56.867 回答