PRB: Simple MAPI-BMAPI Funktionen von Visual Basic-Code funktioniert möglicherweise nicht

Wichtig: Dieser Artikel wurde maschinell übersetzt und wird dann möglicherweise mithilfe des Community Translation Framework (CTF) von Mitgliedern unserer Microsoft Community nachbearbeitet. Weitere Informationen zu CTF finden Sie unter http://support.microsoft.com/gp/machine-translation-corrections/de.

Den englischen Originalartikel können Sie über folgenden Link abrufen: 315458
WICHTIG: Dieser Artikel enthält Informationen zum Bearbeiten der Registrierung. Stellen Sie die Registrierung bearbeiten, Sichern und stellen Sie sicher, dass Sie wissen, wie die Registrierung wiederherstellen, falls ein Problem auftritt. Informationen zum Sichern, wiederherstellen und Bearbeiten der Registrierung finden Sie im folgenden Artikel der Microsoft Knowledge Base:
256986 Beschreibung der Microsoft Windows-Registrierung
Problembeschreibung
Aufrufe an die MAPISendMail -Funktion von Microsoft Visual Basic-Code werden möglicherweise mit einer Fehlermeldung, die der folgenden ähnelt:
Microsoft Outlook
Es ist kein Standardmailclient vorhanden, oder der aktuelle Mailclient kann die Messaginganforderung nicht erfüllen. Führen Sie Microsoft Outlook aus, und legen Sie es als standardmäßigen E-Mail-Client fest.
Dieses Problem tritt häufig auf, wenn Microsoft Outlook Express als Standardprogramm für e-Mail festgelegt ist.
Ursache
Visual Basic-Programme, die Simple MAPI verwenden verwenden Declare -Anweisung, die die Funktionen BMAPI importieren. Wird Outlook Express Standard-Mailclient, kann nicht die MAPI-Stub-Bibliothek dieser Aufrufe an Outlook Express weiterleiten; stattdessen die Aufrufe schlagen fehl und eine Fehlermeldung angezeigt.
Lösung
Eine Möglichkeit zur Behebung dieses Problems ist keine Declare -Anweisung verwendet, die BMAPI Funktionen verweisen. Da Visual Basic aufrufen können (sofern die erforderlichen Strukturen auf der binären Ebene bearbeiten) nicht-BMAPI funktioniert jedoch Sie möchten Code schreiben, um Simple MAPI-Funktionen in einer anderen Sprache aufrufen, die Strukturen, solche C oder C++ behandeln können.

Zwei Lösungsmöglichkeiten werden am Ende des Abschnitts "Weitere Informationen".
Status
Dieses Verhalten ist entwurfsbedingt.
Weitere Informationen
Die MAPI-Stub-Bibliothek "Mapi32.dll", ist die DLL, die eine Clientanwendung auf Simple MAPI verwenden normalerweise geladen wird. Die Stub-Bibliothek Anrufe an die entsprechenden MAPI-Implementierung basierend auf Registrierungseinträge. Auf diese Weise können verschiedene Implementierungen koexistieren, ohne gegenseitig überschreiben.

Wenn eine Stub-Bibliothek exportierte Funktion aufgerufen wird, folgt die Bibliothek folgendermaßen:
  1. Es bestimmt, ob die Funktion eine Funktion Simple MAPI oder Extended MAPI-Funktion. Die folgenden Exportfunktionen sind in der Stub-Bibliothek als Simple MAPI-Funktionen gekennzeichnet:

    • MAPIAddress
    • MAPIDeleteMail
    • MAPIDetails
    • MAPIFindNext
    • MAPIFreeBuffer
    • MAPILogoff
    • MAPILogon
    • MAPIReadMail
    • MAPIResolveName
    • MAPISaveMail
    • MAPISendDocuments
    • MAPISendMail

    Export-Funktionen sind Extended MAPI-Funktionen.
  2. Es sucht in den folgenden Registrierungsschlüssel, um die aktuellen MAPI-Implementierung zu bestimmen:
    HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail::(Default)
  3. Es sucht unter dem Schlüssel des Clients den Weg der richtige DLL zu laden. Wenn die Funktion eine Simple MAPI-Funktion ist, lädt die angegebene DLL-die DllPath Wert und ruft dann die Funktion. Ist die Funktion Extended MAPI-Funktion lädt die angegebene DLL-Datei der DllPathEx Wert. Nachdem die geeignete DLL gefunden, wird dann die Funktion.

    Bei Microsoft Outlook beispielsweise ermittelt es für den Wert DLLPath oder: DLLPathEx unter dem folgenden Schlüssel:
    HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\Microsoft Outlook
  4. If DllPathEx oder: DllPath nicht gefunden wird, befindet sich in demselben Verzeichnis wie die Stub-Bibliothek Datei Mapi32x.dll Stub-Bibliothek verwendet. Diese Datei ist in der Regel eine umbenannte Kopie der Datei "Mapi32.dll", die bei der Installation der Stub-Bibliothek bereits vorhanden. Auf vielen Systemen, insbesondere nur in Outlook und Outlook Express installiert wurde, wird diese Datei nicht vorhanden.
  5. Fällt die Stub-Bibliothek "Mapi32x.dll" suchen, wird die Nachricht in einem der folgenden Schlüssel befindet:
    HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail::PreFirstRun

    – oder –

    HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail::NoMailClient
Der Grund für dieses Problem wird in Outlook Express folgendermaßen:
  1. Die meisten Visual Basic-Code verwendet Deklarieren Anweisungen basierend auf dem Mapivb32.bas-Modul, das MAPISendMail als BMAPISendMail importiert. Die meisten SimpleMAPI Funktionen sind auch mit äquivalenten BMAPI deklariert.Klicken Sie für Weitere Informationen auf die nachstehende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
    163216 Aktualisierte Mapivb32.bas für Simple MAPI 32-Bit-Plattformen
  2. Da die Funktionen BMAPI nicht in der Liste der Simple MAPI-Funktionen die sind in angegebenen DLL verwenden DllPath, die Stub-Bibliothek mit dem Wert im weiterleitet DllPathEx.
  3. Da Outlook Express nicht Extended MAPI implementiert, hat es keinen Wert festgelegt DllPathEx.
  4. Die Stub-Bibliothek versucht Mapi32x.dll, ist nicht vorhanden und wird daher die PreFirstRun Meldung.
Es gibt zwei weitere Arten, das Problem zu umgehen:
  • Temporäre Lösung besteht darin, festzustellen, ob Outlook Express der Standard-Mailclient ist, und fügen bei einer DllPathEx Wert in der Registrierung wie folgt:
    HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\Outlook Express::DllPathEx = %ProgramFiles%\Outlook Express\msoe.dll
    WARNUNG: Wenn falsch Verwendung des Registrierungseditors kann schwerwiegende Probleme verursachen, die möglicherweise eine Neuinstallation des Betriebssystems erforderlich machen. Microsoft kann nicht garantieren, dass Probleme werden, die behoben können aus der Registrierung. Verwenden Sie den Registrierungs-Editor auf eigene Gefahr.

    Da Outlook Express implementiert und die BMAPIFunctions Msoe.dll exportiert festlegen DllPathEx die Stub-Bibliothek aufgerufen weiterleiten können. Die Gefahr dabei ist, dass ein Client, der versucht Extended MAPI-Fehlermeldung wird (da Msoe.dll nicht Extended MAPI-Funktionen exportieren) Wenn sie möglicherweise stattdessen verwendet wurden Mapi32x.dll.
  • Um eine Anwendung die Outlook Express-Implementierung für alle MAPI-Aufrufe zu erzwingen, erstellen Sie einen neuen Wert unter dem folgenden Registrierungsschlüssel:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Messaging Subsystem\MSMapiApps
    Legen Sie den Namen des Werts auf den Namen der Anwendung (z. B. MyApp.exe), und legen Sie den Wert auf Outlook Express. Dies umgeht die Stub-Bibliothek und alle MAPI-Aufrufe einschließlich Anrufe BMAPI direkt in Outlook Express übergeben wird.
BMAPISendMail, BMAPIReadMail, BMAPIGetReadMail, BMAPIFindNext, BMAPISaveMail, BMAPIAddress, BMAPIGetAddress, BMAPIDetails, BMAPIResolveName

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 315458 – Letzte Überarbeitung: 10/11/2015 06:13:00 – Revision: 3.0

Microsoft Office Outlook 2007

  • kbmsg kbprb kbmt KB315458 KbMtde
Feedback