Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Outlook via Ole: E-Mail-Fenster im Vordergrund anzeigen (https://www.delphipraxis.net/187630-outlook-via-ole-e-mail-fenster-im-vordergrund-anzeigen.html)

QStorm 16. Dez 2015 13:04

Outlook via Ole: E-Mail-Fenster im Vordergrund anzeigen
 
Hallo,

Ich verwendet Ole, um eine E-Mail via Outlook zu versenden (bzw. den E-Mail-Dialog anzuzeigen):
Delphi-Quellcode:
var
 Outlook : OleVariant;
 MailItem : Variant;
const
  olMailItem = 0;
begin
  try
     Outlook := (GetActiveOleObject('Outlook.Application'));
  except
     Outlook := (CreateOleObject('Outlook.Application'));
  end;
  MailItem := (Outlook.CreateItem(olMailItem));

  // ...

  MailItem.Display(False); // darf nicht modal sein
end;
Ich möchte, dass der E-Mail-Dialog im Vordergrund angezeigt wird. Folgendes habe ich versucht:
Delphi-Quellcode:
// Variante #1:
Outlook.ActiveWindow.Activate;
// oder
OleVariant(Outlook.ActiveWindow).Activate;

// Variante #2 (MailInspector ist vom Typ Variant):
MailInspector := (MailItem.GetInspector);
MailInspector.Activate;
Variante #1 funktioniert unter Windows 7 gar nicht. Das Outlook Icon blinkt in der Taskleiste, der Dialog ist jedoch im Hintergrund.
Variante #2 funktioniert unter Windows 7 nur, wenn Outlook selber vor dem Methodenaufruf gestartet wurde ("GetActiveOleObject" erfolgreich war) UND nicht minimiert ist.

Wie bekomme ich es hin, dass der E-Mail-Dialog im Vordergrund angezeigt/gestartet wird?
Kommt man via Ole irgendwie an das Handle des Dialogs heran?


Ich habe gelesen, dass sich das Fensterhandling ab Windows Vista geändert hat. Auch zu dieser Problematik habe ich einige Themen im Internet gefunden. Leider war dabei keine Lösung, die unter Windows 7 funktioniert hat.

Hinweis: Ich verwende zum Testen Outlook 2007.

Vielen Dank im Voraus.

Bernhard Geyer 16. Dez 2015 13:18

AW: Outlook via Ole: E-Mail-Fenster im Vordergrund anzeigen
 
Wieso versendest du die Mail nicht per MAPI.
Da klappt es (mit Outlook) fast immer auf anhieb

QStorm 16. Dez 2015 13:23

AW: Outlook via Ole: E-Mail-Fenster im Vordergrund anzeigen
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1324620)
Wieso versendest du die Mail nicht per MAPI.
Da klappt es (mit Outlook) fast immer auf anhieb

Ich habe auch eine Variante via MAPI (diese verwende ich, wenn Outook nicht der Standard E-Mail Client ist). Leider ist der Outlook E-Mail-Dialog dann immer modal und blockiert andere Anwendungen. Sprich man kann nicht weiterarbeiten ohne den Dialog zu schließen.

QStorm 21. Dez 2015 15:32

AW: Outlook via Ole: E-Mail-Fenster im Vordergrund anzeigen
 
Kann mir niemand bei diesem Problem helfen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:10 Uhr.

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