我想在VB6程序里面加一个Office样式的菜单,在网站上找了很多,发现HookMenu最方便。
下载了以后,加入工程的部件里面,就可以使用了,很方便,效果很棒。
虽然调试没有问题,但是当我生成Exe文件后,执行到HookMenu相关的动作时,问题产生了,系统弹出了一个程序崩溃对话框,如下所示
   ========================================================================
  | SubclassingThunk.exe -应用程序错误                                         |X|
   ========================================================================
  |  \/ "0x001509a8" 指令引用的 "0x001509a8" 内存。该内存不能为"written"。
  |  /\ 要终止程序,请单击“确定”。
  |     要调试程序,请单击“取消”。
  |                  【  确定  】 【  取消  】
  |========================================================================我的系统是Windows Server 2003 SP2,用的是管理员账户。
同时我的系统还安装有.Net framework3.5后来,我发现我编译好的程序拷贝到XP中式可以正常运行的,在我的系统就不行
我真的是很郁闷了,这样的技术,究竟能不能采用呢?
后来我发现HookMenu采用的是SubClass技术,jcMenu也是,我编译了jcMenu的工程,也出现同样的问题。真的希望有人能给出提示。

解决方案 »

  1.   

    在XP中可以正常运行,2003就不行,HookMenu须要什么条件没有?比如:安装Office
      

  2.   

    终于找到原因了,
    关掉DEP是可以用了,但是还是偶尔会出现错误,可能是其他问题。
    但是要别人关掉DEP,还是不是很好的做法,谢谢yk84,
      

  3.   

    楼主结贴给分吧。都告诉你原因出在哪了。别人写的控件,要么你换控件,要么你关DEP。
    除非你拿到控件源码,而且懂得如何绕过DEP保护(绕过DEP保护倒不是很难)对此控件进行修改,否则无解。