我的程序使用 SetWindowsHookEx 在我的 DLL 中设置一个全局 Hook 函数。但是我希望 DLL 能够处理一个文件,所以我需要一个打开一次的文件。我不能使用 DllMain 的 DLL_PROCESS_ATTACH,因为它被调用了多次。我的问题的最佳解决方案是什么?
最佳答案
使用静态标志来判断您是否已经初始化。
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;
};
}
关于c - 一次 Hook DLL 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3220632/