Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Програмное нажатие клавиши в DOS окне

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

NightSpamer



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Долго искал, не нашёл даже идеи, как сделать. Все предлагаемые варианты работают только с Win32-GUI прогами, чем я долго и успешно пользовался. А у меня возникла неприятность в виде старой досовской проги, в которую нужно вбить несколько мегабайт инфы из имеющихся файлов. (Ужос охватил меня при мысли делать это вручную).
PostMessage(hWnd,WM_KEYDOWN,keyCode,0); отлично справлявшаяся с такими задачами в Win-приложениях отказалась что-либо "набирать" в DOS-окне.
Внимание, вопрос: как набрать текст в дос-окне програмно?
 
Есть идея насчёт TSR - по таймеру читать очередной символ из файла и засовывать его в буфер клавиатуры, но я не знаю, как создаются tsr-проги. Лишь пару раз юзал много лет назад.
Если нет более простых вариантов - буду благодарен за примеры с пояснениями tsr прог на С.
 
В распоряжении есть BC++ 5.02.

Всего записей: 291 | Зарегистр. 28-11-2006 | Отправлено: 13:08 07-03-2007
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Когда-то я искал нечто подобное, нашел DOSBox (не тот, который эмулятор). Описание здесь:
 
http://perfectsync.com/pp/DevTools/DOSBoxTools/DOSBoxToolsDescription.php
 
Загрузка проги (не ограниченная по времени шаровара, имеет рекламный баннер), документации и демок:
 
http://perfectsync.com/pp/DevTools/Downloads.php
 
Эта штука сделана под нужды программистов PowerBASIC, но там специфика языка программирования фактически минимальная.

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 15:17 07-03-2007
NightSpamer



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Или я не разобрался, или это не то, что мне нужно (хотя функция "нажать клавишу программе" и присутствует).
-нет(не нашёл) управления данной программой извне. Есть возможность задать одно единственное действие перед стартом, но в дальнейшем файл *.box лочится и не даёт в себя ничего писАть. А нужно. Можно было бы смириться, но:
-строка ограничена 1000 символами
 
Так, что вопрос остался открытым...
 
ЗЫ: Если я действительно не увидел управления, а оно есть - разъясните в личке, пожалуйста.

Всего записей: 291 | Зарегистр. 28-11-2006 | Отправлено: 17:40 07-03-2007
idiMAN

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Попробуй использовать AttachThreadInput и Keybd_Event у меня вроде работало по такой схеме.

Всего записей: 466 | Зарегистр. 05-05-2003 | Отправлено: 12:30 08-03-2007
rain87



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
idiMAN
keybd_event проверял, не пахает
можно попробовать SendInput (хотя по логике - то ж самое, что и keybd_event, но чем чёрт не шутит)
AttachThreadInput тоже стоит попробовать

Всего записей: 1744 | Зарегистр. 21-06-2006 | Отправлено: 14:50 08-03-2007
NightSpamer



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Интересная идея с AttachThreadInput с треском провалилась. К этому [censored] дос-окну не аттачится. Точнее, ошибки при вызове не происходит, но ожидаемого эффекта(перенаправления/дублирования ввода) нет.
SendInput (keybd_event) работают через пересылку сообщений (PostMessage), а неработоспособность этого метода и вынудила меня просить помощи.
Кажется, осталось 2 пути: страшный с tsr и нудный с набиванием вручную.
UPD. Нет. Нашёл то, что мне было нужно. Осталось добавить пару фишек, типа паузы после ввода.
Оставляю копию найденного *.pas тут. Вдруг кому ещё?...
Подробнее...

Всего записей: 291 | Зарегистр. 28-11-2006 | Отправлено: 11:13 09-03-2007 | Исправлено: NightSpamer, 11:54 09-03-2007
dmka



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
страшный с tsr

да на нет там ничего страшного, во времена DOS-а студиозы их пачками писали Примеров в инете должно быть достаточно, просто давно это было и вряд-ли кому-то хочется это вспоминать.
 
Сори за глупый вопрос, но если запусить в окне под Win32 и сделать Edit/Paste... Не помогает?

Всего записей: 947 | Зарегистр. 23-04-2003 | Отправлено: 12:09 09-03-2007
NightSpamer



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dmka, тема просто очень хорошо забыта. Вот и страшно. Пример нашёлся (см.выше) и уже переделан под себя.
Не менее сори за ответ. Нужно забить (1) несколько метров инфы и (2) в различные поля проги - т.е. активно используя курсор, кнопы F1-F12 и сочетания типа Ctrl+Enter.
С помощью буфера это всё равлизовать не удавалось, но... решение найдено.
Тему можно закрыть.

Всего записей: 291 | Зарегистр. 28-11-2006 | Отправлено: 15:52 09-03-2007
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Програмное нажатие клавиши в DOS окне


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru