【不止 VB】用 VB 编写一个简单的 HTML 应用程序(非 IDocHostUIHandler)
现在很多程序都在使用 Electron 一类的框架设计,将本地应用程序变为 HTML 应用程序,这是历史的必然趋势。其实,善用 Windows 自带的 WebBrowser 控件,可以实现更加轻量化的 HTML 应用程序。(VB 也有自己的 Electron!)
在本帖中,我将给出一个简易的 HTML 应用程序制作方法,该方法不使用 IDocHostUIHandler,不额外注册 tlb,不需要 Implements,不会影响正常和 alert() 等访问,自由度极高。
步骤一:新建工程,添加指定的控件和引用
必须使用的控件:Microsoft Internet Controls
建议添加的引用:Microsoft HTML Object Library(可以自动提示,减少出错,也可以直接通过 getElementById() 方法获得元素,处理事件)
步骤二:编写 JavaScript 可以调用的 WebBrowser 代码
1. 编写类模块
2. 处理 DocumentComplete 事件,注册准备好的类模块
这一步很重要,而且只能在 DocumentComplete 中处理,否则您可能收获这样的错误:
因为您的程序可能很复杂,所以不建议您使用 ReadyState 或直接使用 DocumentComplete 判断页面是否加载完成,而应该使用这样的代码:
If (pDisp Is brwWebBrowser.Object) Then
' 您的代码
End If
然后注册您已经编写好的类模块:
如:
docDocument.body.setAttribute "form", clsFormCtrl
docDocument.body.setAttribute "api", clsWINAPI
(也可以直接填 Me,用于访问窗体的 Public 方法)
步骤三:编写 HTML
这一步没有什么可以说的,访问 Visual Basic 代码的方法如下:
document.body.您注册的类名.方法(参数);
注意:访问 Visual Basic 代码的 JavaScript 代码必须在 <body> 中,或被 <body> 中的代码调用,否则将会无效!
步骤四:编写 Visual Basic 处理 HTML 和 JavaScript 的代码
这也没有什么可以说的,方法如下:
docDocument.parentWindow.execScript 您要执行的代码
步骤五:新建资源文件,将所使用的所有资源打包进资源文件
注意无论是什么拓展名,都必须划到 HTML 类(23),也不要含特殊符号和中文,这一步 VB 本身无法完成,应当退出 VB,用 Resource Hacker 编辑资源文件
步骤六:编译、运行
恭喜!您已经成功制作了一个简单的 HTML 应用程序!
附件:
效果图:
参考资料
https://www.cnblogs.com/KeenLeung/p/3837853.html
https://www.cnblogs.com/zhwl/p/3154623.html
https://www.cnblogs.com/wgscd/p/11008269.html
https://www.0xaa55.com/thread-27449-1-1.html 戈登走過去 发表于 2024-7-26 13:09
哇)
让我想起了我之前用 vb .net 调用 WebView2 (
话说你的高 DPI 的情况下,编写的 VB6 软件放别人不同D ...
TwipsPerPixelX(Y) 写死成 15 好像在 Win 10 下就没问题了 哇)
让我想起了我之前用 vb .net 调用 WebView2 (
话说你的高 DPI 的情况下,编写的 VB6 软件放别人不同DPI的环境里运行会有问题吗?
我从来没有想过这个问题
(因为新版本的 visual studio .net winforms 编辑器都会提示,高DPI生成的UI会有BUG) 本帖最后由 QZhi 于 2024-7-26 15:55 编辑
戈登走過去 发表于 2024-7-26 13:09
哇)
让我想起了我之前用 vb .net 调用 WebView2 (
话说你的高 DPI 的情况下,编写的 VB6 软件放别人不同D ...
高 DPI 确实比较头疼。
对于 VB 窗体内部的控件,如果其单位是缇(Twip),一般不会有太大问题;
对于其中的 HTML,字体大小一般也不会出问题,图片尺寸建议使用百分比;
唯一的问题是,VB 窗体的尺寸…… QZhi 发表于 2024-7-26 13:39
高 DPI 确实比较头疼。
对于 VB 窗体内部的控件,如果其单位是缇(Twip),一般不会有太大问题;
你用了那么多VB6没有发现Form的大小用的单位也是缇吗?所以不存在的,VB6最大的问题是在AutoSize的控件上,比如PictureBox和Image控件使用适配图片大小就会导致不跟随DPI缩放。 本帖最后由 QZhi 于 2024-7-29 12:05 编辑
YY菌 发表于 2024-7-29 09:05
你用了那么多VB6没有发现Form的大小用的单位也是缇吗?所以不存在的,VB6最大的问题是在AutoSize的控件上 ...
Form 的大小确实是缇,但是您没发现我给 JS 的方法用的是像素吗?
做网页经常用像素而不是缇。
不过 AutoSize 的控件确实会缩放错误,所以我几乎不用 AutoSize。
不过非常感谢您的指教! QZhi 发表于 2024-7-29 12:04
Form 的大小确实是缇,但是您没发现我给 JS 的方法用的是像素吗?
做网页经常用像素而不是缇。
是的,IE控件用像素也是会有这个问题,所以给IE控件使用的html和css中最好是用pt、em单位,而不是px。
页:
[1]