全局钩子的奇怪问题(只有调试的时候才能挂上)
各位高手:
我做了一个全局钩子,并调试成功。但因为调用的是win32 console application,出来的黑屏窗口比较讨厌,虽然挂上成功了,可我还是想改成win32 application。结果只能是在debug状态下才能挂上,而release下就无法挂上了。
调用dll的过程如下:
static HINSTANCE hinstDLL;
hinstDLL = LoadLibrary((LPCTSTR)DLL_FILE_NAME);
我输出过hinstDll,每次都是非零值,说明正常,但为什么release下就不行呢?
我清楚全局钩子是每个进程单独拷一个DLL进自己的空间,进程中止,DLL调用数就减一。那为什么win32 console application类型的程序就可以正常执行? 难道是因为其带一个黑屏窗口,全局钩子只能被有窗口的程序挂上么?可随着程序的结束,黑屏窗口也会消失,可为什么DLL并未消失,还能正常执行呢?相同的,我用win32 application程序在debug下可以正常挂上dll,难道是因为有调试窗口的原因,真得搞不懂。
百思不解,请教大家!我用win32 application程序能否正常挂接全局DLL钩子。