尧图网络科技 Logo 尧图网络科技
  • 首页
  • 关于我们
  • 建站服务
  • UI 设计
  • 案例展示
  • SEO 优化
  • 资讯中心
  • 联系我们

资讯详情

深度解读 · 专业分析

  • 首页
  • 资讯中心
  • /
  • vba里运行miniblink

最新资讯

  • 全部资讯
  • 行业动态
  • UI 设计
  • SEO 优化
  • 网站开发

vba里运行miniblink

📅 发布时间:2026/6/20 8:16:11 👁 浏览次数:
vba里运行miniblink

vba里运行miniblink

miniblink是一个开源的、单文件、且目前已知的最小的基于chromium的,浏览器控件。通过其导出的纯C接口,几行代码即可创建一个浏览器控件。

我扫了下下最新的mb132版本,粗略地看了下mb的头文件,看样子是stdcall调用约定,偷闲翻译了一个简单的小例子。测试了下在64位的excel上跑起来了。我这只是开个头,加载网页以及事件回调。给有这方面有需求的人一个小小的参考。下面的代码放在模块里即可,miniblink 132的dll文件和excel文件放一起即可。

Option Explicit' prepared by fxl447098457
'
#If Win64 Then
Private Declare PtrSafe Function mbInit Lib "mb132_x64.dll" (ByVal settings As LongPtr) As Long
Private Declare PtrSafe Function mbCreateWebWindow Lib "mb132_x64.dll" (ByVal windowType As Long, ByVal parent As LongPtr, ByVal X As Long, ByVal Y As Long, ByVal width As Long, ByVal height As Long) As LongPtr
Private Declare PtrSafe Function mbShowWindow Lib "mb132_x64.dll" (ByVal view As LongPtr, ByVal show As Long) As Long
Private Declare PtrSafe Function mbMoveToCenter Lib "mb132_x64.dll" (ByVal view As LongPtr) As Long
Private Declare PtrSafe Function mbLoadURL Lib "mb132_x64.dll" (ByVal view As LongPtr, ByVal url As String) As Long
'Private Declare PtrSafe Sub mbRunMessageLoop Lib "mb132_x64.dll" ()  ' Might block VBA
Private Declare PtrSafe Sub mbUninit Lib "mb132_x64.dll" ()
Private Declare PtrSafe Function mbOnDocumentReady Lib "mb132_x64.dll" (ByVal webView As LongPtr, ByVal callback As LongPtr, ByVal param As LongPtr) As Long
Private Declare PtrSafe Function mbIsMainFrame Lib "mb132_x64.dll" (ByVal webView As LongPtr, ByVal frameId As LongPtr) As Long
Private Declare PtrSafe Function mbRunJs Lib "mb132_x64.dll" (ByVal webView As LongPtr, ByVal frameId As LongPtr, ByVal script As String, ByVal isEval As Long, _ByVal callback As LongPtr, ByVal param As LongPtr, ByVal flags As Long) As Long
' Optional: For better control, declare mbDestroyWebWindow if needed
Private Declare PtrSafe Function mbDestroyWebWindow Lib "mb132_x64.dll" (ByVal view As LongPtr) As Long
#Else#If VBA7 = 0 Thenenum Longptr[_]End Enum#End If
Private Declare Function mbInit Lib "mb132_x32.dll" (ByVal settings As LongPtr) As Long
Private Declare Function mbCreateWebWindow Lib "mb132_x32.dll" (ByVal windowType As Long, ByVal parent As LongPtr, ByVal x As Long, ByVal y As Long, ByVal width As Long, ByVal height As Long) As LongPtr
Private Declare Function mbShowWindow Lib "mb132_x32.dll" (ByVal view As LongPtr, ByVal show As Long) As Long
Private Declare Function mbMoveToCenter Lib "mb132_x32.dll" (ByVal view As LongPtr) As Long
Private Declare Function mbLoadURL Lib "mb132_x32.dll" (ByVal view As LongPtr, ByVal url As String) As Long
'Private Declare sub mbRunMessageLoop Lib "mb132_x32.dll" ()  ' Might block VBA
Private Declare Sub mbUninit Lib "mb132_x32.dll" ()
Private Declare Function mbOnDocumentReady Lib "mb132_x32.dll" (ByVal webView As LongPtr, ByVal callback As LongPtr, ByVal param As LongPtr) As Long
Private Declare Function mbIsMainFrame Lib "mb132_x32.dll" (ByVal webView As LongPtr, ByVal frameId As LongPtr) As Long
Private Declare Function mbRunJs Lib "mb132_x32.dll" (ByVal webView As LongPtr, ByVal frameId As LongPtr, ByVal script As String, ByVal isEval As Long, _ByVal callback As LongPtr, ByVal param As LongPtr, ByVal flags As Long) As Long
' Optional: For better control, declare mbDestroyWebWindow if needed
Private Declare Function mbDestroyWebWindow Lib "mb132_x32.dll" (ByVal view As LongPtr) As Long
#End If' --- Define Constants ---
Private Const MB_WINDOW_TYPE_POPUP As Long = 1 ' Adjust if the actual value differs
Private Const MB_WINDOW_TYPE_CONTROL As Long = 3
' --- Main Subroutine ---Sub CreateMiniblinkWindow()Dim mbView As LongPtrDim result As LongDim url As StringChDrive ThisWorkbook.PathChDir ThisWorkbook.Path' --- 1. Initialize Miniblink (with NULL settings for defaults) ---' Pass 0 (NULL pointer) for settings. If you need specific settings,' passing a complex struct from VBA is significantly more complex.result = mbInit(0&)' --- 2. Create the Web Window ---' Parameters: Type, Parent (0 = no parent), X, Y, Width, HeightmbView = mbCreateWebWindow(MB_WINDOW_TYPE_CONTROL, 0, 0, 0, 800, 600)If mbView = 0 ThenMsgBox "Failed to create Miniblink window."mbUninit ' Clean upExit SubEnd If' --- 3. Show and Position the Window ---result = mbShowWindow(mbView, 1) ' 1 = TRUEIf result <> 0 ThenMsgBox "Failed to show Miniblink window. Error code: " & result' Consider calling mbDestroyWebWindow(mbView) and mbUninit here tooEnd Ifresult = mbMoveToCenter(mbView)' --- 4. Load the URL ---url = "https://miniblink.net/views/doc/index.html"' Note: mbLoadURL likely expects a null-terminated string.' VBA strings are usually compatible, but passing ByRef (default for strings)' or ByVal StrPtr(url) might be needed depending on the DLL's expectation.' Passing ByVal url directly is common.result = mbLoadURL(mbView, url)If result <> 0 Then' 设置 Document Ready 回调mbOnDocumentReady mbView, AddressOf OnDocumentReadyCallback, 0End If' --- 5. Message Loop ---' WARNING: mbRunMessageLoop is typically a blocking call that waits' for window messages. This will freeze the VBA editor/UI until' the miniblink window is closed externally or the loop exits somehow.' This might not be desirable in an interactive VBA environment.' Consider alternatives if responsiveness is needed.'mbRunMessageLoop' --- Alternative to mbRunMessageLoop (Basic) ---' VBA itself runs a message loop. Sometimes, just creating and showing' the window is enough for it to be interactive, depending on how' miniblink integrates. However, this is less reliable than a proper loop.' Leaving the Sub ends VBA's execution path, but the window might persist' if the DLL manages its own thread/window lifecycle.' A callback mechanism (like mbOnDestroy) is usually better for cleanup.' --- 6. Uninitialize (Ideally called when done) ---' Because mbRunMessageLoop blocks, this line usually won't execute' until the loop exits. If using an alternative approach,' you need a way to trigger this (e.g., via a callback or another macro).mbUninit
End Sub'evant callback'void MB_CALL_TYPE onDocumentReady(mbWebView webView, void* param, mbWebFrameHandle frameId)
'{
'    if (mbIsMainFrame(webView, frameId)) {
'        mbRunJs(webView, frameId, "alert(1);", true, nullptr, nullptr, nullptr);
'    }
'}'callback  mbOnDocumentReadySub OnDocumentReadyCallback(ByVal webView As LongPtr, ByVal param As LongPtr, ByVal frameId As LongPtr)Dim isMain As LongDim result As Long' check is mainframeisMain = mbIsMainFrame(webView, frameId)If isMain <> 0 Then ' mbIsMainFrame' ready to run JavaScript' param: webView, frameId, script, isEval (True), callback (null), callbackParam (null), flags (0)mbRunJs webView, frameId, "alert(1);", 1, 0, 0, 0End IfEnd Sub

 运行结果:
QQ20250920-214612

 

相关新闻

Android Studio无线调试手表App

Android Studio无线调试手表App

2026/6/18 21:01:06 查看详情
basic - segment tree

basic - segment tree

2026/6/19 20:11:45 查看详情
linux kernel synchronization 1

linux kernel synchronization 1

2026/6/11 21:34:18 查看详情
UVDoc:文档图像矫正的突破性解决方案,OCR识别准确率提升40%

UVDoc:文档图像矫正的突破性解决方案,OCR识别准确率提升40%

2026/6/20 8:13:37 查看详情
深入解析MC68HC908MR24的SPI与SCI寄存器配置与调试实践

深入解析MC68HC908MR24的SPI与SCI寄存器配置与调试实践

2026/6/20 8:13:40 查看详情
MC9RS08KA2复位与中断机制解析:构建嵌入式系统可靠性的基石

MC9RS08KA2复位与中断机制解析:构建嵌入式系统可靠性的基石

2026/6/20 8:13:40 查看详情
20G高压锅炉管选购指南:靠谱服务商天辰伟业 - mypinpai

20G高压锅炉管选购指南:靠谱服务商天辰伟业 - mypinpai

2026/6/20 8:11:39 查看详情
UE5-MCP技术解密:如何用AI原生架构重构虚幻引擎5开发范式

UE5-MCP技术解密:如何用AI原生架构重构虚幻引擎5开发范式

2026/6/20 8:11:39 查看详情
Vue Json Pretty:5分钟构建专业JSON可视化界面的终极方案

Vue Json Pretty:5分钟构建专业JSON可视化界面的终极方案

2026/6/20 8:11:39 查看详情
团队博客 5:Sprint 3——收官与优化

团队博客 5:Sprint 3——收官与优化

2026/6/20 0:00:19 查看详情
3分钟掌握微信语音转换:Silk v3解码器完整使用指南

3分钟掌握微信语音转换:Silk v3解码器完整使用指南

2026/6/20 0:01:25 查看详情
VAC进程监控模块完全解析:3种扫描类型与虚拟方法表技术揭秘

VAC进程监控模块完全解析:3种扫描类型与虚拟方法表技术揭秘

2026/6/20 0:01:25 查看详情
从Landsat到高分系列:手把手教你选择适合自己项目的遥感卫星数据

从Landsat到高分系列:手把手教你选择适合自己项目的遥感卫星数据

2026/6/20 3:05:19 查看详情
福州空调维修上门加氟移机空调不制冷、推荐本地老牌鑫盛达、冷顺安 - 我叫一

福州空调维修上门加氟移机空调不制冷、推荐本地老牌鑫盛达、冷顺安 - 我叫一

2026/6/20 4:00:16 查看详情
嵌入式调试器组件化界面与拖拽交互技术详解

嵌入式调试器组件化界面与拖拽交互技术详解

2026/6/20 2:29:50 查看详情
YOLOv11涨点改进| CVPR 2026 | 独家创新首发、特征融合改进篇| 引入CMGF 引导特征融合机制,实现对不同模态特征的自适应增强与高效融合,助力多模态目标检测,小目标检测或分割有效涨点

YOLOv11涨点改进| CVPR 2026 | 独家创新首发、特征融合改进篇| 引入CMGF 引导特征融合机制,实现对不同模态特征的自适应增强与高效融合,助力多模态目标检测,小目标检测或分割有效涨点

2026/6/19 22:53:17 查看详情
E-E-A-T 成第一权重:2027 年无经验内容将被彻底淘汰

E-E-A-T 成第一权重:2027 年无经验内容将被彻底淘汰

2026/6/20 4:40:29 查看详情
深圳福田园岭老小区搬家公司推荐 经验足师傅高效搬运攻略 - 从来都是英雄出少年

深圳福田园岭老小区搬家公司推荐 经验足师傅高效搬运攻略 - 从来都是英雄出少年

2026/6/18 22:29:04 查看详情

关于尧图

立足北京本地的一站式网站建设服务与设计教学平台,深耕企业网站定制开发、全网 SEO 优化及网络推广服务。

快速链接

  • 关于我们
  • 建站服务
  • 案例展示
  • 资讯中心

服务项目

  • 企业官网定制
  • UI 界面设计
  • SEO 优化推广
  • 移动端适配

联系方式

电话:400-XXX-XXXX

邮箱:info@zskr.cn

地址:北京市朝阳区 XXX 路 XX 号

© 2026 尧图网络科技 版权所有 | 京 ICP 备 XXXXXXXX 号