伊莉討論區

標題: VB6 程式A使用shell開啟程式B的問題 [打印本頁]

作者: sky_body    時間: 2021-5-11 11:32 PM     標題: VB6 程式A使用shell開啟程式B的問題

本帖最後由 sky_body 於 2021-5-11 03:35 PM 編輯

請問各位大大, 不知道是不是win10的關係, 在使用shell開啟另一個執行檔時都會找不資料
以下 程式A
Shell "cmd.exe /c start R:\bbb.exe", vbHide

以下 程式B

Private Sub Form_Load()
Dim a As String
    Text1.Text = ""
    Open ".\Config.ini" For Input As #1
        Do Until EOF(1)
            Line Input #1, a
                Text1.Text = Text1.Text & a & vbCrLf

        Loop
    Close #1
End Sub
直接開啟程式B的話就都正常讀的到資料, 但是如果使用程式A去開啟程式B就會找不到資料
請問這是哪裡出了問題, 試了一整天都試不出結果







作者: johnwanz    時間: 2021-5-12 09:16 AM

我懷疑是, 執行路徑的問題.

Open ".\Config.ini" 這個相對路徑的起點,
會是執行檔? 還是Shell? 可能要再確認一下.

Debug時, 丟個位置資訊出來看看.
作者: sky_body    時間: 2021-5-12 10:30 AM

johnwanz 發表於 2021-5-12 01:16 AM
我懷疑是, 執行路徑的問題.

Open ".\Config.ini" 這個相對路徑的起點,

就是A程式使用shell去開啟bbb.exe, 然後bbb.exe去讀取Config.ini
昨晚測試到兩點半終於找到問題在哪了
Open ".\Config.ini" 改成 Open App.Path & "\Config.ini" 就可以了
想請問的是上面一個是相對路徑, 另一個應該是絕對路徑吧
但是bbb.exe跟Config.ini是放在一起的為啥會有這樣的問題呢
作者: johnwanz    時間: 2021-5-13 09:02 AM

我懷疑, 執行時的.\Config.ini, 是你shell的預設路徑, 而不是你bbb.exe的路徑.
所以, 你透過App.Path, 取得bbb.exe的絕對路徑,
以這個為基準, 再去作相對路徑的參考, 就不會有執行上的問題了.
作者: tryit244178    時間: 2021-5-13 06:54 PM

我先做成執行檔,然後透過執行檔來跑是沒問題的
不要用F5來測試試試




歡迎光臨 伊莉討論區 (http://a410.file-static.com/) Powered by Discuz!