提问人:Furkan Ergut 提问时间:4/16/2022 更新时间:4/17/2022 访问量:325
ChromiumWebBrowser 为什么打开空白表单?
ChromiumWebBrowser opens blank form why?
问:
我创建了一个项目,并在其中添加了来自 nuget 的 CefSharp.WinForms。
我给了一个地址,然后 ChromiumWebBrowser 打开了它。当我在这个地址周围导航时,我点击了一个下载链接。没问题,文件已下载。但随之而来的是一个空表单。
这个空表单是什么,为什么会打开它,我怎样才能从代码中关闭它?
答:
0赞
amaitland
4/17/2022
#1
如果您单击的链接打开了一个弹出窗口,则预计会出现一个空白窗口。您可以隐藏窗口,直到下载完成,然后将其关闭。以下代码将所有文件保存到临时文件夹。您可以将文件夹更改为用户配置文件中的路径,或者代替 UseFolder 调用 AskUser。
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool IsWindowVisible(IntPtr hWnd);
[DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
var tempPath = System.IO.Path.GetTempPath();
browser.DownloadHandler =
Fluent.DownloadHandler.UseFolder(tempPath,
(chromiumBrowser, browser, downloadItem, callback) =>
{
if (downloadItem.IsComplete || downloadItem.IsCancelled)
{
if (browser.IsPopup && !browser.HasDocument)
{
browser.GetHost().CloseBrowser(true);
}
}
//TODO: You may wish to customise this condition to better suite your
//requirements.
else if(downloadItem.ReceivedBytes < 100)
{
var popupHwnd = browser.GetHost().GetWindowHandle();
var visible = IsWindowVisible(popupHwnd);
if(visible)
{
const int SW_HIDE = 0;
ShowWindow(popupHwnd, SW_HIDE);
}
}
});
评论
0赞
amaitland
4/17/2022
cefsharp.github.io/api/100.0.x/html/......
评论