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 | 清除所有Cookie | CURLOPT_COOKIELIST, "ALL" |
mbCookieCommandClearSessionCookies | 清除会话Cookie | CURLOPT_COOKIELIST, "SESS" |
mbCookieCommandFlushCookiesToFile | 保存Cookie到文件 | CURLOPT_COOKIELIST, "FLUSH" |
mbCookieCommandReloadCookiesFromFile | 从文件加载Cookie | CURLOPT_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)
参数说明:
virtualKeyCode
: Virtual-Key Codesflags
:WKE_REPEAT
、WKE_EXTENDED
charCode
: WM_CHAR消息参数
窗口消息
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)
重要说明:
- 如果对job设置了
mbNetHookRequest
,mb会缓存网络数据,并在请求结束后调用mbOnLoadUrlEnd
回调。- 未设置
mbNetHookRequest
则不会触发mbOnLoadUrlEnd
回调。- 回调返回true表示mb不处理此网络请求,false表示继续发送请求。
- 此接口在非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(相对路径的基准目录)。