Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Pipes in Mfc-prog verwenden

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
07.07.2003, 09:15 Uhr
Tody



Hallo zusammen!

Ich hab folgendes Problem. Ich habe ein Win32-Prog geschrieben um das Thema Pipes mal auszuprobieren. Habe es letztendlich auch hinbekommen. Allerdings wollte ich die ganze Geschichte in ein MFC-Programm übernehmen. Jetzt gehts nicht mehr. Das heißt mit CreateProcess starte ich eine exe, was auch noch funktioniert. Will ich aber jetzt über die erstellten Pipes irgendwas schreiben oder lesen, passiert nix mehr.

Hat jemand mit diesem Thema Erfahrung? Ich blicke nämlich nich mehr durch.
Ich glaube mir ist in erster Linie unklar warum es als Win32-Prog aber nicht als MFC-Prog funktioniert. Den Unterschied hab ich noch nich so richtig begriffen. Is doch beides Windows-Programmierung, oder???

Danke schonmal!!!

Gruß Tody
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.07.2003, 16:00 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
kann ich mir nicht so recht vorstellen, sind doch fast alles APi-Call's.
Unter BCB findest Du ein Bsp. Wenn Du das Memo durch z.B. ein CEdit ersetzt läuft das auch unter VC++
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.07.2003, 08:57 Uhr
Tody



@Uwe

Danke für die Antwort! Habe leider nicht gefunden was du meinst. Könntest du mir nen link posten? Möchte nämlich mit dem Thema weiterkommen.
Zur Zeit löse ich es so:

CreateProcess() -> Programm starten
TerminateProcess() -> Programm beenden

Ist sicher nicht die empfohlene Variante. Ich möchte aber zwischen meinem MFC-Prog und der Konsole, in der die externe exe läuft, einen Dialog führen. Damit ich feststellen kann, ob das externe Programm wirklich läuft.

Für Hilfe wäre ich echt dankbar!

Gruß Tody
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.07.2003, 11:50 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
www.fun-soft.de/forum/showtopic.php?threadid=3126
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.07.2003, 16:26 Uhr
Tody



@Uwe
Danke für den Link!

Eins verstehe ich aber nicht. Ich hab mich durch ein Beispiel von Microsoft gewühlt. Da wird eine Pipe mit zwei Handles erstellt und danach ein Handle dupliziert und in ein non-inherited-handle umgewandelt. Das vorherige Handle wird geschlossen.
Das passiert für jede Pipe.
In deinem Beispiel deklarierst du aber zwei Handles und erstellst damit eine Pipe. Das heißt es wird kein Handle dupliziert oder sowas. Außerdem wird kein Standard-Handle erstellt erstellt (was ich aber irgendwie verstehe, weil es ja für MFC ist)
Bisher beschränkt sich meine (wenige) Pipeerfahrung auf ein Beispielprogramm mit Win32-Konsole.
Ich verstehe nicht so richtig was ich jetzt ändern muss damit es auch in MFC läuft.

Gruß
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
25.07.2003, 10:09 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Tody,
mit der ganzen MFC - Pipes Geschichte hab ich mich noch nicht beschäftigen müssen, da ich mit dem API eigentlich immer zurecht gekommen bin. Das Beispiel bei Codeguru sollte aber Aufschluß geben.
www.codeguru.com/misc/RedirectOutputToPipe.shtml
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
31.07.2003, 09:34 Uhr
Tody



Hi Uwe!
Also erstmal danke für den Tip! Leider ist das Beispiel mehr oder weniger eine Kopie aus der MSDN. In einer Win32-Anwendung klappt das auch. Da klappt es weitestgehend mit dem Dialog zwischen DOS-Box und Programm. Aber im MFC-Prog bleibt die Pipe leer. Naja, ich werde mal weiter das Netz auf den Kopf stellen. Mal sehen was sich so findet...

Gruß Tody
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
18.08.2003, 16:07 Uhr
Tody



So !

Hat länger gedauert aber jetzt gehts!
Ich habs mit Hilfe eines Ex-Dozenten hinbekommen. Es liegt wohl an der fehlenden Konsole in einem MFC-Programm. Finde ich zumindest einleuchtend. Sonst gibts ja kein STDIN und STDOUT, oder liege ich falsch?!

Auf jeden Fall hab ich jetzt in InitInstance() einfach eine Konsole angelegt und versteckt.


C++:
    BOOL    res = AllocConsole();
    if (res) {
        HWND    hwnd = GetConsoleWindow();
        ShowWindow(hwnd, SW_HIDE);
    }



Dafür muss man dann noch in der stdafx.h die Windowsversion erhöhen.
Bei mir klappt's jetzt.

Hoffe es hilft noch dem ein oder anderen.

Gruß Tody
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: