vector<QQInfo> list;
::CoInitialize(NULL);
CSSOForPTLogin AutoQQLogin;
CTXSSOData AA=AutoQQLogin.CreateTXSSOData();
AutoQQLogin.InitSSOFPTCtrl(0,AA);
CTXSSOData g_vOptData=AutoQQLogin.CreateTXSSOData();
CTXSSOData Q =AutoQQLogin.DoOperation(1, g_vOptData);
CTXSSOArray N= Q.GetArray(_T("PTALIST")); //运行到这就报错了
ULONG ulSize=N.GetSize();
...//N行代码
::CoUninitialize();
我调用的是SSOAxCtrlForPTLogin.dll,该文件实现QQ空间的快速登陆,
我用的是VS2008,出现如下错误test.exe 中的 0x78b24e36 (mfc90ud.dll) 处未处理的异常: 0xC0000005: 读取位置 0xcccccccc 时发生访问冲突以下是堆栈的调用:
> mfc90ud.dll!COleDispatchDriver::InvokeHelperV(long dwDispID=1610809363, unsigned short wFlags=1, unsigned short vtRet=9, void * pvRet=0x0012e68c, const unsigned char * pbParamInfo=0x0046c4c4, char * argList=0x0012e5bc) 行397 + 0x30 字节 C++
mfc90ud.dll!COleDispatchDriver::InvokeHelper(long dwDispID=1610809363, unsigned short wFlags=1, unsigned short vtRet=9, void * pvRet=0x0012e68c, const unsigned char * pbParamInfo=0x0046c4c4, ...) 行553 C++
test.exe!CTXSSOData::GetArray(const wchar_t * bsParamName=0x004610a0) 行270 + 0x1f 字节 C++
test.exe!CommonFun::GetQQList() 行186 + 0xd 字节 C++
最终出错的是oledisp2.cpp中的396行,代码如下
SCODE sc = m_lpDispatch->Invoke(dwDispID, IID_NULL, 0, wFlags,
&dispparams, pvarResult, &excepInfo, &nArgErr);
我在网上搜索了一下,说是没有加入::CoInitialize(NULL);才会这样,可是我已经加上去了
错误也是一样的,为什么会这样呢?请高手解答!
解决方案 »
- 父对话框如何才能响应子对话框中的单击事件?
- 关于打印的问提,请帮忙解决!
- 为什么老会出现无效指针呀?
- 请问各位高手,sygate程序是怎么写,去那里找开发接口啊?
- 哪里有关于hook的一些程序例子?给说一声?小弟不胜感激
- 一些时间显示区域如(+800)是怎么从CTimer类得来的。谢谢
- 如何去掉窗口的的标题栏
- 【求助!急!】基于Cserialport类的串口通信多线程问题!!!(答者有分)
- 如何启动IE5的并打开一个指定的URL?
- RemoveDirectory失败问题,求大神指点下
- "检查Internet Explorer是否为默认的浏览器" 和 "如果Internet Explorer不是默认的浏览器,提醒我"
- 如何编译文本文件,然后测试程序
[email protected]
AutoQQLogin.CreateDispatch(L"SSOAxCtrlForPTLogin.SSOForPTLogin.1"); // I add this line
CTXSSOData AA=AutoQQLogin.CreateTXSSOData();
AutoQQLogin.InitSSOFPTCtrl(0,AA);
CTXSSOData g_vOptData=AutoQQLogin.CreateTXSSOData();
CTXSSOData Q =AutoQQLogin.DoOperation(1, g_vOptData);
CTXSSOArray N= Q.GetArray(_T("PTALIST"));
在2010-03-13 13:40:23,49735374 <[email protected]> 写道:文件在附件里, 谢谢你,有消息记得通知我呀
我QQ是:49735374
你好,非常感谢你的回答,现在问题已经解决了方法是加上,开始处CreateDispatch,
末尾处加上ReleaseDispatch
可是我不知道CreateDispatch(这个参数),这个参数为什么一定要用SSOAxCtrlForPTLogin.SSOForPTLogin.1能否说说呀
CSSOForPTLogin AutoQQLogin;
AutoQQLogin.CreateDispatch("SSOAxCtrlForPTLogin.SSOForPTLogin.1"); //这里为什么要用SSOAxCtrlForPTLogin.SSOForPTLogin.1作为参数呢?
CTXSSOData AA=AutoQQLogin.CreateTXSSOData();
AutoQQLogin.InitSSOFPTCtrl(0,AA);
CTXSSOData g_vOptData=AutoQQLogin.CreateTXSSOData();
CTXSSOData Q =AutoQQLogin.DoOperation(1, g_vOptData);
CTXSSOArray N= Q.GetArray(_T("PTALIST"));
ULONG ulSize=N.GetSize();
for (UINT V = 0; V < ulSize; V++)
{
CTXSSOData C = N.GetData(V);
UINT S = C.GetDWord(_T("dwSSO_Account_dwAccountUin"));
CTXSSOArray G = C.GetArray(_T("SSO_Account_AccountValueList"));
CString T = G.GetStr(0); USHORT L = 0;
try
{
L = C.GetWord(_T("wSSO_Account_wFaceIndex"));
}
catch(...)
{
L = 0;
}
CString M = _T("");
try
{
M = C.GetStr(_T("strSSO_Account_strNickName"));
}
catch(...)
{
M = _T("");
}
BYTE J = 0;
try
{
J = C.GetByte(_T("cSSO_Account_cGender"));
}
catch(...)
{
J = 0;
}
UINT K = 0;
try
{
K = C.GetDWord(_T("dwSSO_Account_dwUinFlag"));
}
catch(...)
{
K = 0;
}
CTXSSOBuffer D = C.GetBuf(_T("bufGTKey_PTLOGIN"));
CTXSSOBuffer E = C.GetBuf(_T("bufST_PTLOGIN"));
CString I = _T("");
UINT A = E.GetSize();
for (UINT O = 0; O < A; O++)
{
BYTE b=E.GetAt(O);
CString str;
str.Format(_T(""), b);
if(str.GetLength()<2) str=_T("0")+str;
//string B =Convert.ToString( E.GetAt((UINT)O),16).PadLeft (2,'0');
I += str;
}
QQInfo NewInfo; //将所获得的信息存入List
NewInfo.uin = S;
NewInfo.name = T;
NewInfo.face = L;
NewInfo.gender = J;
NewInfo.nick = M;
NewInfo.key = I;
AfxMessageBox(T);
}
AutoQQLogin.ReleaseDispatch(); //这里释放
::CoUninitialize();