No sé si lo que voy a decir aplica al menú que estás usando (AdvPopupMenu) aunque posiblmente sí, si se trata de un derivado del PopupMenu de Delphi.
Un popup menu se muestra usando la función TrackPopupMenu de la API de Windows. A esta función se le pasa como uno de sus parámetros, el identificador de la ventana que va a procesar los mensajes del menú. Este identificador no es lo mismo que el identificador del menú en sí (PopupMenu.Handle), por eso, el PostMessage que usas no sirve, porque no va dirigido al lugar correcto.
Ahora bien, la ventana que maneja los mensajes del menú, no es -en el caso de Delphi- el formulario donde está el menú, sino una ventana creada expresamente para esa tarea y cuyo identificador está guardado en PopupList.Window (PopupList es un objeto definido en la unidad Menus.pas).
En resumen, puedes hacer:
Código Delphi
[-]
PostMessage(Menus.PopupList.Window, WM_KEYDOWN, VK_DOWN, 0);
// Saludos