ich habe folgendes Problem:
Es soll unter Windows auf ein Exchange-Postfach zugegriffen werden und Mails bearbeitet werden.
Dazu wollte ich ComatePlus nutzen. Klappt auch fast alles, nur:
Am Ende des Programms läuft die Outlook.exe weiter, obwohl sie eigentlich beendet werden soll.
Ich hab mal ein Testprgramm erstellt, welches den Fehler enthält:
Code: Alles auswählen
;erstellt unter Verwendung von:
;/////////////////////////////////////////////////////////////////////////////////
;***COMate*** COM automation through iDispatch.
;*===========
;*
;*Outlook demo by Marco2007.
;/////////////////////////////////////////////////////////////////////////////////
EnableExplicit
XIncludeFile "c:\Programme\PureBasic\COMatePlus\COMatePLUS.pbi"
Define.COMateObject OutlookObject, empf_wetter, folder_wetter_inbox, NS
Define.l lObject_handler
Define.s str_kommando
Define.l hStatement, hResult
OutlookObject = COMate_CreateObject("Outlook.Application")
If OutlookObject
;namespace festlegen
str_kommando = "GetNamespace(" + Chr(39) + "MAPI" + Chr(39) + ")"
ns=OutlookObject\GetObjectProperty(str_kommando)
If ns
;Empfänger anlegen
str_kommando = "Logon(" + Chr(39) + "H0815" + Chr(39) + ",#nullstring, #FALSE, #TRUE)" ;H0815 - Profilname
hStatement = COMate_PrepareStatement(str_kommando)
hResult = ns\invoke("", hStatement)
str_kommando = "CreateRecipient(" + Chr(39) + "A12345" + Chr(39) + ")" ;A12345 - Adressbucheintrag
empf_wetter = ns\GetObjectProperty(str_kommando)
If empf_wetter
lObject_handler = empf_wetter\GetCOMObject()
; Ordnerobjekt anlegen
;kommandostring für Folder erstellen
str_kommando = "GetSharedDefaultFolder(" + Str(lObject_handler) + " as iDispatch, 6)"
hStatement = COMate_PrepareStatement(str_kommando)
If hStatement = 0
MessageRequester("COMatePLUS!", "Couldn't create the statement!" + #CRLF$ + #CRLF$ + "COMatePLUS error : " + COMate_GetLastErrorDescription())
End
EndIf
folder_wetter_inbox = ns\GetObjectProperty("", hStatement)
If folder_wetter_inbox
folder_wetter_inbox\Release()
Debug COMate_GetLastErrorDescription()
Else
MessageRequester("Folder Wetter inbox konnte nicht angelegt werden", "- ns\GetObjectProperty(" + Chr(10) + str_kommando + ")" + Chr(10) + COMate_GetLastErrorDescription())
EndIf
empf_wetter\Release()
Else
MessageRequester("Empfänger konnte nicht angelegt werden", "- ns\GetObjectProperty(" + Chr(10) + str_kommando + ")" + Chr(10) + COMate_GetLastErrorDescription())
EndIf
ns\Invoke("Logoff")
Debug COMate_GetLastErrorDescription()
ns\Release()
Else
MessageRequester("Namespace konnte nicht angelegt werden", "- ns\GetObjectProperty(" + Chr(10) + str_kommando + ")" + Chr(10) + COMate_GetLastErrorDescription())
EndIf
hResult=OutlookObject\Invoke("Quit")
Debug COMate_GetLastErrorDescription()
OutlookObject\Release()
Else
MessageRequester("Outlook Objekt konnte nicht angelegt werden", "- ns\GetObjectProperty(" + Chr(10) + str_kommando + ")" + Chr(10) + COMate_GetLastErrorDescription())
EndIf
End
Code: Alles auswählen
Sub test()
Dim i, app_out, ns, empf_wetter
Dim folder_wetter_inbox
Set app_out = CreateObject("Outlook.Application")
Set ns = app_out.GetNamespace("MAPI")
ns.Logon "H0815", , False, True
Set empf_wetter = ns.CreateRecipient("A12345")
'
''Ordnerobjekte anlegen
Set folder_wetter_inbox = ns.GetSharedDefaultFolder(empf_wetter, 6)
'Aufräumen
Set folder_wetter_inbox = Nothing
Set empf_wetter = Nothing
Set ns = Nothing
Set app_out = Nothing
End Sub
Ich hatte schon mal bei
http://www.development-lounge.de/viewto ... =31&t=6629
nachgefragt, dort aber bis jetzt keine Antwort bekommen.
Vielen Dank schon mal für Hinweise.
H. Mager