Navigate()函数的URL参数可以设置为相对路径吗?

问题描述:


最近在编写MFC程序,用到了浏览器控件【Microsoft Web Browser】,通过浏览器对象的Navigate()函数设置显示html页面,将写好的文件放在程序目录下之后,想用相对路径来调用自己写的一个“geodemo.htm”文件,失败。


原因:


首先你要搞懂什么是相对路径。相对路径就是相对本进程的当前活动目录,一般是在本进程的可执行文件的所在目录,程序安装在其他电脑之后,进程运行期间可以随意修改,所认不到路径。


解决方案:


方案一:

通过计算先获取进程路径后,后面添加相对路径的地址。

即通过GetModuleFileName()函数获取当前进程完整路径的函数:

DWORD WINAPI GetModuleFileName( _In_opt_  HMODULE hModule,  _Out_     LPTSTR lpFilename,    _In_      DWORD nSize);
HMODULE hModule 装载一个程序实例的句柄。如果该参数为NULL,该函数返回该当前应用程序全路径;
LPTSTR lpFileName 是你存放返回的名字的内存块的指针,是一个输出参数;
DWORD nSize,装载到缓冲区lpFileName的最大值。

使用实例:
 char wszPathName[256] = { 0 };
 GetModuleFileName( 0, wszPathName, 256);
注意:此方法只能获取当前进程,如需要获取另外的进程路径,可以使用GetModuleFileNameEx函数。



方案二:

用IIS给个端口访问。

我们在做CDHTMLDialog相关的时候,网页部分的内容,建议像网站一样,用IIS给个端口,绑定个目录,然后使用http协议去访问,这样就可以写相对路径了;通过IIS发布网站,给个端口,就可以用IP:端口/相对路径





你可能感兴趣的:(C/C++)