ivanm |
Отправлено: 04.01.2005, 15:32 |
|
Не зарегистрирован
|
Добрый день !
Может быть кто нибудь знает управлять DOS программой из CBuilder-а? Имею ввиду эмулировать ввод с клавиатуры для этой программы.
С уважением,
Алексей |
|
Gedeon |
Отправлено: 04.01.2005, 18:04 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
По моему никак.
|
|
Konstantine |
Отправлено: 05.01.2005, 10:58 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
не знаю как, но ИМХО можно переназначить устройство stdio на управление извне...
|
|
Sl@Sh |
Отправлено: 05.01.2005, 10:59 |
|
Мастер участка
Группа: Участник
Сообщений: 383
|
Есть функции, которые эмулируют нажатие клавиш. Это сработает, если ДОС программа активна (её окно активно). Это конечно догадка(сейчас сам попробую)
Успехов !
|
|
ivanm |
Отправлено: 05.01.2005, 11:30 |
|
Не зарегистрирован
|
Спасибо, попробую сейчас поискать такие функции. Спасибо за советы и участие. С новым годом и наступающим Рождеством всех! |
|
Георгий |
Отправлено: 05.01.2005, 13:50 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
можно всё это сделать. под *NIX делал, но под BCB не получилось вчера вечером начал пробовать и только сейчас плюнул.
для этих целей используются безимянные каналы (анонимные pipe).
в C библиотеках для запуска программы с которой ассоциирован этот канал предназначена функция popen, по при её использовании в BCB в не консольном приложении ничего, кроме сообщения об ошибках, не получил.
начал искать аналоги в WinAPI — и нашёл и функцию CreatePipe и пример её использования для запуска дочернего процесса у которого STDIN и STDOUT наши.
Пример озаглавлен "Creating a Child Process with Redirected Input and Output" и его можно найти в Index файла помощи доступного по ярлыку Borland C++Builder 6->Help->MS SDK Help Files->Win32 SDK Reference
PS. кинешь сюда рабочий пример под BCB как разберёшься?
Отредактировано Георгий — 05/01/2005, 14:56 |
|
AVC |
Отправлено: 05.01.2005, 14:28 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE | Имею ввиду эмулировать ввод с клавиатуры для этой программы.
|
А вы посмотрели чем DOS'овская программа читает клавиатуру. (Лично мне, в свое время, приходилось делать чтения самыми разными способами — прерывания устройства / чтение буфера ОС / функции ОС ...). А то будете заниматься потоками а программа их не использует. |
|
Guest |
Отправлено: 05.01.2005, 14:58 |
|
Не зарегистрирован
|
Конечно нет проблем, как предлагал Sl@Sh, сделать окно с этой самой DOS программой активным и эмулировать нажатие клавиш из windows приложения писанного на CBuilder. Это как крайнее решение. Буду искать более красивое решение. Как найду, выложу тут. Это займет наверное несколько дней. Спасибо. |
|
Георгий |
Отправлено: 06.01.2005, 01:35 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
кстати — программа реально DOS или всетаки обычная консольная?
а то ведь многие DOS проги под WinNT и выше даже не запускаются. |
|
Konstantine |
Отправлено: 06.01.2005, 10:13 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
QUOTE (Георгий @ 06/01/2005, 02:37) | кстати — программа реально DOS или всетаки обычная консольная?
а то ведь многие DOS проги под WinNT и выше даже не запускаются. |
ну если управляться будет из проги Билдера, то чтоб запустить последнюю нужна Винда... а если при этом и должна работать и управляемая прога (ДОСовая), то значить она выполняеться в консоли ч.т.д.
|
|