13

VB6 実行可能ファイルをデバッグしています。実行可能ファイルは、実行時に現在のディレクトリから dll とファイルをロードします。デバッガーで実行すると、現在のディレクトリは VB6 のディレクトリのようです。

VB6 の作業ディレクトリを設定するにはどうすればよいですか?

4

5 に答える 5

11

これは、このことに対する「すぐに使える」ソリューションではないようです。

ソフトウェアフォーラムのオールドジョエルからの引用

とにかく..このトピックを休ませるために..以下は私のVB6ソリューションでした:VBプロジェクト「MPDEBUG」と「MPRELEASE」で2つのシンボルを定義し、アプリのエントリポイント関数の最初の操作として次の関数を呼び出します。

Public Sub ChangeDirToApp()
#If MPDEBUG = 0 And MPRELEASE = 1 Then
  ' assume that in final release builds the current dir will be the location
  ' of where the .exe was installed; paths are relative to the install dir
  ChDrive App.path
  ChDir App.path
#Else
  ' in all debug/IDE related builds, we need to switch to the "bin" dir
  ChDrive App.path
  ChDir App.path & BackSlash(App.path) & "..\bin"
#End If
End Sub
于 2008-09-30T18:31:27.310 に答える
8

File-Open を使用してプロジェクトを開いた場合のみ、「現在のディレクトリは VB6 のディレクトリのようです」。

IDE を閉じた状態で .vbp ファイルをダブルクリックして開きます。

于 2008-09-30T19:33:30.967 に答える
7

私が見つけた解決策は、 を使用しSub Main、プログラムが IDE で実行されているかどうかを確認します。

Dim gISIDE as Boolean

Sub Main()
    If IsIDE Then
        ChDrive App.Path
        ChDir   App.Path
    End If

    ' The rest of the code goes here...

End Sub

Public Function IsIDE() As Boolean '
        IsIDE = False
        'This line is only executed if running in the IDE and then returns True
        Debug.Assert CheckIDE 
        If gISIDE Then 
            IsIDE = True
        End If
End Function

Private Function CheckIDE() As Boolean ' this is a helper function for Public Function IsIDE() 
        gISIDE = True 'set global flag 
        CheckIDE = True 
End Function
于 2008-09-30T19:28:30.887 に答える
2

これは機能しますか?

'Declaration
Private Declare Function SetCurrentDirectory Lib "kernel32" _
Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long

'syntax to set current dir
SetCurrentDirectory App.Path
于 2008-09-30T18:27:31.330 に答える
1

vb6 を含むすべてのプログラムの現在のディレクトリは、ショートカットのプロパティで変更できます。ソース ツリーのルートに変更したので、File-Open の使用が速くなりました。

于 2008-10-02T19:09:52.723 に答える