VB6 実行可能ファイルをデバッグしています。実行可能ファイルは、実行時に現在のディレクトリから dll とファイルをロードします。デバッガーで実行すると、現在のディレクトリは VB6 のディレクトリのようです。
VB6 の作業ディレクトリを設定するにはどうすればよいですか?
VB6 実行可能ファイルをデバッグしています。実行可能ファイルは、実行時に現在のディレクトリから dll とファイルをロードします。デバッガーで実行すると、現在のディレクトリは VB6 のディレクトリのようです。
VB6 の作業ディレクトリを設定するにはどうすればよいですか?
これは、このことに対する「すぐに使える」ソリューションではないようです。
ソフトウェアフォーラムのオールドジョエルからの引用
とにかく..このトピックを休ませるために..以下は私の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
File-Open を使用してプロジェクトを開いた場合のみ、「現在のディレクトリは VB6 のディレクトリのようです」。
IDE を閉じた状態で .vbp ファイルをダブルクリックして開きます。
私が見つけた解決策は、 を使用し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
'Declaration
Private Declare Function SetCurrentDirectory Lib "kernel32" _
Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
'syntax to set current dir
SetCurrentDirectory App.Path
vb6 を含むすべてのプログラムの現在のディレクトリは、ショートカットのプロパティで変更できます。ソース ツリーのルートに変更したので、File-Open の使用が速くなりました。