Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

управление внешней програмой [D7]


Wolferio ©   (2006-03-10 16:31:00) 

Добрый день

У меня вопрос: как мне можна управлять  внешней программой из под делфи. например я запустил внешнюю программу, после чего мне нужно сделать ряд операций из под неё например нажать програмно кнопку F10, потом Shift+F3 после чего вийти из нее.
Коротше говоря как мне управлять внешней програмой програмно!


Спасибо!


Morgoth_   (2006-03-21 15:50:00) [1]

так я и думал, ну и ладно )


clickmaker   (2006-03-21 15:38:00) [2]


> есть ли другой способ?

нет


Morgoth_   (2006-03-21 15:35:00) [3]

спасибо за поправки...
есть в управлении чужими программами еще один интересный момент: если нужная кнопочка лежит на панельке, которая лежит на еще одной панельке (и т.д.), до добираться до нее приходится перебирая рекурсией все панели и панели а панелях )))
есть ли другой способ?


clickmaker   (2006-03-21 15:10:00) [4]


> Post как бы получает уведомление о том, что сообщение послано,
>  а Send посылает и пофиг, получит ли его программа

почти наоборот
Post получает уведомление, что сообщение поставлено в очередь (но не факт, что получено)
Send вызывает WndProc, поэтому прога его по-любому получит, но ее право - проигнорировать


0bsid   (2006-03-21 14:29:00) [5]


> > А почему не SendMessage(... я это, не конкретно про Enter?
>
>
> Я сначала и писал SendMessage, но не работало, может из-
> за особенностей программы... А разница между ними, насколько
> я понял перевод, в том, что SendMessage ставит сообщение
> в очередь, а при PostMessage выполняется немедленно.
> Если ошибся, то может кто поправит?

Post как бы получает уведомление о том, что сообщение послано, а Send посылает и пофиг, получит ли его программа


StriderMan   (2006-03-20 19:26:00) [6]


> Я сначала и писал SendMessage, но не работало, может из-
> за особенностей программы... А разница между ними, насколько
> я понял перевод, в том, что SendMessage ставит сообщение
> в очередь, а при PostMessage выполняется немедленно.
> Если ошибся, то может кто поправит?


Наоборот


Wolferio   (2006-03-20 19:12:00) [7]

Что делать когда программа DOSовская? :-))


Morgoth_   (2006-03-13 10:18:00) [8]

> А почему не SendMessage(... я это, не конкретно про Enter?

Я сначала и писал SendMessage, но не работало, может из-за особенностей программы... А разница между ними, насколько я понял перевод, в том, что SendMessage ставит сообщение в очередь, а при PostMessage выполняется немедленно.
Если ошибся, то может кто поправит?


IceBeerg   (2006-03-11 12:16:00) [9]

Morgoth_   (11.03.06 0:01) [4]
PostMessage(

А почему не SendMessage(...я это, не конкретно про Enter?


Anatoly Podgoretsky   (2006-03-11 09:30:00) [10]

Партия дай порулить.


Eraser   (2006-03-11 02:08:00) [11]


> Wolferio ©   (10.03.06 16:31)

название внешней программы - в студию.


Morgoth_   (2006-03-11 00:01:00) [12]

FindWindow(nil, 'загаловак тута'); - искать окно
 FindWindowEx - искать элемент по его классу

послать Enter
 PostMessage(H,WM_KeyDown,VK_RETURN,0);
 PostMessage(H,WM_KeyUp,VK_RETURN,0);

для нажатия сочетания клавиш, например Ctrl + S я делал так:
   keybd_event(VK_CONTROL, 0, 0, 0); // опускаем Ctrl
   keybd_event(Ord('S'), 32, 0, 0);      // опускаем S
   keybd_event(Ord('S'), 32, KEYEVENTF_KEYUP, 0); // поднимаем S
   keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0); // поднимаем Ctrl
Почему именно так не помню, по-моему из-за программы, которой надо было управлять.


Кашперук Иван   (2006-03-10 17:42:00) [13]

Это реализуется с помощью отправки сообщений окну этой самой программы. Примеров здесь много, поищите. Но проблема здесь именно в том, чтобы знать, класс или caption этой программы, если это Оконное приложение, конечно-же, и того элемента, в который вы хотите что-то ввести, к примеру


Jeer   (2006-03-10 17:38:00) [14]

Да напиши свою, пока не разобрался с чужой.


Сергей М.   (2006-03-10 16:35:00) [15]

Может не стоит горячиться насчет кнопок ?
Может "внешняя программа" реализована как сервер автоматизации ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо