ВУЗ:
Составители:
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
