MiniBlink
Miniblink VIP

API 参考

Miniblink VIP 版本 API 列表

Miniblink VIP API 参考

初始化配置

mbSetMbDllPath

void mbSetMbDllPath(const wchar_t* dllPath)

设置mb.dll的完整路径。

参数说明:

  • dllPath: dll的完整路径(必须是绝对路径)

mbSetMbMainDllPath

void mbSetMbMainDllPath(const wchar_t* dllPath)

设置node.dll的完整路径。

参数说明:

  • dllPath: dll的完整路径(必须是绝对路径)

mbInit

void mbInit(const mbSettings* settings)

初始化整个mb环境。

重要: 必须在所有mb API调用之前执行,且后续API调用必须在同一线程中。

配置结构:

typedef struct {
    mbProxy proxy;
    unsigned int mask;
} mbSettings;

掩码选项:

  • WKE_SETTING_PROXY: 通过proxy设置代理
  • WKE_SETTING_PAINTCALLBACK_IN_OTHER_THREAD: 在渲染线程中执行paint回调,用于多线程上屏优化

页面控制

导航控制

mbStopLoading

void mbStopLoading(mbWebView webView)

停止页面加载。

mbReload

bool mbReload(mbWebView webView)

重新加载当前页面。

mbGoBack

bool mbGoBack(mbWebView webView)

页面后退。

mbGoForward

bool mbGoForward(mbWebView webView)

页面前进。

视图控制

mbResize

void mbResize(mbWebView webView, int w, int h)

调整页面尺寸。

说明:

  • 对于窗口模式,会同时调整真实窗口大小

mbGetHostHWND

HWND mbGetHostHWND(mbWebView webView)

获取WebView对应的窗口句柄。

编辑操作

mbEditorSelectAll

void mbEditorSelectAll(mbWebView webView)

执行全选操作。

mbEditorUnSelect

void mbEditorUnSelect(mbWebView webView)

取消选择。

mbEditorCopy

void mbEditorCopy(mbWebView webView)

复制选中内容。

mbEditorCut

void mbEditorCut(mbWebView webView)

剪切选中内容。

mbEditorDelete

void mbEditorDelete(mbWebView webView)

删除选中内容。

mbEditorUndo

void mbEditorUndo(mbWebView webView)

撤销操作。

mbEditorRedo

void mbEditorRedo(mbWebView webView)

重做操作。

Cookie管理

mbGetCookieW

const wchar_t* mbGetCookieW(mbWebView webView, mbGetCookieCallback callback, void* param)

异步获取页面Cookie。

说明:

  • Cookie信息将在回调函数中返回

mbSetCookie

void mbSetCookie(mbWebView webView, const utf8* url, const utf8* cookie)

设置页面Cookie。

注意: Cookie格式必须符合curl规范,例如:

PERSONALIZE=123;expires=Monday, 13-Jun-2022 03:04:55 GMT; domain=.fidelity.com; path=/; secure

mbVisitAllCookie

void mbVisitAllCookie(void* params, mbCookieVisitor visitor)

通过访问器遍历所有Cookie。

mbPerformCookieCommand

void mbPerformCookieCommand(mbCookieCommand command)

执行Cookie相关命令。

可用命令:

命令说明CURL对应操作
mbCookieCommandClearAllCookies清除所有CookieCURLOPT_COOKIELIST, "ALL"
mbCookieCommandClearSessionCookies清除会话CookieCURLOPT_COOKIELIST, "SESS"
mbCookieCommandFlushCookiesToFile保存Cookie到文件CURLOPT_COOKIELIST, "FLUSH"
mbCookieCommandReloadCookiesFromFile从文件加载CookieCURLOPT_COOKIELIST, "RELOAD"

注意: 此接口仅影响CURL设置,不会修改JavaScript中的内容

Cookie配置

void mbClearCookie(mbWebView webView)               // 清理所有页面的Cookie
void mbSetCookieEnabled(mbWebView webView, bool enable)  // 启用/禁用Cookie(仅影响blink)
void mbSetCookieJarPath(mbWebView webView, const WCHAR* path)  // 设置Cookie存储目录
void mbSetCookieJarFullPath(mbWebView webView, const WCHAR* path)  // 设置Cookie文件完整路径

存储管理

mbSetLocalStorageFullPath

void mbSetLocalStorageFullPath(mbWebView webView, const WCHAR* path)

设置Local Storage存储目录。

注意: 只能设置目录路径,不能设置文件路径

mbSetDiskCacheEnabled

void mbSetDiskCacheEnabled(mbWebView webView, bool enable)

启用/禁用磁盘缓存。

注意: 这是一个全局设置,webView参数当前未使用

事件处理

鼠标事件

mbFireMouseEvent

bool mbFireMouseEvent(mbWebView webView, unsigned int message, int x, int y, unsigned int flags)

发送鼠标事件。

参数说明:

  • message: Windows鼠标消息(如WM_MOUSELEAVE
  • flags: 可用标志:
    • MB_CONTROL
    • MB_SHIFT
    • MB_LBUTTON
    • MB_MBUTTON
    • MB_RBUTTON

mbFireMouseWheelEvent

bool mbFireMouseWheelEvent(mbWebView webView, int x, int y, int delta, unsigned int flags)

发送鼠标滚轮事件。

键盘事件

bool mbFireKeyUpEvent(mbWebView webView, unsigned int virtualKeyCode, unsigned int flags, bool systemKey)
bool mbFireKeyDownEvent(mbWebView webView, unsigned int virtualKeyCode, unsigned int flags, bool systemKey)
bool mbFireKeyPressEvent(mbWebView webView, unsigned int charCode, unsigned int flags, bool systemKey)

参数说明:

窗口消息

mbFireWindowsMessage

bool mbFireWindowsMessage(mbWebView webView, HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, LRESULT* result)

发送Windows消息。

说明:

  • 主要用于处理光标相关事件
  • 无窗口模式下需要手动发送光标消息

焦点控制

void mbSetFocus(mbWebView webView)    // 设置焦点
void mbKillFocus(mbWebView webView)   // 移除焦点

JavaScript交互

mbRunJS

void mbRunJS(mbWebView webView, mbWebFrameHandle frameId, const utf8* script, 
             BOOL isInClosure, mbRunJsCallback callback, void* param, void* unuse)

执行JavaScript代码。

说明:

  • 返回值通过callback获取
  • 返回mbValue封装了v8类型,可通过mbXXX接口获取详细信息

mbOnJsQuery

void mbOnJsQuery(mbWebView webView, mbJsQueryCallback callback, void* param)

注册JavaScript到Native的回调。

回调签名:

typedef void(*mbJsQueryCallback)(mbWebView webView, void* param, 
                                mbJsExecState es, int64_t queryId, 
                                int customMsg, const utf8* request)

JavaScript调用示例:

function onNative(customMsg, response) {
    console.log("on~~mbQuery:" + response);
}
window.mbQuery(0x123456, "test run", onNative);

Native响应:

mbResponseQuery(mbWebView webView, int64_t queryId, int customMsg, const utf8* response);

缩放控制

void mbSetZoomFactor(mbWebView webView, float factor)   // 设置缩放系数(默认1.0)
float mbGetZoomFactor(mbWebView webView)               // 获取当前缩放系数

事件回调

页面状态回调

// 标题变化通知
void mbOnTitleChanged(mbWebView webView, mbTitleChangedCallback callback, void* callbackParam)

// URL变化通知(包含导航状态)
void mbOnURLChanged(mbWebView webView, mbURLChangedCallback callback, void* callbackParam)

渲染回调

// DC方式更新
void mbOnPaintUpdated(mbWebView webView, mbPaintUpdatedCallback callback, void* callbackParam)

// Buffer方式更新(适用于游戏离屏渲染)
void mbOnPaintBitUpdated(mbWebView webView, mbPaintBitUpdatedCallback callback, void* callbackParam)

对话框回调

void mbOnAlertBox(mbWebView webView, mbAlertBoxCallback callback, void* callbackParam)
void mbOnConfirmBox(mbWebView webView, mbConfirmBoxCallback callback, void* callbackParam)
void mbOnPromptBox(mbWebView webView, mbPromptBoxCallback callback, void* callbackParam)

导航事件

mbOnNavigation

void mbOnNavigation(mbWebView webView, mbNavigationCallback callback, void* param)

网页开始浏览时触发回调。

回调签名:

typedef bool(*mbNavigationCallback)(mbWebView webView, void* param, 
                                  mbNavigationType navigationType, const utf8* url);

导航类型:

类型说明
MB_NAVIGATION_TYPE_LINKCLICK点击a标签触发
MB_NAVIGATION_TYPE_FORMSUBMITTE点击form触发
MB_NAVIGATION_TYPE_BACKFORWARD前进后退触发
MB_NAVIGATION_TYPE_RELOAD重新加载触发

注意: 回调返回true表示允许继续浏览,false表示阻止本次浏览。

mbOnCreateView

void mbOnCreateView(mbWebView webView, mbCreateViewCallback callback, void* param)

网页点击a标签创建新窗口时触发回调。

回调签名:

typedef mbWebView(*mbCreateViewCallback)(mbWebView webView, void* param, 
                                       mbNavigationType navigationType, 
                                       const mbString url, 
                                       const mbWindowFeatures* windowFeatures);

mbOnDocumentReady

void mbOnDocumentReady(mbWebView webView, mbDocumentReady2Callback callback, void* param)

页面DOM发出ready事件时回调。可以判断是否是主frame。

mbOnDownload

void mbOnDownload(mbWebView webView, mbDownloadCallback callback, void* param)

页面下载事件回调。点击某些链接触发下载时会调用。

mbOnDownloadInBlinkThread

void mbOnDownloadInBlinkThread(mbWebView webView, 
                              mbDownloadInBlinkThreadCallback callback, 
                              void* param)

同上,但回调提供更多参数且在非UI线程执行。可在回调中调用mbPopupDialogAndDownload弹出文件另存框并自动下载。

mbPopupDialogAndDownload

mbDownloadOpt mbPopupDialogAndDownload(mbWebView webView, void* param, 
                                      size_t contentLength, const char* url, 
                                      const char* mime, const char* disposition, 
                                      mbNetJob job, mbNetJobDataBind* dataBind, 
                                      void* unuse)

mbOnDownloadInBlinkThread的回调中调用。参数来自回调函数。

网络请求

mbOnLoadUrlBegin

void mbOnLoadUrlBegin(mbWebView webView, mbLoadUrlBeginCallback callback, void* callbackParam)

任何网络请求发起前会触发此回调。

回调签名:

typedef bool(*mbLoadUrlBeginCallback)(mbWebView webView, void* param, 
                                    const char *url, void *job)

重要说明:

  1. 如果对job设置了mbNetHookRequest,mb会缓存网络数据,并在请求结束后调用mbOnLoadUrlEnd回调。
  2. 未设置mbNetHookRequest则不会触发mbOnLoadUrlEnd回调。
  3. 回调返回true表示mb不处理此网络请求,false表示继续发送请求。
  4. 此接口在非UI线程执行,需要自行处理线程同步。

使用示例:

// Hook特定URL并替换为本地文件
bool handleLoadUrlBegin(mbWebView webView, void* param, const char* url, void* job) {
    if (0 != strstr(url, "http://baidu.com/a.js")) {
        mbNetSetMIMEType(job, "text/javascript");
        std::vector<char> buffer;
        readJsFile(L"c:\\b.js", &buffer);
        mbNetSetData(job, &buffer[0], buffer.size());
        return true;
    }
    return false;
}

// 获取网络数据后修改
bool handleLoadUrlBegin(mbWebView webView, void* param, const char* url, void* job) {
    if (0 != strstr(url, "http://baidu.com/a.js")) {
        mbNetHookRequest(job);
        return false;
    }
    return false;
}

void handleLoadUrlEnd(mbWebView webView, void* param, const char* url, 
                     void* job, void* buf, int len) {
    char code[] = "console.log('test')";
    mbNetSetData(job, code, sizeof(code));
}

mbOnLoadUrlEnd

void mbOnLoadUrlEnd(mbWebView webView, mbLoadUrlEndCallback callback, void* callbackParam)

配合mbOnLoadUrlBegin使用,在网络请求结束时触发。

mbNetSetHTTPHeaderField

void mbNetSetHTTPHeaderField(void* jobPtr, wchar_t* key, wchar_t* value, bool response)

mbOnLoadUrlBegin回调中设置HTTP请求头。response参数必须为false。

mbNetGetRawHttpHead

const mbSlist* mbNetGetRawHttpHead(mbNetJob jobPtr)

mbOnLoadUrlBegin回调中获取curl返回的原始请求头。返回C语言链表结构。

mbNetSetMIMEType

void mbNetSetMIMEType(void* jobPtr, char* type)

mbOnLoadUrlBegin回调中设置HTTP请求的MIME类型。

mbNetGetMIMEType

const char* mbNetGetMIMEType(void* jobPtr, mbString mime)

获取MIME类型,第二个参数可传nullptr。

mbNetSetData

void mbNetSetData(void* jobPtr, void* buf, int len)

mbOnLoadUrlEnd中设置hook后的缓存数据。

mbNetGetFavicon

int mbNetGetFavicon(mbWebView webView, mbOnNetGetFavicon callback, void* param)

获取网站favicon。必须在mbOnLoadingFinish回调中调用。

使用示例:

mbTempCallbackInfo* tempInfo = mbGetTempCallbackInfo(webView);
if (::mbIsMainFrame(webView, tempInfo->frame)) {
    ::mbNetGetFavicon(webView, HandleFaviconReceived, param);
}

mbNetHoldJobToAsynCommit

BOOL mbNetHoldJobToAsynCommit(void* jobPtr)

高级用法。在mbOnLoadUrlBegin回调中调用,用于异步处理请求。返回TRUE表示成功,可以后续调用mbNetContinueJob

mbNetGetRequestMethod

mbRequestType mbNetGetRequestMethod(void *jobPtr)

获取请求方法(GET/POST等)。

POST数据处理

// 获取POST数据
mbPostBodyElements* mbNetGetPostBody(void *jobPtr)

// 创建POST数据结构
mbPostBodyElements* mbNetCreatePostBodyElements(mbWebView webView, size_t length)

// 释放POST数据结构
void mbNetFreePostBodyElements(mbPostBodyElements* elements)

// 创建POST数据元素
mbPostBodyElement* mbNetCreatePostBodyElement(mbWebView webView)

// 释放POST数据元素
void mbNetFreePostBodyElement(mbPostBodyElement* element)

用于在mbOnLoadUrlBegin中处理POST请求数据。

JavaScript值转换

mbToDouble

double mbToDouble(mbExecState es, mbValue v)

将JavaScript值转换为浮点数。非数值类型返回0.0。

mbToString

const utf8* mbToString(mbExecState es, mbValue v)

将JavaScript值转换为字符串。非字符串类型返回空字符串。返回的字符串由mb自动管理,下一帧自动释放。

JavaScript上下文

mbOnDidCreateScriptContext

void mbOnDidCreateScriptContext(mbWebView webView, mbDidCreateScriptContextCallback callback, void* callbackParam)

JavaScript的v8执行环境被创建时触发此回调。每个frame创建时都会触发。

mbOnWillReleaseScriptContext

void mbOnWillReleaseScriptContext(mbWebView webView, mbWillReleaseScriptContextCallback callback, void* callbackParam)

每个frame的JavaScript的v8执行环境被关闭时触发此回调。

mbIsMainFrame

bool mbIsMainFrame(mbWebView webView, mbWebFrameHandle frameId)

判断frameId是否是主frame。

mbWebFrameGetMainFrame

mbWebFrameHandle mbWebFrameGetMainFrame(mbWebView webView)

获取主frame的句柄。

字符串处理

mbGetString

const utf8* mbGetString(const mbString s)

获取mbString结构体对应的字符串,utf8编码。

mbGetStringW

const wchar_t* mbGetStringW(const mbString string)

获取mbString结构体对应的字符串,utf16编码。

mbSetString

void mbSetString(mbString string, const utf8* str, size_t len)

设置mbString结构体对应的字符串,utf8编码。

mbDeleteString

void mbDeleteString(mbString str)

析构mbString。

窗口管理

mbCreateWebView

mbWebView mbCreateWebView()

创建一个webview,但不创建真窗口。一般用在离屏渲染(如游戏)中。

mbDestroyWebView

void mbDestroyWebView(mbWebView webView)

销毁webview,效果同mbDestroyWebWindow

mbCreateWebWindow

mbWebView mbCreateWebWindow(mbWindowType type, HWND parent, int x, int y, int width, int height)

创建一个带真实窗口的mbWebView。

窗口类型:

类型说明
WKE_WINDOW_TYPE_POPUP普通窗口
WKE_WINDOW_TYPE_TRANSPARENT透明窗口(通过layer window实现)
WKE_WINDOW_TYPE_CONTROL嵌入在父窗口里的子窗口(需设置parent)

mbOnClose

void mbOnClose(mbWebView webWindow, mbWindowClosingCallback callback, void* param)

真窗口模式下,收到WM_CLOSE消息时触发此回调。可通过返回false拒绝关闭窗口。

mbOnDestroy

void mbOnDestroy(mbWebView webWindow, mbWindowDestroyCallback callback, void* param)

窗口即将被销毁时触发回调。此操作无法取消。

mbShowWindow

void mbShowWindow(mbWebView webWindow, bool showFlag)

显示或隐藏窗口。

mbMoveToCenter

void mbMoveToCenter(mbWebView webWindow)

窗口在父窗口或屏幕里居中。

配置选项

mbSetProxy

void mbSetProxy(const mbProxy* proxy)

设置整个mb的代理。此设置全局生效。

mbSetMemoryCacheEnable

void mbSetMemoryCacheEnable(mbWebView webView, bool b)

开启内存缓存。网页的图片等会缓存在内存中。

注意: 关闭后内存使用会降低,但可能引起问题。如不熟悉建议保持开启。

mbSetNavigationToNewWindowEnable

void mbSetNavigationToNewWindowEnable(mbWebView webView, bool b)

关闭后,点击a标签将不会弹出新窗口,而是在本窗口跳转。

mbSetCspCheckEnable

void mbSetCspCheckEnable(mbWebView webView, bool b)

关闭后,跨域检查将被禁止,可以进行任何跨域操作(如跨域ajax、跨域设置iframe)。

mbSetNpapiPluginsEnabled

void mbSetNpapiPluginsEnabled(mbWebView webView, bool b)

开启/关闭npapi插件(如flash)。

mbSetHeadlessEnabled

void mbSetHeadlessEnabled(mbWebView webView, bool b)

开启无头模式。开启后不会渲染页面,提升网页性能。适用于爬虫等工具。

mbSetDebugConfig

void mbSetDebugConfig(mbWebView webView, const char* debugString, const char* param)

开启实验性选项。

可用选项:

选项说明参数示例
showDevTools开启开发者工具file:///c:/miniblink-release/front_end/inspector.html(utf8编码)
wakeMinInterval设置帧率(值越大帧率越低)10(默认值)
drawMinInterval设置帧率(值越大帧率越低)3(默认值)
antiAlias设置抗锯齿渲染1
minimumFontSize最小字体-
minimumLogicalFontSize最小逻辑字体-
defaultFontSize默认字体-
defaultFixedFontSize默认fixed字体-

窗口操作

mbSetHandle

void mbSetHandle(mbWebView webView, HWND wnd)

设置mbWebView对应的窗口句柄。仅在无窗口模式下可用。

mbSetHandleOffset

void mbSetHandleOffset(mbWebView webView, int x, int y)

设置无窗口模式下的绘制偏移。主要用于离屏模式,当绘制位置不在真窗口(0, 0)处时。

mbSetUserAgent

void mbSetUserAgent(mbWebView webView, const utf8* userAgent)

设置webview的User Agent。

mbLoadURL

void mbLoadURL(mbWebView webView, const utf8* url)

加载URL。必须是网络路径,如"http://qq.com/"。

mbLoadHtmlWithBaseUrl

void mbLoadHtmlWithBaseUrl(mbWebView webView, const utf8* html, const utf8* baseUrl)

加载一段HTML,可指定baseURL(相对路径的基准目录)。

On this page

Miniblink VIP API 参考初始化配置mbSetMbDllPathmbSetMbMainDllPathmbInit页面控制导航控制mbStopLoadingmbReloadmbGoBackmbGoForward视图控制mbResizembGetHostHWND编辑操作mbEditorSelectAllmbEditorUnSelectmbEditorCopymbEditorCutmbEditorDeletembEditorUndombEditorRedoCookie管理mbGetCookieWmbSetCookiembVisitAllCookiembPerformCookieCommandCookie配置存储管理mbSetLocalStorageFullPathmbSetDiskCacheEnabled事件处理鼠标事件mbFireMouseEventmbFireMouseWheelEvent键盘事件窗口消息mbFireWindowsMessage焦点控制JavaScript交互mbRunJSmbOnJsQuery缩放控制事件回调页面状态回调渲染回调对话框回调导航事件mbOnNavigationmbOnCreateViewmbOnDocumentReadymbOnDownloadmbOnDownloadInBlinkThreadmbPopupDialogAndDownload网络请求mbOnLoadUrlBeginmbOnLoadUrlEndmbNetSetHTTPHeaderFieldmbNetGetRawHttpHeadmbNetSetMIMETypembNetGetMIMETypembNetSetDatambNetGetFaviconmbNetHoldJobToAsynCommitmbNetGetRequestMethodPOST数据处理JavaScript值转换mbToDoublembToStringJavaScript上下文mbOnDidCreateScriptContextmbOnWillReleaseScriptContextmbIsMainFramembWebFrameGetMainFrame字符串处理mbGetStringmbGetStringWmbSetStringmbDeleteString窗口管理mbCreateWebViewmbDestroyWebViewmbCreateWebWindowmbOnClosembOnDestroymbShowWindowmbMoveToCenter配置选项mbSetProxymbSetMemoryCacheEnablembSetNavigationToNewWindowEnablembSetCspCheckEnablembSetNpapiPluginsEnabledmbSetHeadlessEnabledmbSetDebugConfig窗口操作mbSetHandlembSetHandleOffsetmbSetUserAgentmbLoadURLmbLoadHtmlWithBaseUrl