VB6.0超级模块函数. GetProcessModuleHandleEx得到目标进程的模块地址


'参数1 进程窗口名、类名或者进程名,参数2 模块名 ,参数3 模块所在的路径关键字 比如 C盘 WINDOWS 目录下的路径 就填写 "WINDOWS" 即可
'这个函数一般不怎么用,一般用上面的 GetProcessModuleHandle 函数就可以了,那么这个函数为啥我要写呢? 因为 有的时候 同模块名 但是路径不同 并且这2个模块 版本也不同,只是模块名相同。这个时候 就需要区分 路径关键字了
'比如d3d9.dll这个 模块 一般 某类进程目录下面有,操作系统C盘上也有。  但是 真正调用的是系统的那个模块
    ' Dim mymod1 As Long
    ' mymod1 = GetProcessModuleHandleEx("植物大战僵尸中文版", "d3d9.dll","WINDOWS")

Public Function GetProcessModuleHandleEx(ByVal WindowClassVsWindowTextExeName As String, ByVal ModuleName As String, ByVal DLL_Path As String) As Long
 
            Dim pr As PROCESSENTRY32
            Dim lp As Long
            Dim mo As MODULEENTRY32
            Dim LM As Long
            Dim i As Long
            Dim Temp As Variant
            If ModuleName = "" Then GetProcessModuleHandleEx = 0: Exit Function
            pr.dwSize = Len(pr)
            LM = CreateToolhelp32Snapshot(TH32CS_SNAPmodule, GetPid(WindowClassVsWindowTextExeName))
            If LM > 0 Then
            mo.dwSize = Len(mo)
            If Module32First(LM, mo) Then
            Do
            Temp = Left(mo.szExePath, InStr(mo.szExePath, Chr(0)) - 1)
            Temp = Mid(Temp, InStrRev(Temp, "\") + 1)
             If UCase(Temp) = UCase(ModuleName) And InStr(UCase(mo.szExePath), UCase(DLL_Path)) Then  '"WINDOWS"
            GetProcessModuleHandleEx = mo.modBaseAddr
            Exit Function
            End If
            i = i + 1
            Loop Until Module32Next(LM, mo) = 0
            End If
            CloseHandle (LM)
            End If
End Function


'参数1 进程窗口名、类名或者进程名,参数2 模块名 ,参数3 模块所在的路径关键字 比如 C盘 WINDOWS 目录下的路径 就填写 "WINDOWS" 即可
'这个函数一般不怎么用,一般用上面的 GetProcessModuleHandle 函数就可以了,那么这个函数为啥我要写呢? 因为 有的时候 同模块名 但是路径不同 并且这2个模块 版本也不同,只是模块名相同。这个时候 就需要区分 路径关键字了
'比如d3d9.dll这个 模块 一般 某类进程目录下面有,操作系统C盘上也有。  但是 真正调用的是系统的那个模块
    ' Dim mymod1 As Long
    ' mymod1 = GetProcessModuleHandleEx("植物大战僵尸中文版", "d3d9.dll","WINDOWS")

VB站 www.zai996.com  q1016058890

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

侠客软件开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值