调用SendMessage能够向窗口发送消息,那么如何得知某个窗口执行某个动作实质是发送了什么消息呢?
比如我想按下某个按钮,或者我选中下拉框中的某个项,有没有什么方法能够监视我所做的这些动作,然后返回给这些个动作都发送了哪些消息呢?
如果能够监视到,那么我再用编程的方式去发送这些消息,是不是就能原封不动的还原我刚才人工操作的效果呢?

解决方案 »

  1.   

    比较困难,因为所采取的动作和消息是无关的,是根据消息产生动作,而这些动作后面又产生了哪些消息,这个比较困难了,因为它的动作并不一定产生消息,你可以通过Hook它随后的SendMessage等函数的方式来获取相关消息,
    不过确定是否有关这个是很困难的罗。
      

  2.   

    重载WINPROC可以看的到吧.
      

  3.   

    重载WINPROC可以看消息号不过都是数字.用 Spy++ 可以监控任意一个控件窗口的消息;可以看到名称2)如果能够监视到,那么我再用编程的方式去发送这些消息,是不是就能原封不动的还原我刚才人工操作的效果呢?
    原则上是这样的不过有些消息真的很难发啊;有的消息里带那种win32 的结构体
    用c# 比较郁闷的要声明很多东西、VC 就方便多了!
      

  4.   


    protected override void WndProc(ref Message m)
    {
    Debug.WriteLine(m.Msg,"WndProc");
    base.WndProc(ref m);
    }
    上边些错了是重写 WndProc 被2楼误导的哈哈;
      

  5.   

    这个比较因难的。但是有一点一般的事件是定死了的。常见的事件可以在 google或baidu中 搜索“Windows 事件”自已找吧。当然楼上星星所说 :WndProc(ref Message m)
    可以捕获所有消息,但我想这样你也很难哪个是跟你有关的。