如何通过在 C# 中调用 winapi 来更改窗口图标



我正在尝试使用 WinApiSendMessage()更改窗口图标,但没有成功。

知道这里出了什么问题吗?

public void OnAfterCreated(IWebBrowser chromiumWebBrowser, IBrowser browser)
{
if (!browser.IsDisposed && browser.IsPopup)
{
Application.Current.Dispatcher?.Invoke(new Action(() =>
{
IntPtr handle = browser.GetHost().GetWindowHandle();
string getFavIcon = chromiumWebBrowser.Address.Split('#')[0] + "assets/images/MyPic.png";
var image = new BitmapImage(new Uri(getFavIcon));
var bitMap = Utilities.BitmapImage2Bitmap(image);
//IntPtr imagePtr = image.ge
SendMessage(handle, WM_SETICON, 0, bitMap.GetHbitmap());
SendMessage(handle, WM_SETICON, 1, bitMap.GetHbitmap());
})
);
}
}

最后我得到了它的工作,我得到了黑色图标,因为图像尚未下载。 以下代码是覆盖图标 cefsharp 铬控件弹出窗口。

//ILifeSpanHandler
private const int WM_SETICON = 0x80;
public void OnAfterCreated(IWebBrowser chromiumWebBrowser, IBrowser browser)
{
if (!browser.IsDisposed && browser.IsPopup)
{
Application.Current.Dispatcher?.Invoke(new Action(() =>
{
_handle = browser.GetHost().GetWindowHandle();
var bitMap = Utilities.BitmapImage2Bitmap(Utilities.FavIcon);
SendMessage(_handle, WM_SETICON, 0, bitMap.GetHicon());
})
);
}
}  

最新更新