Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.035 c
14-1091853334
SergP
2004-08-07 08:35
2004.08.29
упал Win2k server. Как-то странно упал...


1-1092570397
mOOx
2004-08-15 15:46
2004.08.29
Выделение цветом в ListView


14-1092383549
Шишкин Илья
2004-08-13 11:52
2004.08.29
Нужна шкала как в Nero


4-1089551383
DeMoN_Astra
2004-07-11 17:09
2004.08.29
Диалап соединение


4-1089985779
Анатолий
2004-07-16 17:49
2004.08.29
Закрыть хендл, принадлежащий чужому просессу.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский