【问题标题】:Mute Windows 10 Notification using C# or WPF使用 C# 或 WPF 静音 Windows 10 通知
【发布时间】:2019-11-27 02:47:08
【问题描述】:

我目前正在研究如何使 Windows 10 通知静音,但我还没有找到任何具体的解决方案。

我想要做的是在我按下按钮或选中复选框时禁用所有通知。 它与您在通知设置上所做的类似,但我希望它在我的应用程序上以编程方式进行。

我目前正在阅读微软关于通知监听器的文档。 https://docs.microsoft.com/en-us/windows/uwp/design/shell/tiles-and-notifications/notification-listener

【问题讨论】:

  • 首先尝试自己做一些事情,然后在此处发布您的问题,并附上代码和错误。

标签: c# wpf windows winapi


【解决方案1】:

NotificationListener 允许您访问通知,但不能访问系统的配置。你一定认为它是一个 UWP Api ...... 你想做一些在 UWP Api(不可能)或 WPF(可能,祝你好运)中做不到的事情。

您无法更改 UWP 应用程序框内的系统设置 - 安全和事物-。方法是“打开您希望用户进行更改的配置应用程序”。

如果您不想在 WPF/.net 中进行此操作,则必须认真使用 PInvoke 和 WinApi。这意味着考虑权限以管理员身份运行、在 WinApi .h 文件中查找函数等等...

保持简单,在 UWP 中,不;在 WPF 中,您必须阅读大量 Windows .h 文件的源代码/文档,制作 c# 版本的结构等...

这里真正的问题是……有必要吗? Windows 通过两次点击(角落、Focus Assist)提供 Focus Assist

【讨论】:

  • Windows 运行时使用符合 ECMA-335 的元数据公开其服务。从 C# 访问 Windows 运行时服务不需要您下拉到 P/Invoke 或类似的互操作方案。
  • @IInspectable 我不确定这是否允许编辑系统配置。我不知道那种方式,对不起。但我确定 uwp apis 不允许这样做。抱歉,我正在打电话
  • Windows 运行时不等同于 UWP。 Windows 运行时是 Windows 公开其 API 的基础结构。您可以从经典的 Win32 应用程序访问几乎整个 Windows 运行时 API 图面。
  • @IInspectable 是的,我知道 UWP 不是你在说的,我只是在指点。你能给一些文档的链接吗?我很有兴趣了解这一点。这一切对我来说都是新事物。
  • 是否有一种 UI 自动化方法,只需点击两次?之所以有必要,是因为您可能会忘记在重要会议之前进行两次点击 - 因此是自动化的用例。
【解决方案2】:

非常感谢您的反馈!我做了一些修补,发现了负责通知的服务。我不太确定这是最好的方法,但它对我有用。

我所做的是使用 C# 停止服务。这是我的示例代码:

  ServiceController[] services = ServiceController.GetServices();

        foreach (ServiceController service in services)
        {
            if (service.ServiceName.Contains(serviceName))
            {
                service.Start();

            }


        }

这是负责通知的服务: Notification Service

我不知道这是否是一个好的做法,所以我仍然愿意接受反馈和建议。

谢谢!

【讨论】:

  • 如果您确实可以使用,请随时自行标记以突出显示它。如果您有更好的解决方案,您仍然可以重新接受它。
猜你喜欢
  • 2016-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-14
  • 1970-01-01
  • 2019-03-10
  • 2017-12-18
  • 1970-01-01
相关资源
最近更新 更多