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

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

Вывод из неконсольного приложения в консоль... [D7, XP, 2003]


cosinus@bk.ru ©   (2008-10-15 11:01:00) 

Доброе утро.
Проблемма такая, есть неконсольное приложение, которое запускается с некоторыми ключами, как правило из консоли.
Вопрос собственно, как мне в эту же консоль из под которой я запускаю свое приложение, делать какой-либо вывод?
Нашел только AllocConsole\FreeConsole, но это не то, ибо   The AllocConsole function allocates a newconsole for the calling process.А мне необходимо делать вывод в ту же...


Cosinus   (2008-10-16 10:42:00) [1]

Спасибо всем за помощь, буду разбираться.


clickmaker   (2008-10-15 13:32:00) [2]

> Не фурычит. Вообще ничего не отображается

ну попробуй через ShellExecute


Palladin   (2008-10-15 13:22:00) [3]


>  как осуществлять обмен (ввод\вывод) из тела оконного приложения
> в консоль из под которой оно запущено?

WriteLn


Cosinus   (2008-10-15 13:00:00) [4]


> Palladin ©   (15.10.08 12:03) [7]

Спасибо. В моем случае это видимо решит проблемму.
Но это частный случай, а существует ли решение в общем виде, как осуществлять обмен (ввод\вывод) из тела оконного приложения в консоль из под которой оно запущено? Но это уже так... Для развития :)


> clickmaker ©   (15.10.08 12:10) [8]

Эм... Что-то не то. Хотя решение очень красивое и если бы я помнил про type <имя файла>, то посмотрев на описание WinExec, в коем сказано, что This function is provided for compatibility with earlier versions of Windows... pCmdLine:
Points to a null-terminated character string that contains the command line (filename plus optional parameters) for the application to be executed.
наверно бы и сам допер, но про typeя не помнил - давно это было :) Да, если честно, то и в справку по WinExecтолько сейчас глянул. Спасибо за полезную информацию.
А что по поводу, почему "не так" ... Не фурычит. Вообще ничего не отображается, хотя если вбиваю эту строку напрямую в cmd, то естественно все отрабатывает...


clickmaker   (2008-10-15 12:10:00) [5]

> Но мне действительно интересно, как :)

WinExec(PChar('type ' + YourHelpFilePath + ' && pause'), SW_SHOWNORMAL);


Palladin   (2008-10-15 12:03:00) [6]

хм...

program Project1;
{$APPTYPE CONSOLE}
uses
 Windows,
 Forms,
 Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
 If ParamStr(1)='/?' Then
  Begin
   WriteLn('HelloWindows');
   Exit;
  End Else FreeConsole;
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end.

вот только при запуске из FAR например, FAR будет ждать, пока процесс не завершится, в любом случае... как один из выходов придется писать два приложения )


Cosinus   (2008-10-15 11:56:00) [7]


> Palladin ©   (15.10.08 11:45) [3]

Плохиш © совершенно прав :)
У меня приложение неконсольное, а в вашем примере, оно таки консольное. Как раз если приложение {$APPTYPE CONSOLE}, то проблемм то никаких и нет и я с вами полностью согласен, что это элементарно. А в моем случае? И вообще, возможно ли это? Может это моветон? И есть ли смысл с этим заморачиваться, если мне это просто интересно?

Есть как минимум 2 других варианта.
1) Просто сделать все приложение консольным, что сразу прибьет все мои проблеммы
2) Вывести, "как в RAdmin"

Но мне действительноинтересно, как :)


Ega23   (2008-10-15 11:52:00) [8]


> Palladin ©   (15.10.08 11:45) [3]


Он StdIn и StdOut в оконном приложении хочет.


Плохиш   (2008-10-15 11:49:00) [9]


> Palladin ©   (15.10.08 11:45) [3]

Он же не этого хочет :-)


Palladin   (2008-10-15 11:45:00) [10]

program KakVRAdmin;

{$APPTYPE CONSOLE}
Uses
 Windows;

begin
If ParamStr(1)='/?' Then MessageBox(0,'Ну'#13'и'#13'что'#13'тут'#13'сложного?','Как в RAdmin',MB_OK);
WriteLn('Hello Windows');
end.


Cosinus   (2008-10-15 11:14:00) [11]

Вместо ника вбил e-mail (((

То, что я хочу, мне хотелось бы всего-лишь для вывода справки по программе . Можно конечно сделать, как это реализовано в RAdmin, где по ключу /?просто показывается справка в обычном неконсольном окошке, но на мой взгляд, это "некузяво". Да и вдруг потом когда-нибудь понадобится более обширный обмен данными консоли с неконсолью, поэтому, если возможно, подскажите куда смотреть.


> Ega23 ©   (15.10.08 11:12) [1]
Да


Ega23   (2008-10-15 11:12:00) [12]


> есть неконсольное приложение,


это как? В смысле, обычный оконный Application?


Наверх

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