我正在使用 Mfc 到 Qt 迁移解决方案,将我的 Mfc 插件迁移到 Qt。我的 Mfc 插件已加载到第三方 Mfc 应用程序中。基本上我正在使用以下基于 Qt 的应用程序扩展示例:
BOOL WINAPI DllMain( HINSTANCE hInstance, DWORD dwReason, LPVOID ) {
static bool ownApplication = FALSE;
if ( dwReason == DLL_PROCESS_ATTACH )
ownApplication = QMfcApp::pluginInstance( hInstance );
if ( dwReason == DLL_PROCESS_DETACH && ownApplication )
delete qApp;
return TRUE;
}
我阅读了Qt Sources中pluginInstance函数的代码,并注意到pluginInstance在里面调用了LoadLibrary和SetWindowsHook。
到目前为止一切正常。但我有以下担忧:禁止从 user32.dll 调用 LoadLibrary 和函数,如 DllMain 中的 SetWindowsHook。我在 DllMain 的 msdn 文档中读到了这一点。那么,如果这是不安全的,为什么官方 Qt 站点说要在 DllMain 中调用 pluginInstance?基于 Qt 的应用程序扩展 也许我遗漏了一些东西