Не судьба справку по TrackPopupMenu() прочитать? И ремарк к ней.
Там английским по белому написано: "To display a context menu for a notification icon, the current window must be the foreground window before the application calls TrackPopupMenu or TrackPopupMenuEx".
А вот пример из этой самой стправки:
SetForegroundWindow(hDlg); // <-- тут
TrackPopupMenu(hMenu, TPM_RIGHTBUTTON, pt.x, pt.y, 0, hDlg, NULL);
PostMessage(hDlg, WM_NULL, 0, 0);