如何使FreeBASIC DLL找到自己的文件名和路径? 到目前为止我已经尝试过了:(用rundll32文件名运行它,DllMain) 代码:
#include "windows.bi"
Extern "Windows-MS"
Sub DllMain() Export
dim This as String
This = dir(command$(0))
MessageBox( null, "Hello World", This, MB_OK )
End Sub
End Extern
。 。 。但它不起作用。
当我将它编译为EXE时,它可以正常工作。
有什么建议吗?谢谢!
答案 0 :(得分:0)
我尝试将approach of this C++ snippet改编为FreeBASIC。乍一看,它似乎工作。但是:Snippet提供"原样",没有任何形式的担保。使用风险自负。
#include "windows.bi"
Const GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = &H2
Const GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = &H4
Extern "Windows-MS"
Function getMyPath() As String
' See https://stackoverflow.com/a/6924332/
Dim path As ZString * 255
Dim hm As HMODULE = NULL
If GetModuleHandleEx( _
GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS Or _
GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, _
Cast(LPCSTR, @getMyPath), _
@hm _
) Then
GetModuleFileName( hm, path, SizeOf( path ) )
End If
Return path
End Function
Sub DllMain() Export
dim dllPath as String
dllPath = getMyPath()
MessageBox( null, dllPath, "Hello World", MB_OK )
End Sub
End Extern