我有一个带有 CEFSharp 的 WPF 应用程序,它是一个 Web 浏览器,当我单击下载链接时,它会显示一个对话框并询问我要将文件保存在哪里?
如何强制 Web 浏览器下载任何文件而不显示对话框?我想创建一些像谷歌浏览器这样的东西。因此,当您单击下载链接时,它会将文件下载到默认路径(通常位于“文档/下载”中)
现在我如何在我的应用程序中实现这一点?
如果我需要更改 CEFSharp 源代码,请告诉更多详细信息,因为我找到了一些解决方案,但没有完整的示例,只有部分代码!谢谢。
我正在尝试在 cefsharp 上使用具有 Auth 的代理,我尝试了此代码,它在没有 Auth 的情况下与代理一起使用,我应该如何设置 Auth 。
Cef.UIThreadTaskFactory.StartNew(delegate
{
string ip = "IP";
string port = "PORT";
var rc = chrome.GetBrowser().GetHost().RequestContext;
var dict = new Dictionary<string, object>();
dict.Add("mode", "fixed_servers");
dict.Add("server", "" + ip + ":" + port + "");
string error;
bool success = rc.SetPreference("proxy", dict, out error);
});
Run Code Online (Sandbox Code Playgroud)
我找到了这个链接,但我不明白该怎么做
https://bitbucket.org/chromiumembedded/cef/wiki/GeneralUsage.md#markdown-header-proxy-resolution 请写一些代码,我是初学者。
重现这一点的步骤非常简单。只需使用 nuget 下载最新版本的 CefSharp.WinForms (57.0.0),然后将一个按钮和此代码添加到表单中:
public partial class Form1 : Form
{
ChromiumWebBrowser WebBrowser;
public Form1()
{
InitializeComponent();
WebBrowser = new ChromiumWebBrowser("about:blank");
panel1.Controls.Add(WebBrowser);
WebBrowser.Dock = DockStyle.Fill;
}
private void testButton_Click(object sender, EventArgs e)
{
MessageBox.Show(WebBrowser.CanExecuteJavascriptInMainFrame.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
然后运行应用程序,等待几秒钟以确保“about:blank”已加载,然后按testButton。消息框将显示False。事实上,如果我尝试使用,EvaluateScriptAsync我会得到一个异常,告诉我尚未创建上下文。
解决此问题的一种方法是调用ShowDevTools,这似乎以某种方式强制创建上下文。另一种解决方案是导航到非本地页面,例如 Google。在这种情况下,即使我回到“about:blank”,我也能运行脚本。我尝试使用注册的自定义方案CefSettings.RegisterScheme,但导航到我的自定义页面仍然没有创建上下文(我尝试将“about:blank”传递给构造函数,然后导航到我的自定义方案,反之亦然,但没有任何效果) .
那么,是否可以让 CefSharp 创建上下文而不必导航到非本地页面或显示 DevTools?
我正在使用 CefSharp Winforms x86 构建。我想从这个链接播放视频:
http://developers.canal-plus.com/rx-player/
Run Code Online (Sandbox Code Playgroud)
在谷歌浏览器中它可以工作,但我的 CefSharp WinForm 浏览器无法播放其中任何一个。我检查了javascript是否已启用。我错过了什么吗?此页面不需要任何 Flash 播放器。它是 HTML5 播放器。
我第一次使用 CEFSharp C#,我很难弄清楚如何让浏览器做除了 browser.Load(""); 之外的任何事情。我已经在许多网站上搜索了几个小时,但似乎没有人有答案或有这个问题。我试图访问网站元素,就好像它们是 c# 表单控件一样......简而言之。我不应该问广泛的问题......我该怎么做browser.Click("/*elementName*/")?另外,有没有办法做类似的事情browser.TextBox1.Text = "blah";?
@吉姆W
我的代码到目前为止:更新 6/6/2018 4:29 pm
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CefSharp;
using CefSharp.WinForms;
namespace WebAppWorkAround
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
InitializeChromium();
}
List<string> classList = new List<string>();
public ChromiumWebBrowser chromeBrowser;
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
} …Run Code Online (Sandbox Code Playgroud) 我尝试编译我的应用程序,它具有 CefSharp 作为依赖项。面向 x86 时一切正常,但对于 x64,我收到以下错误:
System.BadImageFormatException: 'Could not load file or assembly 'CefSharp, Version=67.0.0.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138' or one of its dependencies. An attempt was made to load a program with an incorrect format.'
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢。
这是我在 VS 2017 中的配置设置的屏幕截图,
和项目属性的构建选项卡:
我创建了一个包含 WPF 窗口的类库项目。在一个 WPF 窗口中,我想要一个 CefSharp 浏览器。我的项目应该是配置AnyCPU。在不同的教程中,我看到使用CefSharp在可执行项目中调整AnyCPU配置的要点之一是设置 ( csproj )
<Prefer32Bit>true</Prefer32Bit>
Run Code Online (Sandbox Code Playgroud)
但是在类库项目中,这个属性是禁用的。如何在我的类库中为 CefSharp 启用 AnyCPU 支持?
pcpao.org/general.php?strap=152814186280001650
在尝试从该站点获取完整的HTML时,.GetSourceAsync和.ViewSource都只显示'frameset'HTML.使用ShowDevTools选项,完整的HTML数据包含在元素集合和Chrome-devtools的Sources中.
我在网页加载后运行这个,但它应该都在那里,因为它在开发工具中?
从导航网站获取完整的HTML,我缺少什么.我怀疑这与帧有关,但经过一个小时的谷歌搜索和阅读旧消息,我看到这只是切向提到.
的WinForms
package id="cef.redist.x64" version="3.2526.1362" targetFramework="net46"
package id="cef.redist.x86" version="3.2526.1362" targetFramework="net46"
package id="CefSharp.Common" version="47.0.3" targetFramework="net46"
package id="CefSharp.WinForms" version="47.0.3" targetFramework="net46"
Run Code Online (Sandbox Code Playgroud) CefSharp有很多依赖项和库需要运行.构建文件夹杂乱无章.如何将所需的.dll和.pak依赖项移动到子文件夹?
我看到类似的问题发布,没有答案.我是新使用CefSharp但我需要知道我是否可以获取网页加载的所有资源,例如图像,字体等.
关于如何实现这一点,官方文档似乎有点模糊.
更清楚的是,场景非常简单.当您使用CefSharp加载网页时,此网页包含图像,javascript文件,字体文件等资源.我只需要抓住所有这些资源来探索它们.
在此先感谢您的帮助,对不起我的英语.