Well, OLE is REALLY easy to use while you have done it once.
In fact you get a kind of dictionary of the OLE enabled application which described the differents objects made available to the user.
Those objects will then have some methods and some properties.
The OLE "dictionary" is VBAOUTL9.chw for Outlook (9 is the version). You can have one for word, excel, ...
Here are some examples to show you how easy it is (this is in VBScript):Create a new task in outlook using OLE:
Const olTaskItem = 3
' *** Create Outlook Object and Task Item
set objOutlook = CreateObject("Outlook.application")
Set itmTask = objOutlook.CreateItem(olTaskItem)
' *** Set the task Attributes
itmTask.Subject = "My Task Subject"
itmTask.DueDate = Date()
' *** Clean up
Set itmTask = Nothing
set objOutlook = NothingSend a mail with outlook using OLE:
' Some declarations
Dim Outlook, NameSpace, newMail
Set Outlook = WScript.CreateObject("Outlook.Application")
Set NameSpace = Outlook.getNamespace("MAPI")
Set newMail = Outlook.CreateItem(olMailItem)
' The interresting stuffs
newMail.Subject = "This is my subject"
newMail.Body = "This is my mail body" & vbCrLf
' Some cleaning
Set Outlook = Nothing
Those are small and stupid examples. The declaration is the most obscure part when you start with OLE but plenty examples are available in the "dictionaries" and a copy/paste will do the job.
Once you played with it you will find that it is much faster, much more powerful and safer than winactivate+sendkey.
In my company, we have a VoIP (ala Skype) and having OLE in AHK whould allow me to easily answer the phone with assigning a hotkey (preferabily a button of my Logitech MX610 8) ) to trigger the right OLE method.
For sure, it is not only this VoIP but a lot of applications allow this and this makes things easier.