如何解决ShellExecuteW中的拆分目录名称问题

时间:2014-06-20 04:30:12

标签: html5 mt4

我在Metatrader中编码并使用ShellExecuteW打开本地浏览器,其中包含在Metatrader中编写的html文件。

除非用户安装了Metatrader平台的目录是拆分名称目录,否则一切正常。即:我的FX而不是MyFx。

如果是MyFx,则根本没有问题,浏览器按预期打开,显示html文件。

当使用拆分名称时,它将尝试在例如:file:/// G:/ My处打开,并且永远不会看到地址的其余部分。

目前的相关代码如下。用户只输入文件的名称,例如:VisualizeV1,这就是为什么有连接等但这不是问题。

 string newtpath =  TerminalPath() ;
// outputs G:\MyFX

string MT4_file_folder =newtpath+"/MQL4/Files/";
//  outputs G:\MyFX/MQL4/Files/

filesuffix=StringConcatenate("_",Symbol(),"_",TimeFrameStr,"_",fname_rpt_date);
// Outputs BrookyVisualize/VisualizeV1___EURUSD_H1__yr2014_mth6_dy19_hr23

fname=StringConcatenate(filename,filesuffix,".html");
// Outputs BrookyVisualize/VisualizeV1___EURUSD_H1__yr2014_mth6_dy19_hr23.html

file2find=StringConcatenate("file://",MT4_file_folder,visualize_folder,fname);
// Outputs G:\MyFX/MQL4/Files/BrookyVisualize/VisualizeV1___EURUSD_H1__yr2014_mth6_dy19_hr23.html

ShellExecuteW(0,NULL,Your_Internet_Browser,file2find,NULL,5);
// Opens firefox at address file:///G:/MyFX/MQL4/Files/BrookyVisualize/VisualizeV1___EURUSD_H1__yr2014_mth6_dy19_hr23.html

我尝试用&#160和& nbsp替换目录中缺少的字符。还有通配符*和正斜杠。

如果插入了替换项,则会生成地址并在浏览器中打开,例如:file:/// G:/ My& nbsp& nbspFX / MQL4 / ......然后会找到找不到的文件错误。

有人可以告诉我应该将什么传递给ShellExecuteW这条路径来解决这个问题。

谢谢。

1 个答案:

答案 0 :(得分:0)

将其分类。

我用%20替换了空格,一切都很好。

下面的代码现在适用于我。

string tpath =  TerminalPath() ;
int replaced;
string newtpath="";
replaced = StringReplace(tpath," ","%20");
 newtpath = tpath;

MT4_file_folder =newtpath+"/MQL4/Files/";