标签: cefsharp

Winforms,CefSharp:基本身份验证的身份验证弹出窗口不显示

我正在努力在 WinForms 应用程序中添加 cefsharp。我们的网站使用基本身份验证进行访问,但 CefSharp 不会显示该弹出窗口。我发现了thisthis,但 Visual Studio 没有实现该接口并抱怨 AuthDialog 是一个未知类。我来自Java方面,对Winforms中的类不太了解,但我找不到AuthDialog。我究竟做错了什么?

代码 :

 bool IRequestHandler.GetAuthCredentials(IWebBrowser browser, bool isProxy, string host, int port,
            string realm, string scheme, ref string username, ref string password)
        {
            //NOTE: If you do not wish to implement this method returning false is the default behaviour
            // We also suggest you explicitly Dispose of the callback as it wraps an unmanaged resource.

            // shyam - original implemenation.
            //callback.Dispose();
            //return false;

            bool handled = …
Run Code Online (Sandbox Code Playgroud)

c# winforms cefsharp

2
推荐指数
1
解决办法
1万
查看次数

CefSharp WpfControl 和渲染到图像

我们想要在 wpf 应用程序中的基于 chromium 的浏览器中显示网页。在浏览器中显示的网站也应该显示在另一个屏幕上,但没有交互。我想将 cefsharp wpf 浏览器控件和 cefsharp 离屏渲染结合起来。

我可以使用一个 chromium 实例来显示带有 wpf 交互的页面并将当前可见网站导出为图像吗?

感谢你并致以真诚的问候,

西蒙

cefsharp cefsharp.offscreen

2
推荐指数
1
解决办法
2386
查看次数

EvaulateScriptAsPromiseAsync 和 async/await

我正在尝试与 CefSharp 一起使用EvaluateScriptAsPromiseAsync

它似乎在浏览器中工作,但我在 cefSharp 中得到空结果。

JavaScript:

(async function() {
    const result = await $.ajax({ type: 'GET', url: './robots.txt' });
    return result;
})();
Run Code Online (Sandbox Code Playgroud)

CSharp代码:

var result = await browser.EvaluateScriptAsPromiseAsync(script);
Debug.Assert(result.Result != null);
Run Code Online (Sandbox Code Playgroud)

完整代码:


public partial class Form1 : Form
    {
        ChromiumWebBrowser browser;
        public Form1()
        {
            InitializeComponent();
            browser = new ChromiumWebBrowser("jquery.com");
            this.Controls.Add(browser);

            browser.FrameLoadEnd += Browser_FrameLoadEnd;

        }

        private void Browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
        {
            const string script = @"(async function() {
                const result = await $.ajax({ type: 'GET', url: './robots.txt' …
Run Code Online (Sandbox Code Playgroud)

cefsharp

2
推荐指数
1
解决办法
1699
查看次数

如何禁止在新窗口中禁用打开页面 - cefsharp

cefsharp 在谷歌页面上导航时打开两个窗口,但我想在一个窗口中打开

我已经尝试了很多,但无法使其工作:(。我想在同一个主窗口而不是新窗口中打开第二个窗口。

我尝试遵循但没有运气,也许我做错了什么,因为我不擅长编码:(

https://github.com/cefsharp/CefSharp/issues/600

https://github.com/cefsharp/CefSharp/issues/688

https://www.codeproject.com/Articles/1194609/Capturing-a-pop-up-window-using-LifeSpanHandler-an

您能否帮我找到解决方案,以便无论您在任何网页上单击哪个按钮,它都仅在窗口中打开

using CefSharp;
using CefSharp.WinForms;
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 System.Threading;
using System.Runtime.InteropServices;
using System.Diagnostics;
using Microsoft.Win32;


namespace Nysus
{

  
public partial class Form1 : Form
    {
        public Form1()
        {
             InitializeComponent();
        }

        ChromiumWebBrowser chrome;
        private void Form1_Load(object sender, EventArgs e)
        {
            CefSettings settings = new CefSettings();
            //Initialize
            Cef.EnableHighDPISupport();
            Cef.Initialize(settings);
            chrome = new ChromiumWebBrowser("http://www.google.com");
            this.pContainer.Controls.Add(chrome);
            chrome.Dock = DockStyle.Fill;
          
            this.FormBorderStyle = FormBorderStyle.None;
            this.WindowState …
Run Code Online (Sandbox Code Playgroud)

c# visual-studio winforms cefsharp

2
推荐指数
1
解决办法
3922
查看次数

无法设置cookie:Cef.SetCookie()始终返回false

这个问题让我困惑了好几天了.我完全无法设置cookie CefSharp.

这是我期望工作的代码块(更多是因为它可以是天真的,不包括显式线程上下文切换):

Application.Current.Dispatcher.Invoke(new Action(() =>
{
    var settings = new CefSettings();
    settings.CachePath = "cookies";

    Cef.Initialize(settings);

    Cef.DeleteCookies("", ""); 
    Cef.VisitAllCookies(new CookieVisitor());  // <-- doesn't get called, so assuming we've cleared all the persistent cookies here...

    Cef.SetCookiePath("/", false);
    Cef.VisitAllCookies(new CookieVisitor());  // <-- ok guess im paranoid...
    var isSet = Cef.SetCookie("/", "username", 
                    "testuser", "tovalrsv01", "/", 
                    false, false, false, new DateTime(2020, 1, 1));

    Cef.VisitAllCookies(new CookieVisitor()); // <-- isSet is false, and i don't see the cookie that i created in the visited list... …
Run Code Online (Sandbox Code Playgroud)

c# chromium-embedded cefsharp

1
推荐指数
1
解决办法
4978
查看次数

简单的 CefSharp 应用程序在运行时缺少文件

这可能是一个非常简单的问题。我将示例 CefSharp MinimalExample.WinForms 项目复制到一个新目录并重命名为 WinProxy。它构建正常。当我运行它时,我得到了;

mscorlib.dll 中出现类型为“System.IO.FileNotFoundException”的未处理异常附加信息:无法加载文件或程序集“CefSharp.Core.dll”或其依赖项之一。指定的模块无法找到。

与示例目录相比,我缺少此处列出的许多文件https://github.com/cefsharp/CefSharp/wiki/Output-files-description-table-(Redistribution)

我确实有 CefSharp.Core.dll、CefSharp.WinForms.dll 和 CefSharp.dll,它们都在示例项目中被引用。

我如何获得其余的?我尝试复制它们并重建,但我得到了;

mscorlib.dll 中出现类型为“System.IO.FileLoadException”的未处理异常附加信息:无法加载由“CefSharp.Core.dll”导入的过程。

谢谢。

.net cefsharp

1
推荐指数
1
解决办法
6538
查看次数

从CEFSharp中的缓存中读取文件

我需要导航到最终包含.pdf文件的网站,我想在本地保存该文件.我正在使用CEFSharp来做到这一点.此站点的性质是,一旦.pdf出现在浏览器中,就无法再次访问它.出于这个原因,我想知道一旦你在浏览器中显示.pdf,有没有办法在缓存中访问该文件的源?

我尝试过实现IDownloadHandler,但是你必须单击嵌入式.pdf上的保存按钮.我试图解决这个问题.

pdf chromium-embedded cefsharp

1
推荐指数
1
解决办法
1807
查看次数

CefSharp Wpf,多个实例的会话 Cookie

我很好奇 CEF Sharp 是否有可能以某种方式将浏览器的每个实例与其他实例隔离。

我正在创建 4 个浏览器实例。登录实例后,其他 3 个实例也会立即登录。

是否有可能在我们从 Nuget 获得的当前版本中以某种方式实现?

wpf cefsharp chromium-portable

1
推荐指数
1
解决办法
4629
查看次数

在异步方法中使用await来防止下一行代码运行

我是新手使用异步方法,所以我觉得我误解了一些东西.我有一个带按钮的WinForms应用程序,当单击该按钮时,会调用异步方法.这必须是异步的,因为我需要对Chromium Web Browser控件进行javascript调用(使用CefSharp).我需要确保此javascript已完成运行并且浏览器已更新,然后继续使用该方法的下一部分.

我基本上试图将整个网页捕获为单个图像.我的方法是使用javascript更新页面上的滚动位置,然后使用Graphics.CopyFromScreen在每个位置截取屏幕截图.这主要是有效的,但偶尔产生的图像将具有错误的网页"块"(例如,第一个位图重复两次).这是我的代码:

// Calculate screen sizes, screenshot spacing etc.

for (int i = 0; i < screenshotCount; i++)
{
    int scrollSize = i == 0 ? -PageHeight : (int)browserControlHeight;
    string script = "(function() { window.scrollBy(0, " + scrollSize.ToString() + ") })();";

    await browser.EvaluateScriptAsync(script);

    // Take screenshot, add to list of bitmaps
}

// Combine resulting list of bitmaps
Run Code Online (Sandbox Code Playgroud)

如果我添加以下内容

await Task.Delay(1000);
Run Code Online (Sandbox Code Playgroud)

在EvaluateScriptAsync()调用之后,每次最终图像都是正确的.我正在假设javascript被调用但在截图开始之前没有完成.如果是这种情况,即使添加延迟也可能不起作用(如果javascript运行的时间超过一秒,该怎么办?).

我是否误解了async/await的工作方式?

c# winforms async-await cefsharp

1
推荐指数
1
解决办法
621
查看次数

使用CefSharp捕获资源响应数据(正文)

我正在尝试使用CefSharp访问URL并捕获在加载给定页面期间检索到的特定资源.大概是每个资源的Stream或byte数组.

CefSharp提供了接口IRequestHandler.您可以创建一个实现此接口的类来响应请求/响应事件,但它不以任何方式包含响应主体.

cefsharp

1
推荐指数
1
解决办法
3423
查看次数