软件中使用的DLL文件除了放置在SYSTEM32和软件目录下,可否放在其它我想放的目录下
软件中使用的DLL文件除了放置在SYSTEM32和软件目录下,可否放在其它我想放的目录下
比如我的软件安装目录为 d:\润友物业管理系统 可否将其相关的DLL文件放置在 d:\润友物业管理系统\dll 目录下,但不影响DLL函数的调用。
[解决办法]
可以放其它目录,是否影响调用,看你怎么做了,可以指定环境变量的路径和你的程序声明可以指定的特定路径下面去
[解决办法]
如果是 ActiveX Dll,必须先注册再使用,无论放在哪里,都是通过注册信息定位的,无影响。
如果是标准Dll,必须在能被搜索的目录下,参考 http://bbs.csdn.net/topics/300112099。
[解决办法]
注册:就是将版本、库名、类名、GUID、目录等信息写入注册表。
你在VB中编译一个 ActiveX Dll 时就自动完成注册了。
安装程序也会负责进行注册。
[解决办法]
ActiveX Dll 的好处就是不拘泥其路径和文件名,注册了就可以用。
标准 DLL 的缺省路径还有可执行文件路径。如果放在其他路径,代码中就要处理了。
[解决办法]
64位就不行,必须放SYSWOW下面。
Private Declare Function FreeLibrary Lib “kernel32″ (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib “kernel32″ Alias “LoadLibraryA” (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib “kernel32″ (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function CallWindowProc Lib “user32″ Alias “CallWindowProcA” (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Any, ByVal wParam As Any, ByVal lParam As Any) As Long
Private Sub Command1_Click()
On Error Resume Next
Dim lb As Long, pa As Long
‘以 text.dll 为例,设 text.dll 功能跟 user32.dll 完全相同。
lb = LoadLibrary(DLL_Path & “\text.dll”)
‘取得 text.dll 中 SetWindowTextA 函数的地址
pa = GetProcAddress(lb, “ExploreMap”)
‘调用 SetWindowTextA 函数过程
pa = CallWindowProc(pa, ByVal 0&, ByVal 0&, ByVal 0&, ByVal 0&)
‘释放…
FreeLibrary lb
Me.Caption = pa
End Sub