vb.net进程管理:【VB.NET】也谈跨进程消息钩子

【VB.NET】也谈跨进程消息钩子(1) - 收藏本文



<StructLayout(LayoutKind.Sequential)> _
Public Structure COPYDATASTRUCT
    Public dwData As Integer
    Public cbData As Integer
    Public lpData As IntPtr
End Structure


  其中dwData我们不是很关心当然其中也可能存在些有用信息(这里不想多说网上有些文章纯属误导)

  而cbData是个长度:lpData长度

  lpData这里被声明为指针看起来更直观了——它就是地址

  有了地址和长度如何读取代码就自己写吧

  提示下:参考我重载ReadProcessMemory可能对你有不少帮助

  当然上面提到只是“特殊情况”中个典型还有很多时候进程是用自定义消息(>&H40A)来传递数据例如我所开发这个工程打印mCallBack参数后得到是如下结果(十 6进制只提取了有用信息):

  473  14  42257D0

  其中lParam就是个指针我读了其中部分:

    Function readmsg(ByVal address As Integer) As Byte
        Dim buf(19) As Byte
        ReadProcessMemory(hProc, address, buf, 20, 0)
        Return buf
    End Function


  现在就明白为什么上面代码是那样了:)

  然后进行了个处理得到了我想要信息:

   '消息解码后得到移动棋子信息:玩家起X起Y止X止Y棋子编号走棋总步数

    Event Move(ByVal player As Byte, ByVal sx As Byte, ByVal sy As Byte, ByVal dx As Byte, ByVal dy As Byte, ByVal name As Byte, ByVal [step] As Byte)
    Private Function mCallback(ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
        If wParam = &H14 Then
            Dim s As Byte = msg.readmsg(lParam)
            RaiseEvent Move(s(1), s(10), s(11), s(12), s(13), s(14), s(16))
        End If
    End Function




  当然在我工程里面重载ReadProcessMemory并没有被使用

  补充下咯:

  在VB.NET中处理自己窗体消息只需要重载窗体消息处理过程就可以了无需子类化:)

  有补充下:

  对于wm_datacopy来说还有些数据获取问题没有说清楚实际上都可以用些思路方法来解决

  真要回家咯饿个重载可能更介绍说明问题:

   Protected Overrides Sub DefWndProc(ByRef m As .Windows.Forms.Message)
        Select Case m.Msg
            Case WM_COPYDATA
                Dim mMessage As New COPYDATASTRUCT
                mMessage = DirectCast(m.GetLParam(mMessage.[GetType]), COPYDATASTRUCT)

               Dim bs(mMessage.cbData - 1) As Byte
               Marshal.Copy(mMessage.lpData, bs, 0, mMessage.cbData)

               debig.pr .BitConverter.(bs, 0, mMessage.cbData)

        End Select

    End Sub




页1234="current">5


最近更新最后刷新时间:2009-08-16 00:50:47

  • 游戏大厅 从基础开始(4)-通过L2X用配置文件反射组装(VB _disibledevent=>VB.net编程教程:编写文字加解密
  • 【VB.NET】也谈跨进程消息钩子
  • VBA在Excel中应用( 3)
  • eXpressApp Framework 生成单据编号解决方案(vb.net)
  • VB.NET将任意图像文件设置为鼠标形状
  • 用Visual Basic6类模块打造Control控件
  • 基于Visual Basic 6网络设计
  • VB.NET中动态代码生成窍门技巧
  • VB第 3方Control控件实现XP资源管理器垂直栏


最新资讯

  • ·Java EE 6新特性尝鲜:EJB 3.1重要变化总览
  • ·和我共同了解Java是什么
  • ·JSR 299(Java EE 平台上下文和依赖注入)最终建议草案
  • ·Java编程语言 8大优点
  • ·探秘Java 7模块化 类路径永远消失
  • ·JavaOne 2009第 2天:揭示Java领域几大趋势
  • ·JavaOne 2009第天:Java软件Software商店启动 甲骨文CEO登场
  • ·RIA的争 JavaFX是否能后来居上?
  • ·JavaFX还有戏吗?
  • ·Web开发谁更高效 Java对决Ruby _disibledevent=>Zend公司为Java提供PHP解决方案
  • ·REARIA规范标准化发展趋势()
  • ·Java影响力远超想像——为什么要采用Java平台
  • ·5月编程语言排行榜:D语言急速下滑
  • ·Java开源缓存Cache平台Terracotta 3.0版本发布

在线手册

  • · VBScript 语言快速参考
  • · VBScript语言参考
  • · VB API 参考手册
  • · Windows API 参考大全

专题推荐

  • · Visual Basic 9,VB9 教程
  • · Visual Basic 入门教程
  • · VB.net 编程
  • · Visual Basic Control控件编程
  • · Visual Basic 报表
  • · VB 图像处理
  • · Visual Basic COM 编程
  • · VB变量
  • · VB事件
  • · VB界面
  • · VB例子
  • · VB游戏编程
  • · VB消息
  • · VB窗口
  • · VB菜单
  • · VB按钮
  • · 更多VB专题……



有关我们 | 联系我们 | 版权申明 | 广告服务 | 网站WebSite律师 | 报告 | 免责条款

Copyright © 2002 - 2009 ddvip All Rights Reserved

版权所有



Tags:  vb.net教程 vb.net 键盘钩子所有进程 vb.net进程管理

延伸阅读

最新评论

发表评论