IMessenger::InstantMessage

This content is no longer actively maintained. It is provided as is, for anyone who may still be using these technologies, with no warranties or claims of accuracy with regard to the most recent product version or service release.

Starts a conversation window with the initial recipient specified as a parameter. Scriptable.

Syntax

HRESULT InstantMessage(
   [in] VARIANT vContact,
   [out,
   retval] IDispatch** ppMWindow
);

Parameters

  • vContact
    [in] A VARIANT that can take as its value either a VT_BSTR string or a VT_DISPATCH pointer to an existing IMessengerContact object.

    If the input value type is a string, this method creates a new MessengerContact object internally. The string should be the full sign-in name.

    If the input value type is a pointer to an existing MessengerContact object (should be type VT_DISPATCH), the existing object is used for contact information.

Return Value

Returns one of the following values. For managed code applications, these return values are received in the form of a COMException.

  • S_OK
    Success.
  • S_FALSE
    The messenger window is already closed.
  • E_FAIL
    Could not get window handle.

Remarks

Windows that are being closed while some actions are still in progress can return confirmation dialog boxes to the user, which hangs up the application until the user responds.

Closing the main application window effectively places it into the tray. The object is still active and maintains a process, but it does not appear on the taskbar. Closing a conversation window essentially dereferences it. Further IMessengerWindow interface calls against that window are invalid because the window and its internal object have been completely removed, not just hidden, from the client. After a conversation window is closed, any pointers to it should be cleaned up.

Example

The following example starts an IM window to initiate a conversation with the IMessengerContact interface object, IMContact.

The event handler handles the DMessengerEvents::OnIMWindowDestroyed event. Using the System.Runtime.InteropServices.Marshal.ReleaseComObject() method, the application code cleans up the IMWindow pointer.

IMessengerWindow IM_Window;
IMessengerContact IMContact = (IMessengerContact)communicator.GetContact(
                                "jaya@contoso.com", 
                                communicator.MyServiceId
                                );

if (IMContact != null && communicator != null)
{
   try
  {
     IM_Window = communicator.InstantMessage(IMContact);
  }
  catch (COMException IMCE)
  {
     Console.WriteLine(IMCE.ErrorCode.ToString());
  }
}
else
{
   Console.WriteLine("Null Contact object");
}
...
// IM Window destroyed event handler clears pointer to IM window
void communicator_OnIMWindowDestroyed(object pIMWindow)
{
  try
  {
    System.Runtime.InteropServices.Marshal.ReleaseComObject(pIMWindow);
  }
  catch (MarshalDirectiveException)
  {}

}

Requirements

  • Client
    Requires Microsoft DirectX 9.0, C Runtime libraries (msvcm80.dll) on Microsoft Windows© Vista, Microsoft Windows XP Service Pack 1 (SP1) or later, or Microsoft Windows 2000 with Service Pack 4 (SP4). Any Communicator-imposed restrictions apply. .
  • Server
    Requires Microsoft Office Communications Server 2007, AV MCU (for Media Support), Media Relay (for NAT/Firewall traversal) on Microsoft Office Communications Server 2007.
  • Product
    Microsoft Office Communicator 2007 Automation API
  • IDL file
    Msgrua.idl

See Also

Reference

IMessengerWindow::IsClosed