Einzelnen Beitrag anzeigen

QStorm

Registriert seit: 28. Jun 2008
46 Beiträge
 
#1

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

  Alt 16. Dez 2015, 13:04
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.
  Mit Zitat antworten Zitat