ВУЗ:
Составители:
57
Добраться до родительского окна можно с помощью следующей операции:
while (H=GetParent(hWnd)) hWnd=H;
где сначала в hWnd заносится дочернее окно, а после выполнения – остаѐтся
родительское.
Перебрать все дочерние окна некоторого родительского окна можно с
помощью функции:
Функция EnumChildWindows
BOOL EnumChildWindows
(
HWND hWndParent, // дескриптор родительского окна
WNDENUMPROC lpEnumFunc, // указатель на функцию обратного вызова
LPARAM lParam // значение, определяемое программой
);
Параметры:
hWndParent – идентифицирует родительское окно, чьи дочерние окна должны
перечисляться.
lpEnumFunc – указывает на определяемую программой функцию повторного
вызова. Для получения дополнительной информации относительно функции
повторного вызова, см. функцию повторного вызова EnumChildProc.
lParam – устанавливает 32-разрядное, определяемое программой значение, которое
будет передано в функцию повторного вызова.
Возвращаемые значения
Если функция завершилась успешно, возвращается значение отличное от
нуля. Если функция потерпела неудачу, возвращаемое значение – ноль.
Пользовательская функция объявляется следующим образом:
BOOL __stdcall EnumChild(HWND hWnd, LPARAM lParam);
Эту функцию объявляет и обрабатывает пользователь, при этом первым
параметром приходит дескриптор дочернего окна.
Для получения имени дочернего окна можно воспользоваться функцией
SendMessage, например так:
SendMessage(hWnd,WM_GETTEXT,sizeof(buf),(LPARAM) (LPCTSTR) buf);
где buf, должен быть объявлен ранее, например, так:
char buf[256];
Для получения класса окна, необходимо воспользоваться функцией
GetClassName.
Для полного контроля над чужим приложением необходимо получить доступ
в меню, это можно сделать с помощью функции:
HMENU GetMenu(IN HWND hWnd);
Определив дескриптор меню, легко узнать количество его разделов:
int GetMenuItemCount(IN HMENU hMenu);
А тексты разделов получаются с помощью функции:
int GetMenuString(IN HMENU hMenu, IN UINT uIDItem, OUT LPSTR lpString, IN int nMaxCount,
Добраться до родительского окна можно с помощью следующей операции:
while (H=GetParent(hWnd)) hWnd=H;
где сначала в hWnd заносится дочернее окно, а после выполнения – остаѐтся
родительское.
Перебрать все дочерние окна некоторого родительского окна можно с
помощью функции:
Функция EnumChildWindows
BOOL EnumChildWindows
(
HWND hWndParent, // дескриптор родительского окна
WNDENUMPROC lpEnumFunc, // указатель на функцию обратного вызова
LPARAM lParam // значение, определяемое программой
);
Параметры:
hWndParent – идентифицирует родительское окно, чьи дочерние окна должны
перечисляться.
lpEnumFunc – указывает на определяемую программой функцию повторного
вызова. Для получения дополнительной информации относительно функции
повторного вызова, см. функцию повторного вызова EnumChildProc.
lParam – устанавливает 32-разрядное, определяемое программой значение, которое
будет передано в функцию повторного вызова.
Возвращаемые значения
Если функция завершилась успешно, возвращается значение отличное от
нуля. Если функция потерпела неудачу, возвращаемое значение – ноль.
Пользовательская функция объявляется следующим образом:
BOOL __stdcall EnumChild(HWND hWnd, LPARAM lParam);
Эту функцию объявляет и обрабатывает пользователь, при этом первым
параметром приходит дескриптор дочернего окна.
Для получения имени дочернего окна можно воспользоваться функцией
SendMessage, например так:
SendMessage(hWnd,WM_GETTEXT,sizeof(buf),(LPARAM) (LPCTSTR) buf);
где buf, должен быть объявлен ранее, например, так:
char buf[256];
Для получения класса окна, необходимо воспользоваться функцией
GetClassName.
Для полного контроля над чужим приложением необходимо получить доступ
в меню, это можно сделать с помощью функции:
HMENU GetMenu(IN HWND hWnd);
Определив дескриптор меню, легко узнать количество его разделов:
int GetMenuItemCount(IN HMENU hMenu);
А тексты разделов получаются с помощью функции:
int GetMenuString(IN HMENU hMenu, IN UINT uIDItem, OUT LPSTR lpString, IN int nMaxCount,
57
