描述:
我以前找到了一个有关MSN开发的帖子,上面介绍了MSN6.0版本的接口及使用实例。网址:http://www.vckbase.com/document/viewdoc/?id=1050
他的得到的MSN的接口如下:
IMessenger
IMessenger2
IMessenger3
DMessengerEvents
IMessengerWindow
IMessengerConversationWnd
IMessengerContact
IMessengerContacts
IMessengerService
ImessengerServices
IMessengerGroup
IMessengerGroups
原文作者说是用利用Visual Studio Tools 中的OLEView来生成一个.tlb文件的。我觉得应该先由OLEView生成IDL文件,然后再转换为tlb文件的。
我的问题是:我在自己的机器上装了MSN Messenger6.0,用VC6的OLEView工具打开了msnmsgr.exe文件,转换成IDL文件,但发现接口只有如下几个:
interface IMsgrSessionManager;
interface IMsgrSession;
interface IMsgrLock;
interface IMessengerPrivate;
dispinterface DMessengerPrivateEvents;
dispinterface DMsgrSessionManagerEvents;
dispinterface DMsgrSessionEvents;
并不是原文作者得到的那些接口,我又重新安装了MSN 8.0 版本的,用OLEView工具打开后发现接口和上述一样,MSN 8.0 版本的接口如下:
interface IMsgrSessionManager;
interface IMsgrSession;
interface IMsgrLock;
interface IMessengerPrivate;
dispinterface DMessengerPrivateEvents;
dispinterface DMsgrSessionManagerEvents;
dispinterface DMsgrSessionEvents;
我真的很郁闷呀!请问高手这是怎么回事?另外,原文帖子中的链接 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winmessenger/winmessenger/messenger_entry.asp 中介绍的是Windows Messager的接口,并不是MSN的,这个我已经使用几个接口验证过了,的确不是MSN的接口,请问怎样才能正确得到MSN的接口?
我又用从MSN8.0中的msnmsgr.exe文件得到了IDL文件,并转换为tlb文件,我用VC6只能成功创建CLSID_MessengerPriv组件,并只能得到IMessengerPrivate接口,IMsgrLock接口 和 事件接口DMessengerPrivateEvents,其他的接口不能得到。
请问怎样才能得到DMsgrSessionEvents事件接口?
解决方案1:
在VC++ 2005中用resource editor方式打开msnmsgr.exe打开以后,展开"TYPELIB",看到8个typelib,鼠标选中一个,右键菜单"Export..."把它另存为一个tlb文件,然后选择一个不同的,再另存为...