Ho cominciato creando una DialogBox e caricandola senza però mai mostrarla con CreateDialog.
Il problema è che non arrivano i messaggi desiderati. Ne arriva soltanto 1 dalla mia icona (ma non è quello che mi serve).

codice:
INT_PTR CALLBACK DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	if (uMsg == WM_USER + 1100) // solo una volta supera questo test. eppure io premo sull'icona varie volte.
		if (lParam == WM_RBUTTONDOWN)
		{
			SetForegroundWindow(fakedialog);
			TrackPopupMenuEx(Menu,TPM_RIGHTALIGN,100,100,fakedialog,NULL);
		}
	return 0;
}

	Menu = LoadMenu(hInstance,MAKEINTRESOURCE(ID_MENU));
	fakedialog = CreateDialogParam(hInstance,MAKEINTRESOURCE(FAKE_DIALOG),GetDesktopWindow(),DialogProc,NULL);

// e poi al punto giusto

ref.hWnd = fakedialog; // ref è un NOTIFYICONDATA