gtalk 支持 multi-chat

2007-06-23 23:49:37


// Generated .IDL file (by the OLE/COM Object Viewer)
//
// typelib filename: googletalk.exe

[
  uuid(7B29C130-826A-4070-BA18-EC01E703D244),
  version(1.0),
  helpstring("Google Talk API 1.0 Type Library"),
  custom(DE77BA64-517C-11D1-A2DA-0000F8773CE9, 100663657),
  custom(DE77BA63-517C-11D1-A2DA-0000F8773CE9, 1167684000),
  custom(DE77BA65-517C-11D1-A2DA-0000F8773CE9, Created by MIDL version 6.00.0361 at Mon Jan 01 12:39:59 2007
)

]
library GoogleTalkAPILib
{
    // TLib :     // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
    importlib("stdole2.tlb");

    // Forward declare all types defined in this typelib
    interface ITalkAPI;
    interface IMUCTalkAPI;
    interface IChatRoom;
    interface IMUCTalkPlugin;
    interface IChatRoomContact;
    interface ITalkFriend;
    interface ITalkPlugin;
    interface ITalkTunnelExp;

    [
      odl,
      uuid(4A1527F6-C11F-4131-82BC-FE891D4E3B70),
      helpstring("ITalkAPI Interface"),
      dual,
      oleautomation
    ]
    interface ITalkAPI : IUnknown {
        [id(0x60010000)]
        HRESULT RegisterPlugin(
                        [in] BSTR plugin_guid,
                        [in] BSTR plugin_name,
                        [in] BSTR plugin_description,
                        [in] BSTR plugin_url,
                        [in] BSTR capability,
                        [out, retval] BSTR* token);
        [id(0x60010001)]
        HRESULT UnregisterPlugin(BSTR plugin_guid_or_progid);
        [id(0x60010002)]
        HRESULT SendMessage(
                        [in] BSTR token,
                        [in] BSTR user_id,
                        [in] SAFEARRAY(unsigned char) data);
        [id(0x60010003)]
        HRESULT SendTextMessage(
                        [in] BSTR token,
                        [in] BSTR user_id,
                        [in] BSTR message);
        [id(0x60010004)]
        HRESULT GetFriends(
                        [in] BSTR token,
                        [out, retval] SAFEARRAY(VARIANT)* friends);
    };

    [
      odl,
      uuid(7A9D1480-C6A1-11DA-95AB-00E08161165F),
      helpstring("IMUCTalkAPI Interface"),
      dual,
      oleautomation
    ]
    interface IMUCTalkAPI : ITalkAPI {
        [id(0x60020000)]
        HRESULT OpenChatRoom(
                        [in] BSTR room_jid,
                        [in] BSTR user_nickname,
                        [in] BSTR user_resource,
                        [in] BSTR user_app_capability,
                        [in] BSTR user_app_presence,
                        [out, retval] IChatRoom** chatroom_interface);
    };

    [
      odl,
      uuid(74C992C7-BA13-4E6A-A469-B43AE8FD557A),
      helpstring("IChatRoom Interface"),
      dual,
      oleautomation
    ]
    interface IChatRoom : IUnknown {
        [id(0x60010000)]
        HRESULT GetContacts([out, retval] SAFEARRAY(VARIANT)* contacts);
        [id(0x60010001)]
        HRESULT SetUserNickname([in] BSTR nickname);
        [id(0x60010002)]
        HRESULT SetUserPresenceState(
                        [in] BSTR capability,
                        [in] BSTR presence);
        [id(0x60010003)]
        HRESULT LeaveRoom();
        [id(0x60010004)]
        HRESULT BroadcastMessage(
                        [in] BSTR token,
                        [in] SAFEARRAY(unsigned char) data);
    };

    [
      odl,
      uuid(4C9DC108-C73F-11DA-95AB-00E08161165F),
      helpstring("IMUCTalkPlugin Interface"),
      dual,
      oleautomation
    ]
    interface IMUCTalkPlugin : IUnknown {
        [id(0x60010000)]
        HRESULT OnNewContact([in] IChatRoomContact* chatroom_contact);
        [id(0x60010001)]
        HRESULT OnDeleteContact([in] IChatRoomContact* chatroom_contact);
        [id(0x60010002)]
        HRESULT OnPresenceUpdate([in] IChatRoomContact* chatroom_contact);
    };

    [
      odl,
      uuid(2C876D28-FB0C-11DA-9804-B622A1EF5492),
      helpstring("IChatRoomContact Interface"),
      dual,
      oleautomation
    ]
    interface IChatRoomContact : IUnknown {
        [id(0x60010000)]
        HRESULT GetNickname([out, retval] BSTR* nickname);
        [id(0x60010001)]
        HRESULT GetResource([out, retval] BSTR* resource);
        [id(0x60010002)]
        HRESULT GetCapability([out, retval] BSTR* capability);
        [id(0x60010003)]
        HRESULT GetPresenceState([out, retval] BSTR* presence);
        [id(0x60010004)]
        HRESULT GetRoomJid([out, retval] BSTR* room_jid);
    };

    [
      odl,
      uuid(38FDD2C4-9164-4EAF-8C74-24D764FF613E),
      helpstring("ITalkFriend Interface"),
      dual,
      oleautomation
    ]
    interface ITalkFriend : IUnknown {
        [id(0x60010000)]
        HRESULT GetName([out, retval] BSTR* name);
        [id(0x60010001)]
        HRESULT GetUserId([out, retval] BSTR* user_id);
        [id(0x60010002)]
        HRESULT GetCapabilities([out, retval] SAFEARRAY(BSTR)* capabilities);
        [id(0x60010003)]
        HRESULT GetStatus([out, retval] unsigned long* status);
    };

    [
      odl,
      uuid(5A9FF74C-53D0-4513-9481-0F61EDEEFFE2),
      helpstring("ITalkPlugin Interface"),
      dual,
      oleautomation
    ]
    interface ITalkPlugin : IUnknown {
        [id(0x60010000)]
        HRESULT OnReceiveMessage(
                        [in] IUnknown* talk_friend,
                        [in] SAFEARRAY(unsigned char) data);
        [id(0x60010001)]
        HRESULT OnDropDataOverFriend(
                        [in] IUnknown* talk_friend,
                        [in] BSTR token);
    };

    [
      odl,
      uuid(65D12388-C5E9-468C-83B9-60AEA2E658DF),
      helpstring("ITalkTunnelExp Interface"),
      dual,
      oleautomation
    ]
    interface ITalkTunnelExp : IUnknown {
        [id(0x60010000)]
        HRESULT RelayUrl(
                        [in] BSTR token,
                        [in] BSTR user_id,
                        [in] BSTR url);
    };

    [
      uuid(0507EEDE-3AE7-49C7-BF37-0EB4A62D8638),
      helpstring("TalkAPI Class")
    ]
    coclass TalkAPI {
        [default] interface IMUCTalkAPI;
        interface ITalkAPI;
    };

    [
      uuid(D33F3CED-D7D5-44F1-A9FE-6927DABB1934),
      helpstring("ChatRoom Class")
    ]
    coclass ChatRoom {
        [default] interface IChatRoom;
    };

    [
      uuid(33B07FD4-5917-43E1-968D-4C79231836BF),
      helpstring("ChatRoomContact Class")
    ]
    coclass ChatRoomContact {
        [default] interface IChatRoomContact;
        interface ITalkTunnelExp;
    };

    [
      uuid(A8F086C3-2497-4229-82FE-586F2D326F95),
      helpstring("TalkFriend Class")
    ]
    coclass TalkFriend {
        [default] interface ITalkFriend;
    };
};