FindWindow в C++

Почему я не могу просто написать:

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

вместо:

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

GetWindowThreadProcessId(Name, &PID);

Что делает функция Handle? Например, если с HWND не было ничего особенного, если он просто хранит строку, почему бы просто не использовать "строку", так что же она хранит?

потому что если я сделаю это:

cout << Name << endl;

это дает строку???

Я думал о том, если он хранит функцию:

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

1 ответ

Решение

В представлении приложения дескриптор окна - это абстрактное значение, однозначно идентифицирующее окно, см. Также Что такое дескриптор Windows? или ручкой в ​​википедии. Операционная система может видеть это по-другому и видеть дескриптор окна как указатель на структуру с информацией об окне. Или он может рассматривать дескриптор окна как индекс в массиве или как что-то совершенно другое. Но это зависит от операционной системы.

Заголовок окна не является уникальным, несколько окон могут существовать с одинаковым заголовком.

GetWindowThreadProcessId Необходимо точно знать, над каким окном работать, поэтому вы не можете передать заголовок окна функции, но вам нужно передать дескриптор окна.

Кроме того, cout << hwnd_value; не будет работать, он просто напечатает значение указателя, а не строку.

Другие вопросы по тегам