c++ 从Win32或C# API获取Windows安静时间

rxztt3cl  于 2023-03-09  发布在  C#
关注(0)|答案(3)|浏览(151)

Windows从Windows版本8开始引入了“安静时间”或“请勿打扰”功能。使用此功能,用户可以在任务栏通知区域的配置时间内禁用通知弹出窗口。
我试图获得当前的操作系统,安静的时间内C++或从C#应用程序,但还没有找到任何API或事件。
有人能帮我解决这个问题吗?

t40tm48m

t40tm48m1#

a recent major update to Windows 10以来,“安静时间”已更改为“对焦辅助”-它的工作方式似乎有所不同,因此以前的答案不再适用。
到目前为止,我能找到的唯一解决方案是the one offered here

wgx48brx

wgx48brx2#

有一个名为“NOC_GLOBAL_SETTINGS_TOASTS_ENABLED”的注册表值在静默时间期间设置为0。以下是用于确定用户当前是否已启用静默时间的工作代码:

public static bool IsQuietHours()
{
    string path = "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Notifications\\Settings";
    string key = "NOC_GLOBAL_SETTING_TOASTS_ENABLED";
    int? toastsEnabled = (int?)Microsoft.Win32.Registry.GetValue(path, key, 1);
    return (toastsEnabled == 0);
}
8ftvxx2r

8ftvxx2r3#

在我看来,来自@PhilWilliams的原始答案是正确的,尽管它是仅链接的答案:
您可以使用SHQueryUserNotificationState() function查询状态。另请参阅QUERY_USER_NOTIFICATION_STATE enumeration了解可能的值。

相关问题