//+--------------------------------------------------------------------------- // // Copyright 1997 Microsoft Corporation. All Rights Reserved. // // Contents: IMsgrObject interface // //---------------------------------------------------------------------------- #ifdef __MKTYPLIB__ #define VARIANT_BOOL boolean #else // __MKTYPLIB__ cpp_quote("//+-------------------------------------------------------------------------") cpp_quote("//") cpp_quote("// Microsoft Windows") cpp_quote("// Copyright 1997 Microsoft Corporation. All Rights Reserved.") cpp_quote("//") cpp_quote("// File: mdisp.h") cpp_quote("//") cpp_quote("//--------------------------------------------------------------------------") import "objidl.idl"; import "oleidl.idl"; import "oaidl.idl"; #endif // __MKTYPLIB__ #include "mdispid.h" #define MSGR_S(e) (0x01000300 + (e)) #define MSGR_E(e) (0x81000300 + (e)) #define MSGR_E_OE(e) (0x81000300 + (e)) #define E_FAIL 0x80004005 #define S_OK 0 ////////////////////////////////////////////////////////////////////////////////// // GUID usage: // {218CB450-20B6-11d2-8E17-0000F803A446}-{218CB45F-20B6-11d2-8E17-0000F803A446} //-------------------------------------------------------------------------- // Type Library [ uuid(218CB45F-20B6-11d2-8E17-0000F803A446), // LIBID_Messenger version(1.0), helpstring("Messenger Type Library") ] library Messenger { importlib("stdole2.tlb"); interface IMsgrObject; interface IMsgrUser; interface IMsgrUsers; interface IMsgrIMSession; interface IMsgrIMSessions; interface IMessengerApp; interface IMessengerIMWindow; interface IMessengerIMWindows; interface IMsgrOE; interface IMsgrUserOE; interface IMsgrUsersOE; #define DISPID_VALUE 0 #define DISPID_NEWENUM -4 typedef enum { MSTATEOE_UNKNOWN = 0x0000, MSTATEOE_OFFLINE = 0x0001, MSTATEOE_ONLINE = 0x0002, MSTATEOE_INVISIBLE = 0x0006, MSTATEOE_BUSY = 0x000A, MSTATEOE_BE_RIGHT_BACK = 0x000E, MSTATEOE_IDLE = 0x0012, MSTATEOE_AWAY = 0x0022, MSTATEOE_ON_THE_PHONE = 0x0032, MSTATEOE_OUT_TO_LUNCH = 0x0042, MSTATEOE_LOCAL_FINDING_SERVER = 0x0100, MSTATEOE_LOCAL_CONNECTING_TO_SERVER = 0x0200, MSTATEOE_LOCAL_SYNCHRONIZING_WITH_SERVER = 0x0300, MSTATEOE_LOCAL_DISCONNECTING_FROM_SERVER = 0x0400, } MSTATEOE; typedef enum { MSGR_E_OE_CONNECT = MSGR_E_OE(0x0001), MSGR_E_OE_INVALID_SERVER_NAME = MSGR_E_OE(0x0002), MSGR_E_OE_INVALID_PASSWORD = MSGR_E_OE(0x0003), MSGR_E_OE_ALREADY_LOGGED_ON = MSGR_E_OE(0x0004), MSGR_E_OE_SERVER_VERSION = MSGR_E_OE(0x0005), MSGR_E_OE_LOGON_TIMEOUT = MSGR_E_OE(0x0006), MSGR_E_OE_LIST_FULL = MSGR_E_OE(0x0007), MSGR_E_OE_AI_REJECT = MSGR_E_OE(0x0008), MSGR_E_OE_AI_REJECT_NOT_INST = MSGR_E_OE(0x0009), MSGR_E_OE_USER_NOT_FOUND = MSGR_E_OE(0x000A), MSGR_E_OE_ALREADY_IN_LIST = MSGR_E_OE(0x000B), MSGR_E_OE_DISCONNECTED = MSGR_E_OE(0x000C), MSGR_E_OE_UNEXPECTED = MSGR_E_OE(0x000D), MSGR_E_OE_SERVER_TOO_BUSY = MSGR_E_OE(0x000E), MSGR_E_OE_INVALID_AUTH_PACKAGES = MSGR_E_OE(0x000F), MSGR_E_OE_NEWER_CLIENT_AVAILABLE = MSGR_E_OE(0x0010), MSGR_E_OE_AI_TIMEOUT = MSGR_E_OE(0x0011), MSGR_E_OE_CANCEL = MSGR_E_OE(0x0012), MSGR_E_OE_TOO_MANY_MATCHES = MSGR_E_OE(0x0013), MSGR_E_OE_SERVER_UNAVAILABLE = MSGR_E_OE(0x0014), MSGR_E_OE_LOGON_UI_ACTIVE = MSGR_E_OE(0x0015), MSGR_E_OE_OPTION_UI_ACTIVE = MSGR_E_OE(0x0016), MSGR_E_OE_CONTACT_UI_ACTIVE = MSGR_E_OE(0x0017), MSGR_E_OE_FAIL = E_FAIL, MSGR_S_OE_OK = S_OK, } MSGR_OE_Constants; typedef enum { MSTATE_UNKNOWN = 0x0000, MSTATE_OFFLINE = 0x0001, MSTATE_ONLINE = 0x0002, MSTATE_INVISIBLE = 0x0006, MSTATE_BUSY = 0x000A, MSTATE_BE_RIGHT_BACK = 0x000E, MSTATE_IDLE = 0x0012, MSTATE_AWAY = 0x0022, MSTATE_ON_THE_PHONE = 0x0032, MSTATE_OUT_TO_LUNCH = 0x0042, MSTATE_LOCAL_FINDING_SERVER = 0x0100, MSTATE_LOCAL_CONNECTING_TO_SERVER = 0x0200, MSTATE_LOCAL_SYNCHRONIZING_WITH_SERVER = 0x0300, MSTATE_LOCAL_DISCONNECTING_FROM_SERVER = 0x0400, } MSTATE; typedef enum { MPROMPT_YES_IF_NOT_ALLOWED_OR_BLOCKED = 0, MPROMPT_NO_ADD_TO_ALLOW = 1, } MPROMPT; typedef enum { MMSGPRIVACY_BLOCK_LIST_EXCLUDED = 0, MMSGPRIVACY_ALLOW_LIST_ONLY = 1, } MMSGPRIVACY; typedef enum { MUPDATECHOICE_OPTIONAL = 0, MUPDATECHOICE_MANDATORY = 1, } MUPDATECHOICE; typedef enum { MURLTYPE_CHANGE_PASSWORD = 0, MURLTYPE_CHANGE_INFO = 1, MURLTYPE_COMPOSE_EMAIL = 2, MURLTYPE_GO_TO_EMAIL_INBOX = 3, MURLTYPE_GO_TO_EMAIL_FOLDERS = 4, MURLTYPE_READ_EMAIL_MESSAGE = 5, } MURLTYPE; typedef enum { MLIST_CONTACT = 0, MLIST_ALLOW = 1, MLIST_BLOCK = 2, MLIST_REVERSE = 3, } MLIST; typedef enum { MMSGTYPE_NO_RESULT = 0, MMSGTYPE_ERRORS_ONLY = 1, MMSGTYPE_ALL_RESULTS = 2, } MMSGTYPE; typedef enum { MSGR_E_CONNECT = MSGR_E(0x0001), MSGR_E_INVALID_SERVER_NAME = MSGR_E(0x0002), MSGR_E_INVALID_PASSWORD = MSGR_E(0x0003), MSGR_E_ALREADY_LOGGED_ON = MSGR_E(0x0004), MSGR_E_SERVER_VERSION = MSGR_E(0x0005), MSGR_E_LOGON_TIMEOUT = MSGR_E(0x0006), MSGR_E_LIST_FULL = MSGR_E(0x0007), MSGR_E_AI_REJECT = MSGR_E(0x0008), MSGR_E_AI_REJECT_NOT_INST = MSGR_E(0x0009), MSGR_E_USER_NOT_FOUND = MSGR_E(0x000A), MSGR_E_ALREADY_IN_LIST = MSGR_E(0x000B), MSGR_E_DISCONNECTED = MSGR_E(0x000C), MSGR_E_UNEXPECTED = MSGR_E(0x000D), MSGR_E_SERVER_TOO_BUSY = MSGR_E(0x000E), MSGR_E_INVALID_AUTH_PACKAGES = MSGR_E(0x000F), MSGR_E_NEWER_CLIENT_AVAILABLE = MSGR_E(0x0010), MSGR_E_AI_TIMEOUT = MSGR_E(0x0011), MSGR_E_CANCEL = MSGR_E(0x0012), MSGR_E_TOO_MANY_MATCHES = MSGR_E(0x0013), MSGR_E_SERVER_UNAVAILABLE = MSGR_E(0x0014), MSGR_E_LOGON_UI_ACTIVE = MSGR_E(0x0015), MSGR_E_OPTION_UI_ACTIVE = MSGR_E(0x0016), MSGR_E_CONTACT_UI_ACTIVE = MSGR_E(0x0017), MSGR_E_FAIL = E_FAIL, MSGR_S_OK = S_OK, } MSGRConstants; typedef enum { SSTATE_DISCONNECTED = 0, SSTATE_CONNECTING = 1, SSTATE_CONNECTED = 2, SSTATE_DISCONNECTING = 3, } SSTATE; typedef enum { [helpstring("Proxy State")] MLOPT_PROXY_STATE = 0, [helpstring("Proxy Type")] MLOPT_PROXY_TYPE = 1, [helpstring("SOCKS4 Proxy Server")] MLOPT_SOCKS4_SERVER = 2, [helpstring("SOCKS5 Proxy Server")] MLOPT_SOCKS5_SERVER = 3, [helpstring("HTTPS Proxy Server")] MLOPT_HTTPS_SERVER = 4, [helpstring("SOCKS4 Port")] MLOPT_SOCKS4_PORT = 5, [helpstring("SOCKS5 Port")] MLOPT_SOCKS5_PORT = 6, [helpstring("HTTPS Port")] MLOPT_HTTPS_PORT = 7, [helpstring("SOCKS5 Username")] MLOPT_SOCKS5_USERNAME = 8, [helpstring("SOCKS5 Password")] MLOPT_SOCKS5_PASSWORD = 9, [helpstring("Server Name")] MLOPT_SERVER_NAME = 10, [helpstring("Enable Idle Detect")] MLOPT_ENABLE_IDLE_DETECT = 11, [helpstring("Idle Threshold")] MLOPT_IDLE_THRESHOLD = 12, [helpstring("Idle Detectable")] MLOPT_IDLE_DETECTABLE = 13, [helpstring("ScreenSaver Detectable")] MLOPT_SS_DETECTABLE = 14, } MLOCALOPTION; typedef enum { MLOPT_MAX_PROXY_STRING = 255, MLOPT_MAX_PORT_NUMBER = 65535, } MLOCALOPTION_LIMITS; typedef enum { [helpstring("Proxy Type: No proxy")] MPROXYTYPE_NO_PROXY = 0, [helpstring("Proxy Type: SOCKS 4")] MPROXYTYPE_SOCKS4 = 1, [helpstring("Proxy Type: SOCKS 5")] MPROXYTYPE_SOCKS5 = 2, [helpstring("Proxy Type: HTTPS")] MPROXYTYPE_HTTPS = 3, } MPROXYTYPE; typedef enum { MOPTDLG_GENERAL_PAGE = 0, MOPTDLG_PRIVACY_PAGE = 1, MOPTDLG_CONNECTION_PAGE = 2 } MOPTDLGPAGE; //-------------------------------------------------------------------------- // IMsgrObject Interface [ uuid(218CB451-20B6-11d2-8E17-0000F803A446), // IID_IMsgrObject helpstring("Messenger Object Interface"), helpcontext(0x0000), dual, oleautomation ] interface IMsgrObject : IDispatch { [id(100), helpstring("Creates a user object."), helpcontext(0x0000)] HRESULT CreateUser( [in] BSTR bstrLogonName, [out, retval] IMsgrUser** ppUser); [id(104), helpstring("Initiates a logon."), helpcontext(0x0000)] HRESULT Logon( [in] BSTR bstrUser, [in] BSTR bstrPassword); [id(105), helpstring("Initiates a logoff."), helpcontext(0x0000)] HRESULT Logoff(); [propget, helpstring("Returns a list."), helpcontext(0x0000)] HRESULT List( [in] MLIST mList, [out, retval] IMsgrUsers** ppUsers); [propget, helpstring("Logon name."), helpcontext(0x0000)] HRESULT LocalLogonName( [out, retval] BSTR* pbstrName); [propget, helpstring("Friendly name."), helpcontext(0x0000)] HRESULT LocalFriendlyName( [out, retval] BSTR* pbstrName); [propput, helpstring("Local state."), helpcontext(0x0000)] HRESULT LocalState( [in] MSTATE mState); [propget] HRESULT LocalState( [out, retval] MSTATE* pmState); [propput, helpstring("Message privacy setting."), helpcontext(0x0000)] HRESULT MessagePrivacy( [in] MMSGPRIVACY mmpSetting); [propget] HRESULT MessagePrivacy( [out, retval] MMSGPRIVACY* pmmpSetting); [propput, helpstring("Prompt setting."), helpcontext(0x0000)] HRESULT Prompt( [in] MPROMPT mpSetting); [propget] HRESULT Prompt( [out, retval] MPROMPT* pmpSetting); [id(108), helpstring("Invites another user to use an application."), helpcontext(0x0000)] HRESULT SendAppInvite( [in] IMsgrUser* pUser, [in] LONG lCookie, [in] BSTR bstrAppGUID, [in] BSTR bstrAppName, [in] BSTR bstrAppURL, [in] MMSGTYPE mmtType, [out] LONG* plCookie); [id(109), helpstring("Accepts an invitation to use an application."), helpcontext(0x0000)] HRESULT SendAppInviteAccept( [in] IMsgrUser* pUser, [in] LONG lCookie, [in] MMSGTYPE mmtType, [out] LONG* plCookie); [id(110), helpstring("Cancels an invitation to use an application."), helpcontext(0x0000)] HRESULT SendAppInviteCancel( [in] IMsgrUser* pUser, [in] LONG lCookie, [in] LONG hrReason, [in] MMSGTYPE mmtType, [out] LONG* plCookie); [propput, helpstring("Local options."), helpcontext(0x0000)] HRESULT LocalOption( [in] MLOCALOPTION option, [in] VARIANT vSetting); [propget] HRESULT LocalOption( [in] MLOCALOPTION option, [out, retval] VARIANT* pvSetting); [id(111), helpstring("Finds a user."), helpcontext(0x0000)] HRESULT FindUser( [in] BSTR bstrFirstName, [in] BSTR bstrLastName, [in] BSTR bstrCity, [in] BSTR bstrState, [in] BSTR bstrCountry, [out] LONG* plCookie); [id(112), helpstring("Sends invitation mail."), helpcontext(0x0000)] HRESULT SendInviteMail( [in] BSTR bstrEmailAddress, [in] LONG lFindCookie, [in] LONG lFindIndex, [out] LONG* plCookie); [id(113), helpstring("Requests a URL."), helpcontext(0x0000)] HRESULT RequestURL( [in] MURLTYPE muType, [in] BSTR bstrAdditionalInfo, [out] LONG* plCookie); [propget, helpstring("Returns a list of IM sessions"), helpcontext(0x0000)] HRESULT IMSessions( [out, retval] IMsgrIMSessions** ppIMSessions); [id(114), helpstring("Creates a new IM session."), helpcontext(0x0000)] HRESULT CreateIMSession( [in] VARIANT vUser, [out, retval] IMsgrIMSession** ppIMSession); [id(115), helpstring("Accepts a session request."), helpcontext(0x0000)] HRESULT SessionRequestAccept( [in] IMsgrIMSession* pIMsgrIMSession, [in] long hrReason); [id(116), helpstring("Cancels a session request."), helpcontext(0x0000)] HRESULT SessionRequestCancel( [in] IMsgrIMSession* pIMsgrIMSession, [in] long hrReason); } //-------------------------------------------------------------------------- // DMsgrObjectEvents Interface [ uuid(218CB452-20B6-11d2-8E17-0000F803A446), // DIID_DMsgrObjectEvents helpstring("Messenger Events Interface"), helpcontext(0x0000), hidden ] dispinterface DMsgrObjectEvents { properties: methods: [id(DISPID_ONLOGONRESULT), helpstring("Logon attempt complete."), helpcontext(0x0000)] void OnLogonResult( [in] long hr); [id(DISPID_ONLOGOFF), helpstring("Logoff complete."), helpcontext(0x0000)] void OnLogoff(); [id(DISPID_ONLISTADDRESULT), helpstring("Result from list add request."), helpcontext(0x0000)] void OnListAddResult( [in] long hr, [in] MLIST mList, [in] IMsgrUser* pUser); [id(DISPID_ONLISTREMOVERESULT), helpstring("Result from list remove request."), helpcontext(0x0000)] void OnListRemoveResult( [in] long hr, [in] MLIST mList, [in] IMsgrUser* pUser); [id(DISPID_ONMESSAGEPRIVACYCHANGERESULT), helpstring("Result from message privacy setting change request."), helpcontext(0x0000)] void OnMessagePrivacyChangeResult( [in] long hr, [in] MMSGPRIVACY mmpSetting); [id(DISPID_ONPROMPTCHANGERESULT), helpstring("Result from prompt setting change request."), helpcontext(0x0000)] void OnPromptChangeResult( [in] long hr, [in] MPROMPT mpSetting); [id(DISPID_ONUSERFRIENDLYNAMECHANGERESULT), helpstring("Result from name change request."), helpcontext(0x0000)] void OnUserFriendlyNameChangeResult( [in] long hr, [in] IMsgrUser* pUser, [in] BSTR bstrPrevFriendlyName); [id(DISPID_ONUSERSTATECHANGED), helpstring("User state changed."), helpcontext(0x0000)] void OnUserStateChanged( [in] IMsgrUser* pUser, [in] MSTATE mPrevState); [id(DISPID_ONTEXTRECEIVED), helpstring("Text message received."), helpcontext(0x0000)] void OnTextReceived( [in] IMsgrIMSession* pIMSession, [in] IMsgrUser* pSourceUser, [in] BSTR bstrMsgHeader, [in] BSTR bstrMsgText, [in, out] VARIANT_BOOL* pfEnableDefault); [id(DISPID_ONLOCALSTATECHANGERESULT), helpstring("Result from local state request."), helpcontext(0x0000)] void OnLocalStateChangeResult( [in] long hr, [in] MSTATE mLocalState); [id(DISPID_ONAPPINVITERECEIVED), helpstring("Application invitation received."), helpcontext(0x0000)] void OnAppInviteReceived( [in] IMsgrUser* pUser, [in] long lCookie, [in] BSTR bstrAppGUID, [in] BSTR bstrAppName, [in] BSTR bstrAppURL, [in, out] VARIANT_BOOL* pfEnableDefault); [id(DISPID_ONAPPINVITEACCEPTED), helpstring("Application invitation accepted."), helpcontext(0x0000)] void OnAppInviteAccepted( [in] IMsgrUser* pUser, [in] long lCookie, [in] BSTR bstrIPAddress, [in, out] VARIANT_BOOL* pfEnableDefault); [id(DISPID_ONAPPINVITECANCELLED), helpstring("Application invitation cancelled."), helpcontext(0x0000)] void OnAppInviteCancelled( [in] IMsgrUser* pUser, [in] long lCookie, [in] long hrReason, [in, out] VARIANT_BOOL* pfEnableDefault); [id(DISPID_ONSENDRESULT), helpstring("Result from send request."), helpcontext(0x0000)] void OnSendResult( [in] long hr, [in] long lCookie); [id(DISPID_ONNEWERCLIENTAVAILABLE), helpstring("Newer client is available."), helpcontext(0x0000)] void OnNewerClientAvailable( [in] BSTR bstrDownloadUrl, [in] MUPDATECHOICE mUpdateChoice); [id(DISPID_ONFINDRESULT), helpstring("Result from find request."), helpcontext(0x0000)] void OnFindResult( [in] long hr, [in] long lCookie, [in] long lFindIndex, [in] long lTotalResults, [in] BSTR bstrFirstName, [in] BSTR bstrLastName, [in] BSTR bstrCity, [in] BSTR bstrState, [in] BSTR bstrCountry); [id(DISPID_ONINVITEMAILRESULT), helpstring("Result from SendInviteMail request."), helpcontext(0x0000)] void OnInviteMailResult( [in] long hr, [in] long lCookie); [id(DISPID_ONREQUESTURLRESULT), helpstring("Result from URL request."), helpcontext(0x0000)] void OnRequestURLResult( [in] long hr, [in] long lCookie, [in] MURLTYPE muType, [in] BSTR bstrURL); [id(DISPID_ONSESSIONSTATECHANGE), helpstring("Session state changed."), helpcontext(0x0000)] void OnSessionStateChange( [in] IMsgrIMsession* pIMSession, [in] SSTATE sPrevState); [id(DISPID_ONUSERJOIN), helpstring("User joined a session."), helpcontext(0x0000)] void OnUserJoin( [in] IMsgrUser* pIMsgrUser, [in] IMsgrIMSession* pIMSession); [id(DISPID_ONUSERLEAVE), helpstring("User left a session."), helpcontext(0x0000)] void OnUserLeave( [in] IMsgrUser* pIMsgrUser, [in] IMsgrIMSession* pIMSession); [id(DISPID_ONNEWSESSIONREQUEST), helpstring("Request for a new session."), helpcontext(0x0000)] void OnNewSessionRequest( [in] IMsgrUser* pRequestUser, [in] IMsgrIMSession* pIMSession, [in, out] VARIANT_BOOL* pfEnableDefault); [id(DISPID_ONINVITEUSER), helpstring("Invite user result."), helpcontext(0x0000)] void OnInviteUser( [in] IMsgrUser* pIMsgrUser, [in] IMsgrIMSession* pIMSession, [in] long hr); } //-------------------------------------------------------------------------- // IMsgrUser Interface [ uuid(218CB453-20B6-11d2-8E17-0000F803A446), // IID_IMsgrUser helpstring("Messenger User Interface"), helpcontext(0x0000), dual, oleautomation ] interface IMsgrUser : IDispatch { [propput, helpstring("Friendly Name of the user."), helpcontext(0x0000)] HRESULT FriendlyName( [in] BSTR bstrFriendlyName); [propget] HRESULT FriendlyName( [out, retval] BSTR* pbstrFriendlyName); [propget, helpstring("State of the user."), helpcontext(0x0000)] HRESULT State( [out, retval] MSTATE* pmState); [propget, helpstring("Logon Name of the user."), helpcontext(0x0000)] HRESULT LogonName( [out, retval] BSTR* pbstrLogonName); [id(101), helpstring("Send message to this user"), helpcontext(0x0000)] HRESULT SendText( [in] BSTR bstrMsgHeader, [in] BSTR bstrMsgText, [in] MMSGTYPE mmtType, [out] LONG* plCookie); } //-------------------------------------------------------------------------- // IMsgrUsers Interface [ uuid(218CB454-20B6-11d2-8E17-0000F803A446), // IID_IMsgrUsers helpstring("Messenger Users Collection Interface"), helpcontext(0x0000), dual, oleautomation ] interface IMsgrUsers : IDispatch { [propget, helpstring("Number of users."), helpcontext(0x0000)] HRESULT Count( [out, retval] long* pcUsers); [id(DISPID_VALUE), helpstring("Retrieves a specific user by index."), helpcontext(0x0000)] HRESULT Item( [in] long Index, [out, retval] IMsgrUser** ppUser); [id(100), helpstring("Adds a user object to the collection."), helpcontext(0x0000)] HRESULT Add( [in] IMsgrUser* pUser); [id(101), helpstring("Removes a user object from the collection."), helpcontext(0x0000)] HRESULT Remove( [in] IMsgrUser* pUser); [propget, restricted, id(DISPID_NEWENUM), helpstring("Enumerates the users."), helpcontext(0x0000)] HRESULT _NewEnum( [out, retval] IUnknown **ppUnknown); } //-------------------------------------------------------------------------- // IMsgrIMSession Interface [ uuid(82e11592-20f5-11d2-91ad-0000f81fefc9), // IID_IMsgrIMSession helpstring("Messenger IM Session Interface"), helpcontext(0x0000), dual, oleautomation ] interface IMsgrIMSession : IDispatch { [propget, helpstring("Returns a collection object of current recipients in the IM Session."), helpcontext(0x0000)] HRESULT Members( [out, retval] IMsgrUsers** ppUsers); [propget, helpstring("Session state."), helpcontext(0x0000)] HRESULT State( [out, retval] SSTATE* psState); [propget, helpstring("Returns a collection object of current invitees."), helpcontext(0x0000)] HRESULT Invitees( [out, retval] IMsgrUsers** ppUsers); [id(100), helpstring("Leaves IM session.")] HRESULT LeaveSession(); [id(101), helpstring("Invites a new user to the session.")] HRESULT InviteUser( [in] VARIANT vUser); [id(102), helpstring("Sends a text message."), helpcontext(0x0000)] HRESULT SendText( [in] BSTR bstrMsgHeader, [in] BSTR bstrMsgText, [in] MMSGTYPE mmtType, [out] LONG* plCookie); } //-------------------------------------------------------------------------- // IMsgrIMSessions Interface [ uuid(6fd143e6-20a5-11d2-91ad-0000f81fefc9), // IID_IMsgrIMSessions helpstring("Messenger IM Sessions Collection Interface"), helpcontext(0x0000), dual, oleautomation ] interface IMsgrIMSessions : IDispatch { [propget, helpstring("Number of IM Sessions."), helpcontext(0x0000)] HRESULT Count( [out, retval] long* pcSessions); [id(DISPID_VALUE), helpstring("Retrieves a specific IM Session by index."), helpcontext(0x0000)] HRESULT Item( [in] long Index, [out, retval] IMsgrIMSession** ppIMSession); [propget, restricted, id(DISPID_NEWENUM), helpstring("Enumerates the IM Session."), helpcontext(0x0000)] HRESULT _NewEnum( [out, retval] IUnknown **ppUnknown); } //-------------------------------------------------------------------------- // IMessengerApp Interface [ uuid(3656FE3E-16A6-11d2-B49D-00C04FB90376), // IID_IMessengerApp helpstring("Messenger Application Interface"), helpcontext(0x0000), dual, oleautomation ] interface IMessengerApp : IDispatch { [propget, helpstring("Returns the application automation object."), helpcontext(0x0000)] HRESULT Application( [out, retval] IDispatch** ppDisp); [propget, helpstring("Returns the automation object of the container/parent if one exists or this automation object."), helpcontext(0x0000)] HRESULT Parent( [out, retval] IDispatch** ppDisp); [id(100), helpstring("Exits application."), helpcontext(0x0000)] HRESULT Quit(); [propget, helpstring("Returns name of the application."), helpcontext(0x0000)] HRESULT Name( [out, retval] BSTR* pbstrName); [propget, helpstring("Returns file specification of the application, including path."), helpcontext(0x0000)] HRESULT FullName( [out, retval] BSTR* pbstrFullName); [propget, helpstring("Returns the path to the application."), helpcontext(0x0000)] HRESULT Path( [out, retval] BSTR* pbstrPath); // do we need success/failure result/event or use OnLogonResult event? [id(200), helpstring("Initiates Logon dialog."), helpcontext(0x0000)] HRESULT LaunchLogonUI(); [id(201), helpstring("Initiates Options dialog."), helpcontext(0x0000)] HRESULT LaunchOptionsUI( [in] MOPTDLGPAGE mOptDlgPage); // do we need success/failure result/event or use OnListAddResult event [id(202), helpstring("Initiates Add Contact dialog."), helpcontext(0x0000)] HRESULT LaunchAddContactUI( [in] BSTR bstrEMail); [id(203), helpstring("Initiates Find Contact Dialog."), helpcontext(0x0000)] HRESULT LaunchFindContactUI( [in] BSTR bstrFirstName, [in] BSTR bstrLastName, [in, optional] VARIANT vbstrCity, [in, optional] VARIANT vbstrState, [in, optional] VARIANT vbstrCountry); [id(210), helpstring("Initiates IM Window."), helpcontext(0x0000)] HRESULT LaunchIMUI( [in] VARIANT vUser, [out, retval] IMessengerIMWindow** ppIMWindow); [propget, helpstring("Collection of current IM Windows."), helpcontext(0x0000)] HRESULT IMWindows( [out, retval] IMessengerIMWindows** ppIMWindows); [propget, helpstring("ToolBar visibility."), helpcontext(0x0000)] HRESULT ToolBar( [out, retval] VARIANT_BOOL* pBoolToolBar); [propput] HRESULT ToolBar( [in] VARIANT_BOOL BoolToolBar); [propget, helpstring("StatusBar visibility."), helpcontext(0x0000)] HRESULT StatusBar( [out, retval] VARIANT_BOOL* pBoolStatusBar); [propput] HRESULT StatusBar( [in] VARIANT_BOOL BoolStatusBar); [propget, helpstring("Text of StatusBar."), helpcontext(0x0000)] HRESULT StatusText( [out, retval] BSTR *pbstrStatusText); [propput] HRESULT StatusText( [in] BSTR bstrStatusText); [propget, helpstring("Returns the Handle of the Application window."), helpcontext(0x0000)] HRESULT HWND( [out, retval] long *phWnd); [propget, helpstring("The horizontal position (pixels) of the Application window relative to the screen."), helpcontext(0x0000)] HRESULT Left( [out, retval] long *plLeft); [propput] HRESULT Left( [in] long lLeft); [propget, helpstring("The vertical position (pixels) of the Application window relative to the screen."), helpcontext(0x0000)] HRESULT Top( [out, retval] long *plTop); [propput] HRESULT Top( [in] long lTop); [propget, helpstring("The horizontal dimension (pixels) of the Application window."), helpcontext(0x0000)] HRESULT Width( [out, retval] long *plWidth); [propput] HRESULT Width( [in] long lWidth); [propget, helpstring("The vertical dimension (pixels) of the Application window."), helpcontext(0x0000)] HRESULT Height( [out, retval] long *plHeight); [propput] HRESULT Height( [in] long lHeight); [propget, helpstring("Visibility of the application."), helpcontext(0x0000)] HRESULT Visible( [out, retval] VARIANT_BOOL* pBoolVisible); [propput] HRESULT Visible( [in] VARIANT_BOOL BoolVisible); [id(222), helpstring("Initiates a Logon without UI if connected to the network and user saved the password."), helpcontext(0x0000)] HRESULT AutoLogon(); } //-------------------------------------------------------------------------- // IMessengerIMWindow Interface [ uuid(35EDD1CD-1A8C-11d2-B49D-00C04FB90376), // IID_IMessengerIMWindow helpstring("Messenger IM Window Interface"), helpcontext(0x0000), dual, oleautomation ] interface IMessengerIMWindow : IDispatch { [propget, helpstring("Returns the application automation object if accessible, this automation object otherwise."), helpcontext(0x0000)] HRESULT Application( [out, retval] IDispatch** ppDisp); [propget, helpstring("Returns the automation object of the container/parent if one exists or this automation object."), helpcontext(0x0000)] HRESULT Parent( [out, retval] IDispatch** ppDisp); [propget, helpstring("Returns the IMSession Object associated with this window."), helpcontext(0x0000)] HRESULT IMSession( [out, retval] IMsgrIMSession** ppIMSession); [propget, helpstring("Current history in the window."), helpcontext(0x0000)] HRESULT History( [out, retval] BSTR* pbstrHistory); [id(300), helpstring("Sends a text message through the IM window."), helpcontext(0x0000)] HRESULT SendText( [in] BSTR bstrSendText); [id(301), helpstring("Closes the IM window."), helpcontext(0x0000)] HRESULT Close(); [propget, helpstring("ToolBar visibility."), helpcontext(0x0000)] HRESULT ToolBar( [out, retval] VARIANT_BOOL* pBoolToolBar); [propput] HRESULT ToolBar( [in] VARIANT_BOOL BoolToolBar); [propget, helpstring("StatusBar visibility."), helpcontext(0x0000)] HRESULT StatusBar( [out, retval] VARIANT_BOOL* pBoolStatusBar); [propput] HRESULT StatusBar( [in] VARIANT_BOOL BoolStatusBar); [propget, helpstring("Text of StatusBar."), helpcontext(0x0000)] HRESULT StatusText( [out, retval] BSTR *pbstrStatusText); [propput] HRESULT StatusText( [in] BSTR bstrStatusText); [propget, helpstring("Returns the Handle of the IM window."), helpcontext(0x0000)] HRESULT HWND( [out, retval] long *phWnd); [propget, helpstring("The horizontal position (pixels) of the IM window relative to the screen."), helpcontext(0x0000)] HRESULT Left( [out, retval] long *plLeft); [propput] HRESULT Left( [in] long lLeft); [propget, helpstring("The vertical position (pixels) of the IM window relative to the screen."), helpcontext(0x0000)] HRESULT Top( [out, retval] long *plTop); [propput] HRESULT Top( [in] long lTop); [propget, helpstring("The horizontal dimension (pixels) of the IM window."), helpcontext(0x0000)] HRESULT Width( [out, retval] long *plWidth); [propput] HRESULT Width( [in] long lWidth); [propget, helpstring("The vertical dimension (pixels) of the IM window."), helpcontext(0x0000)] HRESULT Height( [out, retval] long *plHeight); [propput] HRESULT Height( [in] long lHeight); [propget, helpstring("Visibility of the window."), helpcontext(0x0000)] HRESULT Visible( [out, retval] VARIANT_BOOL* pBoolVisible); [propput] HRESULT Visible( [in] VARIANT_BOOL BoolVisible); } //-------------------------------------------------------------------------- // IMessengerIMWindows Interface [ uuid(35EDD1CC-1A8C-11d2-B49D-00C04FB90376), // IID_IMessengerIMWindows helpstring("Messenger IM Windows Collection Interface"), helpcontext(0x0000), dual, oleautomation ] interface IMessengerIMWindows : IDispatch { [propget, helpstring("Number of IM Windows."), helpcontext(0x0000)] HRESULT Count( [out, retval] long* pcWindows); [id(DISPID_VALUE), helpstring("Retrieves a specific IM Window by index."), helpcontext(0x0000)] HRESULT Item( [in] long Index, [out, retval] IMessengerIMWindow** ppIMWindow); [propget, restricted, id(DISPID_NEWENUM), helpstring("Enumerates the IM Windows."), helpcontext(0x0000)] HRESULT _NewEnum( [out, retval] IUnknown **ppUnknown); } //-------------------------------------------------------------------------- // IMsgrOE Interface [ uuid(59EC0340-7506-11d2-B05F-00C04F7F89FE), // IID_IMsgrOE helpstring("Messenger Object for OE Private Interface"), hidden, oleautomation ] interface IMsgrOE : IUnknown { [id(100), helpstring("Creates a user object for OE.")] HRESULT CreateUser([in] BSTR bstrLogonName, [out, retval] IMsgrUserOE** ppUserOE); [id(105), helpstring("Initiates a logoff.")] HRESULT Logoff(); [propget, helpstring("Returns the Contact list for OE.")] HRESULT ContactList([out, retval] IMsgrUsersOE** ppUsersOE); [propget, helpstring("Logon name.")] HRESULT LocalLogonName([out, retval] BSTR* pbstrName); [propput, helpstring("Local state.")] HRESULT LocalState([in] MSTATEOE mStateOE); [propget] HRESULT LocalState([out, retval] MSTATEOE* pmStateOE); [id(222), helpstring("Initiates a Logon without UI if connected to the network and user saved the password.")] HRESULT AutoLogon(); // do we need success/failure result/event or use OnLogonResult event? [id(200), helpstring("Initiates Logon dialog.")] HRESULT LaunchLogonUI(); [id(201), helpstring("Initiates Options dialog.")] HRESULT LaunchOptionsUI(); // do we need success/failure result/event or use OnListAddResult event [id(202), helpstring("Initiates Add Contact dialog.")] HRESULT LaunchAddContactUI([in] BSTR bstrEMail); [id(210), helpstring("Initiates IM Window.")] HRESULT LaunchIMUI([in] VARIANT vUser); [id(501), helpstring("Establishes a connection between the IMsgrObjectOE and the client's sink")] HRESULT AdviseOE([in] IUnknown *pUnk, //Pointer to the client's DMsgrObjectOEEvents sink [out] long *plCookie); //Pointer to the connection point identifier used // by Unadvise [id(502), helpstring("Terminates a connection between the IMsgrObjectOE and the client's sink")] HRESULT UnadviseOE([in] long lCookie); //Connection token } //-------------------------------------------------------------------------- // DMsgrOEEvents Interface [ uuid(59EC0341-7506-11d2-B05F-00C04F7F89FE), // DIID_DMsgrOEEvents helpstring("Messenger Events for OE Private Interface"), hidden ] dispinterface DMsgrOEEvents { properties: methods: [id(DISPID_ONLOGONRESULT), helpstring("Logon attempt complete.")] void OnLogonResult([in] long hr); [id(DISPID_ONLOGOFF), helpstring("Logoff complete.")] void OnLogoff(); [id(DISPID_ONLISTADDRESULT), helpstring("Result from list add request.")] void OnContactListAddResult([in] long hr, [in] IMsgrUserOE* pUserOE); [id(DISPID_ONLISTREMOVERESULT), helpstring("Result from list remove request.")] void OnContactListRemoveResult([in] long hr, [in] IMsgrUserOE* pUserOE); [id(DISPID_ONUSERFRIENDLYNAMECHANGERESULT), helpstring("Result from name change request.")] void OnUserFriendlyNameChangeResult([in] long hr, [in] IMsgrUserOE* pUserOE, [in] BSTR bstrPrevFriendlyName); [id(DISPID_ONUSERSTATECHANGED), helpstring("User state changed.")] void OnUserStateChanged([in] IMsgrUserOE* pUserOE, [in] MSTATEOE mPrevStateOE); [id(DISPID_ONLOCALSTATECHANGERESULT), helpstring("Result from local state request.")] void OnLocalStateChangeResult([in] long hr, [in] MSTATEOE mLocalStateOE); } //-------------------------------------------------------------------------- // IMsgrUserOE Interface [ uuid(59EC0342-7506-11d2-B05F-00C04F7F89FE), // IID_IMsgrUserOE helpstring("Messenger User for OE Private Interface"), hidden, oleautomation ] interface IMsgrUserOE : IUnknown { [propget] HRESULT FriendlyName([out, retval] BSTR* pbstrFriendlyName); [propget, helpstring("State of the user.")] HRESULT State([out, retval] MSTATEOE* pmStateOE); [propget, helpstring("Logon Name of the user.")] HRESULT LogonName([out, retval] BSTR* pbstrLogonName); } //-------------------------------------------------------------------------- // IMsgrUsersOE Interface [ uuid(59EC0343-7506-11d2-B05F-00C04F7F89FE), // IID_IMsgrUsersOE helpstring("Messenger Users Collection for OE private Interface"), hidden, oleautomation ] interface IMsgrUsersOE : IUnknown { [propget, helpstring("Number of users.")] HRESULT Count([out, retval] long* pcUsers); [id(DISPID_VALUE), helpstring("Retrieves a specific user by index.")] HRESULT Item([in] long Index, [out, retval] IMsgrUserOE** ppUserOE); [id(100), helpstring("Adds a user object to the collection.")] HRESULT Add([in] IMsgrUserOE* pUserOE); [id(101), helpstring("Removes a user object from the collection.")] HRESULT Remove([in] IMsgrUserOE* pUserOE); [propget, restricted, id(DISPID_NEWENUM), helpstring("Enumerates the users.")] HRESULT _NewEnum([out, retval] IUnknown **ppUnknown); } [ uuid(FB7199AA-79BF-11d2-8D94-0000F875C541), // CLSID_MsgrObject helpstring("Messenger Object") ] coclass MsgrObject { [default] interface IMsgrObject; [default, source] dispinterface DMsgrObjectEvents; }; [ uuid(FB7199AB-79BF-11d2-8D94-0000F875C541), // CLSID_MessengerApp helpstring("Messenger Application"), appobject ] coclass MessengerApp { [default] interface IMessengerApp; interface IMsgrOE; }; };