摘要:變更目前的工作目錄
這邊是在討論區看到的,相關問題的詢問次數也不少,大家可以參考看看
Question - 原文OpenFileDialog 的問題
有兩個按鈕,A與B,按A可以執行主程式旁邊的一個副程式,裡頭的CODE大概像這樣:
Dim MyProcess As New System.Diagnostics.Process
MyProcess.StartInfo.FileName = "副程式.exe"
MyProcess.Start()
按B會跳出OpenFileDialog,讓使用者選擇檔案如果說,先按A再按B,沒問題。
但是,如果先按B再按A,就會出現錯誤(找不到副程式.exe),因為使用OpenFileDialog好像會更改的預設執行目錄。想請問大大,這個預設執行目錄的設定放在哪丫?
這問題主要是因為當你用"相對路徑"的時候要特別注意,由上面題目看起來,主、副程式應該都是在同一個資料夾內,而如果先有了OpenFileDialog的動作的話,由於工作目錄被變更了,所以產生了找不到檔案的問題。
那應該如何處理呢?下面這個是用Process類別時我比較建議的方式,程式碼如下
- Dim p As New Process
- p.StartInfo.UseShellExecute = True
- p.StartInfo.WorkingDirectory = Application.StartupPath
- p.StartInfo.FileName = "副程式.exe"
- p.Start()
Dim p As New Process
p.StartInfo.UseShellExecute = True
p.StartInfo.WorkingDirectory = Application.StartupPath
p.StartInfo.FileName = "副程式.exe"
p.Start()
相關參考
ProcessStartInfo.WorkingDirectory 屬性