在 WPF 应用程序中禁用 Aero Peek

2023-12-02

我想在我的 WPF 应用程序中禁用 Aero Peek(当用户将鼠标放在“显示桌面”按钮上时,我的应用程序必须可见)。我使用这个 PInvoke 签名:

[Flags]
public enum DwmWindowAttribute : uint
{
    DWMWA_NCRENDERING_ENABLED = 1,
    DWMWA_NCRENDERING_POLICY,
    DWMWA_TRANSITIONS_FORCEDISABLED,
    DWMWA_ALLOW_NCPAINT,
    DWMWA_CAPTION_BUTTON_BOUNDS,
    DWMWA_NONCLIENT_RTL_LAYOUT,
    DWMWA_FORCE_ICONIC_REPRESENTATION,
    DWMWA_FLIP3D_POLICY,
    DWMWA_EXTENDED_FRAME_BOUNDS,
    DWMWA_HAS_ICONIC_BITMAP,
    DWMWA_DISALLOW_PEEK,
    DWMWA_EXCLUDED_FROM_PEEK,
    DWMWA_LAST
}

[Flags]
public enum DWMNCRenderingPolicy : uint
{
    UseWindowStyle,
    Disabled,
    Enabled,
    Last
}

[DllImport("dwmapi.dll", PreserveSig=false)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool DwmIsCompositionEnabled();

[DllImport("dwmapi.dll", PreserveSig=false)]
public static extern Int32 DwmSetWindowAttribute(IntPtr hwnd,
                                                 DwmWindowAttribute dwmAttribute,
                                                 IntPtr pvAttribute,
                                                 uint cbAttribute);

和这个用法:

    var helper = new WindowInteropHelper(this);
    helper.EnsureHandle();

    if (API.DwmIsCompositionEnabled())
    {
        var status = Marshal.AllocCoTaskMem(sizeof(uint));
        Marshal.Copy(new[] {(int) API.DWMNCRenderingPolicy.Enabled}, 0, status, 1);
        API.DwmSetWindowAttribute(helper.Handle,
                                  API.DwmWindowAttribute.DWMWA_EXCLUDED_FROM_PEEK,
                                  status,
                                  sizeof (uint));
    }

在我的 64 位系统(Windows 7 Professional)中,仅当我运行 64 位应用程序时它才有效。如果我在 WOW64 模式下运行 32 位应用程序,我会收到异常:

“对 PInvoke 函数“XXX::DwmSetWindowAttribute”的调用使堆栈不平衡。这可能是因为托管 PInvoke 签名与非托管目标签名不匹配。请检查 PInvoke 签名的调用约定和参数是否与目标非托管签名匹配。 ”

你怎么看待这件事?解决办法是什么?


我更改签名:

[DllImport("dwmapi.dll", PreserveSig = true)]
public static extern int DwmSetWindowAttribute(IntPtr hwnd,
                                               DwmWindowAttribute dwmAttribute,
                                               IntPtr pvAttribute,
                                               uint cbAttribute);

和用法:

if (API.DwmIsCompositionEnabled())
{
    var status = Marshal.AllocHGlobal(sizeof(int));
    Marshal.WriteInt32(status, 1); // true
    API.DwmSetWindowAttribute(helper.Handle,
                              API.DwmWindowAttribute.DWMWA_EXCLUDED_FROM_PEEK,
                              status,
                              sizeof(int));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 WPF 应用程序中禁用 Aero Peek 的相关文章

  • WPF ICommand CanExecute():RaiseCanExecuteChanged() 或通过 DispatchTimer 自动处理?

    我正在尝试确定使 ICommands 的 CanExecute 反映在 UI 中的最佳方法 据我了解 调度员是处理 UI 绘图的 WPF 引擎 默认情况下 调度程序在实例化以及活动用户界面 单击 UI 或键盘输入 时评估 ICommands
  • 有没有办法判断当前屏幕是否支持触摸? [复制]

    这个问题在这里已经有答案了 可能的重复 是否可以让我的 c wpf 程序知道用户是否有触摸屏 https stackoverflow com questions 5673556 is it possible to let my c shar
  • C# WPF 如何正确关闭新窗口?

    我有一个简单的问题 1 创建一个新的WPF项目 其中有启动窗口 MainWindow xaml 2 在此项目中 创建一个新窗口Window1 xaml 3 Windows1的已加载事件 让它关闭 4 放置一个Open按钮到MainWindo
  • WPF 网络浏览器在 Adob​​e 阅读器窗口中打开 PDF 文件

    我正在创建一个 32 位 WPF 应用程序 它需要在 WebBrowser 控件中显示创建的 PDF 在做的同时 WebBrowser Navigate new Url D TestPDF MyDocument pdf 它在 Adob e
  • tabControl/tabitem 刷新困难

    我有一个带有 maintabWindow 和几个 tabitem 的 WPF 窗口 它通常工作正常 布局是这样的 但是当我之前添加以下窗口时 结果是这样的 所以问题与 tabControl tabItem 刷新有关 这是相当明显的 但更重要
  • Prism RegionAdapter - 删除然后添加视图

    我有一个包含 AvalonDock 的 prism wpf mef 解决方案 我创建了一个RegionAdapterBase
  • WPF - 在样式中使用 ControlTemplate 资源

    创建样式时 是否可以将 ControlTemplate 属性设置为先前定义的资源 例如 如果我在 ResourceDictionary 中有以下内容
  • 使用MVVM Light的Messenger在视图模型之间传递值

    有人可以帮我解释一下 MVVM Light 的 Messenger 吗 我正在阅读 StackOverflow 上的一篇文章 MVVM 在视图模型之间传递值 https stackoverflow com questions 6392854
  • 拖动用户控件,但将其保留在 WPF 中其父级的边界内

    我有一个用户控件 正在将其拖动到网格内 Z Index 设置得相当高 这样我就可以将其保持在其他孩子之上 拖动控件效果很好 但如果用户想要将控件移到网格之外 它会允许这样做 How do I keep it from leaving the
  • 如何循环访问 WPF StackPanel 静态项目?

    可能很容易 但我很难弄清楚这一点 谷歌似乎也没有多大帮助 如何循环遍历 StackPanel 的静态声明元素 无数据绑定 元素在 xaml 中声明 任何帮助表示赞赏 你的意思是StackPanel的孩子们 foreach var child
  • WPF;单击 ListView 中的空白区域时如何取消选择所有选定的项目

    当我有几个 甚至一个 selected items我按简单click在我的空白处ListView 空白 非行 我想取消选择所有选定的项目 这是我取消选择所有项目的功能 private void DeselectAllListViewItem
  • TargetType="controlType" 和 TargetType="{x:Type controlType}" 之间的区别

    在 WPF 中 您可以设置TargetType类型的名称 或者您可以将其设置为 x Type nameOfType 有谁知道有什么区别 没有什么 由于属性类型是Type XAML 解析器知道尝试将您提供的任何内容转换为Type 在其他情况下
  • MultiDataTrigger 使用 OR 而不是 AND

    我正在尝试设置多个DataTriggers on my Button 我做了一些研究发现MultiDataTrigger允许您执行此操作 我想要Visibility我的财产Button如果设置为 falseCCTVPath string E
  • 将 .NET P/Invoke 代码组织为 Win32 API 的最佳实践

    我正在 NET 中重构一个大型且复杂的代码库 该代码库大量使用 P Invoke to Win32 API 该项目的结构不是最好的 我发现 DllImport 语句遍布各处 经常为同一函数重复 并且还以多种方式声明 导入指令和方法有时声明为
  • WPF DataGrid 绑定 DataGridCell 内容

    希望这将是一个非常简单的答案 我认为我只是没有看到众所周知的树木 我有一个 DataGridCell 样式 我想将单元格的内容绑定到图像的源属性 这是我目前使用的 XAML
  • WPF 元素宿主内存泄漏

    我在 Windows 窗体上使用元素主机时遇到奇怪的内存泄漏 我有一个主窗体 它打开另一个窗体 该窗体上只有 elementhost 控件 此时 它没有 wpf 控件子控件 只能打开 1 个主机表单 每次我打开窗体时 应用程序内存都会增加2
  • 将 WPF 快捷键绑定到 ViewModel 中的命令

    我有一个使用 MVVM 模式的 WPF 应用程序 将按钮连接到 VM 非常简单 因为它们实现了 ICommand 我有一个工作原理类似的上下文菜单 下一步是为上下文菜单创建快捷键 我不知道如何让快捷键调用命令 这是一个例子
  • 获取代码中的绑定结果

    我可能正在以错误的方式寻找这个 但是 有没有办法通过代码获取绑定的结果值 可能是一些显而易见的东西 但我就是找不到它 您只需致电ProvideValue的绑定方法 困难的部分是你需要通过有效的IServiceProvider到方法 编辑 实
  • 使用 INotifyPropertyChanged

    有人可以解释一下为什么在 wpf 中使用绑定时需要使用 INotifyPropertyChanged 的 实现吗 我可以在不实现此接口的情况下绑定属性吗 例如我有代码 public class StudentData INotifyProp
  • 更改鼠标悬停时的矩形背景

    所以我有一个没有背景的矩形 当用户将鼠标悬停在其上时 我想给它一个背景渐变 然后当鼠标离开矩形时删除渐变 请有人发布所需的代码 并告诉我将其放在 cs xaml 文件中的位置吗 Thanks This

随机推荐

  • 在一个语句中输出多个后置和前置增量[重复]

    这个问题在这里已经有答案了 我是 C 语言新手 所以请 sum1 帮助我 写的一段C代码 int i 3 printf d i i 编译器给出 O P 9 如何 结果未定义 您在表达式中多次修改变量 或者序列点更准确 在序列点之间多次修改变
  • EXC_BAD_INSTRUCTION 仅在 iPhone 5 模拟器中

    在 iPhone 5 模拟器上运行我的代码会引发如图所示的异常 在任何其他模拟器上运行代码就可以了 我无法在这行不起眼的代码中发现我在哪里犯了错误 还有其他人有这个问题吗 NSInteger 这是一个类型别名Int在 Swift 中 是 3
  • Android:NullPointerException 使用 SharedPreferences

    使用 SharedPreferences 此活动在启动时崩溃 首先我将发布活动代码 然后我将发布我的 LogCat 非常感谢你们 你们总是给予我们很大的帮助 活动代码 package com creativecoders gymbuddy
  • 在设置 {app} 之前获取 wpSelectDir 中的路径 Inno Setup

    当用户单击时 我想获取安装目录的路径Next 当我在wpSelectDirInno 设置 我需要检查路径 因为我需要验证路径 如果不正确 我不会让用户继续 我的问题是常数 app 尚未设置 因为它将在之后设置wpSelectDir我还在 U
  • 使用Python将日记文件拆分为多个文件

    我保留一份技术笔记的日记文件 每个条目都带有时间戳 如下所示 Monday 02012 05 07 at 01 45 20 PM This is a sample note Lorem ipsum dolor sit amet consec
  • 我可以在ironruby 中运行rubygems 吗?

    目前是否可以通过预发布的ironruby来运行rubygems 好像我必须设置一个环境变量才能找到它们 您已经能够在 IronRuby 下运行 ruby gems 有一段时间了 只需下载并安装最新的来自 codeplex 的 IronRub
  • CreateProcessAsUser 从服务和用户安全问题

    我有一个启动我的应用程序的 Windows 服务 该服务是一个调度程序 用于执行最终用户定义的一些自定义操作 它作为本地系统帐户运行 并将启动我的应用程序 有窗口 为此我使用函数登录用户 加载用户配置文件 创建进程为用户 这很完美但前提是用
  • 在 C 中查找未使用的枚举成员

    查找未使用的枚举成员的最快方法是什么 逐一注释掉值是行不通的 因为我有近 700 名成员 并且想删除一些未使用的成员 我不知道有任何编译器警告 但你可以尝试splint静态分析工具 根据其文档 强调我的 Splint 检测常量 函数 参数
  • 我可以获得特定词典的完整 i18n 标签吗

    我面临 i18n 标签的问题 我的应用程序使用 Granite I18n get 函数在 js 前端读取一些 i18n 标签 整个字典下载为 libs cq i18n dict locale json 如 etc clientlibs fo
  • .forEach 与 Object.keys().forEach 在稀疏数组上的性能

    如果我错了请告诉我 array forEach callbackFunction 适用于稀疏数组 它执行callbackFunction不是针对零和数组长度之间的每个索引 而是仅针对实际的键in数组 而且 如果我错了请告诉我 这些键正是Ob
  • 如何将 Excel 文件导入 SQL Server? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我的 Excel 文件中有数据 实际上XLSX格式 因为现在是 2020 年 我的要求是将此数据导入 SQL Server 如下所示 特别的 用例是向表提供测试数据 或少量数据的
  • 如果从 IE 安全选项禁用字体下载,font-awesome 在 IE 11 中不起作用

    我使用 Font awesome min css 在 IE 11 和 chrome 中运行良好 但我的客户要求是使用很棒的字体 即使我们禁用了从 IE Internet 选项下载字体 Internet options gt Security
  • 使用现有连接表的一对多关联

    我正在将使用 MariaDB 的现有应用程序的后端转换为使用 Sails v0 10 0 rc7 并且我一直在试图弄清楚如何在给定底层架构结构的情况下获取填充到角色模型中的角色的所有权限我必须与 目前有三个表用于获取角色及其关联的权限 工作
  • 使用 jQuery.get 时可以指定相对 URL 吗?

    我正在尝试像这样进行 ajax 调用 get home myInfo function data 我从以下页面调用它 http localhost myapp home index 当我尝试拨打上述电话时 它会转到 http localho
  • 触发 valueChanged 事件后从 JTable 中删除行

    我正在使用 ListSelectionListener 来更新我的JTextField countryTxt 来自所选行 import java awt BorderLayout import java awt event ActionEv
  • 解组 Parcelable 时出现问题

    我有一些实现的类可分包其中一些类作为属性相互包含 我正在将课程整理成Parcel在活动之间传递它们 将它们编组到包裹工作正常 但是当我尝试解组它们时 出现以下错误 AndroidRuntime E Caused by android os
  • Subversion 管理的项目的 xcopy ASP.NET 部署

    我目前正在使用 Subversion 来管理我的 ASP NET 网站 我发现每当我将网站上传到服务器时 我都会复制大量隐藏的 svn 文件夹以及其中可能包含的任何内容 有人有任何建议来避免这种情况吗 我并不特别想要生产服务器上的那些隐藏的
  • Java Keystore.getKey() 缓慢,同时密钥存储大小增加

    我正在使用 java 密钥存储来存储和检索加密密钥 当我的密钥存储大小很小时 它的工作速度更快 但是 一旦我的密钥存储大小增加 密钥存储操作就会变慢 我正在linux平台上工作 Java版本Jdk 1 8 和 safenet 作为提供商 我
  • 在 onPause、onStop 和 onDestroy 方法中调用超类方法的正确顺序是什么?为什么?

    我刚刚浏览了 Android 开发人员网站 刷新了 Activity 生命周期 在每个代码示例中 超类方法旁边都有一条注释 上面写着 始终首先调用超类方法 虽然这在创建半周期 onCreate onStart 和 onResume 中有意义
  • 在 WPF 应用程序中禁用 Aero Peek

    我想在我的 WPF 应用程序中禁用 Aero Peek 当用户将鼠标放在 显示桌面 按钮上时 我的应用程序必须可见 我使用这个 PInvoke 签名 Flags public enum DwmWindowAttribute uint DWM