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.