【发布时间】:2015-11-07 04:30:50
【问题描述】:
我目前在 C# Windows 应用程序中使用 WM_GETICON 消息来获取与 hWnd 关联的图标,但它不会让我获得 ApplicationFrameHost(Windows 应用商店应用程序)进程的图标(这是有道理的,因为它隐藏了实际的应用程序)。
这是我目前使用的代码,适用于“普通”应用:
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);
public static IntPtr GetAppIcon(IntPtr hwnd)
{
var iconHandle = SendMessage(hwnd, WM_GETICON, ICON_BIG, 0);
if (iconHandle == IntPtr.Zero)
iconHandle = SendMessage(hwnd, WM_GETICON, ICON_SMALL, 0);
if (iconHandle == IntPtr.Zero)
iconHandle = SendMessage(hwnd, WM_GETICON, ICON_SMALL2, 0);
return iconHandle;
}
在这里获取ApplicationFrameHost.exe 图标对我没有帮助。似乎是这样一个图标,因为a)我可以在任务栏中看到它,并且b)我也可以在任务管理器中看到它。
我怎样才能得到这个图标?
【问题讨论】:
标签: c# windows process sendmessage user32