Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.93/14: Рейтинг темы: голосов - 14, средняя оценка - 4.93
pusnet
1

Управление другой программой

16.01.2011, 03:01. Показов 2737. Ответов 1
Метки нет (Все метки)

Есть сторонняя программа, в окне которой размещены различные элементы, которыми нужно управлять.
Например ComboBox. Необходимо менять значения этих элементов управления, выбирать вариант из списка ComboBox.
Как это лучше сделать?
Есть вариант перемещением курсора и кликом на мышке (эмуляция)
но криво работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
double qqq (double tbprice)
{
ClickPos (50,30);
ClickPos (140,140);
ClickPos (141,155);
ClickPos(860,370);keybd_event(VK_UP, 0, 0, 0);
ClickPos (220,140);
keybd_event(VK_DOWN, 0, 0, 0);
Sleep(20);
keybd_event(VK_DOWN, 0, 0, 0);
ClickPos (220,180);
double qqq=11;
return qqq;
}
Функция клика
void ClickPos (int x, int y)
{
SetCursorPos(x,y);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); // нажали левую кнопку мыши
Sleep(30);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); // отпустили левую кнопку мыши ( НЕ ЗАБЫВАТЬ )
}
Можно ли управлять чужим окном, зная класс и имя элемента управления - ComboBox?
Как это сделать?
Если невозможно, то как правильно написать код, чтобы мышкой в комбобоксах выбирались значения, если допустить момент то, что расположение на окне известны?
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.01.2011, 03:01
Ответы с готовыми решениями:

Управление другой программой!!
Доброго времени суток. Такая проблемка--> Нужно сделать програмку, а точнее диск с автомотической...

Управление другой программой через интерфейс пользователя
В общем есть проблема, а именно огромное время, кот тратится на одну онлайн игру, соотв хотелось бы...

Управление другой программой: после открытия программы, в дальнейшем Handle теряется
Если прога изначально работает, а потом мы ищем ее с помощью FindWindow, тогда handle есть. почему...

Управление программой через интернет
Доброго времени суток. Есть два компа, оба подключены по wi-fi к одному роутеру но локалка между...

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
1
Эксперт С++
3942 / 1797 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
16.01.2011, 13:14 2
pusnet, вам необходимо выполнить поиск окна. В случае успешного завершения и существования окна вы получите необходимый дескриптор, используя который можно выполнить перебор дочерних элементов, а затем выполнить отправку сообщения.
Простенький пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
HWND hWnd = FindWindow(NULL, L"Form1");
if (hWnd) {
  hWnd = FindWindowEx(hWnd, NULL, L"TComboBox", NULL);
  if (hWnd) {
    PostMessage(hWnd,WM_LBUTTONDOWN,NULL,NULL);
    PostMessage(hWnd,WM_LBUTTONUP,NULL,NULL);
    Application->ProcessMessages();
    Sleep(350);
    PostMessage(hWnd,WM_KEYDOWN,VK_DOWN,1);
    PostMessage(hWnd,WM_KEYUP,VK_DOWN,1);
    Application->ProcessMessages();
    Sleep(350);
    PostMessage(hWnd,WM_KEYDOWN,VK_DOWN,1);
    PostMessage(hWnd,WM_KEYUP,VK_DOWN,1);
  }
}
4
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.01.2011, 13:14

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Управление программой через командную строку
Доброго времени суток. Есть программа на с++ в Builder 6 взятая тут:...

Нажатие кнопки в окне открытой программы другой программой
Здравствуйте. Имею следующую задачу. Необходимо запустить внешнюю программу и с определённой...

Программа управляющая другой программой....
Здраствуйте многоуважаемые форумчане, помогите мне пожалуйста одолеть такую программу: Есть...

Управление памятью другой программы
Добрый день. Необходим постоянно устанавливать значение переменной в другой запущенной программе в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.