Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1116 lines
36 KiB

//+---------------------------------------------------------------------------
//
// 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;
};
};