原文: http://www.cnblogs.com/pctgl/articles/1797692.html原文中有关实现无崩溃的代码和方法,已做修改,但基本思路一致,请大家尽量帮忙测试下吧请测试的朋友回复下测试的系统环境和结果。
这个代码实现了最简单的子类化方法,实现了基本的无崩溃环境,其实他的实现原理和那个一大堆代码实现的无崩溃子类化代码相比,可以说是原理相同,但绝无抄袭;那个代码只发送特定消息给处理函数,回调过程不够自由,且用多了会卡,我这个代码首先是追求高效,其次是弥补安全的问题,希望大家能够喜欢如遇不会使用的问题, 请跟帖
测试代码:
http://files.cnblogs.com/pctgl/%e6%97%a0%e5%b4%a9%e6%ba%83%e5%ad%90%e7%b1%bb%e5%8c%96%28xp%2c7%29.rar

解决方案 »

  1.   

    测试了,没有崩溃。不过想说2句:vb6非oo语言,固然子类化可能有些用途(实际很少),但在vb6中费劲心思为之个人感觉没有必要。选择语言编程在于发挥其优势,而不是去钻牛角。
      

  2.   

    原文: 
    http://www.cnblogs.com/pctgl/articles/1797692.html测试代码:
    http://files.cnblogs.com/pctgl/%e6%97%a0%e5%b4%a9%e6%ba%83%e5%ad%90%e7%b1%bb%e5%8c%96%28xp%2c7%29.rar
      

  3.   

    之前用过一个子类化类,32位xp下正常,拿到64位win2008上就不行了
    看到这个拿去试下了,都很正常
      

  4.   

    支持楼主,不过技术帖选在[color=#000000]非技术区散分实在没啥意思:([/color]
      

  5.   

     64位 win7都可以吗?其实有什么可维护的呢,汇编编译起来很方便,取机器码也是十分方便
    开始我都是直接开od直接写代码,后来代码太多了,直接写的话就晕菜了,很多跳转老得调整
    就顺手写了个小函数,整理机器码,直接生成
    LinkProc 数组,并且把需要修改的部分列了出来,很方便了
    其实这个代码还有一点不够好,就是如果 form 没有show出来时,遇到源码错误,调试被自动暂停
    此时,直接按 ■ 停止按钮就挂了
    如果待窗口显示出来之后,再设置子类化,则这个问题就不存在了
    原因其实也很简单,就是过程还不够强壮,谁有兴趣,谁就再补充吧提示下怎么出现这个问题:
       注释 WM_COMMAND 的常数声明,然后按强制暂停的方式调试就知道了(这只是个例子)
      

  6.   

    lz果真是牛角高手,我说的是vb6。子类化用的当然很多,对于非oo语言的vb6来说,搞这个个人感觉确实用途很少,真需要子类化,不如选择其他语言做,子类化本身就是oo语言的特性.
      

  7.   

    。 
    oo 语言?  你说的是oop ? 你说vb6不是oop类型的编程语言? 子类化是oop类型的编程语言的特性?了解了。 你还是没修炼到家呢,说的话太外行了难怪你能说出这些话
      

  8.   

    我觉得非常的好,好在很方便的实现对多个对象的子类化。但没有深入研究,觉得这种在SetMsgHook的时候没有指定需要处理哪个消息,势必处理所有消息,这样在效率方面怎样呢?我WIN7 X64,测试一切正常。期待更多的人测试,我好移植到我工程中,哈哈
      

  9.   

    重新测试了下在有错的情况下,改动几次代码还是要崩溃如果在MsgHook直接处理消息,且有错时,可能出现反复提示错误,最后只能关进程的情况
      

  10.   

    hwnd 不是 form窗口,是平常的控件时崩溃的一沓糊涂!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      

  11.   

    不信大家就测试下  用  m.SetMsgHook Me.hwnd 与  m.Picture1.hwnd   的 区别,一用 m.Picture1.hwnd  点击   ■  就 立刻崩溃!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!