Here is some code which reads data from Outlook (2007 was tested) into Powerbuilder. You basically need to create a window with a multiline edit and a button on it. Put this into the clicked event of the button.
To run it, open Outlook, select something (email message, task, etc.) then click the button on your PB window. There are many, many more methods and properties you have access to from PB via OLE to Outlook. The MSDN reference online is a big help
integer li_rc
long ll_itemcount, ll_i
oleobject lole_item, lole_outlook, lole_exp, lole_selecteditems
string ls_subject, ls_from, ls_to, ls_body, ls_msg
lole_outlook = CREATE oleobject
lole_exp = CREATE oleobject
lole_selecteditems = CREATE oleobject
li_rc = lole_outlook.ConnectToNewObject("outlook.application")
lole_exp = lole_outlook.ActiveExplorer()
// Outlook has to be running
If IsNull(lole_exp) THEN
Messagebox('Outlook Error','Is Outlook currently running?')
GOTO cleanup
END IF
li_rc = lole_exp.class
// caption is window name like "Inbox - Microsoft Outlook" or "Calendar - Microsoft Outlook"
ls_subject = lole_exp.caption
lole_selecteditems = lole_exp.selection
ll_itemcount = lole_selecteditems.count
FOR ll_i = 1 to ll_itemcount
lole_item = CREATE oleobject
lole_item = lole_exp.selection.item(ll_i)
li_rc = lole_item.class
CHOOSE CASE li_rc
CASE 26 //appointment
ls_body = lole_item.body
ls_msg += '~r~n Appointment No: ' + string(ll_i) + ' of ' + string(ll_itemcount) + '~r~n' + ls_body
// lots of other stuff could be here
CASE 40 // contact
ls_body = lole_item.body
ls_msg += '~r~n Contact No: ' + string(ll_i) + ' of ' + string(ll_itemcount) + '~r~n' + ls_body
CASE 43 // mail
ls_subject = lole_item.subject
ls_from = lole_item.sendername
ls_to = lole_item.to
ls_body = lole_item.body
ls_msg = '~r~nSubject: ' + ls_subject + '~r~nFrom: ' + ls_from + '~r~nTo: ' + ls_to + '~r~nBody: ' + ls_body
ls_msg += '~r~n Email No: ' + string(ll_i) + ' of ' + string(ll_itemcount) + '~r~n' + ls_msg
CASE 48 // task
ls_subject = lole_item.subject
ls_to = lole_item.owner
ls_body = lole_item.body
ls_msg = '~r~nSubject: ' + ls_subject + '~r~nOwner: ' + ls_to + '~r~nBody: ' + ls_body
ls_msg += '~r~n Task No: ' + string(ll_i) + ' of ' + string(ll_itemcount) + '~r~n' + ls_msg
END CHOOSE
DESTROY lole_item
NEXT
IF Len(ls_msg) > 0 THEN
mle_1.text = ls_msg
ELSE
mle_1.text = 'No items processed.'
END IF
cleanup:
DESTROY lole_selecteditems
DESTROY lole_exp
DESTROY lole_outlook
Comments (1)