Get window icon async

This commit is contained in:
Jaex 2022-06-13 18:21:08 +03:00
parent 16c1965856
commit 3cdf839f01
2 changed files with 5 additions and 4 deletions

View file

@ -147,7 +147,9 @@ public static IntPtr SetWindowLong(IntPtr hWnd, int nIndex, IntPtr dwNewLong)
private static Icon GetSmallApplicationIcon(IntPtr handle)
{
SendMessageTimeout(handle, (int)WindowsMessages.GETICON, NativeConstants.ICON_SMALL2, 0, SendMessageTimeoutFlags.SMTO_ABORTIFHUNG, 1000, out IntPtr iconHandle);
IntPtr iconHandle;
SendMessageTimeout(handle, (int)WindowsMessages.GETICON, NativeConstants.ICON_SMALL2, 0, SendMessageTimeoutFlags.SMTO_ABORTIFHUNG, 1000, out iconHandle);
if (iconHandle == IntPtr.Zero)
{

View file

@ -1197,16 +1197,15 @@ private async Task PrepareCaptureMenuAsync(ToolStripMenuItem tsmiWindow, EventHa
ToolStripMenuItem tsmi = new ToolStripMenuItem(title);
tsmi.Tag = window;
tsmi.Click += handlerWindow;
items.Add(tsmi);
using (Icon icon = window.Icon)
using (Icon icon = await Task.Run(() => window.Icon))
{
if (icon != null && icon.Width > 0 && icon.Height > 0)
{
tsmi.Image = icon.ToBitmap();
}
}
items.Add(tsmi);
}
catch (Exception e)
{