HWND
2 отговора
167 прегледа
HWND
Как може да get-вам HWND на прозорец, на който знам само класа. Лошото е, че може да са отворени много прозорци от един клас - например Folders дето са с клас CabinetWClass май. Искам да взема HWND на всички тези прозорци от еди кой си клас. Може ли да стане това - да имам в масив да речем всички HWND на един клас прозорци, без да знам WindowTitle
Няма толкова проста работа, че да не можеш да я объркаш.
Няма толкова проста работа, че да не можеш да я объркаш.
Re: HWND
Ако прозорците които те интересуват са top-level можеш да ползваш EnumWindows. В callback функцията която подаваш като първи параметър проверяваш дали класовото име на прозореца е това което те интересува със GetClassName. Ако прозорците не са top-level, тогава в callback функцията на EnumWindows ще трябва да правиш извикване към EnumChildWindows и в нейната callback да проверяваш дали класовото име съвпада. Общо взето решението не е трудно. Остава въпроса, как ще синхронизираш записаните HWND в масива, с реалната обстановка в системата. Можеш да повтаряш горната процедура през определен интервал от време(май-това е едно от най лощите решения). Друг вариант е да инсталираш хоок процедура и да предприемаш определени действия при прихващане WM_CREATE и WM_DESTROY.
Задължително преди да се обърнеш към някое HWND от масива трябва да го провериш за валидност.
Поздрави от Бургас.
Задължително преди да се обърнеш към някое HWND от масива трябва да го провериш за валидност.
Поздрави от Бургас.