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

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

Можно ли отправить сообщение из/в консоль [D6, Win2k]


S@shka ©   (2004-01-15 14:36:00) 

1. Отправить сообщение из консольно окна в оконное приложение я так полагаю можно и без проблем.
2. А вот как мне отправить команду в окно консоли из другой проги
(врядли для косоли существует такое понятие как окно :) но можно ли
если у меня там
Please enter some>
Можно ли из другой проги на вход консольно что-либо запулить?


AKul   (2004-01-16 12:18:00) [1]


> BiN ©   (16.01.04 10:38) [17]
> во-первых, слон намного интересней мухи :)
> а во-вторых, об этом лучше спросить у автора вопроса


Согласен...


Digitman   (2004-01-16 10:56:00) [2]


> S@shka


они фигурируют начиная с XP , согласно MSDN


Digitman   (2004-01-16 10:53:00) [3]


> S@shka ©   (16.01.04 10:14) [13]
> Нет таких API функций


http://msdn.microsoft.com/library/en-us/dllproc/base/console_functions.asp


BiN   (2004-01-16 10:38:00) [4]

AKul ©   (16.01.04 10:32) [16]
во-первых, слон намного интересней мухи :)
а во-вторых, об этом лучше спросить у автора вопроса


AKul   (2004-01-16 10:32:00) [5]


> BiN ©   (16.01.04 10:27) [15]
>
> Да, при доступе к произвольному приложению.

По-моему ты из мухи делаешь слона.


BiN   (2004-01-16 10:27:00) [6]

AKul ©   (16.01.04 10:19) [14]
> BiN ©   (16.01.04 10:06) [11]
> ...только при создании этого процесса из своего приложения.


Да, при доступе к произвольному приложению.

S@shka ©   (16.01.04 10:14) [13]
а на мсдн зайти слабо?


AKul   (2004-01-16 10:19:00) [7]


> BiN ©   (16.01.04 10:06) [11]

> ...только при создании этого процесса из своего приложения.


Так разве ж это проблема?


S@shka   (2004-01-16 10:14:00) [8]

> Digitman
Нет таких API функций
GetConsoleProcessList
AttachConsole


BiN   (2004-01-16 10:06:00) [9]

AKul ©   (16.01.04 09:57) [10]
...только при создании этого процесса из своего приложения.


S@shka   (2004-01-16 10:06:00) [10]

нет не буфер обмена.
Консоль
------------------------------------
Введите имя файла:

------------------------------------

ожидает ввода какихто данных - я хочу эти данные передать


AKul   (2004-01-16 09:57:00) [11]


> S@shka ©   (16.01.04 09:36) [8]
> мне надо "запулить" данные
> в его буфер.


Что понимается под буфером? Надеюсь это не буфер обмена.

Что бы передать какие-нибудь данные из приложения в консоль (или наоборот) можно создать Pipe. И дальше обмениваться данными через функции WriteFile и ReadFile.


Digitman   (2004-01-16 09:50:00) [12]


> S@shka


1. перечисляешь консольные процессы (GetConsoleProcessList)
2. среди перечисленных находишь нужный
3. подключаешься к нему (AttachConsole)
4. получаешь хэндл очереди ввода консоли (GetStdHandle)
5. пишеть в очередь то что тебе нужно (WriteConsoleInput)

кажется, это должно выглядеть так


S@shka   (2004-01-16 09:36:00) [13]

GetConsole Я посмотрю,
но дело в том что мне не нужно обрабатывать произвольные сообщения для консольного окна - мне надо "запулить" данные в его буфер.


BiN   (2004-01-16 09:20:00) [14]

S@shka ©   (15.01.04 23:11) [6]
сомневаюсь, что ты сможешь обрабатывать произвольные сообщения, посланные именно консольному окну. Но лучший способ "найти" это окно в W2k - GetConsoleWindow.

В остальном же, ты, я думаю, получил уже вполне исчерпывающие ответы.


S@shka   (2004-01-15 23:11:00) [15]

Ну найти консоль
можно по
var
h : HWND;
begin
  h := FindWindow (nil,'C:\console.exe');
  а дальше??
end;


S@shka   (2004-01-15 16:22:00) [16]

хм выше сформулировал


Digitman   (2004-01-15 16:17:00) [17]


> марсианин ©   (15.01.04 16:02) [2]
> можно создать невидимое окно и слать сообщения ему...


это здесь причем ? речь идет о штатном ConsoleInput-буфере, как стало понятно из вопроса


S@shka   (2004-01-15 16:17:00) [18]

Может я не верно сформулировал вопрос....
У меня есть программа (exe) котороая запускается в консоли.
Она ждет ввода каких то данных.
Могу ли я из другой программы что нибудь передать в эту консоль???
Если да... то как получить дескриптор консоли


марсианин   (2004-01-15 16:02:00) [19]

можно создать невидимое окно и слать сообщения ему...


Digitman   (2004-01-15 14:45:00) [20]

The WriteConsoleInput function writes data directly to the console input buffer.

BOOL WriteConsoleInput(

   HANDLE hConsoleInput, // handle to a console input buffer
   CONST INPUT_RECORD *lpBuffer, // pointer to the buffer for write data
   DWORD nLength, // number of records to write
   LPDWORD lpNumberOfEventsWritten  // pointer to number of records written
  );


Наверх

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