После нескольких руководств по коммуникатору API я застрял. В общем, все сводится к невозможности привести объект мессенджера в качестве интерфейса. Будь то мессенджер obj или messengererclass obj классы.
При попытке сотворить объект я получаю следующее исключение.
Невозможно привести объект COM типа «CommunicatorAPI.MessengerClass» к типу интерфейса «CommunicatorAPI.IMessengerAdvanced». Эта операция завершилась неудачно, поскольку вызов QueryInterface для компонента COM для интерфейса с IID '{DA0635E8-09AF-480C-88B2-AA9FA1D9DB27}' завершился неудачно из-за следующей ошибки: такой интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE)) .
Это пример кода, который я пытаюсь запустить, урезанный до того, что вызывает исключение.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CommunicatorAPI;
namespace OCA
{
class OCA_main
{
static void Main(string[] args)
{
OCA m = new OCA();
m.subscribe();
m.startconvo("emailaddress");
}
}
class OCA
{
MessengerClass msgr = new MessengerClass();
// Messenger msgr = new Messenger(); //Tried this too... :(
IMessengerAdvanced msgrAdv;
public void subscribe()
{
msgr.OnIMWindowCreated += new DMessengerEvents_OnIMWindowCreatedEventHandler(msgr_OnIMWindowCreated);
}
public void unsubscribe()
{
msgr.OnIMWindowCreated -=new DMessengerEvents_OnIMWindowCreatedEventHandler(msgr_OnIMWindowCreated);
}
void msgr_OnIMWindowCreated(object pIMWindow)
{
try
{
IMessengerAdvanced msgrAdv = (IMessengerAdvanced)msgr;
}
catch (Exception ex)
{
Console.WriteLine("{0}", ex.Message);
}
throw new NotImplementedException();
//... stuff
}
public void startconvo(string users)
{
try
{
IMessengerAdvanced msgrAdv = (IMessengerAdvanced)msgr;
}
catch (Exception ex)
{
Console.WriteLine("{0}", ex.Message);
}
}
}
}
Я также пробовал приведенный выше код, используя "Messenger msgr = new Messenger ();" Без удачи.
Невозможно привести объект COM типа «CommunicatorAPI.MessengerClass» к типу интерфейса «CommunicatorAPI.IMessengerAdvanced». Эта операция завершилась неудачно, поскольку вызов QueryInterface для компонента COM для интерфейса с IID '{DA0635E8-09AF-480C-88B2-AA9FA1D9DB27}' завершился неудачно из-за следующей ошибки: такой интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE)) .
Я ужасно плохо знаком с c # и остановился на работе с коммуникатором API. Кстати, ссылки добавляются. Опция Embed ложна, и я в тупике. Интересно, нашел ли кто-нибудь решение.
Кроме того, я создал экземпляр интерфейса с таким эффектом: "msgAdv = msgr as IMessengerWndAdvanced;"
без удачи Переменная msgAdv каждый раз равна нулю. Я пробовал разные примеры из M $, но безрезультатно. Более того, я прочитал файл справки «OCSDK.chm», который поставляется вместе с SDK. Нет упоминания об ошибке «Исключение из HRESULT: 0x80004002 (E_NOINTERFACE)».
Помощь