我有窗口的进程名称和句柄(HWND)。
我现在想获得相对图标(如果有的话)。
通过MSDN搜索,我发现ExtractIcon()
从给定的exe名称获取图标的句柄,GetIconInfo()
从HICON
获取图标的“信息”。
我不知道这是否是正确的方法,以及如何检索正确的信息以显示(在第二时刻)没有图标句柄的图标。
我必须发送此信息信息到另一个必须显示图标的进程(通过套接字)。
在ICONINFO
结构中,有HBITMAP
个字段包含位图(黑色和白色以及颜色) )。它有用吗?
答案 0 :(得分:0)
您可以使用API GetClassLong来检索与您的程序关联的图标,然后使用SendMessage API传递您要更改其图标的窗口的hwnd。
在本例中,我从应用程序中提取了图标,然后将其设置为Calculator。我的Windows计算器已打开,然后向其发送图标:
case WM_LBUTTONDOWN: // just for explanation so left clicking in your client area and see the result
{
HICON icon = (HICON)GetClassLong(hWnd, GCL_HICON);
HWND hCons = FindWindow(NULL, "Calculator"); // I already opened windows calculator. you can use any other window but be sure to get its valid Handle
if(!hCons)
MessageBox(0, "\"Calculator\" windows is not found!", 0, MB_OK|MB_ICONHAND);
SendMessage(hCons, WM_SETICON, (WPARAM)ICON_BIG, (LPARAM)icon); // setting the icon
}
break;