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)