Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long 
说明 
获取一个应用程序或动态链接库的模块句柄 
返回值 
Long,如执行成功成功,则返回模块句柄。零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
lpModuleName String,指定模块名,这通常是与模块的文件名相同的一个名字。例如,NOTEPAD.EXE程序的模块文件名就叫作NOTEPAD 
注解 
只有在当前进程的场景中,这个句柄才会有效
 

解决方案 »

  1.   

    根据以上解释,应该明白了吧?
    它就是获得当前进程中所连接的某个模块的句柄。比如在vb5的环境中,vb5的执行程序vb5.exe就算一个模块(主模块),获得vb5.exe的模块句柄就这样做:Option Explicit
    Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As LongPrivate Sub Form_Load()
    Dim a As Long
    a = GetModuleHandle("vb5.exe")
    Debug.Print a
    End Sub
      

  2.   

    to fq1() 程序我试过了,但返回值仍然是0
      

  3.   

    上述问题是对的,但是我却无法返回程序中用道的其他dll值
      

  4.   

    怎么会呢?
    我这儿试怎么都可以呀?Option Explicit
    Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long
    Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal flags As Long) As Long
    Private Declare Function AddFontResource Lib "gdi32" Alias "AddFontResourceA" (ByVal lpFileName As String) As Long
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As LongPrivate Sub Form_Load()
    Dim a As Long
    a = GetModuleHandle("vb5.exe")
    Debug.Print a
    a = GetModuleHandle("kernel32.dll")
    Debug.Print a
    a = GetModuleHandle("user32.dll")
    Debug.Print a
    a = GetModuleHandle("gdi32.dll")
    Debug.Print a
    a = GetModuleHandle("shell32.dll")
    Debug.Print a
    a = GetModuleHandle("advapi32.dll")
    Debug.Print a
    End Sub