SDK文档解说比较少
先列出原接口函数:
IRTXSAPIRootOBj::SendIM
发送IM消息
HRESULT SendIM( [in] BSTR bstrSender, [in] BSTR bstrPwd, [in] BSTR bstrReceivers, [in] BSTR bstrMsg, [in] BSTR bstrSessionID);
Parameters
[in]bstrSender 发送者。
[in]bstrPwd 密码。
[in ]bstrReceivers 接收者,多人用分号码;隔开。
[in] bstrMsg 消息内容。
[in] bstrSessionID 会话ID,一个GUID 标识一个窗口。
由于开发是用的com组件,所以调用该接口出错时会抛出_com_error类型异常,具体可以如下使用:
try
{
SendIM(...);
}
catch(_com_error& ce)
{
...//ce中包含了异常信息,具体可以查看msdn来具体解析
}
再说说五个参数吧:
如果bstrSender不存在,那么 会抛出_com_error异常
如果 bstrPwd错误,也会抛出 _com_error异常
如果 bstrReceivers不存在,啥也不会干,悲了个具的
如果 bstrMsg,没有这个的错误
如果 bstrSessionID格式不对, 也会抛出 _com_error异常,如果是使用错误,可能会发生莫名奇妙的表现问题,具体可以见上一篇SessionId说明的文章
注意另外一个错误:
由于RTXServer可以更改用户是否为第三方验证,所以如果 bstrSender是第三方验证的话,那么也会抛出异常,具体看异常信息可能会说传递了无效参数,解决方案可以是先关闭第三方校验,发生完毕再打开第三方校验,虽然效率低了点,如下
SetUserAuthType(sender,VARIANT_FALSE);//关闭发送者的第三方校验
SendIM(sender,...); //发送消息
SetUserAuthType(sender,VARIANT_TRUE); // 打开发送者的第三方校验
over!