SECURITY_ATTRIBUTES sa;
ZeroMemory( &sa, sizeof( sa ) );
sa.nLength = sizeof( sa );
sa.bInheritHandle = true;
HANDLE hRead, hWrite;
if ( !CreatePipe( &hRead, &hWrite, &sa, 0 ) ){
ShowMessage( "Cannot create pipe" );
return ;
}
STARTUPINFO si;
PROCESS_INFORMATION pi;
memset( &si, 0, sizeof( si ) );
si.hStdOutput = hWrite;// если вывод чередуется, то
si.hStdError = hWrite;// одно без другого работает несовсем корректно
si.dwFlags = STARTF_USESTDHANDLES | STARTF_USECOUNTCHARS |
STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
si.dwXCountChars = si.dwYCountChars = 1;
String filename = Edit1->Text;
CreateProcess(NULL, filename.c_str(), NULL, NULL, TRUE, 0, NULL, NULL,
&si, &pi );
CloseHandle( hWrite );
CloseHandle( pi.hThread );
CloseHandle( pi.hProcess );
String rez;
char temp[ 255 ];
DWORD dwBytesRead;
while ( 1 ){
memset( temp, 0, 255 );
if ( !ReadFile( hRead, temp, 255, &dwBytesRead, NULL ) || !dwBytesRead)
break;
rez += temp;
}
Memo1->Lines->Text = rez.c_str();
Zhukov Igor 2:5020/175.2
Предыдущий вопрос
|
|
Следующий вопрос
источник
by jenyok
|