Hallo Zusammen,
ich stehe mal wieder auf dem Schlauch.
Ich möchte Daten per OLE in ein bestehendes und geöffnetes Word-Dokument einfügen. Dies ist kein Problem; damit habe ich bereits reichliche und gute Erfahrungen.
Da die Anwender aber oft zwischen mehreren geöffneten Word-Dokumenten hin und her springen, ist es in diesem Falle notwendig das gerade aktive Word-Dokument zu kennen.
Über die Funktion GetForegroundWindow ermittle ich das Handle des aktiven Fensters. Über dieses Handle prüfe ich, ob das Fenster zur Winword.exe gehört. Soweit so gut. Nur ab hier gibt es zwei Varianten, die der Anwender in den Optionen von Word selber definieren kann:
1. Word zeigt pro Dokument ein Fenster in der Taskleiste.
2. Word zeigt nur ein Fenster in der Taskleiste und dafür pro Dokument ein Fenster innerhalb von Word.
Im Fall 1 ist alles einfach. Denn hier kann ich die Caption des aktiven Fenster abfragen und habe dann auch den Dateinamen. Aber im Fall 2 ist die Caption nur 'Microsoft Word'. Jetzt ist meine Idee, daß ich per OLE eine Verbindung zum aktiven Word aufbaue und dann das aktive Dokument ermittle.
Jetzt meine Frage: Wie kann ich eine OLE-Verbindung analog GetActiveOLEObject zum aktiven Word aufbauen? Dabei muß beachtet werden, daß Word evtl. mehrfach läuft und ich die richtige Instanz erhalten muß. Denn GetActiveOLEObject liefert mir bei mehreren laufenden Winword.exe eine der Instanzen, aber nicht unbedingt die aktive Instanz.
Ich hoffe auf einen oder mehrere gute Tipps. Falls Ihr eine andere Variante kennt, den Namen das aktiven Word-Dokument zu ermitteln, nehme ich diesen Code natürlich gerne an.
Gruß aus Köln
Thomas