注册 登录
编程论坛 VFP论坛

vfp WebView2 Demo (终:含C++、VFP全部源码)

吹水佬 发布于 2023-04-17 16:29, 6332 次点击
相关贴:
https://bbs.bccn.net/thread-511388-1-1.html
https://bbs.bccn.net/thread-511332-1-1.html
https://bbs.bccn.net/thread-511259-1-1.html
https://bbs.bccn.net/thread-511234-1-1.html

只因Demo,为方便阅读,代码力求精简。
代码主要是参考官方的示例和WebView2 Win32 C++ API,不含任何调试和容错处理过程。

https://learn.
https://learn.

开发环境:VS Community 2022、VFP9

开发环境设置可参考官方文档:
https://learn.

要在项目的“管理 NuGet 程序包”搜索“WebView2”,“更新”最新版本。

这次更新的主要内容:
1、优化处理Cookie(获取、设置和删除)
2、共享内存缓冲区(创建、释放、读、写),(参考示例:Web共享WebView2内存缓冲区)
3、运行DevToolsProtocol方法,(参考示例:输出PDF、截图)
4、打印(对话框、默认打印、输出到PDF文件),(参考示例:输出PDF)
5、基本的10个事件可以添加和移除,精简功能可提高性能。

作为嵌入VFP的web应用,扩展VFP应用环境,WebView2是选项。

WebView2内容丰富,版本更新也快,个人认知能力和精力有限,这个Demo算是到此为止。

文件包有点大,要到下载频道:https://down.bccn.net/12438.html

只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2023-4-17 16:41编辑过]

61 回复
#52
吹水佬2025-08-07 19:23
以下是引用SATANA在2025-8-7 18:09:55的发言:

请教吹版
1为啥 WEBVIEW2浏览器部分 有时候出现白板?
2怎么修改sec-ch-ua

我小孙女都过两岁半上幼儿园了,二年多没去看WEBVIEW2,自己写的东东怕也忘了。
有兴趣的话可以看看源代码,看问题出在那个环节。
#53
SATANA2025-08-07 19:35
启动WEBVIEW2偶尔会出现白板,就是不渲染,退出程序, 重新启动 2 3次 浏览器才能正常显示
另外能否修改 请求头的一些信息 比如sec-ch-ua
 我是真不会
烦劳吹版 指教一些   感谢~~
#54
吹水佬2025-08-07 20:01
我也是边看边学边写的,WEBVIEW2应该也更新了不少。
现在没那么多时间去看WEBVIEW2了。源代码摆在那了,有兴趣自己去看试试,这东西想玩得转还是要信自己。
出现白板看看是那个环节的问题,是不是异步消息的问题,可以适当增加延时或监测异步消息的结果再作下一步。


#55
吹水佬2025-08-07 20:08
以下是引用SATANA在2025-8-7 19:35:01的发言:

另外能否修改 请求头的一些信息 比如sec-ch-ua

sec-ch-ua应该不算是WebView2的问题,我也没接触过,可能是HTTP协议的东西。



[此贴子已经被作者于2025-8-7 20:10编辑过]

#56
吹水佬2025-08-07 20:32
记得有个过滤过程也是修改包头数据,可以看看过滤的相关代码。
其中的 referer 就是请求头的东西,这里好像是拦截修改请求头。

主文件中:
    * 为WebResourceRequested事件添加URI和资源过滤器
    * void WebView_AddWebResourceFilter(LPCWSTR const uri, int flags)
    *    flags, 1 设置过滤地址,0 设置添加请求标头 referer
DECLARE long WebView_AddWebResourceFilter     IN myWebViewDll string,long

    * 清除AddWebResourceRequestedFilter添加的事件过滤器
    * void WebView_RemoveWebResourceFilter(LPCWSTR const uri)
DECLARE long WebView_RemoveWebResourceFilter  IN myWebViewDll string  


#57
SATANA2025-08-08 05:57
请教吹版
HTTP里user-agent或 sec-ch-ua 等请求标头之类的修改  在您提供的WEBVIEW2里 怎样实现
网上找的资料也是WebResourceRequested,但没法照搬
WEBVIEW2 demo的代码里我又找不到北   不好意思,还得麻烦吹版点拨一下,下手的地方

[此贴子已经被作者于2025-8-8 08:12编辑过]

#58
吹水佬2025-08-08 08:18
以下是引用SATANA在2025-8-8 05:57:46的发言:

请教吹版
HTTP里user-agent或 sec-ch-ua 等请求标头之类的修改  在您提供的WEBVIEW2里 怎样实现
网上找的资料也是WebResourceRequested,但没法照搬
WEBVIEW2 demo的代码里我又找不到北   不好意思,还得麻烦吹版点拨一下,下手的地方

用过C++的话可以参考C++源码文件 myWebViewDll.cpp
其中:
函数 WebView_AddWebResourceFilter()
事件 OnWebResourceRequested
        其中:下面几句是设置请求标头的 referer
        ComPtr<ICoreWebView2HttpRequestHeaders> httpRequest;
        request->get_Headers(&httpRequest);
        httpRequest->SetHeader(L"referer", uri_previous);

#59
SATANA2025-08-08 09:09
问题是在DEMO的代码里 哪个地方能实现?
#60
SATANA2025-08-08 09:18
webView.CoreWebView2.WebResourceRequested += async (sender, args) => {
    // 获取请求对象
    var request = args.Request;
   
    // 修改sec-ch-ua头
    request.Headers.Remove("sec-ch-ua");
    request.Headers.Append("sec-ch-ua", "\"CustomBrowser\";v=\"1.0\", \"Not.A/Brand\";v=\"99\"");
   
    // 可选:修改其他相关头
    request.Headers.Append("sec-ch-ua-mobile", "?0");
    request.Headers.Append("sec-ch-ua-platform", "\"Windows\"");
};
这是网上的  代码的意思我基本也理解  但我不知道怎么移植到程序里
我连C都不会  别说C++了  学艺不精啊  惭愧

[此贴子已经被作者于2025-8-8 10:28编辑过]

#61
吹水佬2025-08-08 11:21
以下是引用SATANA在2025-8-8 09:18:16的发言:

我连C都不会  别说C++了  学艺不精啊  惭愧


这个DEMO是用C++写的,demo只是web简单浏览功能。
没用过C++就不好整,vfp只调用C编好的代码。
#62
SATANA2025-08-08 11:26
基本明白了 DEMO的功能有限  如果要实现其他的功能  必须要完善dll文件 然后再通过进行调用
12