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