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

Вниз

Вывод из неконсольного приложения в консоль...   Найти похожие ветки 

 
cosinus@bk.ru   (2008-10-15 11:01) [0]

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


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


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


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


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

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

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


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


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

program KakVRAdmin;

{$APPTYPE CONSOLE}
Uses
 Windows;

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


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


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

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


 
Ega23 ©   (2008-10-15 11:52) [5]


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


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


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


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

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

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

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


 
Palladin ©   (2008-10-15 12:03) [7]

хм...

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 будет ждать, пока процесс не завершится, в любом случае... как один из выходов придется писать два приложения )


 
clickmaker ©   (2008-10-15 12:10) [8]

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

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


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


> 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, то естественно все отрабатывает...


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


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

WriteLn


 
clickmaker ©   (2008-10-15 13:32) [11]

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

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


 
Cosinus   (2008-10-16 10:42) [12]

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



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

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

Наверх




Память: 0.49 MB
Время: 0.018 c
3-1209540771
IgorBet
2008-04-30 11:32
2008.11.23
Вопросы надежности при частом создании/ удалении таблиц


15-1220610012
Palladin
2008-09-05 14:20
2008.11.23
Программирование на c++ глазами хакера


2-1224146235
Vunda
2008-10-16 12:37
2008.11.23
панель в OLE


2-1223818412
Yura
2008-10-12 17:33
2008.11.23
Где найти описание - DBGridEh? (или статью с примерами)


15-1222070588
DillerXX
2008-09-22 12:03
2008.11.23
Требуется помощь телепатов высокого уровня