0

我在 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

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

如果插入了替换,地址会生成并在浏览器中打开,例如:file:///G:/My  FX/MQL4/ ......然后给出一个文件未找到错误。

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

谢谢你。

4

1 回答 1

0

整理出来。

我已经用 %20 替换了空间,一切都很好。

下面的代码现在对我有用。

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

MT4_file_folder =newtpath+"/MQL4/Files/";
于 2014-06-20T07:36:37.597 回答