将绘画的代码用委托传给那个窗体,在Paint中调用。

解决方案 »

  1.   


    版大,人家是跨进程的窗口,委托不靠谱……要敏感估计只能hook,或者就定时画咯
      

  2.   


    版大,人家是跨进程的窗口,委托不靠谱……要敏感估计只能hook,或者就定时画咯没看清楚,抱歉。如果是跨进程,不能直接hook窗体消息循环,需要注入代码,这个C#比较难,需要原生的语言。
      

  3.   


    确实,需要搞个dll来注入,然后再hook,然后再进程间通信来控制,确实光凭C#解决起来不容易了
      

  4.   


    确实,需要搞个dll来注入,然后再hook,然后再进程间通信来控制,确实光凭C#解决起来不容易了
     用hook的话影响系统性能,能不能用个比较简单的方法解决这个问题
      

  5.   


    确实,需要搞个dll来注入,然后再hook,然后再进程间通信来控制,确实光凭C#解决起来不容易了
     用hook的话影响系统性能,能不能用个比较简单的方法解决这个问题其它进程的窗口,你不hook,无法实时知道是否需要重绘,那就无法及时响应,那变通的方法自然就只有定时检测目标窗口是否需要重绘了,比如定时检查目标窗口大小,并且获取特定的像素,判定颜色等来判断是否需要重绘。
      

  6.   

    有没有不用Hook的方法呀,求教!
      

  7.   

    C#版本相对全面稳定的 全局钩子
    http://www.codeproject.com/Articles/18638/Using-Window-Messages-to-Implement-Global-System-H获取系统windows消息->将消息发送到托管程序(winform程序)的消息队列中->像处理托管程序消息一样去处理其他消息(在托管程序的WndProc中处理)
      

  8.   


    你自己写的托管代码:
    class Form1:Form
    {
    protected override void WndProc(ref Message msg)
    {
           //处理非自己的消息  可以是其他任何程序的消息
           base.WndProc(msg);  //处理自己的windows消息
    }
    }
      

  9.   


    你自己写的托管代码:
    class Form1:Form
    {
    protected override void WndProc(ref Message msg)
    {
           //处理非自己的消息  可以是其他任何程序的消息
           base.WndProc(msg);  //处理自己的windows消息
    }
    }
    你这样的话还是要钩子!收到系统的消息没什么用吧!系统消息怎么处理自己要的功能!
      

  10.   


    你自己写的托管代码:
    class Form1:Form
    {
    protected override void WndProc(ref Message msg)
    {
           //处理非自己的消息  可以是其他任何程序的消息
           base.WndProc(msg);  //处理自己的windows消息
    }
    }
    你这样的话还是要钩子!收到系统的消息没什么用吧!系统消息怎么处理自己要的功能!这样就没有什么我和你的分别了  你不是要在别的窗体上绘图? 那么直接在WndProc中绘制图形就可以了  像在Form1上绘图一样