Russian Belarusian English German Japanese Ukrainian

FindWindow

CuBook25

Все функции требуют указания дескриптора соответствующего окна. Поэтому прежде всего нужно получить сам дескриптор.
Получить дескриптор окна можно функцией FindWindow, которая имеет вид:
HWND FindWindow(const char *lpClassName, const char *lpWindowName);
Параметр IpClassName указывает на строку с нулевым конечным символом, содержащую имя класса. Параметр IpWindowName указывает на строку с нулевым конечным символом, содержащую имя окна (это свойство Caption формы, отображаемое в полосе заголовка окна). Если этот параметр равен NULL, то считается, что под критерий поиска подходит любое окно указанного класса.
 
Если поиск прошел успешно, то функция возвращает дескриптор окна, имеющего указанное имя класса и имя окна. В противном случае возвращается NULL.
Эту функцию легко использовать, если вы знаете имя класса искомого окна. Например, если ваше приложение вызвало другое приложение, созданное вами самими, то вы знаете имя класса формы этого другого приложения. Тогда вы можете, например, с помощью код определить дескриптор окна приложения, класс формы которого TForm1, а значение свойства Caption формы - «Приложение 2».
HWND H = FindWindow ("TForm1","Приложение 2");
Если же приложение, которым вы хотите управлять, создано не вами, то текст полосы заголовка вы легко можете увидеть, выполнив его, а вот имя класса вам неизвестно. Пусть, например, вы запустили из своего приложения программу Windows «Калькулятор», чтобы пользователь смог что-то с его помощью посчитать. Как управлять в дальнейшем этим калькулятором, если требуется, например, его свернуть, закрыть и т.д.?
 
Одна из возможностей узнать имя класса какого-то приложения - воспользоваться поставляемой вместе с C++Builder программой WinSight 32 (файл ...\ProgramFiles\Borland\CBuilder6\Bin\ws32.exe). Запустите интересующее вас приложение, затем запустите WinSight 32, выполните команду Spy | Find Window и вы увидите список всех окон, зарегистрированных в данный момент в Windows. Лучше, чтобы в этот момент у вас было бы открыто не очень много окон, чтобы проще было найти среди них нужное.
 
В списке, который вы увидите, для каждого окна будут указаны среди прочей информации имя класса в фигурных скобках "{ }" и заголовок окна - последний элемент данных в строке каждого окна. Например, запустив «Калькулятор», вы можете с помощью WinSight 32 найти, что имя класса окна этого приложения - «SciCalc». Следовательно, определить в своем приложении дескриптор открытого приложения «Калькулятор» вы можете оператором:
HWND H = FindWindow("SciCalc","Калькулятор");
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий


Защитный код Обновить