Pie*_*aud 1 dll winapi comctl32 loadlibrary
我在一个COMCTL32.DLL加载两次的进程内运行,一次使用版本5.82.7601.17514,一次使用版本6.10.7601.17514.旧版本由程序链接的一些遗留DLL加载,另一个版本由较新的DLL加载.
如果我使用GetModuleHandle (L"COMCTL32.DLL")我无法控制解决的DLL.
GetProcAddress例如,当我调用到达时,TaskDialogIndirect我得到一个空指针,这当然是因为我找回了遗留DLL的句柄.
那么,是否有一些方法可以获取地址,比如TaskDialogIndirect何时加载两个DLL.
如果没有,我可以以某种方式确保该进程加载6.10版本而不是5.82,希望我们的旧版DLL能够在较新版本的情况下正常运行COMCTL32吗?
我想您必须使用GetProcAddress()而不是隐式链接,因为您希望您的应用程序在XP上运行,其中任务对话框不可用.
我可以为您看到三个选项:
LoadLibrary().打电话LoadLibrary()而不是GetModuleHandle()确保你获得明显的魔力.激活上下文方法是最干净的解决方案,但激活上下文API可能很难进入.我个人用它来确保Excel COM加载项链接到comctl32 v6.
模块枚举方法很快实现,有点脏,但效果很好.
| 归档时间: |
|
| 查看次数: |
1527 次 |
| 最近记录: |