记录SetWindowHookEx中WH_GETMESSAGE对应的回调函数不执行的问题,附解决方法。

简单说下导致不执行的原因,就是HOOK成功了窗口还没有出现,然后我们的DLL模块被释放了导致的。

原来出错的代码:

void XiaoxiThread()
{
	//特征读取
	InitCall();
	InitOther();	//这个函数里面调用的SetWindowHookEx
	//这里是线程尾部了,没有延时就退出了,而且这个DLL只创建了这个线程,所以代表这个DLL马上会被释放。
}

修改后能正常运行的代码:

void XiaoxiThread()
{
	//特征读取
	InitCall();
	InitOther();	//这个函数里面调用的SetWindowHookEx

	//加了延时死循环 让DLL不被释放
	LOG_DEBUG("1");
	mSleep(1000);
	LOG_DEBUG("2");
	mSleep(1000);
	LOG_DEBUG("3");
	mSleep(1000);
	LOG_DEBUG("4");
	while (1)
	{
		mSleep(1000);
	}
}

你可能感兴趣的:(记录SetWindowHookEx中WH_GETMESSAGE对应的回调函数不执行的问题,附解决方法。)