重新启动explorer.exe时如何还原“丢失”的通知图标?

生锈的

我有一个Win32应用程序,它在启动时添加了任务栏图标。

它运行正常,除了当Explorer崩溃然后重新启动时,我的应用程序继续运行,但任务栏图标消失了。

我怀疑我应该处理一些事件,但是哪个呢?

戴维·赫弗南

实际上,您所指的是通知图标。正确使用此术语很重要,这样我们才能知道您的意思。无论如何,我认为我的猜测是正确的。

创建任务栏时,您需要侦听广播到所有顶级窗口的窗口消息。证明,像这样:

在Microsoft Internet Explorer 4.0及更高版本中,命令行管理程序会通知应用程序已创建任务栏。创建任务栏时,它将使用TaskbarCreated字符串注册一条消息,然后将该消息广播到所有顶级窗口。当您的任务栏应用程序收到此消息时,它应假定已删除它添加的所有任务栏图标,然后再次添加它们。此功能通常仅适用于Shell启动时已经在运行的服务。下面的示例显示了一种非常简化的方法来处理这种情况。

LRESULT CALLBACK WndProc(HWND hWnd, 
                         UINT uMessage, 
                         WPARAM wParam, 
                         LPARAM lParam)
{
    static UINT s_uTaskbarRestart;

    switch(uMessage)
    {
        case WM_CREATE:
            s_uTaskbarRestart = RegisterWindowMessage(TEXT("TaskbarCreated"));
            break;

        default:
            if(uMessage == s_uTaskbarRestart)
                AddTaskbarIcons();
            break;
    }

    return DefWindowProc(hWnd, uMessage, wParam, lParam);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章