我正在尝试改善Lotus Notes客户端代码:
加工:
#import "...\IBM\Lotus\Notes\notes32.tlb" no_dual_interfaces raw_native_types
CComPtr<IDispatch> session_dispatch;
if(FAILED(session_dispatch.CoCreateInstance(_T("Notes.NotesSession"))))
...
NOTESSESSION *session = static_cast<NOTESSESSION *>(*&session_dispatch);
这给了我一个有效的
NOTESSESSION
对象,该对象知道它需要通过IDispatch
才能实际调用方法。我在网上发现了一些example code,它看起来更聪明,并且采用了更高的Notes版本:
#import "...\IBM\Lotus\Notes\domobj.tlb" raw_interfaces_only raw_native_types
CComPtr<Domino::ISession> notes;
if(FAILED(notes.CoCreateInstance(_T("Notes.NotesSession"))))
...
但是,这返回
E_NOINTERFACE
。正如其他人声称可以使用类似的代码一样,我想知道这里可能会发生什么,并谦虚地问其他人是否有有效的代码来实例化Session对象并获得有效的接口(interface)指针。 最佳答案
对于domobj.tlb,应使用“Domino.NotesSession”而不是“Notes.NotesSession”。