ComputerBooks.ru - Электронные книги, самоучители.

 
Электронные кники доступные для скачивания
На главную Добавить в избранное Форма отправки почты Если книг читать не будешь - скоро грамоту забудешь!


Вопрос: Как получать данные, выводящиеся программой, написанной под DOS?
У меня в программе происходит запуск досовской программы, которая все свои действия выводит в стандартный поток вывода. 
Как сделать так чтобы моя программа могла получать эти данные.

Ответ :

вот реально работающий пример 

code:
--------------------------------------------------------------------------------


void __fastcall TForm1::Button1Click( TObject *Sender )
{
    String fScript = ExtractFilePath( ParamStr( 0 ) ) + "temp.sam";
    Memo1->Lines->SaveToFile( fScript );
    String filename = ExtractFilePath( ParamStr( 0 ) ) + "samx.exe";
    String fArg = fScript;

    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.dwFlags = STARTF_USESTDHANDLES | STARTF_USECOUNTCHARS | STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_HIDE;
    si.dwXCountChars = si.dwYCountChars = 1;

    filename += " temp.sam " + 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;
    }

    //   ShowMessage(rez);
    Memo2->Lines->Add( rez );
}

--------------------------------------------------------------------------------

        
(c) 2003 Borland X Portal
Электронные Книги по компьютерным программам
На правах рекламы:
-->

Для добавления страницы электронной книги в избранное нажмине Ctrl+D

Книги | Статьи | Скачать

Правовая информация   

  © ComputerBooks.ru,
  При копировании материалов со страницы обязательно разместите ссылку на источник.