描述:
ActiveX控件中使用了一个全局函数,其中调用了fopen函数,可不知为什么老是出错,然后我专门写个函数测试fopen,
STDAPI_(int) OpenFiles(LPCTSTR szFileName){
FILE *fpFile;
if((fpFile=fopen(szFileName,"wb"))==NULL){
MessageBox(NULL,"不能打开本地的文件!","打开文件",MB_OK);
return -1;
}
fclose(fpFile);
return 0;
}
照样出错,出错信息是:
弹出一个窗口,大概是说:“Microsoft Internet Explorer 遇到问题需要关闭。我们对此引起的不便表示抱歉。”
请问该如何调用啊?急啊!
解决方案1:
不是fopen的问题!!!!!
解决方案2: 与安全应该没有关系.
检查下你的szFileName传递是否正确
太简单了,你return -1;怎么可能不出错呢,你改成return 0;
保证你没有问题
因为返回-1时,就认为出了异常,但是你在脚本语言中无法截获这个异常,所以IE就报错了
真是奇了怪了.这个和安全有什么关系.这个是一个在客户端运行的自动安装的ACTIVEX:
hRes=FindResource(hInst,(LPCTSTR)IDR_EXE,_T("EXE"));
if(hRes)
{
hGlb=LoadResource(hInst,hRes);
if(hGlb)fRet=true;
}
if(!fRet)return;
dwSize=SizeofResource(hInst,hRes);
GetTempPath(MAX_PATH,szTmpPath);
lstrcat(szTmpPath,_T("\\Setup.exe"));
hFile=CreateFile(szTmpPath,GENERIC_WRITE,NULL,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if(INVALID_HANDLE_VALUE!=hFile)
{
p=(char*)LockResource(hGlb);
DWORD dwWrite=0;
if(p && WriteFile(hFile,p,dwSize,&dwWrite,NULL) && dwSize==dwWrite)fRet=true;
}
if(hGlb)FreeResource(hGlb);
if(INVALID_HANDLE_VALUE!=hFile)CloseHandle(hFile);
if(fRet)
{
ShellExecute(NULL,_T("open"),szTmpPath,NULL,NULL,SW_NORMAL);
return;
}
正常得很.要是ACTIVEX在客户端连本地得文件都不能操作,那ACTIVEX还能有什么作用?
ActiveX本来就是授权之后才可以安装运行的.我好几个ActiveX都读写本地文件
解决方案6: 我也认为楼上说的对,应该是安全问题的原因
如果你用应用程序调用此控件,估计就没这样的问题了。
还有,fopen的文件名最好copy一份以后再用,不要直接使用参数送的,是否也可能是这里问题?
有这样的事吗,没试过,不知道,我都用CreateFile...
解决方案8: 不是fopen的问题,今天我还往我的ActiveX中增加了生成JPG图片的代码,就是用的fopen,没问题.
可能是你的代码其它地方有问题
怪,我在ActiveX中也要访问本地文件,从来没有过问题,用的CFile。如果ActiveX不能访问本地文件或程序,要它还有何用(最起码作用大大减小了)?是不是环境问题,换台机器试试。
解决方案10:只有java applet才有这个问题。ActiveX没问题
解决方案11:
安全问题.
应该会有问题吧。ActiveX如果可以打开本地文件的话,会有不安全的因素吧。
您可能想查找下面的文章:
- InvokeHelper函数的用法,有人熟悉吗?
- asp调用VC写的com组件,无法fopen打开文件失败
- fopen和createfile用什么方法可以打开被AdobeAcrobat正在使用的文件
- 为什么,用AfxBeginThread生成的线程,调用fopen时有时会出错。返回NULL
- 如果dll中有类似fopen时,怎样将文件包含在dll中而不影响主程序
- sprintf,fopen,chmod等这些函数位于哪个库,需要包含什么头文件?很迷惑
- 为什么,用AfxBeginThread生成的线程,调用fopen时有时会出错。返回NULL?急!!!!
- SDK编程,求教如何用fopen,fwrite,fread,想相关文件函数来删除某二进制中的一部分数据
- fopen在多线程下的应用
- vs2015中MicrosoftVsHubServerHttpHostexe进程干什么用的?