Page 1 of 1

COMatePlus Outlook Question

Posted: Tue Jul 12, 2011 9:38 am
by Joestes
Hi,

I downloaded COMatePlus and want to create an appointment in Outlook.

I created the appointment/meeting like this:

Code: Select all

XIncludeFile "C:\Program Files\PureBasic\Include\COMatePlus.pbi" 

Define.COMateObject OutlookObject.COMateObject, olMsg.COMateObject

sub.s     = "Meeting"
standard.s= "Hello"
loc.s     = "My room"

OutlookObject = COMate_CreateObject("Outlook.Application") 
If OutlookObject 
 olMsg = OutlookObject\GetObjectProperty("CreateItem(1)") 
 If olMsg 
  olMsg\SetProperty("Subject='"+sub+"'") 
  olMsg\SetProperty("Location='"+loc+"'") 
  olMsg\SetProperty("Start='1/1/2012 1:30:00 PM'") 
  olMsg\Invoke("Display") 
  olMsg\Release() 
 Else 
  MessageRequester("Sorry", COMate_GetLastErrorDescription()) 
 EndIf 
 OutlookObject\Release()  
Else 
 MessageRequester("Sorry - CreateObject", COMate_GetLastErrorDescription()) 
EndIf
I was wondering if anyone else managed to add recipients...?

On Microsoft's pages I found it works like this:

Code: Select all

Set myRequiredAttendee = myItem.Recipients.Add("Joost _ Anbeek")
myRequiredAttendee.Type = olRequired
Set myOptionalAttendee = myItem.Recipients.Add("Henk _ de Vries")
myOptionalAttendee.Type = olOptional
Set myResourceAttendee = _myItem.Recipients.Add("Conference Room B")
myResourceAttendee.Type = olResource
Is there any way to do this in Purebasic?

Thanks in advance!!

Re: COMatePlus Outlook Question

Posted: Tue Jul 12, 2011 11:34 am
by spikey

Code: Select all

IncludeFile "COMatePLUS.pbi"

Define OutlookObject.COMateObject, olMsg.COMateObject, olRecip.COMateObject
Define.I flagSuccess

sub.s     = "Meeting"
standard.s= "Hello"
loc.s     = "My room"

OutlookObject = COMate_CreateObject("Outlook.Application")
If OutlookObject
  olMsg = OutlookObject\GetObjectProperty("CreateItem(1)")
  If olMsg
       
    olMsg\SetProperty("Subject='"+sub+"'")
    olMsg\SetProperty("Location='"+loc+"'")
    olMsg\SetProperty("Start='1/1/2012 1:30:00 PM'")
    
    ; Required attendee
    olRecip = olMsg\GetObjectProperty("Recipients\Add('Joost _ Anbeek')")
    If olRecip
      olRecip\SetProperty("Type=1")
      flagSuccess = #True
      
    Else
      flagSuccess = #False
      
    EndIf
    
    If flagSuccess
      
      ; Optional attendee
      olRecip = olMsg\GetObjectProperty("Recipients\Add('Henk _ de Vries')")
      If olRecip
        olRecip\SetProperty("Type=2")
      Else
        flagSuccess = #False
      EndIf
      
      ; Resource
      olRecip = olMsg\GetObjectProperty("Recipients\Add('Conference Room B')")
      If olRecip
        olRecip\SetProperty("Type=3")
      Else
        flagSuccess = #False
      EndIf
      
    EndIf
    
    olMsg\Invoke("Display")
    olMsg\Release()
    olRecip\Release()
    
    If flagSuccess = #False
      MessageRequester("Sorry", "Add recipients failed. The security confirmation may have been cancelled.")  
    EndIf
    
  Else
    MessageRequester("Sorry", COMate_GetLastErrorDescription())
  EndIf
  OutlookObject\Release() 
Else
  MessageRequester("Sorry - CreateObject", COMate_GetLastErrorDescription())
EndIf
Note that the attempt to add contacts/resources via the COM interface is regarded as a potential malware activity and triggers a security confirmation in Outlook which the user has the option to cancel. If so, these methods will fail.

Re: COMatePlus Outlook Question

Posted: Tue Jul 12, 2011 2:26 pm
by Joestes
Thanks a lot!

This is exactly what I needed!

Re: COMatePlus Outlook Question

Posted: Wed Sep 28, 2016 8:33 am
by dige
@spikey: thank you for that nice example of creation an outlook appointment.

But how can I read appointments from calendar? Can you help?

Ciao dige

Re: COMatePlus Outlook Question

Posted: Wed Sep 28, 2016 10:18 am
by dige
Found in the German forum: http://www.purebasic.fr/german/viewtopi ... 16&t=29223

Code: Select all

; by dietmar

#olFolderCalendar          = 9
#olFolderContacts          = 10
#olFolderSuggestedContacts = 30


Global Outlook.COMateObject, NameSpace.COMateObject, Folder.COMateObject, Items.COMateObject, Termin.COMateObject, TerminWiederholung.COMateObject

Outlook = COMate_CreateObject("Outlook.Application")
If Outlook
  NameSpace = Outlook\GetObjectProperty("GetNamespace(" + Chr(39) + "MAPI" + Chr(39) + ")")
  If NameSpace
    Folder = NameSpace\GetObjectProperty("GetDefaultFolder(" + 9 + ")")
    If Folder
      Items = Folder\GetObjectProperty("Items")
      Items\SetProperty("Item\Sort" + Chr(39) + "[Start] >= '09/09/2016'"  + Chr(39))
      Items\SetProperty("items\IncludeRecurrences = True)")
      If Items
        For i=1 To i+1
          Termin = Items\GetObjectProperty("Item("+Str(i)+")" )
          TerminWiederholung = Items\GetObjectProperty("Item("+Str(i)+")\GetRecurrencePattern" )
          If Not Termin: Break: EndIf
          Debug Termin\GetStringProperty("Subject") + ", " + Termin\GetStringProperty("Start") + " bis " + Termin\GetStringProperty("End") + " Uhr"
          ; Debug TerminWiederholung\GetStringProperty("Item("+Str(i)+")\RecurrenceType")
          ; Debug TerminWiederholung\GetStringProperty("Item("+Str(i)+")\RecurrenceType")
          ; Debug TerminWiederholung\GetStringProperty("Item("+Str(i)+")\DayOfWeekMask")
          ; Debug TerminWiederholung\GetStringProperty("Item("+Str(i)+")\MonthOfYear")
          ; Debug TerminWiederholung\GetStringProperty("Item("+Str(i)+")\Instance")
          ; Debug TerminWiederholung\GetStringProperty("Item("+Str(i)+")\Occurrences")
          ; Debug TerminWiederholung\GetStringProperty("Item("+Str(i)+")\Duration")
          ; Debug TerminWiederholung\GetStringProperty("Item("+Str(i)+")\PatternStartDate")
          ; Debug TerminWiederholung\GetStringProperty("Item("+Str(i)+")\StartTime")
          ; Debug TerminWiederholung\GetStringProperty("Item("+Str(i)+")\EndTime")
          
        Next
        If Termin   : Termin\Release()  : EndIf
        If Items    : Items\Release()    : EndIf
        If Folder   : Folder\Release()   : EndIf
        If NameSpace: NameSpace\Release(): EndIf
        If Outlook  : Outlook\Release()  : EndIf
      EndIf
    EndIf
  EndIf
EndIf