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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
2-1223881796
DJones
2008-10-13 11:09
2008.11.23
Проблема с доступом к private-членам класса


2-1223554453
DJones
2008-10-09 16:14
2008.11.23
Работа с несколькими Combobox - как?


15-1222086150
Parus
2008-09-22 16:22
2008.11.23
Работа с LPT портом


2-1224145722
SpiderWho
2008-10-16 12:28
2008.11.23
Отладка DLL


2-1223996504
Gurd
2008-10-14 19:01
2008.11.23
Назначить edit2 событие onKeyPress edit1





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский