Every now and then you need to find the name of the EXE that loaded you DLL component.
The reasons for needing this information are diverse. For instance, I have a component that's
used by both desktop and server-side web application. When I run a desktop application, I want to
return text separated by vbCrLf. However, to HTML code vbCrLf means nothing.
Web-application would prefer the text to be separated by <br>. I need to know where
the component is running so that its output matches that of its container.
Thus the need for a procedure that returns the name of the EXE (or another DLL) that loaded the DLL component.
I wish I could take credit for this code, but I can't. I posted the question on the newsgroups ages ago and
some good soul answered. So here is the anonymous code. In your code simply call WhosYourDaddy function.
| Add the following code to form, module or class |
Option Explicit
'API Declarations
Private Declare Function GetModuleFileName Lib _
"kernel32" Alias "GetModuleFileNameA" (ByVal _
hModule As Long, ByVal lpFileName As String, _
ByVal nSize As Long) As Long
Private Function WhosYourDaddy() As String
Dim AppPath As String
Const MAX_PATH = 260
On Error Resume Next
'allocate space for the string
AppPath = Space$(MAX_PATH)
If GetModuleFileName(0, AppPath, Len(AppPath)) Then
'Remove NULLs from the result
AppPath = Left$(AppPath, InStr(AppPath, vbNullChar) - 1)
WhosYourDaddy = AppPath
Else
WhosYourDaddy = "Not Found"
End If
End Function