Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: DOS und Win32-Konsole ::  C++ und batch  
Gehen Sie zu Seite Zurück  1, 2
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
7xCore
Mitglied

Benutzerprofil
Anmeldungsdatum: 30.07.2011
Beiträge: 386
Beitrag 7xCore Mitglied 20:57:26 06.01.2012   Titel:              Zitieren

Ja doch wie ich sehe hast du immernoch nicht meinen ganzen Post gelesen, sondern nur diese 2 Wörter.Die Frage steht ein Satz darüber, das was du gelesen hast ist das Ziel was wir haben.

Aber egal

_________________
Mehr Spaß mit der Windows Konsole? -> http://www.coreengine.de.vu


Zuletzt bearbeitet von 7xCore am 20:57:51 06.01.2012, insgesamt 1-mal bearbeitet
-lowbyte-
Mitglied

Benutzerprofil
Anmeldungsdatum: 12.10.2010
Beiträge: 233
Beitrag -lowbyte- Mitglied 00:36:08 08.01.2012   Titel:              Zitieren

Kannst es mit CreateProcess machen... aber vorher die FileHandles umbiegen in eine unnamedpipe, von der Du dann den Output lesen kannst.


C/C++ Code:
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
    STARTUPINFO         sInfo;
    PROCESS_INFORMATION pInfo;
    ZeroMemory(&sInfo,sizeof(sInfo));
    ZeroMemory(&pInfo,sizeof(pInfo));
    sInfo.cb        =    sizeof(sInfo);
    sInfo.dwFlags    =    STARTF_USESTDHANDLES;
    sInfo.hStdInput    =    NULL;     // Stdin = muss null sein
    sInfo.hStdOutput=    wPipe;    // Stdout = muss write-pipe sein
    sInfo.hStdError    =    wPipe;    // Stderror = muss/darf write-pipe sein
C/C++ Code:
1
2
3
4
5
6
7
8
9
STARTUPINFO sInfo;
PROCESS_INFORMATION pInfo;
ZeroMemory(&sInfo,sizeof(sInfo));
ZeroMemory(&pInfo,sizeof(pInfo));
sInfo.cb = sizeof(sInfo);
sInfo.dwFlags = STARTF_USESTDHANDLES;
sInfo.hStdInput = NULL; // Stdin = muss null sein
sInfo.hStdOutput= wPipe; // Stdout = muss write-pipe sein
sInfo.hStdError = wPipe; // Stderror = muss/darf write-pipe sein
C/C++ Code:
1
2
3
4
5
6
7
8
9
    STARTUPINFO         sInfo;
    PROCESS_INFORMATION pInfo;
    ZeroMemory(&sInfo,sizeof(sInfo));
    ZeroMemory(&pInfo,sizeof(pInfo));
    sInfo.cb        =    sizeof(sInfo);
    sInfo.dwFlags    =    STARTF_USESTDHANDLES;
    sInfo.hStdInput    =    NULL;     // Stdin = muss null sein
    sInfo.hStdOutput=    wPipe;    // Stdout = muss write-pipe sein
    sInfo.hStdError    =    wPipe;    // Stderror = muss/darf write-pipe sein

_________________
XOR-BASE http://vpn23.homelinux.org
News: BaseX Encoding Library C/C++


Zuletzt bearbeitet von -lowbyte- am 00:37:39 08.01.2012, insgesamt 1-mal bearbeitet
merano
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.12.2006
Beiträge: 231
Beitrag merano Mitglied 14:42:26 08.01.2012   Titel:              Zitieren

Der Vorschlag von Lowbyte sollte es richten; die Standard-Handles vor Prozesserzeugung umbiegen und die Ausgabe dann ins Fenster schreiben.

Ausserdem kann man noch auf das Ende warten:

C/C++ Code:
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
if(CreateProcess(0, szExe, 0, 0, FALSE, 0, 0, 0, &sInfo, &pInfo))
{
// optionally wait for process to finish
WaitForSingleObject(pInfo.hProcess, INFINITE);

CloseHandle(pInfo.hProcess);
CloseHandle(pInfo.hThread);
}
C/C++ Code:
1
2
3
4
5
6
7
8
if(CreateProcess(0, szExe, 0, 0, FALSE, 0, 0, 0, &sInfo, &pInfo))
{
// optionally wait for process to finish
WaitForSingleObject(pInfo.hProcess, INFINITE);

CloseHandle(pInfo.hProcess);
CloseHandle(pInfo.hThread);
}
C/C++ Code:
1
2
3
4
5
6
7
8
if(CreateProcess(0, szExe, 0, 0, FALSE, 0, 0, 0, &sInfo, &pInfo))
{
// optionally wait for process to finish
WaitForSingleObject(pInfo.hProcess, INFINITE);

CloseHandle(pInfo.hProcess);
CloseHandle(pInfo.hThread);
}


Ausserdem kann man noch die Process Creation Flags (dwCreationFlags) z.B.
mit CREATE_NO_WINDOW beeinflussen - auch Prioritäten u.a.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms684863(v=vs.85).aspx

Ein fettes Beispiel findet sich hier:
Creating a Child Process with Redirected Input and Output
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682499(v=vs.85).aspx
C/C++ Forum :: DOS und Win32-Konsole ::  C++ und batch  
Gehen Sie zu Seite Zurück  1, 2
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.