标题:vfp WebView2 Demo
取消只看楼主
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
结帖率:100%
已结贴  问题点数:20 回复次数:11 
vfp WebView2 Demo
IE WebBrowser 或者已成过去,
Edge WebView2 或能预见将来。

Edge WebView2 是在 Microsoft Edge WebView2 Runtime 支持下的应用,核心也是Chromium。


VFP最简的WebView2应用


主要文件:
  
1、WebView2Loader.dll,是WebView2分发的随用户应用一起用来加载WebView2。

2、myWebViewDll.dll,简单封装几个功能给 VFP DEMO 用的DLL。

3、vfp_WebView2_Demo.prg,不用说的


运行环境:

1、查看有无安装 Microsoft Edge WebView2 Runtime,现在Windows10也会自动推送。
   在 windows “设置”--“应用”--“应用和功能”
   搜索“webview”,看到有 Microsoft Edge WebView2 Runtime 就OK。


2、需要VC++运行库支持,VFP用32位(x86)版本。
     上载了一个VS2022用的版本:
          Microsoft Visual C++ 2015-2022 Redistributable - 14.34.31931
     没有的可以下载安装:
         https://down.bccn.net/12340.html

3、WebView2Loader.dll、myWebViewDll.dll 默认放在VFP主程序的目录。

4、如果在VFP开发环境运行(vfp.exe),可能会出现创建文件失败的异常。
   按图示设置VFP安装的目录有“写”权限就OK。





打包下载文件:
vfp_WebView2_Demo.rar (95.28 KB)





搜索更多相关主题的帖子: Microsoft Edge 应用 dll vfp 
2023-02-08 16:21
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
程序代码:
ASTACKINFO(ap)
cDefPath = ADDBS(JUSTPATH(ap[2]))
SET DEFAULT TO (cDefPath)

DECLARE long GetTopWindow IN user32 as apiGetTopWindow long
DECLARE long MoveWindow   IN user32 as apiMoveWindow   long,long,long,long,long,long

DECLARE long WebView_Create    IN myWebViewDll long,long,long,long,long
DECLARE long WebView_Destroy   IN myWebViewDll 
DECLARE long WebView_Resize    IN myWebViewDll
DECLARE long WebView_Navigate  IN myWebViewDll string
DECLARE long WebView_GoBack    IN myWebViewDll 
DECLARE long WebView_GoForward IN myWebViewDll

PUBLIC hWebView
of = CREATEOBJECT("WebView2_Demo")
of.show
READ EVENTS
CLEAR ALL
RETURN

DEFINE CLASS WebView2_Demo as Form
    ShowWindow  = 2
    WindowState = 2 
    ADD OBJECT cmd1 as commandbutton WITH left=10,top=10,width=20,height=22,caption="<"
    ADD OBJECT cmd2 as commandbutton WITH left=30,top=10,width=20,height=22,caption=">"
    ADD OBJECT txt1 as textbox WITH left=50,top=10,width=500,height=22,value="https://bbs.bccn.net/forum-22-1.html"
    ADD OBJECT cmd3 as commandbutton WITH left=550,top=10,width=30,height=22,caption=">>"
    
    PROCEDURE Destroy
        WebView_Destroy()
        CLEAR EVENTS
    ENDPROC
    
    PROCEDURE Activate
        IF EMPTY(this.Tag)
            this.Tag = "1"
            hWebView = WebView_Create(apiGetTopWindow(this.hWnd), 0, 40, this.Width, this.Height-40)
        ENDIF
    ENDPROC
    
    PROCEDURE Resize
        apiMoveWindow(hWebView, 0, 40, this.Width, this.Height-40,1)
        WebView_Resize()
    ENDPROC 

    PROCEDURE cmd1.click
        WebView_GoBack()
    ENDPROC 
    
    PROCEDURE cmd2.click
        WebView_GoForward()
    ENDPROC   
     
    PROCEDURE cmd3.click
        WebView_Navigate(STRCONV(ALLTRIM(thisform.txt1.value)+0h00,5))
    ENDPROC 
ENDDEFINE




2023-02-08 16:22
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用foxfans在2023-2-8 17:03:38的发言:

这个封装基本上只能在win10及以上用,要是向下兼容到win7,要处理win7 user32动态链接库中没有的函数SetProcessDpiAwarenessContext.....

目前来说,这个就肯定的了。Win7就基本无望,MS已经不管他了。
Edge WebView2 是基于 Microsoft Edge WebView2 Runtime 的,早前windows10也没推送。
WebView2 好在是windows系统的东西,用得方便,VFP用起来可靠安心点。
2023-02-08 17:42
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用laxjyj在2023-2-9 06:51:17的发言:

昨晚试了几个不同风格的网站、网页均能正常浏览、登录或在新窗口打开,这个比miniblink等好,不知道版主接下来有没有准备开发(集成)功能更全面的版本?

相对 IE WebBrowser 来说,这个就是 Edge WebBrowser。
也就是说Edge开放一些接口功能,用户可以通过这些接口好像用Edge一样使用Edge的一些功能。
Edge能正常打开的网页,Edge WebView2 应该也能正常打开,至于好不好用就由Edge决定。

开发(集成)功能更全面的版本。对个人来说,不可能、没能力、更无精力。
之前对 WebView2 了解不多,只是最近有贴提到VFP用的 WEB Browser 有无新的控件。
当时也简单写了个 VFP miniblink 的示例,但觉得miniblink是第三方的东西,使用限制不少,总觉得有点不踏实。
而 WebView2 是 Windows 系统的东西,使用比较有保障和安心。
因此就尝试看看 VFP 能否使用 WebView2,就搞出这个自己还没完全消化的 Demo。

如果大家有兴趣用 WebView2,且有过C++编程,写 WebView2 方面的应用应该不难。
MS官方有详细的WebView2参考资料:https://learn.
网上WebView2相关的资料也不少,C++、C#、.net 都有不少,甚至还有人用纯C写WebView2,不知有无人用ASM写。
本着学到老、用到老的精神,期望与大家共同学习、探讨WebView2。

2023-02-09 08:12
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用easyppt在2023-2-9 16:58:34的发言:

吹版威武,能不能再增加一下功能啊,比如 定位光标位置、页面填表

这些不只是浏览网页,还要操作页面对象,可能要用到JS。
对WebView2还未深入了解这方面内容,现在只是浏览网页。
2023-02-09 18:02
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用easyppt在2023-2-9 16:58:34的发言:

能不能再增加一下功能啊,比如 定位光标位置、页面填表

最新的Demo能支持注入JS代码,应该可以实现这些功能。
再支持注入VFP对象就更完美,这样web也能直接运行VFP代码,不用写VFP的COM。
2023-02-12 09:34
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用shonken在2023-2-17 11:56:18的发言:

吹版,这个能封装在容器里吗

vfp的容器控件不是“窗口”控件。WebView2不像ActiveX的类可以给VFP做控件用。
确有需要也可将表单当“容器”,可以嵌入主表单。
2023-02-17 14:44
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用sam_jiang在2023-2-17 12:12:40的发言:

期待你把vfp注入

_vfp对象可以注入,但意义不大。
web客户端有不少限制,特别是编译成EXE独立运行是不能操作文件。
下次更新给个示例大家可以探讨一下。
2023-02-17 14:48
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用whkgiq在2023-2-17 15:53:25的发言:

吹版让fox迷看到了foxpro的前景

这个是扩展库(DLL)API,已经不只是局限于VFP了,只是用VFP来演示较为方便快捷。
喜欢VFP也是因为他编程方便快捷高效。
2023-02-17 16:52
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 19楼 shonken
其实对于windows桌面UI窗口的控件也是一个窗口,都具有窗口句柄,只是窗口样式不同。
2023-02-17 22:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511234-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033754 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved