Okay, Totengräber.
Ich stand auch gerade vor dem Problem, auch mit der DnD-Suite.
TOutlookDataFormat.Messages.Count
kann man auch prüfen, wenn
MAPI nicht initialisiert ist. Daher rufe ich
OleCheck(MAPIInitialize(@MapiInit));
jetzt erst dann auf, wenn im Drop-Event das erste Mal
TOutlookDataFormat.Messages.Count > 0
ist:
Delphi-Quellcode:
if (FOutlookDataFormatAdapter.DataFormat
as TOutlookDataFormat).Messages.Count > 0
then
begin
// Ruft man MAPIInitialize grundsätzlich (beim Start) auf, kommt ein grafisches Meldungsfenster, wenn kein MAPI installiert ist.
// Es wird zwar offenbar auch eine Exception geschmissen wird. Solange diese aber nicht mit leerem except-Block ignoriert sondern zu behandeln versucht wird, verursacht OleCheck anschließend einen Deadlock, ohne dass eine Fehlerbehandlung durchgeführt wird.
if not FMapiInitizializeCalled
then
begin
FMapiInitizializeCalled := True;
OleCheck(MAPIInitialize(@MapiInit));
end;
OutlookDataFormat := FOutlookDataFormatAdapter.DataFormat
as TOutlookDataFormat;
// tue tolle Dinge