我在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这条路径来解决这个问题。
谢谢。
答案 0 :(得分:0)
将其分类。
我用%20替换了空格,一切都很好。
下面的代码现在适用于我。
string tpath = TerminalPath() ;
int replaced;
string newtpath="";
replaced = StringReplace(tpath," ","%20");
newtpath = tpath;
MT4_file_folder =newtpath+"/MQL4/Files/";