最近下了一个国外软件,运行时会始终显示一个未注册的提示窗口,不爽,想弄掉它,用spy++跟了一下,发现是在一个DLL中创建的,只要载入这个DLL,窗口就会自动创建,应该是用Delphi写成,窗口类型为TForm的一个顶层窗口,用了查找顶层窗口进行比较的方法可以去掉它,但是始终会先创建显示一次(因为它创建出来了才能找到它),还是不爽!!    有什么方法可以在它显示之前就截掉它!!

解决方案 »

  1.   

    如果是动态连接,就可以自己写一个这样的dll替换它,反正接口可以查到;或者拦截loadlibrary,在动态加载的时候做做手脚。
      

  2.   

    看看原来那个dll导出了什么函数,写一个dll来进行中转,这样就可以避免程序开始的时候加载窗口。理论上可以的,不过这样可能还是有点难度。
      

  3.   

    是不是可以Hook WM_CREATE消息,如果窗口名符合条件就拦截消息或修改这个消息的参数呢?
      

  4.   

    一个HOOK窗口过程或者二是HOOK API LoadLibrary.
      

  5.   

    我觉得还是拦截窗口创建或显示的消息比较合适,如果要定位具体是由哪个函数创建的,一是比较麻烦,二是这个一般不会出现在导出函数中,关键看怎么在DLL创建这个窗口前截到它,应该是使用HOOK之类的,谁能给点代码参考一下,感激中...帮忙up一下也好:-)
      

  6.   

    人气不旺嘛:(研究了一下钩子的写法,用了一个CBT钩子解决了,
    效果非常好啊散分结帖了!