这年头!看来不给高分不行呀!这年头!哎!
我以前找到了一个有关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事件接口?
[解决办法]
用VC++ 2005 resource editor方式打开msnmsgr.exe,他包含了8个tlb文件!直接用oleview看,可能值看到了第一个tlb
[解决办法]
struct __declspec(uuid( "305d86c6-6896-4099-91f5-cb7ba7733563 "))
/* dual interface */ IMsgrSessionManager;
struct __declspec(uuid( "42d7cafc-0167-4941-a5d8-9fd7f104c41a "))
/* dual interface */ IMsgrSession;
typedef enum __MIDL___MIDL_itf_msgrpriv_0000_0000_0001 SESSION_STATE;
struct __declspec(uuid( "36602afa-4859-4df5-820b-bf35acaa16ca "))
/* interface */ IMsgrLock;
typedef enum __MIDL___MIDL_itf_msgrpriv_0000_0000_0005 LockStatus;
struct __declspec(uuid( "7c95459b-c8e7-4605-b641-45eb06866659 "))
/* dual interface */ IMessengerPrivate;
struct __declspec(uuid( "d21454f8-43e3-4d64-b1e3-84911baf207d "))
/* dispinterface */ DMessengerPrivateEvents;
struct __declspec(uuid( "52ac8b62-8f88-46ca-902a-1f9106b0a9f4 "))
/* dispinterface */ DMsgrSessionManagerEvents;
struct __declspec(uuid( "1847a74f-2e7f-43af-b7f9-55a4de3276f5 "))
/* dispinterface */ DMsgrSessionEvents;
struct /* coclass */ MessengerPriv;
struct /* coclass */ MsgrSessionManager;
struct /* coclass */ MsgrSession;