/// <summary> /// Sends the conversation data to GDS using COM Interop /// </summary> /// <param name="messageData">MSNMessageData struct containing the IM message data</param> private void SendMessageData(MSNMessageData messageData) { try { GoogleDesktopClass gdsClass = new GoogleDesktopClass(); // create the event object gdsEventDisp = gdsClass.CreateEvent(kComponentGuid, "Google.Desktop.IM"); IGoogleDesktopEvent gdsEvent = (IGoogleDesktopEvent)gdsEventDisp; // add IM event properties // "message_time" property gdsEvent.AddProperty("message_time", messageData.date.ToUniversalTime().ToOADate()); // "format" property gdsEvent.AddProperty("format", "text/html"); // "content" property gdsEvent.AddProperty("content", messageData.fromFriendlyName + ": " + messageData.message); // "user_name" property gdsEvent.AddProperty("user_name", userName); // "buddy_name" property gdsEvent.AddProperty("buddy_name", buddyName); // "conversation_id" property gdsEvent.AddProperty("conversation_id", messageData.sessionId); // "title" property - use the buddy name gdsEvent.AddProperty("title", buddyName); // send the event real-time gdsEvent.Send(0x01); } catch (COMException e) { // protect some valid error results UInt32 error = (UInt32)e.ErrorCode; if (error != 0x80040005 && // E_COMPONENT_DISABLED error != 0x80040008 && // E_EVENT_TOO_LARGE error != 0x80040009 // E_SERVICE_NOT_RUNNING ) { SimpleMessageBox("COM Exception", e.ToString(), false); } } }