shqueryusernotificationstate (shell32)
Last changed: -89.88.236.149

.
Summary

C# Signature:

[DllImport("shell32.dll")]
static extern int SHQueryUserNotificationState(
     out QUERY_USER_NOTIFICATION_STATE pquns);

VB Signature:

Declare Function SHQueryUserNotificationState Lib "shell32.dll" (TODO) As int

User-Defined Types:

enum QUERY_USER_NOTIFICATION_STATE
{
     QUNS_NOT_PRESENT = 1,
     QUNS_BUSY = 2,
     QUNS_RUNNING_D3D_FULL_SCREEN = 3,
     QUNS_PRESENTATION_MODE = 4,
     QUNS_ACCEPTS_NOTIFICATIONS = 5,
     QUNS_QUIET_TIME = 6
};

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

Doesn’t work anymore since Windows 10 Build 17083. Use NtQueryWnfStateData instead.

Tips & Tricks:

Please add some!

Sample Code:

void Main()
{
    Console.WriteLine("user notification state: {0}", QueryUserNotificationState.State());    
}

// Define other methods and classes here
class QueryUserNotificationState
{
    public enum UserNotificationState
    {
        /// <summary>
        /// A screen saver is displayed, the machine is locked,
        /// or a nonactive Fast User Switching session is in progress.
        /// </summary>
        NotPresent = 1,

        /// <summary>
        /// A full-screen application is running or Presentation Settings are applied.
        /// Presentation Settings allow a user to put their machine into a state fit
        /// for an uninterrupted presentation, such as a set of PowerPoint slides, with a single click.
        /// </summary>
        Busy = 2,

        /// <summary>
        /// A full-screen (exclusive mode) Direct3D application is running.
        /// </summary>
        RunningDirect3dFullScreen = 3,

        /// <summary>
        /// The user has activated Windows presentation settings to block notifications and pop-up messages.
        /// </summary>
        PresentationMode = 4,

        /// <summary>
        /// None of the other states are found, notifications can be freely sent.
        /// </summary>
        AcceptsNotifications = 5,

        /// <summary>
        /// Introduced in Windows 7. The current user is in "quiet time", which is the first hour after
        /// a new user logs into his or her account for the first time. During this time, most notifications
        /// should not be sent or shown. This lets a user become accustomed to a new computer system
        /// without those distractions.
        /// Quiet time also occurs for each user after an operating system upgrade or clean installation.
        /// </summary>
        QuietTime = 6
    };

    [DllImport("shell32.dll")]
    static extern int SHQueryUserNotificationState(out UserNotificationState userNotificationState);

    public static UserNotificationState State()
    {
        UserNotificationState state;
        var returnVal = SHQueryUserNotificationState(out state);

        return state;
    }
}

Documentation