[Prev][Next][Index][Thread]
More COM questions
Hey Dylan COM experts, try this one. I have successfully created an Outlook
interface and started getting information from Outlook. When I get to the
point of actually grabbing mail (they are MailItem objects), the return
type from the Items/Item function is <LPDISPATCH> not <MailItem>. Actually
what it returns is a <c-interface> object. How do I convert that
<c-interface> object into a <MailItem> object. I should mention that
<MailItem> is one of the classes created by Functional Dylan through the COM
wizard when I gave it the Outlook object library. Here's an example that I
started to cobble together:
// Assumes OLE-initialize has been called.
define method Get-Inbox( ) => ( result :: <sequence> )
let inbox-items = make( <sequence> );
let Outlook-interface =
reate-dispatch( "{0006F033-0000-0000-C000-000000000046}",
context: $CLSCTX-SERVER );
assert ( Outlook-interface ~= #f );
let application = make( <_DApplication>, disp-interface:
Outlook-interface );
let namespace = _DApplication/GetNamespace( application, "MAPI" );
let defaultFolder = NameSpace/GetDefaultFolder( namespace,
$olFolderInbox );
let items = defaultFolder/Items;
for ( i from 1 below Items/Count( items ) )
// returns a <c-interface> object. How do you convert that into
// a MailItem object?
inbox-items[ i ] := Items/Item( i );
end for;
...