gpt4 book ai didi

delphi - 我可以重新获得正在运行的应用程序丢失的系统托盘图标吗?

转载 作者:行者123 更新时间:2023-12-03 15:06:34 24 4
gpt4 key购买 nike

既然我终于得到了这个问题的答案:Can you send a signal to windows explorer to make it refresh the systray icons ,询问如何摆脱无效的系统托盘图标,我想提出相反的要求。

有没有办法“插入”应用程序以重新显示丢失的系统托盘图标?

自从我安装 Avira AV 后,我的 Apache 监视器就发生了这种情况。
好吧,当然,这可能只是一个副作用,但是杀死正在运行的应用程序然后重新启动它是非常烦人的,只是因为它没有正确显示系统托盘图标。

提前致谢,
格斯

最佳答案

恢复任务栏图标是由应用程序本身(而不是资源管理器)实现的。有一个名为“TaskbarCreated”的窗口消息(其值可以通过 RegisterWindowMessage("TaskbarCreated") 获取),应用程序需要响应该消息,以便在必要时恢复任务栏图标。

例如,应用程序可以执行以下操作:

const int uTaskbarCreatedMsg = RegisterWindowMessage("TaskbarCreated");

然后在它的WndProc函数中:

LRESULT CALLBACK WndProc(HWND w, UINT msg, WPARAM wparam, LPARAM lparam)
{
// ... handle other messages
if (msg == uTaskbarCreatedMsg) {
NOTIFYICONDATA nid;
// fill in details to create icon
Shell_NotifyIcon(NIM_ADD, &nid);
return 0;
}
// ... default message handling
}

因此,为了强制应用程序恢复其任务栏图标,您需要将相同的 TaskbarCreated 消息发送到应用程序内的相应窗口。将 HWND 获取到窗口的一种方法是使用 FindMessage(由于 Apache Monitor 是开源的,因此很容易发现要查找的窗口)。

关于delphi - 我可以重新获得正在运行的应用程序丢失的系统托盘图标吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1114887/

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