SHNotificationGetData

A version of this page is also available for

Windows Embedded CE 6.0 R3

4/8/2010

This function gets the data for a notification. It is available for querying back the data to another application.

Syntax

LRESULT SHNotificationGetData(
  const CLSID * pclsid,
  DWORD dwID,
  SHNOTIFICATIONDATA* pndBuffer
);

Parameters

  • pclsid
    [in] Pointer to the class ID of the notification.
  • dwID
    [in] Specifies the unique identifier for the notification.
  • pndBuffer
    [out] Pointer to an SHNOTIFICATIONDATA buffer to receive the notification data.

Return Value

This function returns ERROR_SUCCESS when successful.

Remarks

Upon successful return from this function, pndBuffer->pszHTML and pndBuffer->pszTitle are owned by and must be freed by the caller.

SHNotificationGetData cannot be used for notifications without a CLSID. ERROR_INVALID_PARAMETER is returned when a NULL CLSID is given. To create a classless notification, use a CLSID of {0000-0000-...-00000000}.

SHNotificationGetData (&CLSID_x, dwID, NULL) doesn't return whether a particular notification is present or not. The return value is 0x491.

Code Example

The following code example demonstrates how to use SHNotificationGetData.

Note

To make the following code example easier to read, security checking and error handling are not included. This code example should not be used in a release configuration unless it has been modified to include them.

static const GUID CLSID_SHNAPI_Test = { 0x33765136, 0x8cb9, 0x449a, { 0xb0, 0x20, 0x43, 0xed, 0x40, 0xa, 0xb8, 0xfc } };
void SHNotificationExample()
{
    // This code will add an SHNotification notification 
    SHNOTIFICATIONDATA sn  = {0};
    SHNOTIFICATIONDATA sn2 = {0};
    sn.cbStruct = sizeof(sn);
    sn.dwID = 1;
    sn.npPriority = SHNP_INFORM;
    sn.csDuration = 15;
    sn.hicon = LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_SAMPLEICON));
    sn.clsid = CLSID_SHNAPI_Test;
    sn.grfFlags = 0;
    sn.pszTitle = TEXT("Sample Notification");
    sn.pszHTML = TEXT("<html><body>This is <b>sample html</b> in a notification!</body></html>");
    sn.rgskn[0].pszTitle = TEXT("Dismiss");
    sn.rgskn[0].skc.wpCmd = 100;
    //Add the notification to the tray
    SHNotificationAdd(&sn);
    //Put the data from an existing notification into a second SHNOTIFICATIONDATA struct
    sn2.cbStruct = sizeof(sn2);

    //Update the title, HTML, icon, and softkeys of the notification
    sn2.pszTitle = TEXT("Updated - Sample Notification");
    sn2.pszHTML = TEXT("<html><body>This notification has been <b>updated!</b></body></html>");
    sn2.hicon = LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_SAMPLEICON2));
    sn2.rgskn[0].pszTitle = TEXT("Disabled");
    sn2.rgskn[0].skc.wpCmd = 100;
    sn2.rgskn[0].skc.grfFlags = NOTIF_SOFTKEY_FLAGS_DISABLED;
    SHNotificationUpdate(SHNUM_TITLE | SHNUM_HTML | SHNUM_ICON | SHNUM_SOFTKEYCMDS | SHNUM_SOFTKEYS, &sn2);
    //Remove the notification from the tray
    SHNotificationRemove(&CLSID_SHNAPI_Test, 1);
    //Add a new notification that utilizes the MRE functionality
    sn.cbStruct = sizeof(sn);
    sn.dwID = 1;
    sn.npPriority = SHNP_INFORM;
    sn.csDuration = 15;
    sn.hicon = LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_SAMPLEICON));
    sn.clsid = CLSID_SHNAPI_Test;
    sn.grfFlags = SHNF_STRAIGHTTOTRAY;
    sn.pszTodaySK = TEXT("New Task");
    sn.pszTodayExec = TEXT("\\windows\\tasks.exe");
    //Add the notification to the tray
    SHNotificationAdd(&sn);
    //Remove the notification from the tray
    SHNotificationRemove(&CLSID_SHNAPI_Test, 1);
}

Requirements

Header aygshell.h
Library aygshell.lib
Windows Embedded CE Windows CE 3.0 and later
Windows Mobile Pocket PC 2002 and later