描述:
我在作一个自动向MSN发消息的程序。
基本思路如下:
1、用IMSIMHost组件得到IIMService interface;
2、用IIMService接口与消息的接收者建立session;
3、用IIMSession接口的“sendtext”方法给对方发消息。
可是,在用IMSIMHost的“logon”方法登陆的时候出错了。具体代码如下,请高手指教:
::CoInitialize(NULL);
HRESULT hr;
MSIMCliSDKLib::IMSIMHost* pmh;
MSIMCliSDKLib::IIMService* pMs;
VARIANT vr1,vr2;
VARIANT varState;
VARIANT varDis;
VARIANT varData;
VARIANT var;
hr = ::CoCreateInstance(CLSID_MSIMHost,NULL,
CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER,
IID_IMSIMHost,(void**)&pmh);
vr1.vt = VT_BSTR;
_bstr_t tmp_bstr_t("DEFAULT");
vr1.bstrVal = tmp_bstr_t;
vr2.vt = VT_BOOL;
vr2.boolVal = 0;
hr = pmh->CreateContext(vr1,vr2,(IDispatch**)&pMs);
VariantInit(&varData);
VariantInit(&varDis);
VariantInit(&varState);
//hr = pMs->GetLocalState(&varState,&varDis,&varData);
_bstr_t log[4];
_bstr_t address("ding@fukuyama.dns.local");
_bstr_t name("ding");
_bstr_t password("123456");
_bstr_t domain("fukuyama.dns.local");
log[0] = address;
log[1] = name;
log[2] = password;
log[3] = domain;
VariantInit(&var);
var.vt = VT_ARRAY | VT_BSTR;
SAFEARRAYBOUND bounds = {4, 0};
SAFEARRAY* psa = SafeArrayCreate(VT_BSTR, 1, &bounds);
bstr_t * bArray;
SafeArrayAccessData(psa, reinterpret_cast<void**> (&bArray));
bArray[0] = address;
bArray[1] = name;
bArray[2] = password;
bArray[3] = domain;
SafeArrayUnaccessData(psa);
var.parray = psa;
hr = pMs->Logon(var);
您可能想查找下面的文章:
- 100分求教ActiveDll中的方法中的参数为数组时,在asp中如何为此数组赋值
- 100分提问:如何将STL中的string转成BSTR,最好给例子。分不够可以再加!
- 100分:请问通过IWebBrowser2IHTMLDocument2等接口如何得到IE浏览器中用户选中区的内容IHTMLSelectObject接口,内详
- 100分找学习atl好书,电子版下载也行(最好是实用版的)
- 100分)怎么实现ACTIVEx实现对网叶内容的更新?(当ACTIVE收到服务器的消息时,要显示到页面上),
- 100分寒风中裸求求VC++操作WORD的问题,向WORD文档中添加表,并对表操作(包括增加行)
- 100分求电子书。URL见内
- 100分请教:用MFC做ACTIVEX控件,怎样才能在IE中用<PARAM>给控件传递参数。急!
- 100分求《ATL深入解析》源代码
- 100分,有作过MSExchangeInstantMessageIM开发的高人请进!