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;
не будет работать, он просто напечатает значение указателя, а не строку.