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

UptoLike

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

58
IN UINT uFlag);
или с помощью функции:
BOOL GetMenuItemInfo(IN HMENU hMenu, IN UINT uItem, IN BOOL fByPosition,
IN OUT LPMENUNITEMINFO lpmii);
Следующая функция позволяет получить дескриптор выпадающего окна:
HMENU GetSubMenu(IN MENU hMenu, IN int nPos);
Для имитации щелчка на кнопке достаточно проделать следующую операцию:
SendMessage(hWnd, WM_LBUTTONDOWN,0,0);
SendMessage(hWnd, WM_LBUTTONUP,0,0);
где, естественно hWnd должно содержать в себе указатель на кнопку чужого
приложения.
Для имитации щелчка в разделе меню необходимо сделать следующее:
SendMessage(hWnd, WM_COMMAND,*(UINT*)Param,0);
где param номер пункта меню.
В листинге 20 приведен пример получения доступа к меню Калькулятора.
#include "windows.h"
#include "iostream.h"
void main()
{
HWND hwnd;
hwnd=FindWindow("SciCalc","Калькулятор");
if (hwnd!=NULL)
{
HMENU hMenu;
hMenu=GetMenu(hwnd);
if (hMenu!=NULL)
{
int iCount;
Count=GetMenuItemCount(hMenu);
cout << "Menu Item - " << iCount << endl;
}
else cout << " Error Loading Menu" << endl;
}
else cout << " Error Find Windows" << endl;
}
Листинг 20 Получения доступа к меню программы «Калькулятор»
Задание:
1. Написать программу:
запускающую «Калькулятор» и получающую список его дочерних окон и
пунктов меню;
эмулировать программно нажатия пунктов меню и кнопок.
Контрольные вопросы:
1. Как можно в операционной системе Windows найти запущенную программу?
2. Что такое дочернее окно и как к нему получить доступ из внешней программы?
3. Как, зная информацию о дочернем окне, найти главное окно?
IN UINT uFlag);
      или с помощью функции:
BOOL GetMenuItemInfo(IN HMENU hMenu, IN UINT uItem, IN BOOL fByPosition,
IN OUT LPMENUNITEMINFO lpmii);
      Следующая функция позволяет получить дескриптор выпадающего окна:
HMENU GetSubMenu(IN MENU hMenu, IN int nPos);
      Для имитации щелчка на кнопке достаточно проделать следующую операцию:
SendMessage(hWnd, WM_LBUTTONDOWN,0,0);
SendMessage(hWnd, WM_LBUTTONUP,0,0);
     где, естественно hWnd должно содержать в себе указатель на кнопку чужого
приложения.
     Для имитации щелчка в разделе меню необходимо сделать следующее:
SendMessage(hWnd, WM_COMMAND,*(UINT*)Param,0);
      где param – номер пункта меню.
      В листинге 20 приведен пример получения доступа к меню Калькулятора.
#include "windows.h"
#include "iostream.h"

void main()
{
      HWND hwnd;
      hwnd=FindWindow("SciCalc","Калькулятор");
      if (hwnd!=NULL)
      {
             HMENU hMenu;
             hMenu=GetMenu(hwnd);
             if (hMenu!=NULL)
             {
                     int iCount;
                     Count=GetMenuItemCount(hMenu);
                     cout << "Menu Item - " << iCount << endl;
             }
             else cout << " Error Loading Menu" << endl;
      }
      else cout << " Error Find Windows" << endl;
}
         Листинг 20 – Получения доступа к меню программы «Калькулятор»

Задание:
1. Написать программу:
      – запускающую «Калькулятор» и получающую список его дочерних окон и
пунктов меню;
      – эмулировать программно нажатия пунктов меню и кнопок.

Контрольные вопросы:
1. Как можно в операционной системе Windows найти запущенную программу?
2. Что такое дочернее окно и как к нему получить доступ из внешней программы?
3. Как, зная информацию о дочернем окне, найти главное окно?
                                                                                58