ich setze seit bald 10 Jahren die MapiDemo.prg ein. Siehe auch:
Jetzt wird bei einem Kunden von GroupWise auf Outlook gewechselt. Nachdem auf einigen Rechnern Office 2016 installiert wurde, wird das Xbase-Programm von Windows beendet sobald versucht wird, eine Mail zu senden.Martin Altmann hat geschrieben:Hallo Wolfgang,
so habe ich das bei mir eingebunden:Viele Grüße,Code: Alles auswählen
snDllHandle := DllLoad( "SocMapi.Dll" ) if snDllHandle == 0 MsgBox("SOCMAPI.DLL nicht gefunden!") return endif //Get Function handles from DLL. scDLLSocMapiIsInit := DllPrepareCall( snDllHandle, DLL_STDCALL, "SocMapiIsInit" ) scDLLSocMapiInit := DllPrepareCall( snDllHandle, DLL_STDCALL, "SocMapiInit" ) scDLLSocMapiDeInit := DllPrepareCall( snDllHandle, DLL_STDCALL, "SocMapiDeInit" ) scDLLSocMapiIsLoggedOn:= DllPrepareCall( snDllHandle, DLL_STDCALL, "SocMapiIsLoggedOn" ) scDLLSocMapiLogon := DllPrepareCall( snDllHandle, DLL_STDCALL, "SocMapiLogon" ) scDLLSocMapiLogoff := DllPrepareCall( snDllHandle, DLL_STDCALL, "SocMapiLogoff" ) scDLLSocMapiSendMail := DllPrepareCall( snDllHandle, DLL_STDCALL, "SocMapiSendMail" ) scDLLSocMapiPostMail := DllPrepareCall( snDllHandle, DLL_STDCALL, "SocMapiPostMail" ) scDLLInboxOpen := DllPrepareCall( snDllHandle, DLL_STDCALL, "InboxOpen" ) scDLLInboxClose := DllPrepareCall( snDllHandle, DLL_STDCALL, "InboxClose" ) scDLLInboxGoTop := DllPrepareCall( snDllHandle, DLL_STDCALL, "InboxGoTop" ) scDLLInboxSkip := DllPrepareCall( snDllHandle, DLL_STDCALL, "InboxSkip" ) scDLLAskFlag := DllPrepareCall( snDllHandle, DLL_STDCALL, "AskFlag" ) scDLLAskBufferSize := DllPrepareCall( snDllHandle, DLL_STDCALL, "AskBufferSize" ) scDLLStuffBuffer := DllPrepareCall( snDllHandle, DLL_STDCALL, "StuffBuffer" ) scDLLCountRecipients := DllPrepareCall( snDllHandle, DLL_STDCALL, "CountRecipients" ) scDLLCountAttachments := DllPrepareCall( snDllHandle, DLL_STDCALL, "CountAttachments" ) scDLLSaveAttachments := DllPrepareCall( snDllHandle, DLL_STDCALL, "SaveAttachments" ) scDLLMarkAsRead := DllPrepareCall( snDllHandle, DLL_STDCALL, "MarkAsRead" ) //initialize MAPI if DllExecuteCall( scDLLSocMapiIsInit ) == 0 nErr := DllExecuteCall( scDLLSocMapiInit ) if nErr != 0 MsgBox("MAPI kann nicht initialisiert werden! Errorcode: " + ALLTRIM(str(nErr)) ) return endif endif //if not already logged on, Logon to new MAPI session if DllExecuteCall( scDLLSocMapiIsLoggedOn ) == 0 if (nErr := DllExecuteCall(scDLLSocMapiLogon)) != SUCCESS_SUCCESS NotifyError( nErr ) return endif endif ..... BEGIN SEQUENCE nErr := DllExecuteCall( scDLLSocMapiSendMail , mailadr , ConvToAnsiCP( alltrim( ::Subject:editBuffer() ) ), ConvToAnsiCP( mailtext ), "", NOFLAG ) if nErr != SUCCESS_SUCCESS .and. nErr != MAPI_USER_ABORT break nErr endif RECOVER USING nErr NotifyError (nErr) END SEQUENCE .... //Logoff from MAPI session DllExecuteCall(scDLLSocMapiLogoff)
Martin
Kennt jemand anders das Problem? Kennt jemand einen Work Around?
Uli