在显示调用一个DLL时:
HINSTANCE hAddDll = NULL;
hAddDll = ::LoadLibrary(_T("xxx.dll"));//加载dll
这个时候会触发调用DLL的入口函数:
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
在新的vs 2017中对DLL的框架进行了封装,入口调用函数为:
BOOL CXxxApp::InitInstance()
{
CWinApp::InitInstance();
}
如果想在DLL加载时实现DLL的注入,可以在这两个入口函数中设置全局钩子
hhk = ::SetWindowsHookEx(WH_MOUSE, MouseProc, hinst, 0);