*!*
一、WebView2是什么?
*!*
Microsoft Edge WebView2 控件使你能够在本机应用程序中嵌入 web 技术 (HTML、CSS 和 JavaScript \ ) 。
*!*
WebView2 控件使用 Microsoft Edge () Chromium 作为呈现引擎在本机应用程序中显示 web 内容。
*!*
使用 WebView2,你可以将 web 代码嵌入本机应用程序的不同部分,或在单个 Web 视图中构建整个本机应用程序。
*!*
这是Micosoft官方文档的说明,其实就是跟之前的WebBrowser一样,也是基于本地的浏览器内核引擎来渲染网页的,
*!*
只不过这次使用的是Edge的Chromium内核
*!*
二、需要的安装环境
*!*
>net环境SDK4.8
*!*
Microsoft Edge (Chromium 在 windows 10、windows 8.1 或 windows 7 ) 需要安装运行时刻
*!*
版本链接: https://www.。
*!*
WebView2支持H264的视频解码,意思你可用它看视频(包括YouKu)
*!*
三、VFP版的WebView2启动需要的文件包如下:
*!*
\runtimes\win-x64
*!*
\runtimes\win-x86
*!*
\WebView2.dl
guid:{0c8340ef-b207-4c3f-9390-71eb8e7b5b95}
*!*
\Microsoft.Web.WebView2.Core.dll
*!*
\Microsoft.Web.WebView2.WinForms.dll
*V.1.0.1 200230225
*This.oWebview2
= Createobject( "WebView2.FoxWebView")
&&WebView2的WinForm窗体
*This.oWebview2vfp
= This.oWebview2.WebView2Init()
&&WebView2控件
*This.oWebview2vfp.CoreWebView2 如果成功初始化 这将是WebView2的实体,一切方法都在这个对象之下与C#实体一致,它是原生的,
*及c#实体对象下的隶属方法继承(意思它原有什么方法函数,你在VFP访问该函数执行:This.oWebview2vfp.CoreWebView2.Function1()
*作者包装的任何方法函数在:This.oWebview2这个对象之下 This.oWebview2.Function1,.Function2,.Function3.....
*在你应用框架启动最开始时,自行添加这句把临时文件删除掉
*Erase (
Addbs( Getenv("TEMP") ) + '*.fxp'
)
*V.1.0.2 200230227
*WebView2 主要更新
*系统增加一个BuildEvents方法,该方法主要产生一个“oWebView2_Events”事件类,且产生该类方法不能更改。
*访问该事件类“oWebView2_Events”{ this.oWebview2_events }
*若需要由该类派生一个新类,而你又不需要当前类的事件名称您可以访问该 “oWebView2_Events”事件类,对其事件进行绑定
*比如:可采用例如下述语法,若事件类“CoreWebView2Events_OnInitCompleted”存在,且当前类对象有“OnInitCompleted”方法,将绑定在一起。
*在事件方法中需要注意VFP因是单线程设计,若您在事件方法中执行了一个长耗时动作,将由_vfp.AutoYield=.T.|.F.来约定COM+事件通知是否排队。
*_vfp.AutoYield=.F. 在VFP事情方法执行长耗时,将对COM+事件方法有阻塞影响或异常影响,也就意味着您不能很随意在事件中进用Set Step On 来调试。
*--绑定“oWebView2_Events”事件类
*!*
If Pemstatus( this.oWebview2_events , 'CoreWebView2Events_OnInitCompleted' , 5 )
And ;
*!*
Pemstatus( this
, 'OnInitCompleted'
, 5 )
Then
*!*
Bindevent( this.oWebview2_events , 'CoreWebView2Events_OnInitCompleted'
, This , 'OnInitCompleted' )
*!*
Endif
*关于COM+的任何异常,在This.oWebView2.GetlogPath(),来获取得到异常日志路径,SetlogPath() 设置异常路径日志(每次都需要的话) 废除
*V.1.0.3 200230309
*WebView2 主要更新
*增加一个函数方法:“oWebview2.CheckWebView2Exist()”主要用来检测客户是否有安装“WebView2”的运行时刻。
*增加一个模块
:webview_echarts简单交互版.scx 与 echarts_demo.prg 这个表单主要功能为Echarts交互功能,细节请查看这个表单的about及相关方法注释
*echarts_demo.prg中echarts_demo1对应表单:“webview_echarts简单交互版”第一个按钮,它的js调用为oEcharts方式。
*增加一个模块:webview_echarts自动刷新.scx
用于SQL自动后台刷新
*去掉log日志,您可以删除WebView2Log目录
*在您软件的初化应用中您可能需要将“This.Events_path”目录下所有的fxp删除,它是用来临时绑定事件的
*V.1.0.4
*特别要注意在被引用Webview2的表单上,VFP任何控件的MouseDown(),传参被固定为:Button, nShift, nXCoord, nYCoord
*如需更多请更改本类“wm_onclick”方法(因为二者绑在在一起的)
*增加 一个事件:“OnBasicAuthenticationRequested”
*修正 WebView放进多级容器时位置会错乱,祥细请查看事件“ReSize”说明
*原生方法:oWebview2vfp.ProductVersion
访问:WebView2Loader版本号
*原生方法:oWebview2vfp.CoreWebView2.PostWebMessageAsJson
( string as json
)
*原生方法:oWebview2vfp.CoreWebView2.PostWebMessageAsString ( string as string )
*原生方法:oWebview2vfp.CoreWebView2.Reload()
*原生方法:oWebview2vfp.CoreWebView2.StatusBarText()
*V.1.0.4 Build 20230320
*增加顶层表单的子类窗体,同时废弃WM_OnACTIVATE事件绑定,同时解决了顶层窗体切换时WebView2有闪烁情况。
*同时在webview_代码编辑器.scx时权释出最新的交互调代码,让交互代码调用变得更让人容易理解。
*V.1.0.5 Build 20230320
*解决:1.05版之前的版本可能EXE环境都会有一个问题不能把WebView2重复使用!
*增加一个“netfunction”方法集成,这个方法集中会慢慢加入一些常用函数库,细节请查看类“netfunction”
*增加两个方法事件“OnSourceChanged”,“OnDocumentTitleChanged”,因为在某些特殊的页面导航时无法得知文档的标题与Url
*增加缓存目录设置,假如您的EXE在C盘,而WebView默认是没有C盘读取/写入权限,您可以设置这个非C盘目录解决问题,
*如果用户没有其它盘符您需要手动解决权限问题或使用管理员权限运行注册WebView2.DLL
*废弃目录下的config.ini文件,您可以将其删除