Операционные системы. Кручинин А.Ю. - 57 стр.

UptoLike

Составители: 

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