【发布时间】:2014-07-05 23:30:05
【问题描述】:
我正在用 VB6 制作一个 .dll。我需要知道将使用该 .dll 的应用程序的路径,但我不知道如何直接从 .dll 执行此操作。有人知道该怎么做吗? p>
提前谢谢你
【问题讨论】:
我正在用 VB6 制作一个 .dll。我需要知道将使用该 .dll 的应用程序的路径,但我不知道如何直接从 .dll 执行此操作。有人知道该怎么做吗? p>
提前谢谢你
【问题讨论】:
这似乎可以作为 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
调用适当的方法获取主程序的基本名称或完整文件名。
【讨论】: