Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.29;
Скачать: CL | DM;

Вниз

Послать текст в скрытое консольное приложение   Найти похожие ветки 

 
DarkLord   (2004-07-12 19:47) [0]

Суть: Есть программа (игра с кваковским движком). Нажатием клавиши в игре можно вызвать консоль и написать там текст. Этот текст появляется в самой игре. Т.е. консоль постоянно висит, как отдельное окно, и активизируется по нажатию клавиши. Есть отдельная, самостоятельная программа, посылающая текст в консольное окно, но КАК она это делает неизвестно.
Помучавшись, я добился вот чего:
Функцией FindWindow нахожу хендл этого консольного окна.
Могу получить длисплейный контекст окна и рисовать там. Все работает, но задача в другом: как послать туда текст? Все попытки успехом не увенчались - сообщение может и посылается, но вот в консоли оно не выводится. Может надо получить хендл буфера или что-то подобное? Надо ли посылать сообщение окну об обновлении информации, или сообщить, что ему (окну) послан текст?

Если можно, то подскажите набросок последовательности действий.
На что еще нужно обратить внимание?


 
VMcL ©   (2004-07-12 20:12) [1]

>>DarkLord   (12.07.04 19:47)

Во-первых, вполне возможно, что игра считывает ввод с помощью DirectInput.


 
DarkLord   (2004-07-12 20:21) [2]

Совершенно левая утилита посылает текст в игру, и он попадает в её консольное окно. Затем этот же текст появляется в самой игре.
Т.е. текст передается в консоль. Вопрос в том, куда конкретно передать? Должен же быть у консоли какой-то InputBuffer? Как получить его хендл?
И надо ли потом сообщить этой консоли, что в буфере есть текст?


 
VMcL ©   (2004-07-12 20:45) [3]

>>DarkLord   (12.07.04 20:21) [2]

AttachConsole() + GetStdHandle() + WriteConsoleInput()
?


 
DarkLord   (2004-07-12 20:58) [4]

Хмм... действительно красиво решается, хотя есть одно НО!
AttachConsole() - есть только в XP и .NET Server, а в других версиях, чем можно заменить.


 
VMcL ©   (2004-07-13 11:51) [5]

>>DarkLord   (12.07.04 20:58) [4]

>AttachConsole() - есть только в XP и .NET Server

Да, в MSDN так написано.

>чем можно заменить

Авторитетно заявляю: не знаю.


 
DarkLord   (2004-07-14 01:32) [6]

Абыдна, да?!
Ведь решение то есть. Сам видел.
Фишки, типа получения StdIn/StdOut хороши, но не совсем.
Попробую еще немного уточнить: если запущены 2 игры, и у каждой будет своя консоль?

1-я игра - "Убей козла" :)
2-я игра - Quake

Находим функциями FindWindow/EnumWindow окно "Quake Console".
Что дальше?
Как получить ссылку на контекст/буфер для засылки текстовых данных?


 
VMcL ©   (2004-07-14 10:01) [7]

>>DarkLord   (12.07.04 20:21) [2]

>Совершенно левая утилита посылает текст в игру, и он попадает в её консольное окно.

Hint: посмотри tdump"ом список импортируемых этой утилитой функций. Может что-нибудь нароешь.



Страницы: 1 вся ветка

Текущий архив: 2004.08.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.043 c
1-1092295643
andrey__
2004-08-12 11:27
2004.08.29
компонент TQueue его метод Pop.


10-1033633458
Comwad
2002-10-03 12:24
2004.08.29
Опять про злосчастный "Assertion faild: _reply_message!=(..."


3-1091476876
snake1977
2004-08-03 00:01
2004.08.29
JOIN & ORACLE


3-1091605426
Олег Пономарев
2004-08-04 11:43
2004.08.29
Тормоза при работе с InterBase 6.1


1-1092372743
CRACKISH
2004-08-13 08:52
2004.08.29
Проверка на заполненость нескольких эдитов