我的程序使用SetWindowsHookEx在我的DLL中设置全局钩子函数不过,我希望DLL与一个文件一起工作,所以我需要一个文件打开一次我不能使用DllMain的DLL进程附加,因为它被多次调用我的问题最好的解决办法是什么?
最佳答案
使用静态标志来判断您是否已经初始化。
void DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
static BOOL initialized = FALSE;
switch(dwReason) {
case DLL_PROCESS_ATTACH:
if(!initialized) {
// Perform initialization here...ex: open your file.
initialized = TRUE;
}
break;
case DLL_PROCESS_DETACH:
if(initialized) {
// Perform cleanup here...ex: close your file.
initialized = FALSE;
}
break;
};
}