c++ - 检查是否启用了 DWM/Aero,并让该代码存在于 2000/XP/Vista/7 的相同二进制文件中

标签 c++ aero dwm

我知道这个标题没什么意义,主要是因为很难用一行来解释。所以情况是这样的:

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

我的问题是:我是否有可能以某种方式设法实现这一目标?一个适用于所有操作系统版本的二进制文件并包含该 DWM 检查代码?本程序是在Visual Studio 2008、Visual C++下使用MFC编写的。

最佳答案

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

我要感谢 ewanm89,因为他说的话引起了我的共鸣,并引导我找到了真正的答案。

关于c++ - 检查是否启用了 DWM/Aero,并让该代码存在于 2000/XP/Vista/7 的相同二进制文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1317295/

相关文章:

c++ - 有什么方法可以为函数指针模板参数(或某些等效参数)创建静态 const 变量?

c# - WPF 玻璃窗口没有边框,也没有调整大小失焦

c# - 尽管有 WS_EX_COMPOSITED 标志和 DoubleBuffered 属性,但在调整大小后闪烁

c++ - 在 VST 中发送和接收 UDP

c++ - cin.getline() 没有将\0 添加到数组 C++ 的末尾

玻璃上的 Delphi 按钮 - 外观最佳的第三方按钮组件

linux - 如何在 Arch Linux 中安装 dwm

windows - 有没有办法改变所有滚动条的样式(Win10)?

c++ - OpenGL 闪烁/损坏,窗口调整大小和 DWM 处于事件状态

c++ - a+b 和 operator+(a,b) 的区别