Windows 10任务栏后面的托盘菜单

6

我有一个带系统托盘图标的应用程序。
当您右键单击托盘图标时,它会显示一个菜单,用户可以选择一个动作。
我发现如果我有一个全屏应用程序正在运行,然后使用alt + esc到达托盘图标。然后当我右键单击图标时,菜单将出现在(下面)Windows任务栏后面。
在某些情况下,菜单太低了,无法选择上下文菜单中的最低菜单项。
当不是全屏应用程序在前面时,菜单会正确地显示在任务栏顶部。我还在Windows 7上测试过,使用全屏应用程序效果很好。
我已经尝试过不同的全屏应用程序,如Internet Explorer、Notepad++,但是发生了同样的事情。
我还可以看到有很多其他应用程序,例如“Skype for business”和“Radeon Settings”,也会出现这种情况。
Skype商务版菜单在任务栏后面: enter image description here

对于内置的Windows 10应用程序,这个效果更好。
系统托盘的Windows时间和语言部分将在新的Windows 10布局(黑色)上方显示菜单
Windows声音和网络图标将隐藏任务栏,同时显示常规的右键单击菜单,但保持开始菜单打开。(不过这看起来有点奇怪)

我已经尝试了Windows SDK中的NotificationIcon示例,但也没有正确工作。

所以问题是,在Windows 10上编程显示托盘上下文菜单的正确方法是什么?
我的代码看起来像这样。
case WM_RBUTTONDOWN:
{
    SetForegroundWindow();
    CMenu menu;
    menu.LoadMenu(ID_TRAY_MENU_SHOW_APP);
    CMenu* pPopup = menu.GetSubMenu ( 0 ) ;
    GetCursorPos ( &pt ) ;
    pPopup->TrackPopupMenu ( TPM_LEFTALIGN | TPM_RIGHTBUTTON,pt.x, pt.y, this );
}

谢谢你的帮助


我遇到了类似的问题。你已经想出如何解决这个问题了吗?谢谢。 - baldpate
我还没有找到任何解决方案。我也在 MSDN 论坛上发帖了。https://social.msdn.microsoft.com/Forums/en-US/b5b451cd-f908-4d99-8ddf-0bc4ef35c99b/windows-10-tray-menu-behind-taskbar?forum=windowscompatibility 但是我得到的回复没有帮助。最后,我还在 MS 反馈中心提交了反馈。 - Kennet
@Kennet 嘿。你解决这个问题有什么新进展吗? - semanser
嘿。没有,我没有解决它。 - Kennet
4年前的漏洞,至今仍未修复。 每次使用3D加速(如游戏或特定建模软件)并启用150%及以上字体缩放时,都会发生这种情况。这是设计工作站和连接到4K电视和显示器的PC的典型场景。 最近,由于更多系统使用3D、4K和字体缩放,这变得非常烦人。 我不知道除了注销/登录或简单地重新启动之外,有没有其他方法来解决这个问题。 - Asdf
3个回答

1

我注意到许多应用程序都存在一个Windows 10的bug。似乎微软没有正确定义任务栏。已经过去将近两年了,还没有修复...也许再过几年吧。


在Windows 11中仍然发生。 - undefined

0

我同意,我有点过于简洁了。编辑后采纳了您的建议。 - Ploxl

0

我可以确认,这似乎是一个Windows的bug,在我的Windows 10实例上随机发生。它似乎会在从睡眠中唤醒Windows后发生,当我从一个停靠站上插拔笔记本电脑时,使用了不同的监视器设置。但很难说这是否是原因。

如果发生了这种情况,我运行以下内容的批处理脚本:

taskkill /F /IM explorer.exe
# Wait a few seconds
ping -n 3 127.0.0.1 > NUL 2>&1
start explorer.exe

这将重新启动Windows资源管理器,使所有托盘菜单再次出现在任务栏前面。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接