gpt4 book ai didi

winapi - 是否有 Win32 API 来监视、定位和定位 Taskbar "Notification Area"?

转载 作者:行者123 更新时间:2023-12-03 17:27:06 26 4
gpt4 key购买 nike

Windows 任务栏包含一个称为“通知区域”或“系统托盘”的区域,其中为想要在后台运行和/或显示系统通知的应用程序显示小图标。当任务栏位于屏幕底部或顶部时,此区域出现在右侧。

在多显示器设置中,即使任务栏设置为在所有显示器上显示,此“通知区域”也只会出现在其中一个任务栏上。您可以通过将任务栏拖动到您喜欢的任何显示来控制通知区域出现在哪个显示上。

我的问题是:

有没有什么直接的 API 可以找到任务栏“通知区域”的屏幕、位置和方向?

我找到了一个例子,其中 searches for the Shell_TrayWnd window handle ,然后对其位置进行数学运算,尝试找出它所处的方向(即任务栏位于屏幕的哪个边缘)。

但是,这非常脆弱,因为它取决于 Windows 任务栏的当前 UI 设计。

Windows 10 引入了新的 common toast notification system ,包括一个时髦的通知弹出窗口。但是,即使您已将通知区域移动到不同的监视器,包括打开和关闭系统通知弹出窗口的按钮,flyout itself is still displayed on the "primary monitor" .

以上表明可能没有办法做到这一点,好像微软自己的通知没有遵循通知区域,实际上可能没有办法这样做。但是,微软 documentation of the notification area表明 toast 应该在它附近显示的非常明智的想法......我认为他们只是没有考虑多显示器情况。

microsoft toast location guideline

最佳答案

如果您想显示某个窗口作为对托盘图标操作的响应,则无需手动搜索托盘位置,因为相应的托盘消息将包含光标坐标作为 wparam。即使事件是由键盘生成的,消息也会包含图标左上角坐标。见 NOTIFYICONDATA structure documentation

关于winapi - 是否有 Win32 API 来监视、定位和定位 Taskbar "Notification Area"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47589745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com