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