Einzelnen Beitrag anzeigen

Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#1

Ist MAPI verfügbar?

  Alt 6. Apr 2011, 10:38
HI @all,

in meinem Programm soll eine Mail per MAPI verschickt werden (Klick auf Button). Das funktioniert auch soweit. Nun will ich noch erkennen, ob es überhaupt möglich ist, eine Mail per MAPI zu versenden. Leider schlagen meine Erkennungsversuche immer wieder fehl. Einfach den Wert in der Registry zu prüfen (wie das in der MAPI-Unit von Delphi passiert) reicht nicht aus, da in meiner VM kein Mail-Client installiert ist (auch nicht Outlook Express) und der Wert in der Registry trotzdem "1" ist. Was ich bis jetzt habe sieht so aus:

Delphi-Quellcode:
function IsMAPIEnabled: boolean;
var
  hkWMS: HKEY;
  MAPIValueSize: Longint;
  MAPIValueBuf: array[0..8] of char;
  rType: Longint;
  MAPISession: PLHANDLE;
begin
  Result := false;

  MAPIValueSize := sizeof(MAPIValueBuf);
  if RegOpenKeyEx(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows Messaging Subsystem',
      0, KEY_READ, hkWMS) <> ERROR_SUCCESS then Exit;
  if RegQueryValueEx(hkWMS, 'MAPI', nil, @rType, @MAPIValueBuf,
      @MAPIValueSize) <> ERROR_SUCCESS then Exit;
  RegCloseKey(hkWMS);
  if not ((MAPIValueBuf[0] = '1') and (MAPIValueBuf[1] = #0)) then Exit;

  MAPISession := nil;
  if MapiLogOn(0, nil, nil, 0, 0, MAPISession) <> SUCCESS_SUCCESS then Exit; // Das scheint nicht zu funktionieren
  MapiLogOff(MAPISession^, 0, 0, 0);

  Result := true;
end;
Wie erkennt man jetzt zuverlässig (möglichst ohne Try&Error), ob MAPI jetzt geht oder nicht?

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat