Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > GUI для консольного приложения


Автор: pomogite 2.3.2010, 19:01
Здравствуйте, у меня есть консольное приложение запускающееся с параметрами, хотелось бы написать GUI интерфейс к этой программе, как можно это реализовать, например я в Форме ввожу в первом Edit '5' во втором Edit '4' нажимаю кнопку? далее запускается моя 2 программа умножает эти числа, в Edit 3 появляется - 20, консольная программа закрывается...подскажите каким образом это можно сделать? 

Автор: dvamaster 3.3.2010, 07:47
совет первый: Открой MSDN

совет второй: есть функция CreateProcess, у ней параметр lpStartupInfo: TStartupInfo


Код

  _STARTUPINFOA = record
    cb: DWORD;
    lpReserved: PAnsiChar;
    lpDesktop: PAnsiChar;
    lpTitle: PAnsiChar;
    dwX: DWORD;
    dwY: DWORD;
    dwXSize: DWORD;
    dwYSize: DWORD;
    dwXCountChars: DWORD;
    dwYCountChars: DWORD;
    dwFillAttribute: DWORD;
    dwFlags: DWORD;
    wShowWindow: Word;
    cbReserved2: Word;
    lpReserved2: PByte;
    hStdInput: THandle;    // это поле заслуживает твоего внимания (ввод данных)
    hStdOutput: THandle;  //  это поле заслуживает твоего внимания (получение данных)
    hStdError: THandle;     // это поле не особо заслуживает твоего внимания (получение данных ошибок, обычно равно hStdOutput)
  end;


для hStdInput, hStdOutput, hStdError удобно использовать пайпы, чтение и запись в них идет через WriteFile

Автор: Snowy 3.3.2010, 11:25
CreateProcess, ShellExecute... Примеры запуска программы с параметрами есть в FAQ и DRKB.
А ловить переданные параметры через ParamStr и ParamCount.
Вобщем-то всё довольно просто. Так что даже не знаю, что из этого нужно разжевывать.

Автор: pomogite 3.3.2010, 23:55
Ну вот например прогамма запустилась с параметрами programm.exe -5 5 выполнила умножение, на экране в командной строке  вывела -  otvet 20 и вот как терь мне эти 20 обратно вернуть в форму?  При том что вторая программа написана не мной и исходников нет. 

Автор: Snowy 5.3.2010, 12:28
Через пайп захватить вывод.
Вот http://base.vingrad.ru/view/776-Kak-vyivesti-rezultat-rabotyi-konsoli-v-Memo

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)