如何在任务管理器中更改应用程序图标
How to change app icon in taskmanager
我有一些Windows应用程序可以使用win api函数更改他的图标
SendMessage(hwnd, WM_SETICON, ICON_BIG, icon_handle);
SendMessage(hwnd, WM_SETICON, ICON_SMALL, icon_handle);
Shell_NotifyIcon(...);
它会更改任务栏和托盘(任务栏通知区域)中的图标,但任务管理器中的图标仍未更改。如何在任务管理器中更改图标?可能吗?
从这个 SO 答案
更改所有图标(包括应用程序)非常重要,无论大小:
//Change both icons to the same icon handle.
SendMessage(hwnd, WM_SETICON, ICON_SMALL, hIcon);
SendMessage(hwnd, WM_SETICON, ICON_BIG, hIcon);
//This will ensure that the application icon gets changed too.
SendMessage(GetWindow(hwnd, GW_OWNER), WM_SETICON, ICON_SMALL, hIcon);
SendMessage(GetWindow(hwnd, GW_OWNER), WM_SETICON, ICON_BIG, hIcon);
编辑:
根据这个 SO 答案,图标需要是一个 .由图标编辑器创建的ICO文件;这篇SO文章还提到您需要将消息发送到应用程序的最顶部窗口。
我可以通过以下方式
切换任务栏、alt-tab 和任务管理器中的图标a) 使用 Visual Studio Resource Editor
创建图标b) 使用类似 HICON hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_ICON1));
的代码加载图标c) 将WM_SETICON, ICON_SMALL
发送到最顶层窗口 -- 我使用的是 MFC SDI 应用程序,因此我将消息发送到主帧窗口 ( AfxGetApp()->m_pMainWnd
)
注意:MSDN 文档中的注释WM_SETICON提及
系统不会复制图标。在销毁窗口之前不要破坏图标
这是一个通用的Windows错误。任务管理器和资源管理器会记住与文件关联的图标很长时间。如果您的图标在 exe 中的 ID 最低,它应该在任务管理器(根节点)中显示为应用程序图标。但是,如果您最近更改了它,它可能无法正常工作。窗口本身的图标是完全不同的东西 - 如果它没有显示,你的代码是错误的。
BOOL sendWndIconToTaskbar(HWND hWnd,HICON hIcon)
{
BOOL ret = TRUE;
ASSERT(hWnd);
if(!::IsWindow(hWnd))
return FALSE;
CWnd* pWnd;
pWnd = pWnd->FromHandle(hWnd);
ASSERT(pWnd);
if(!pWnd)
return FALSE;
if(pWnd->GetParent())
{
if(::SetWindowLong(hWnd,GWL_HWNDPARENT,NULL) == 0)
return FALSE;
}
if(!(pWnd->ModifyStyle(NULL,WS_OVERLAPPEDWINDOW)))
ret = FALSE;
pWnd->SetIcon(hIcon,TRUE);
pWnd->SetIcon(hIcon,FALSE);
return ret;
}
HICON hIconSm = (HICON)LoadImage(NULL, "default.ico", IMAGE_ICON, 32, 32, LR_LOADFROMFILE);
sendWndIconToTaskbar(pOcxDlg->m_hWnd,hIconSm);
相关文章:
- 如何为 C++ Visual Studio 2019 指定应用程序图标?
- 为什么从文件获取图标时应用程序有时会崩溃?
- 为没有qmake/VS的Qt Windows应用程序设置.exe图标
- 如何向控制台应用程序添加图标
- 获取应用程序图标时出现问题
- 隐藏自定义应用程序窗口,但应在任务栏上显示应用程序图标(不是作为托盘图标)
- 在任务管理器中修改应用程序图标,而不是在系统托盘中
- 如何在OS X上的Qt应用程序中设置应用程序图标,足以进行分发
- 在Qt Creator中设置OSX的应用程序图标
- 使用CMake设置应用程序图标
- 如何在任务管理器中更改应用程序图标
- 在 Linux 上的 Qt 中获取应用程序图标 URL
- 如何在Qt中设置应用程序图标
- 应用程序图标Visual Studio 2010 c++
- 没有找到为windows应用程序设置应用程序图标的问题.rc文件
- 如何以编程方式将应用程序图标固定在windows 8的地铁启动屏幕上
- Qt4应用程序图标没有出现在Windows任务栏上
- Qt 5.0.1 中未显示应用程序图标
- 在用户关闭bb10(z10)应用程序时,访问主屏幕上的应用程序图标需要很长时间
- Qt5.6设置应用程序图标(Linux)