2014-06-20 57 views
0

我在Metatrader中編寫代碼並使用ShellExecuteW以Metatrader中編寫的html文件打開本地瀏覽器。如何解決ShellExecuteW中的拆分目錄名稱問題

除了當用戶安裝了他的Metatrader平臺的目錄是分割名稱目錄時,所有的工作都很完美。即:我的FX而不是MyFx。

如果是MyFx,則根本沒有問題,並且瀏覽器以打算顯示html文件的方式打開。

當使用分割名稱時,它將嘗試在eg: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替換在該目錄中缺少的人物。也是通配符*和正斜槓。

如果替換被插入,生成地址並在瀏覽器如例如打開:文件:/// G:/我的& NBSP & nbspFX/MQL4/......,然後給出一個文件不發現錯誤。

有人請告知我應該傳入ShellExecuteW重新這條路徑來解決這個問題。

謝謝。

回答

0

排序出來。

我用%20取代了空格,一切正常。

下面的代碼現在適用於我。

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

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

原因在於URLEncoding和HTML編碼的區別。例如, 是的HTML編碼,而在URL編碼中,它應該是%20。您需要使用正確的編碼(URL編碼)。 –