Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   OLE Office 2007 in den Vordergrund bringen (https://www.delphipraxis.net/166667-ole-office-2007-den-vordergrund-bringen.html)

hoika 24. Feb 2012 07:17

OLE Office 2007 in den Vordergrund bringen
 
Hallo #,

unter Office 2000/2003 reicht ein WordObject.Visible:= True,
um Word nach dem Erzeugen per OLE in den Vordergrund zu bringen.
Unter Office 2007 klappt das nicht.
Word ist immer im Hintergrund meines Programmes.

Im Netz findet man dazu auch keine Lösung,
das Problem ist aber bekannt.

Und nun ?
Komme ich vielleicht an das Fensterhandle ran ?
Dazu muss ich noch sagen, das Word auch normal (also zusätzlich) geöffnet sein kann,
es als 2 mal offen sein kann.


ein ratloser
Heiko

Jumpy 24. Feb 2012 09:45

AW: OLE Office 2007 in den Vordergrund bringen
 
Zitat:

Zitat von hoika (Beitrag 1152611)
Hallo #,
Dazu muss ich noch sagen, das Word auch normal (also zusätzlich) geöffnet sein kann,
es als 2 mal offen sein kann.

Das WordObject ist ja ein Objekt vom Typ Word.Application. Damit kann man doch den Fensternamen ändern (um ihn von der anderen Word-Instanz zu unterscheiden) und dann mit den entprechenden API-Funktionen den Fensterhandle zu bekommen und mit (war es?) SetWindowPos das Fenster nach vorne holen.

Hier hab ich das in VBA mal mit Excel gemacht.
Code:
Public Declare Function ApiFindWindow Lib "user32" _
           Alias "FindWindowA" (ByVal lpClassName As Any, _
                               ByVal lpWindowName As String) As Long

Function GetHandle() As Long
  Dim OldCap As String
  OldCap = Application.Caption
  Application.Caption = "ABCDEFGHIJKLMNOP"
  GetHandle = ApiFindWindow("XLMAIN", Application.Caption)
  Application.Caption = OldCap
End Function

fxfx 24. Feb 2012 09:50

AW: OLE Office 2007 in den Vordergrund bringen
 
Hallo

Könnte auch mit WordObject.Activate funktionieren.

Franz

hoika 24. Feb 2012 10:34

AW: OLE Office 2007 in den Vordergrund bringen
 
Hallo,

Das Activate hatte ich schon probiert, keine Chance ...

mit dem Titel klappt es !!!

Einfach als Titel eine GUID genommen und NIL für ClassName.

Delphi-Quellcode:
aHandle:= FindWindow(NIL, PAnsiChar(sCap));

Danke !!!


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz