Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Работа с hStdOutput и hStdInput сторонних консольных программ

Ответить
Настройки темы
C/C++ - Работа с hStdOutput и hStdInput сторонних консольных программ

Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25


Конфигурация

Профиль | Отправить PM | Цитировать


Мне нужно запустить, наример, cmd.exe, но всю информацию, которая будет отображаться в консоли выводить на Memo. Потом у меня есть Edit на форме, и хочу, что бы по нажатию Button1 команда help, которая была вбита в Edit, передавалась в консоль. Но есть проблемы-сразу после старта консоли(командой CreateProcess), консоль закрывается, потом я жму на кнопку, получаю вывод с консоли. Ну и так как консоль была закрыта, то команда help из Edit не попала куда надо. Как сделать правильно такой, хм, "интерфейс" что ли для консоли?
Код программы
Код: Выделить весь код
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
const ReadBuffer = 10000;
SECURITY_ATTRIBUTES Security;
HANDLE  ReadPipe, WritePipe;
STARTUPINFO start;
PROCESS_INFORMATION ProcessInfo;
char Buffer[ReadBuffer];
DWord BytesRead, Apprunning;
//========================





//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Memo1->Text="";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Security.nLength=sizeof(SECURITY_ATTRIBUTES);
Security.bInheritHandle=TRUE;
Security.lpSecurityDescriptor=NULL;
CreatePipe(&ReadPipe,&WritePipe,&Security,0);
ZeroMemory( &start, sizeof(start) );
start.cb = sizeof(start);
start.hStdOutput = WritePipe;
start.hStdInput = ReadPipe;
start.dwFlags = STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW;
start.wShowWindow = SW_SHOW;
CreateProcess(NULL,"C:\\WINDOWS\\system32\\cmd.exe", &Security, &Security, true, NORMAL_PRIORITY_CLASS,NULL,NULL,&start, &ProcessInfo);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
do
{
Apprunning = WaitForSingleObject(ProcessInfo.hProcess, 100) ; // обязательно
ReadFile(ReadPipe, Buffer, ReadBuffer, &BytesRead, NULL);
Buffer[BytesRead]= 0;
OemToAnsi(Buffer, Buffer);
Memo1->Text = Memo1->Text + Buffer;
Application->ProcessMessages();
}
while (Apprunning== WAIT_TIMEOUT) ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char IBuffer[5]="help";
WriteFile(WritePipe, IBuffer, 6, &BytesRead, NULL);
}
//---------------------------------------------------------------------------

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Отправлено: 18:19, 16-02-2010

 

Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


crashtuak, есть пример реализации Console by Marko Bozikovic
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:35, 19-02-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Работа с hStdOutput и hStdInput сторонних консольных программ

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Работа программ в Windows 7 64 бит s-s Microsoft Windows 7 29 24-02-2010 08:38
Как произвести нажатие кнопок мыши без функций AutoIT и сторонних программ. CyberStyLe AutoIt 11 08-02-2010 14:22
Установка - Bluetooth в Win XP SP2 без сторонних программ Citron Microsoft Windows 2000/XP 1 14-12-2009 17:18
Разное - все команды, загрузка программ и работа внутри программ - с задержкой 1/2сек NeuD Microsoft Windows 2000/XP 20 03-07-2008 19:15
Разное - [решено] Работа программ. 8Toxa8 Microsoft Windows 2000/XP 2 20-06-2008 23:58




 
Переход