Windows从Windows版本8开始引入了“安静时间”或“请勿打扰”功能。使用此功能,可以从任务栏通知区域禁用通知弹出窗口的配置时间。
我正在尝试获取当前的操作系统,在C ++或C#应用程序中安静的时间,但没有找到任何API或事件。
有人可以帮忙解决我的问题吗?
答案 0 :(得分:3)
自a recent major update to Windows 10起,“安静时间”已更改为“焦点协助”-似乎工作方式有所不同,因此以前的答案不再适用。
到目前为止,我唯一可以找到的解决方案是the one offered here。
答案 1 :(得分:2)
在安静时间内,注册表值设置为0,名为" NOC_GLOBAL_SETTINGS_TOASTS_ENABLED"。以下是确定用户当前是否启用了安静时间的工作代码:
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);
}
答案 2 :(得分:1)
在我看来,来自@PhilWilliams的原始答案虽然只是链接答案,但却是正确的:
您可以使用SHQueryUserNotificationState()
function查询状态。另请参阅QUERY_USER_NOTIFICATION_STATE
enumeration了解可能的值。