簡體   English   中英

從Win32或C#API獲取Windows安靜時間

[英]Get windows Quiet hours from Win32 or C# API

Windows從Windows版本8開始引入了“安靜時間”或“請勿打擾”功能。 使用此功能,可以從任務欄通知區域禁用通知彈出窗口的配置時間。

我試圖獲得當前的操作系統,在C ++或C#應用程序中的安靜時間,但沒有找到任何API或事件。

有人可以幫忙解決我的問題嗎?

自從最近對Windows 10進行重大更新以來,“安靜時間”已經改為“焦點輔助” - 它似乎工作方式不同,所以以前的答案不再適用。

到目前為止,我能找到的唯一解決方案就是這里提供的解決方案。

在安靜時間內,注冊表值設置為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()函數查詢狀態。 另請參見QUERY_USER_NOTIFICATION_STATE枚舉以獲取可能的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM