小白伸手一个问题,关于CEF的,调用devtools里面的截图操作报错

wujiuqier 2020-12-18 12:36:24
在WinForm里面添加了一个CEF控件(用代码添加的没用设计器),然后在Form代码里面添加了invokeCapture属性,希望能通过这个方法来对CEF的整个页面截图。第一次截图是正常的,但是从第二次截图开始就一直报错,也截不出来。报错信息是“Generated MessageID 100002 doesn't match returned Message Id 100001”。有没有办法可以多次截图。

鄙人把github cefsharp那个DevToolsExtensions.cs那个代码复制到项目里面来了,然后也把命名空间改过来了。

那个DevToolsClient里面的lastMessageId变量是private的,也没个getter和setter,这个变量在CaptureScreenshot方法执行ExecuteDevToolsMethodAsync方法里面的语句时候要用到。这就很烦人了,ExecuteDevToolsMethodAsync要把这个类里面的lastMessageId和执行ExecuteDevToolsMethod方法返回的消息ID做比较,如果不一样就会报错并且强制终止执行,CEF控件的GetDevToolsClient方法也看了一下,这方法实际上也是直接new对象的,就是github那个示例代码的第36行,而这个new对象之后给lastMessageId赋值是相对于CEF是写死的。

这个问题鄙人在StackOverflow也问了,过了大半天没人回复,也没人点赞点踩。不知道CSDN这边有没有大佬会解决这个了。

        private async void invokeCapture()
{
try
{
byte[] result = await winformcefdemo.CefSharp.Example.DevTools.DevToolsExtensions.CaptureScreenShotAsPng(browser);

// task.Start();
// byte[] result = task.Result;
SaveFileDialog dialog = new SaveFileDialog();
DialogResult dresult = dialog.ShowDialog();
if (dresult == DialogResult.OK)
{
string path = dialog.FileName;
try
{
File.WriteAllBytes(path, result);
MessageBox.Show(path + " saved success");
} catch (Exception e)
{
MessageBox.Show(path + "Unknown error occurred when saving to file: " + e.Message);
}
}
}
catch (Exception ee)
{
MessageBox.Show("Unknown error occurred when capturing: " + ee.Message);
}
}
...全文
7420 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
baitso 2021-01-17
  • 打赏
  • 举报
回复 1
CefSharp.DevTools.Page.PageClient pageClien= null; private async void Test2() { if(pageClien==null) { pageClien = webBrowser.GetBrowser().GetDevToolsClient().Page; } var result = await pageClien.CaptureScreenshotAsync(); if (result.Data!=null) { MemoryStream ms = new MemoryStream(result.Data); ms.Write(result.Data, 0, result.Data.Length); pictureBox1.Image = Image.FromStream(ms); //File.WriteAllBytes("1.bmp", result.Data);保存图片 } } 不要用DevToolsExtension,每次会重置messageid为100000

17,748

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧