在 C++ 中查找窗口

FindWindow in c++

为什么我不能只写:

GetWindowThreadProcessId("Name of Window", &PID);

而不是:

HWND Name = FindWindow(("Name of Window", NULL));

GetWindowThreadProcessId(Name, &PID);

句柄函数有什么作用?比如,如果 HWND 没有什么特别之处,如果它只是存储一个字符串,为什么不直接使用 "string",那么它存储什么?

因为如果我这样做:

cout << Name << endl;

它给出了一个字符串 ???

我在想是不是存储函数:

GetWindowThreadProcessId(FindWindow(("Name"), NULL)), &PID);

从应用程序的角度来看,window 句柄是唯一标识 window 的抽象值,另请参见 What is a Windows Handle? or Handle in Wikipedia。操作系统可能会以不同的方式看待它,并将 window 句柄视为指向包含 window 信息的结构的指针。或者它可能会将 window 句柄视为数组的索引,或者完全不同的东西。但这取决于操作系统。

一个 window 标题不是唯一的,多个 windows 可以存在相同的标题。

GetWindowThreadProcessId 需要确切地知道在哪个 window 上工作,所以你不能将 window 标题传递给函数,但你需要传递 window手柄。

此外,cout << hwnd_value; 将不起作用,它只会打印一个指针值,而不是字符串。