我已经阅读了如何在单击外部时使通知弹出菜单消失,但是当我使用建议的代码时,右键单击会导致任务栏弹出菜单和我自己的一样出现。如何只显示我的菜单?这是我的代码:
SetForegroundWindow(Form1.Handle);
PopupMenu1.Popup(x, y);
PostMessage(Form1.Handle, WM_NULL, 0, 0);
编辑:好的,看来我确实需要做一些与我在下面评论的内容相关的事情。
trayhandle := FindWindow('Shell_TrayWnd', '');
trayhandle := FindWindowEx(trayhandle, 0, 'TrayNotifyWnd', nil);
trayhandle := FindWindowEx(trayhandle, 0, 'SysPager', nil);
trayhandle := FindWindowEx(trayhandle, 0, 'ToolbarWindow32', nil);
PostMessage(trayHandle, WM_LBUTTONDOWN, MK_LBUTTON, 0);
PostMessage(trayHandle, WM_LBUTTONUP, MK_LBUTTON, 0);
SetForegroundWindow(Handle);
PopupMenu1.Popup(x, y);
PostMessage(Handle, WM_NULL, 0, 0);
我已经完成了其他工作,并一直弹回到这个应用程序,并且菜单(并且只有我的菜单)正确显示并且也正确消失。现在似乎工作正常(除了触发鼠标左键)?