C/C++ - Как с помощью Скрипта С/С++ открывать программу и вносить в нее изменентя

Ответить
 • Просмотры: 1
Аватара пользователя
anatolii_fedorov@vk

C/C++ - Как с помощью Скрипта С/С++ открывать программу и вносить в нее изменентя

Сообщение anatolii_fedorov@vk »

Посоветуйте что-то или помогите решить следующую задачу, для меня это абсолютно ново:



Есть программа, которая работает с электронными устройствами защит (SOFT):



- необходимо ее запускать (путь - C:\Programm Files\SOFT\soft.exe);

- программа имеет структуру проводника Windows, необходимо обратиться к одному из каталогов в дереве (Project\North Region\Substation);

- внутри этого каталога находится устройство защиты (иконка - Device);

- если ее открыть вручную, то открывается окно в котором необходимо выбрать вариант связи с устройством (например - Ethernet).



Для начала хотя бы эти шаги, может быть на примере с какой-то другой программой.

Спасибо.
Аватара пользователя
mrcnn

Re: C/C++ - Как с помощью Скрипта С/С++ открывать программу и вносить в нее изменентя

Сообщение mrcnn »

Сомневаюсь, что задача решается на VBS, а на C ее решить возможно.

Запуск делает функция system(путь)

1. Получение HWND запускаемой программы (поиск перечислением процессов)

2. Получение HWND контролов, которые есть в программе

Делается имитация выбора(в зависимости от того, какой контрол)
Аватара пользователя
Coutty

Re: C/C++ - Как с помощью Скрипта С/С++ открывать программу и вносить в нее изменентя

Сообщение Coutty »

Для подобных целей создали скриптовый язык
AutoIT
. Почитайте документацию - там есть конкретные примеры как сделать "Запуск программы, ожидание открытия окна, совершение действий".
Аватара пользователя
anatolii_fedorov@vk

Re: C/C++ - Как с помощью Скрипта С/С++ открывать программу и вносить в нее изменентя

Сообщение anatolii_fedorov@vk »

Вопрос по 1 и 2, как выполняется получение этого HWND и поиск. Если знаете может ссылку на пример...
Аватара пользователя
mrcnn

Re: C/C++ - Как с помощью Скрипта С/С++ открывать программу и вносить в нее изменентя

Сообщение mrcnn »

Пример на С





Код:

Код: Выделить всё

#include 
#include 
#pragma comment(lib,"user32.lib");
#pragma comment(lib, "kernel32.lib");
#pragma comment(lib, "gdi32.lib");
BOOL CALLBACK eproc2(HWND hwnd, LPARAM l)
{
char c[1024];
printf("eproc2: %x\t", hwnd);
GetWindowText(hwnd, c,1020);
printf("%s\n", c);
return 1;
}
BOOL CALLBACK eproc1(HWND hwnd, LPARAM l)
{
LPARAM l1;
char c[1024];
printf("eproc1: %x\t", hwnd);
GetWindowText(hwnd, c, 1020);
printf("%s\n", c);
EnumChildWindows(hwnd, &eproc2, l1);
return 1;
}
int main()
{
LPARAM l;
EnumWindows(&eproc1, l);
}

подобным можно получить хэндл окна и хэндл контролов в окне, а имитацию нажатия можно сделать функцией SendMessage, у которой первым параметром является хэндл окна, вторым тип сообщения, третьим wParam сообщения, четвертым lParam сообщения.



Клик мышью в контроле осуществляется сообщениями WM_LBUTTONDOWN и WM_LBUTTONUP.
Ответить

Вернуться в «Программирование и базы данных»