回 帖 发 新 帖 刷新版面

主题:学习freelibrary的使用问题

学习freelibrary的使用,有以下问题 

VB codePrivate Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long

Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long


Private Sub Command1_Click()
Dim a As Long
Dim b As Long
Dim c As Long
Call LoadLibrary("BASSMOD.dll")
a = GetModuleHandle("BASSMOD.dll")
c = FreeLibrary(a)
b = GetModuleHandle("BASSMOD.dll")
End Sub



问题:释放指定的动态链接库BASSMOD.dll后,b = GetModuleHandle("BASSMOD.dll")还是执行成功,b>0, 应该b=0啊,因为已经释放了.请问是怎么回事. 
 

回复列表 (共1个回复)

沙发


Private Sub Command1_Click()
    Const DLL_FILE As String = "wmi.dll"
    Dim a As Long, b As Long, c As Long, d As Long
    a = GetModuleHandle(DLL_FILE)
    b = LoadLibrary(DLL_FILE)
    c = FreeLibrary(b)
    d = GetModuleHandle(DLL_FILE)
    Me.Print a, b, c, d
End Sub

没发现有什么问题,结果都是预期值.
可能你的程序之前已经加载了BASSMOD.dll,你之前用GetModuleHandle看看返回值是否为0

我来回复

您尚未登录,请登录后再回复。点此登录或注册