检查是否启用了DWM/Aero,并让该代码在2000/XP/Vista/7中以相同的二进制文件居住。

我知道标题没什么意义,主要是因为很难用一行来解释。所以这里的情况:检查是否启用了DWM/Aero,并让该代码在2000/XP/Vista/7中以相同的二进制文件居住。

我有一个程序谁是二进制是针对Windows 2000和更新的。现在,我继续添加一些代码来检查用户是否在Vista/7下运行,如果是,请检查Aero/DWM是否已启用。基于此,我将禁用一些与特定平台无关的东西,并启用其他一些功能。我的主要问题是,为了从Visual C++ 2008中调用DwmIsCompositionEnabled,我必须添加dwmapi.lib文件并对其进行编译。在Vista或7以外的任何地方运行二进制文件会导致“无法找到组件,应用程序无法启动,因为找不到dwmapi.dll”错误。这当然预计会发生,因为DWM是新的,不适用于较老的平台。

我的问题是:是否有可能以某种方式设法解决这个问题?一个适用于所有操作系统版本的二进制文件,并包含DWM校验码此程序是使用MFC在Visual Studio 2008,Visual C++下编写的。

回答:

原来我可以告诉链接器延迟加载dwmapi.dll。

我想感谢ewanm89,因为他说的话引起了我的共鸣,并让我找到了实际答案。

回答:

正常的解决方案是使用LoadLibrary()和GetProcAddress()。两者都可以在程序启动后完成。但DelayLoad解决方案仍为+1,这对您在幕后也是如此。

以上是 检查是否启用了DWM/Aero,并让该代码在2000/XP/Vista/7中以相同的二进制文件居住。 的全部内容, 来源链接: utcz.com/qa/260349.html

回到顶部