SHNotificationGetData (Windows CE 5.0)

Send Feedback

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 Values

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.

Windows Mobile Remarks

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 notificaion (PocketPC only)
    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);
    SHNotificationGetData(&CLSID_SHNAPI_Test, 1, &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

Pocket PC: Pocket PC 2002 and later
OS Versions: Windows CE 3.0 and later
Header: aygshell.h
Library: aygshell.lib

Send Feedback on this topic to the authors

Feedback FAQs

© 2006 Microsoft Corporation. All rights reserved.