请教各路大侠:
我的程序刚开始运行是没有问题的,可是当运行起来,大约一个多小时不给它响应(即不动那台电脑,也不给他鼠标响应)时,就会弹出对话框“sc1=80010105,runscript d read failed”(这是我自动设的弹出对话框),查了查80010105的情况是“服务器出现意外情况”,相关代码如下:
CoInitialize(NULL);
HRESULT hr=S_OK;
IGlobalInterfaceTable *piGIT=NULL;
hr = CoCreateInstance(CLSID_StdGlobalInterfaceTable, NULL,
CLSCTX_INPROC_SERVER,
IID_IGlobalInterfaceTable, (LPVOID*)&piGIT);
if(hr!=0)
AfxMessageBox("GlobalInterfaceTable CoCreateInstance in Runscript d failed"); IDispatch *piDispatch=NULL;
hr = piGIT->GetInterfaceFromGlobal(m_dwCookie, __uuidof(piDispatch),(void**)&piDispatch);
if(hr!=0)
AfxMessageBox("GlobalInterfaceFromGlobal in runscript d failed"); DISPID dispid;
OLECHAR* func=L"ReadRealData1";//调用的函数名
piDispatch->GetIDsOfNames(IID_NULL,&func,1,GetUserDefaultLCID(),&dispid); VARIANT var;
VARIANT var1;
EXCEPINFO excepInfo;
UINT errArg;
VariantInit(&var);
VariantInit(&var1);
DISPPARAMS DispParams;
DispParams.cArgs = 1;//表示参数的计数
DispParams.cNamedArgs = 0;//表示命名参数的计数
DispParams.rgdispidNamedArgs = NULL;//表示命名参数的调度 ID
VARIANTARG* pArg=new VARIANTARG[DispParams.cArgs];
DispParams.rgvarg=pArg;//表示对参数数组的引用
memset(pArg,0,sizeof(VARIANT)*DispParams.cArgs); DispParams.rgvarg[0].vt=VT_VARIANT|VT_BYREF;
DispParams.rgvarg[0].pvarVal=&var; var1.vt = VT_I4;
SCODE sc;//SCODE 类型等效于 HRESULT
try
{
sc=piDispatch->Invoke(dispid,IID_NULL,0,DISPATCH_METHOD,&DispParams,&var1,&excepInfo,&errArg);
CString strsc;
strsc.Format("sc1=%0x,runscript d read failed",sc);
if(sc!=0)
AfxMessageBox(strsc); //ysm 091229 change
}
请问各路大侠:出现这种问题的原因是什么?传递的参数不对吗?还是我的com接口的问题?还是计算机设置的问题?请问如何解决!
我的程序刚开始运行是没有问题的,可是当运行起来,大约一个多小时不给它响应(即不动那台电脑,也不给他鼠标响应)时,就会弹出对话框“sc1=80010105,runscript d read failed”(这是我自动设的弹出对话框),查了查80010105的情况是“服务器出现意外情况”,相关代码如下:
CoInitialize(NULL);
HRESULT hr=S_OK;
IGlobalInterfaceTable *piGIT=NULL;
hr = CoCreateInstance(CLSID_StdGlobalInterfaceTable, NULL,
CLSCTX_INPROC_SERVER,
IID_IGlobalInterfaceTable, (LPVOID*)&piGIT);
if(hr!=0)
AfxMessageBox("GlobalInterfaceTable CoCreateInstance in Runscript d failed"); IDispatch *piDispatch=NULL;
hr = piGIT->GetInterfaceFromGlobal(m_dwCookie, __uuidof(piDispatch),(void**)&piDispatch);
if(hr!=0)
AfxMessageBox("GlobalInterfaceFromGlobal in runscript d failed"); DISPID dispid;
OLECHAR* func=L"ReadRealData1";//调用的函数名
piDispatch->GetIDsOfNames(IID_NULL,&func,1,GetUserDefaultLCID(),&dispid); VARIANT var;
VARIANT var1;
EXCEPINFO excepInfo;
UINT errArg;
VariantInit(&var);
VariantInit(&var1);
DISPPARAMS DispParams;
DispParams.cArgs = 1;//表示参数的计数
DispParams.cNamedArgs = 0;//表示命名参数的计数
DispParams.rgdispidNamedArgs = NULL;//表示命名参数的调度 ID
VARIANTARG* pArg=new VARIANTARG[DispParams.cArgs];
DispParams.rgvarg=pArg;//表示对参数数组的引用
memset(pArg,0,sizeof(VARIANT)*DispParams.cArgs); DispParams.rgvarg[0].vt=VT_VARIANT|VT_BYREF;
DispParams.rgvarg[0].pvarVal=&var; var1.vt = VT_I4;
SCODE sc;//SCODE 类型等效于 HRESULT
try
{
sc=piDispatch->Invoke(dispid,IID_NULL,0,DISPATCH_METHOD,&DispParams,&var1,&excepInfo,&errArg);
CString strsc;
strsc.Format("sc1=%0x,runscript d read failed",sc);
if(sc!=0)
AfxMessageBox(strsc); //ysm 091229 change
}
请问各路大侠:出现这种问题的原因是什么?传递的参数不对吗?还是我的com接口的问题?还是计算机设置的问题?请问如何解决!
解决方案 »
- 急!如何用VS2010 WIN7 Ribbon 的CATEGORY 来实现试图切换
- 各位高手帮帮忙啊,为什么编辑框里面只显示四个字符?(socket)
- 怎样获得CImageList中ICON的原始大小
- 急求帮助,怎样才能显示五笔输入法的字根呢?Unicode,特殊字体还是图片?在线等~~~
- 1000分都给你!谁能列出最好的几本算法与数据结构书,并提供下载地址?
- xml格式的excel文件内容包含中文不能打开的问题
- 在windows2000采用MFC AppWizard(dll)生成的dll,在window98下调用为什么出错?
- 这是什么啊
- 100分求救一定给分:录音时如何获得普通声卡输入的数据和字节数?请救救我。
- 一个关于多视动态切换的问题?
- VC程序工程中分别 Use MFC in a Static Library 和 Use MFC in a Shared DLL 有何不同?
- MFC中如何等比压缩图片尺寸???
{
sc=piDispatch->Invoke(dispid,IID_NULL,0,DISPATCH_METHOD,&DispParams,&var1,&excepInfo,&errArg);
CString strsc;
strsc.Format("sc1=%0x,runscript d read failed",sc);
if(sc!=0)
AfxMessageBox(strsc); //ysm 091229 change
}查一下你的sc是什么东东吧。是什么类型的,是指针还是什么东东。。在使用完之后把它delete掉看看。