怎样使用API函数GetModuleHandle,请举例。

oceanmap 2002-09-10 06:46:34
我按照资料上说的使用,无论如何返回值都是0(失败),请问到底该如何使用,请给出代码(不是指函数的声明),使用时有哪些注意事项
...全文
1031 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fq1 2002-09-10
  • 打赏
  • 举报
回复
怎么会呢?
我这儿试怎么都可以呀?

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 Long

Private 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
oceanmap 2002-09-10
  • 打赏
  • 举报
回复
上述问题是对的,但是我却无法返回程序中用道的其他dll值
oceanmap 2002-09-10
  • 打赏
  • 举报
回复
to fq1() 程序我试过了,但返回值仍然是0
fq1 2002-09-10
  • 打赏
  • 举报
回复
根据以上解释,应该明白了吧?
它就是获得当前进程中所连接的某个模块的句柄。

比如在vb5的环境中,vb5的执行程序vb5.exe就算一个模块(主模块),获得vb5.exe的模块句柄就这样做:

Option Explicit
Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long

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

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧