我正在开发基于插件的体系结构的程序。所有的插件都是DLL,其中一些可以依赖于其他插件DLL。我希望能够执行以下操作:如何查看我的程序是否已经加载了某个DLL?
- 在程序启动时,扫描插件文件夹。
- 对于找到的每个插件,检查该插件是否已经加载。 (它可能是,如果一个以前加载的插件导致它被加载为依赖)。
- 如果没有,请加载它。
第一和第三步是微不足道的,但我该怎么做第二步?是否有一个winapi调用,给定一个DLL的文件名,会告诉我该DLL当前是否加载到当前进程中? (或者可能需要一个文件名和一个进程句柄?)
请不要回答“只是加载它”。我知道这会起作用。我试图避免这种情况。
执行listdlls.exe并解析结果;) – Qiau 2012-08-13 17:31:01
@Qiau:我宁愿不必依靠外部实用程序,特别是最终用户可能不会(也可能不会)他的系统。 – 2012-08-13 17:32:14
http://stackoverflow.com/questions/1553603/how-to-know-if-a-given-dll-is-loaded-by-a-given-process 或 http://stackoverflow.com/questions/450039 /如何以编程方式获取DLL的依赖关系 可能会回答你的问题? – Qiau 2012-08-13 17:33:47