| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 687 人关注过本帖
标题:dbgview监控窗体消息
只看楼主 加入收藏
bingghost
Rank: 2
等 级:论坛游民
帖 子:70
专家分:85
注 册:2012-1-4
结帖率:100%
收藏
已结贴  问题点数:1 回复次数:8 
dbgview监控窗体消息
好久没有用Win32ASM  前来水一帖

大牛神们可以飞过了  因为本帖实在木有什么技术含量.....

1.首先运行dbgview
图片附件: 游客没有浏览图片的权限,请 登录注册

win7下请以管理员权限运行

2.将红色的地方勾住
图片附件: 游客没有浏览图片的权限,请 登录注册


3.请在您的窗体程序包含DebugMsg.inc (待会在下面以附件的形式给出)
这样您可以调用下面这2个函数了
图片附件: 游客没有浏览图片的权限,请 登录注册


4.在您的窗口的回调函数中插入如下代码
图片附件: 游客没有浏览图片的权限,请 登录注册


5.编译 链接 运行程序  在dbgvie观察..
图片附件: 游客没有浏览图片的权限,请 登录注册


图片附件: 游客没有浏览图片的权限,请 登录注册


6.其实DebugMsg.inc的实现很简单
图片附件: 游客没有浏览图片的权限,请 登录注册

查找  替换 列选择
然后写个函数查询即可.....

感谢您忍受想喷我的冲动  看完了此贴....

下楼发放附件....
搜索更多相关主题的帖子: 管理员 运行程序 
2013-01-05 21:44
信箱有效
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1102
专家分:4268
注 册:2012-6-19
收藏
得分:1 
不明觉厉
2013-01-05 21:46
bingghost
Rank: 2
等 级:论坛游民
帖 子:70
专家分:85
注 册:2012-1-4
收藏
得分:0 
本楼发放上楼相关附件:

Dbgview.zip (288.89 KB)
   工具

DebugMessage.zip (19.76 KB)
   Radasm测试工程

DebugMsg ASM.zip (3.8 KB)
  上楼中提到的头文件


我的头像就是我的女神 可惜我的女神已经死了 所以我的心也死了
2013-01-05 21:47
bingghost
Rank: 2
等 级:论坛游民
帖 子:70
专家分:85
注 册:2012-1-4
收藏
得分:0 
顺便把C版本发一下

Messages-----CPP.zip (3.02 KB)




发帖完毕....

我的头像就是我的女神 可惜我的女神已经死了 所以我的心也死了
2013-01-05 21:48
bingghost
Rank: 2
等 级:论坛游民
帖 子:70
专家分:85
注 册:2012-1-4
收藏
得分:0 
以下是引用信箱有效在2013-1-5 21:46:29的发言:

不明觉厉
明白了 就感觉so easy了

主要是查找 替换弄的比较麻烦   纯属体力活

我的头像就是我的女神 可惜我的女神已经死了 所以我的心也死了
2013-01-05 21:50
yibana
Rank: 2
等 级:论坛游民
帖 子:10
专家分:20
注 册:2013-1-6
收藏
得分:0 
刚好要用到 谢谢

;L宏-定义字符串常量
L macro var:VARARG                     
        LOCAL @lbl
        
    .const
        ifidni     <&var>,<"">
            @lbl db 0
        elseifidni    <&var>,<"",0ah>
            @lbl db 0ah,0
        else
            @lbl db var,0
        endif
        
    .code
       exitm <offset @lbl>
ENDM

顺遍问下  var前面为什么要加&
2013-02-11 21:14
水哥
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:65
专家分:111
注 册:2012-8-11
收藏
得分:0 
程序代码:
_FindMessage proc uses esi ebx edx,uMsg:DWORD
  
  lea esi,lpDebugMsg
  
  xor edx,edx
  .while  edx < nNumOfDebugMsg
        
        mov eax,uMsg
        .if eax == dword ptr [esi]
            mov eax,edx
            ret
        .endif
        
        inc edx
        add esi,sizeof(DebugMsg)
  .endw
  
  mov eax,-1
  ret

_FindMessage endp

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;功  能:打印当前消息
;参  数:当前消息
;返回值:无返回值
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_PrintDebugMsg proc uses esi ebx edx,uMsg:DWORD
  
  invoke _FindMessage,uMsg

  .if eax != -1
    lea esi,lpDebugMsg
    mov ebx,sizeof(DebugMsg)
    mul ebx
    add esi,eax
    add esi,4
    invoke OutputDebugString,dword ptr [esi]
  .endif
  
  xor eax,eax
  ret
_PrintDebugMsg endp

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
程序代码:
/************************************************************************
*功  能:查找当前消息
*参  数:当前消息
*返回值:返回所在的索引
************************************************************************/
int FindMessage(UINT uMsg)
{
  int nIndex = 0;
  
  while (nIndex < MAX_MSG)
  {
    if (uMsg == g_stMonitorMessage[nIndex].m_nMessage)
    {
      return nIndex;
    }

    nIndex++;
  }

  return -1;
}

/************************************************************************
*功  能:打印当前消息
*参  数:当前消息
*返回值:无返回值
************************************************************************/
void PrinterMessage(UINT uMsg)
{
  int nIndex = FindMessage(uMsg);

  if (nIndex != -1)
  {
    OutputDebugString(g_stMonitorMessage[nIndex].m_lpMessage);
  }
}


这是小沙弥的代码的精华所在,把windows程序设计里的索引方式和OutputDebugString结合达到了自己想要的结果
,思路很好,只有想不到的,没有做不到的,继续努力
2013-02-13 09:19
水哥
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:65
专家分:111
注 册:2012-8-11
收藏
得分:0 
还有老罗的例子有消息的例子,里面有消息的数组列表,自己一个一个写是够累的,复制就简单了
2013-02-13 09:25
bingghost
Rank: 2
等 级:论坛游民
帖 子:70
专家分:85
注 册:2012-1-4
收藏
得分:0 
以下是引用yibana在2013-2-11 21:14:42的发言:

刚好要用到 谢谢
 
;L宏-定义字符串常量
L macro var:VARARG                     
        LOCAL @lbl
         
    .const
        ifidni     <&var>,<"">
            @lbl db 0
        elseifidni    <&var>,<"",0ah>
            @lbl db 0ah,0
        else
            @lbl db var,0
        endif
         
    .code
       exitm  
ENDM
 
顺遍问下  var前面为什么要加&
好久木有上论坛了
以前发的帖子 至于宏汇编的一些语法细节 俺由于很久木有用也忘记的差不多了
下面的帖子 有一些masm宏汇编不错的资料
https://bbs.bccn.net/thread-365657-1-1.html
https://bbs.bccn.net/thread-365666-1-1.html
您可以参考之。。。

另外这个L宏和网上流行的那个L宏写法不一样
是俺稍稍做了一点修改  好像可以支持
①.空字符L("")
②.多字符串L("Hello",0ah,0dh,"World",0ah,0dh)
甚至你为了代码的可读性  可以宏定义0ah,0dh

我的头像就是我的女神 可惜我的女神已经死了 所以我的心也死了
2013-02-23 22:23
快速回复:dbgview监控窗体消息
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019618 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved