Einzelnen Beitrag anzeigen

ThoPos

Registriert seit: 30. Jun 2004
Ort: Köln
69 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

OLE-Object bei mehreren Instanzen der Exe

  Alt 22. Apr 2014, 10:43
Hallo zusammen,

ich stehe vor folgendem Problem:

Ich möchte aus meiner Anwendung einen Text per Drag&Drop nach MS Word ziehen und anschließend den Text in Word als Textmarke festlegen. Für die D&D-Funktionalität benutze ich die Komponenten von melander.dk

Bisher sieht mein Code so aus:

Delphi-Quellcode:
procedure TFrmOffice.DTSOfficeAfterDrop(Sender: TObject; DragResult: TDragResult; Optimized: Boolean);
var
  app, doc: OLEVariant
begin
  app := GetActiveOLEObject('Word.Application');
  doc := app.ActiveDocument;
  doc.bookmarks.add(_Text, app.selection.range);
  doc := UnAssigned;
  app := UnAssigned;
end;
Funktioniert eigentlich super ... solange der Anwender nicht die WINWORD.EXE mehrfach laufen hat. Denn dann erhielt ich bei meinen Tests in 1 von ca. 20 Fällen mit GetActiveOLEObject die falsche WINWORD-Instanz.

Kennt einer von Euch einen Trick, wie ich über das Handle (mittels GetForegroundWindow erhalten) das richtige OLE-Object verbinden kann? Natürlich bin ich auch für andere Lösungsansätze offen.

Gruß aus Köln
Thomas
Thomas
  Mit Zitat antworten Zitat