mikrocontroller.net

Forum: PC-Programmierung Ein Dokument aus C (Win API) heraus öffnen?


Autor: bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

weiß jemand, wie man aus C++ (Window API) ein Dokument öffent?

Angenommen ich habe eine .txt Datei. Im Explorer ist diese Datei mit
einem Programm verknüpft (z.B. Notepad, oder WordPad). Wie gehe ich
vor, um ein Dokument, dessen Pfad ich habe, mit dem Programm geöffnet
wird, dass der User für den Dokumenttyp eingestellt hat?

Gibe es dafür eine Funktion?

Danke
Bernd

Autor: Die meisten Elche (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja:

ShellExecute

Autor: bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super, danke.

Gibt es da noch eine Option, dass ein Dokument, das schon offen ist,
nicht noch ein zweites mal geladen wird, sonder dass das erste, offene
Dokument nur wieder in den Vordergrund holt?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein.
Denn in wirklichkeit 'öffnet' ShellExecute genausowenig
ein Dokument wie es die Funktion 'system' tut.

Was passiert in Wirklichkeit.
ShellExecute ist die Aufforderung an das Betriebssystem ein
Programm auszuführen. Du teilst also Windows mit, dass
es die Datei 'MyDoc.doc' ausführen soll. Nun gibt es
aber kein Programm namens 'MyDoc.doc'. Als nächstes geht
Windoes her und durchsucht die Tabelle in der mögliche
Programme für Dateiendungen aufzufinden sind. Und dort
wird es fündig. Für eine Datei, deren Dateieendung auf
'doc' lautet, ist zb. Microsoft Word (also Word.exe) ein
mögliches Programm. Also startet Windows stattdessen
das Programm Word.exe und gibt ihm als Argument 'MyDoc.doc'
mit. Word fährt daraufhin hoch und öffnet die Datei.

Autor: bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann bliebe nur die Möglichkeit unmittelbar nach dem ersten Ausführen
von ShellExecute zu schauen, welches neue Fenster im Titelbar einen
Teil des Namens führt. Sollte ein passendes gefunden werden,
Fensterdaten merken.
Vor dem nächsten Aufruf erst nach dem beim Erstenmal gefundenen Fenster
ausschau halten, und nur wenn es nicht mehr da ist wieder ShellExecute
aufrufen.
Ansonsten Fenster in den Vordergrund befördern.
Sollte eigentlich funktionnieren, werd's bei Gelegenheit mal
probieren.

Danke,
Bernd

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das funktioniert auch.
Solange das Programm den Namen des geöffneten Dokuments
in der Titelleiste führt :-). Die meisten tuns.

Autor: Ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm besser ShellExecuteEx. Da wird auf die Infostruktur ein
Prozesshandle geschrieben aus dem bekommst Du dann das Hauptfenster der
gestarteten App. bekommen kannst.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.