【发布时间】:2019-09-09 15:01:57
【问题描述】:
我正在尝试使用 WinApi SendMessage() 更改窗口图标,但没有成功。
知道这里有什么问题吗?
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());
})
);
}
}
【问题讨论】:
-
很可能,
browser.GetHost().GetWindowHandle()没有返回分配有图标的顶级窗口,因此您无法在其上设置新图标。跨度> -
我取得了一些进展:WM_SETICON 的值错误,我用 GetHicon 替换了 GetHbitmap。现在我有一个黑色图标,有什么想法吗? SendMessage(handle, WM_SETICON, 0, bitMap.GetHicon());