c# chromiumwebbrowser 49
时间: 2023-08-18 17:06:23 浏览: 171
我不太清楚你的问题是什么,但是我猜测你可能是在寻找一个带有 Chromium 内核的 WebBrowser 控件,它可以在 C# 程序中嵌入网页并进行操作。如果是这样,你可以尝试使用 CefSharp 库,它是一个为 .NET 平台开发的 Chromium 内核封装。它支持 WinForms、WPF 和控制台应用程序。你可以通过 NuGet 安装 CefSharp,在项目中添加对 CefSharp 的引用,然后在代码中使用它来加载和操作网页。如果你需要更多的帮助,请告诉我。
相关问题
C# ChromiumWebBrowser 获取Storage
在C#中使用ChromiumWebBrowser控件,实际上它基于Chromium Embedded Framework (CEF),访问网页的存储通常涉及使用CEF的JavaScript API。不过,由于CEF主要是C++库,C#中通常是通过COM Interop或者第三方库间接访问的。
首先,你需要添加对CEF的引用,并通过`ChromiumWebBrowser`对象调用`ExecuteScriptAsync`方法来执行JavaScript代码,获取和操作存储。例如,为了获取cookies,你可以这样做:
```csharp
using ChromiumWebBrowser.Interop;
// 执行JavaScript获取cookies
string jsCode = @"
var cookies = document.cookie.split(';');
var result = [];
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i].trim();
if (cookie != '') {
result.push({name: decodeURIComponent(cookie.split('=')[0]), value: decodeURIComponent(cookie.split('=')[1])});
}
};
result";
IJSValueWrapper cookiesResult = await webBrowser.ExecuteScriptAsync(jsCode);
```
对于localStorage和sessionStorage,你可以在JavaScript中分别获取它们:
```csharp
string localStorageJs = @"
try {
localStorage.getItem('key');
} catch(e) {
// handle error...
}
";
string sessionStorageJs = @"
try {
sessionStorage.getItem('key');
} catch(e) {
// handle error...
}
";
```
同样地,需要将这些字符串传递给`ExecuteScriptAsync`并解析返回的结果。
C# ChromiumWebBrowser DownloadHandler 用法
ChromiumWebBrowser 控件提供了一个 DownloadHandler 属性,用于处理文件下载事件。您可以通过设置 DownloadHandler 属性来自定义下载行为。以下是使用 DownloadHandler 的示例:
```csharp
// 创建一个 DownloadHandler 对象
var downloadHandler = new DownloadHandler();
// 设置下载目录,默认为程序运行目录下的 Downloads 文件夹
downloadHandler.DownloadPath = Path.Combine(Application.StartupPath, "Downloads");
// 设置下载事件的处理方法
downloadHandler.OnBeforeDownloadFired += (sender, e) => {
// 取消默认下载行为
e.Cancel = true;
// 自定义下载行为
DownloadFile(e.DownloadItem, downloadHandler.DownloadPath);
};
// 将 DownloadHandler 对象设置为 ChromiumWebBrowser 控件的 DownloadHandler 属性
browser.DownloadHandler = downloadHandler;
```
其中,OnBeforeDownloadFired 是 DownloadHandler 的事件,当用户点击下载链接时,会触发这个事件。在事件处理方法中,您可以自定义下载行为,例如使用 WebClient 类下载文件:
```csharp
private void DownloadFile(IDownloadItem downloadItem, string downloadPath) {
var filename = Path.Combine(downloadPath, downloadItem.SuggestedFileName);
var url = downloadItem.OriginalUrl;
using (var client = new WebClient()) {
client.DownloadFile(url, filename);
}
}
```
在上面的示例中,DownloadHandler 下载目录的默认值为程序运行目录下的 Downloads 文件夹,您也可以根据实际情况进行修改。
希望这些信息能够对您有所帮助!
阅读全文