Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Program kopiujący wyniki z konsoli

Ostatnio zmodyfikowano 2010-02-13 18:51
Autor Wiadomość
McAffey
Temat założony przez niniejszego użytkownika
Program kopiujący wyniki z konsoli
» 2010-02-13 18:06:50
Witam! Czy wie ktoś z was, jak zrobić program, w którym dajemy polecenie systemowe, ale wyniki tego programu będą zapisywane np w zmiennej. Tzn mam namyśli coś takiego, że jak zrobimy np system("IPCONFIG"); to konsola wyświetli nam wyniki. Ale ja nie chcę, żeby ona je wyświetlała, tylko żeby np te wyniki poszły do stringa. Może da się to zrobić bez konsoli, np przez winapi... Czekam na propozycję. Dziękuję i pozdrawiam ;)
P-13852
Elaine
» 2010-02-13 18:51:00
Może da się to zrobić bez konsoli, np przez winapi...
Jedno drugiego nie wyklucza.

Kiedyś funkcję do tego napisałem:
C/C++
string execute( const string & app, const string & params = "", const string & directory = "." )
{
    string output;
    SECURITY_ATTRIBUTES sec_attr;
    HANDLE hIn, hOut;
    STARTUPINFO start_info;
    PROCESS_INFORMATION proc_info;
    char buffer[ 1024 ] = { 0 };
    DWORD dupa;
    sec_attr.nLength = sizeof sec_attr;
    sec_attr.lpSecurityDescriptor = 0;
    sec_attr.bInheritHandle = true;
    if( CreatePipe( & hIn, & hOut, & sec_attr, 0 ) )
    {
        memset( & start_info, 0, sizeof start_info );
        start_info.cb = sizeof start_info;
        start_info.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
        start_info.wShowWindow = SW_HIDE;
        start_info.hStdInput = 0;
        start_info.hStdOutput = hOut;
        start_info.hStdError = hOut;
        if( CreateProcess( app.c_str(), const_cast < char *>( params.c_str() ), 0, 0, true, 0, 0, directory.c_str(), & start_info, & proc_info ) )
        {
            CloseHandle( hOut );
            output = "";
            while( ReadFile( hIn, buffer, 1024, & dupa, 0 ) )
            {
                output += buffer;
                memset( buffer, 0, 1024 );
            }
        }
        else
        {
            throw GetLastError(); // wiem, że dziadowsko, popraw sobie
        }
        CloseHandle( hIn );
    }
    return output;
}
P-13853
« 1 »
  Strona 1 z 1