1

我已经阅读了如何在单击外部时使通知弹出菜单消失,但是当我使用建议的代码时,右键单击会导致任务栏弹出菜单和我自己的一样出现。如何只显示我的菜单?这是我的代码:

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);

我已经完成了其他工作,并一直弹回到这个应用程序,并且菜单(并且只有我的菜单)正确显示并且也正确消失。现在似乎工作正常(除了触发鼠标左键)?

4

0 回答 0