# C++ Programm (XP, Eclipse, cygwin) soll Notepad-Fenster mit Datei öffnen



## smileWay (23. September 2006)

Hallo,

folgendes habe ich vor: eine *.dat-Datei, nennen wir sie file.dat, soll am Ende des C++-Programms mit Notepad (oder einem anderen Editor) geöffnet werden.

Meine Konfiguration ist Eclipse als Entwicklungsumgebung, MS Windows XP als Betriebssystem und cygwin als Compiler.

Was muss ich dazu als Code eingeben? Habe schon mal was von CreateProcess() gehört, aber das habe ich irgendwie nicht hinbekommen... wie funktioniert sowas?

Vielen Dank schon einmal für Eure Hilfe


----------



## jokey2 (24. September 2006)

Create Process könntest Du da zwar verwenden, wäre aber etwas oversized.
Das sollte schon mit system(...) gehen:

```
system("C:\WINDOWS\NOTEPAD.exe file.dat");
```


----------



## smileWay (24. September 2006)

Mein Compiler macht es nur mit Slash (/) statt Backslash (\), aber sonst funktioniert das perfekt!

VIELEN DANK jokey2


----------



## smileWay (24. September 2006)

Ups, es gibt doch noch ein Problem:
Bevor die Datei durch den oben genannten Code geöffnet wird, soll noch ganz normal durch "printf(..)" etwas ausgegeben werden, z.B. "Tschüss".

Sobald aber das Fenster mit der Datei file.dat geöffnet wurde, stoppt der durch "printf" erzeugte output und das "Tschüss" erscheint erst, nachdem man das Notepad-Fenster wieder geschlossen hat.

Kann man daran noch irgendwas ändern? Also das Tschüss ganz normal ausgeben lassen, obwohl das Fenster noch geöffnet ist?

Nochmal vielen Dank


----------



## Flegmon (24. September 2006)

smileWay hat gesagt.:
			
		

> Mein Compiler macht es nur mit Slash (/) statt Backslash (\), aber sonst funktioniert das perfekt



Backslash musst du auch als "\\" schreiben



			
				smileWay hat gesagt.:
			
		

> Kann man daran noch irgendwas ändern? Also das Tschüss ganz normal ausgeben lassen, obwohl das Fenster noch geöffnet ist?



gibs doch einfach vor dem system Befehl aus.
Wenn nicht, wirst du im CreateProcess nich rumkommen.


----------



## deepthroat (24. September 2006)

Hi.





			
				Flegmon hat gesagt.:
			
		

> gibs doch einfach vor dem system Befehl aus.
> Wenn nicht, wirst du im CreateProcess nich rumkommen.


Ein einfaches 
	
	
	



```
fflush(stdout);
```
direkt nach dem printf sollte es auch tun.

Gruß


----------



## smileWay (24. September 2006)

Hi Flegmon,
danke für deine Antwort:



			
				Flegmon hat gesagt.:
			
		

> Backslash musst du auch als "\\" schreiben



ok, das werde ich mir merken 




			
				Flegmon hat gesagt.:
			
		

> gibs doch einfach vor dem system Befehl aus.
> Wenn nicht, wirst du im CreateProcess nich rumkommen.



Das habe ich die ganze Zeit schon versucht, aber trotzdem wird das Fenster vorher geöffnet.  Die Datei wird anscheinend schneller geöffnet, als die Ausgabe erfolgen kann. 

Wie würde das denn mit dem CreateProcess() funktionieren?

Merci


----------



## smileWay (24. September 2006)

Hi deepthroat!
Sorry, hatte deine Antwort zu spät bemerkt. Aber dein



			
				deepthroat hat gesagt.:
			
		

> ```
> fflush(stdout);
> ```
> direkt nach dem printf sollte es auch tun.



funktioniert! Wunderbar 

Und jetzt noch eine letzte Frage - ich weiß, das ist schwierig mit mir...

Kann man das C++-Programm nach dem ausgeben des "Tschüss" (das funktioniert) und dem Öffnen der Datei (funktioniert auch) dazu bringen, sich zu schließen?

Bisher läuft es nämlich so lange weiter, bis man das Notepad-Fenster schließt. Das C++-Programm brauche ich dann aber eigentlich nicht mehr.

Merci schon mal


----------

