Как установить рабочий каталог при отладке приложения VB6?

Я отлаживаю исполняемый файл VB6. Исполняемый файл загружает dll и файлы из него в текущую директорию при запуске. При запуске в отладчике текущий каталог выглядит как VB6.

Как установить рабочий каталог для VB6?

Ответы

Ответ 1

Это не похоже на решение "из коробки" для этой вещи.

Взято из The Old Joel On Software Forums

В любом случае.. поставить эту тему на отдых.. следующим было мое решение VB6: я определить 2 символа в моем проекте VB "MPDEBUG" и "MPRELEASE" и следующая функция как первая работа в точке входа в мои приложения функция.

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

Ответ 2

Решение, которое я обнаружил, что работает, использует 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

Ответ 3

"Текущий каталог, по-видимому, является VB6 dir", только когда вы открываете проект, используя File-Open.

Откройте его, дважды щелкнув файл .vbp при закрытии IDE.

Ответ 4

Будет ли это работать?

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

'syntax to set current dir
SetCurrentDirectory App.Path

Ответ 5

Текущий каталог для любой программы, включая vb6, можно изменить в свойствах ярлыка. Я изменил его на корень моего исходного дерева, он быстрее использует File-Open.