2014-07-05 99 views
2

我从VB6制作一个.dll。我需要知道将使用该.dll的应用程序的路径,但我无法弄清楚如何直接从.dll这样做..任何人都知道该怎么做?VB6 .dll得到调用应用程序路径

预先感谢您

回答

6

嗯,这似乎是一个DLL工作:

Option Explicit 

Private Const API_NULL As Long = 0 

Private Declare Function GetCurrentProcess Lib "kernel32"() As Long 

Private Declare Function GetModuleHandle Lib "kernel32" _ 
    Alias "GetModuleHandleA" (_ 
    ByVal lpModuleName As Long) As Long 

Private Declare Function GetModuleBaseName Lib "psapi" _ 
    Alias "GetModuleBaseNameA" (_ 
    ByVal hProcess As Long, _ 
    ByVal hModule As Long, _ 
    ByVal BaseName As String, _ 
    ByVal nSize As Long) As Long 

Private Declare Function GetModuleFileNameEx Lib "psapi" _ 
    Alias "GetModuleFileNameExA" (_ 
    ByVal hProcess As Long, _ 
    ByVal hModule As Long, _ 
    ByVal FileName As String, _ 
    ByVal nSize As Long) As Long 

Public Function ExeBaseName() As String 
    Dim Size As Long 

    ExeBaseName = Space$(256) 
    Size = GetModuleBaseName(GetCurrentProcess(), _ 
          GetModuleHandle(API_NULL), _ 
          ExeBaseName, _ 
          256) 
    ExeBaseName = Left$(ExeBaseName, Size) 
End Function 

Public Function ExeFileName() As String 
    Dim Size As Long 

    ExeFileName = Space$(256) 
    Size = GetModuleFileNameEx(GetCurrentProcess(), _ 
           GetModuleHandle(API_NULL), _ 
           ExeFileName, _ 
           256) 
    ExeFileName = Left$(ExeFileName, Size) 
End Function 

调用适当的方法获取基本名称或主要程序的完整文件名。