void mbSetMbDllPath(const wchar_t* dllPath)
设置mb.dll的全路径+文件名
参数:
dllPath:dll的全路径,注意是全路径
void mbSetMbMainDllPath(const wchar_t* dllPath)
设置node.dll的全路径+文件名
参数:
dllPath:dll的全路径,注意是全路径
void mbInit(const mbSettings* settings)
初始化整个mb。此句必须在所有mb api前最先调用。并且所有mb api必须和调用mbInit的线程为同个线程
参数:
typedef struct { mbProxy proxy; unsigned int mask; } mbSettings;
mask可以取:
WKE_SETTING_PROXY:效果和mbSetProxy一样,通过proxy设置
WKE_SETTING_PAINTCALLBACK_IN_OTHER_THREAD:这是个高级用法,开启时,on paint回调会在另外个线程(其实就是渲染线程)。
这个是用来实现多线程上屏功能,性能更快。
void mbStopLoading(mbWebView webView)
停止加载页面
参数:略
bool mbReload(mbWebView webView)
重新加载页面
参数:略
void mbResize(mbWebView webView, int w, int h)
重新设置页面的宽高。如果webView是带窗口模式的,会设置真窗口的宽高。
参数:略
HWND mbGetHostHWND(mbWebView webView)
获取webveiw对应的窗口句柄。
参数:略
bool mbGoBack(mbWebView webView)
强制让页面后退
参数:略
bool mbGoForward(mbWebView webView)
略
参数:略
void mbEditorSelectAll(mbWebView webView)
给webview发送全选命令
参数:略
void mbEditorUnSelect(mbWebView webView)
略
参数:略
void mbEditorCopy(mbWebView webView)
拷贝页面里被选中的字符串
参数:略
void mbEditorCut(mbWebView webView)
略
参数:略
void mbEditorDelete(mbWebView webView)
略
参数:略
void mbEditorUndo(mbWebView webView)
略
参数:略
void mbEditorRedo(mbWebView webView)
略
参数:略
const wchar_t * mbGetCookieW(mbWebView webView, mbGetCookieCallback callback, void* param)
获取页面的cookie,得到的cookie将在callback里返回。这个过程是异步的
参数:略
void mbSetCookie(mbWebView webView, const utf8* url, const utf8* cookie)
设置页面cookie。
参数:略
void mbVisitAllCookie(void* params, mbCookieVisitor visitor)
通过访问器visitor访问所有cookie。
参数:
visitor:访问器。
void mbPerformCookieCommand(mbCookieCommand command)
通过设置mb内置的curl来操作cookie。
参数:
command:
mbCookieCommandClearAllCookies: 内部实际执行了curl_easy_setopt(curl, CURLOPT_COOKIELIST, "ALL");
mbCookieCommandClearSessionCookies: curl_easy_setopt(curl, CURLOPT_COOKIELIST, "SESS");
mbCookieCommandFlushCookiesToFile: curl_easy_setopt(curl, CURLOPT_COOKIELIST, "FLUSH");
mbCookieCommandReloadCookiesFromFile: curl_easy_setopt(curl, CURLOPT_COOKIELIST, "RELOAD");
void mbClearCookie(mbWebView webView)
清理cookie。目前只支持清理所有页面的cookie。
参数:无
void mbSetCookieEnabled(mbWebView webView, bool enable)
开启或关闭cookie
参数:略
void mbSetCookieJarPath(mbWebView webView, const WCHAR* path)
设置cookie的本地文件目录。默认是当前目录。cookies存在当前目录的“cookie.dat”里
参数:略
void mbSetCookieJarFullPath(mbWebView webView, const WCHAR* path)
设置cookie的全路径+文件名,如“c:\mb\cookie.dat”
参数:略
void mbSetLocalStorageFullPath(mbWebView webView, const WCHAR* path)
设置local storage的全路径。如“c:\mb\LocalStorage\”
参数:略
void mbSetDiskCacheEnabled(mbWebView webView, bool enable)
开启或关闭硬盘本地缓存
参数:略
bool mbFireMouseEvent(mbWebView webView, unsigned int message, int x, int y, unsigned int flags)
向mb发送鼠标消息
参数:
message:可取WM_MOUSELEAVE等Windows相关鼠标消息
x、y:坐标
flags:可取值有MB_CONTROL、MB_SHIFT、MB_LBUTTON、MB_MBUTTON、MB_RBUTTON,可通过“或”操作并联。
bool mbFireContextMenuEvent(mbWebView webView, int x, int y, unsigned int flags)
向mb发送菜单消息(未实现)
参数:略
bool mbFireMouseWheelEvent(mbWebView webView, int x, int y, int delta, unsigned int flags)
向mb发送滚轮消息,用法和参数类似mbFireMouseEvent。
参数:略
bool mbFireKeyUpEvent(mbWebView webView, unsigned int virtualKeyCode, unsigned int flags, bool systemKey)
向mb发送WM_KEYUP消息,
参数:
virtualKeyCode:见https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
flags:可取值有WKE_REPEAT、WKE_EXTENDED,可通过“或”操作并联。
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)
略
参数:
charCode:WM_CHAR消息的The character code of the key.见https://msdn.microsoft.com/en-us/library/windows/desktop/ms646276(v=vs.85).aspx
bool mbFireWindowsMessage(mbWebView webView, HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, LRESULT* result)
向mb发送任意windows消息。不过目前mb主要用来处理光标相关。mb在无窗口模式下,要响应光标事件,需要通过本函数手动发送光标消息
参数:略
void mbSetFocus(mbWebView webView)
设置webview是焦点态。如果webveiw关联了窗口,窗口也会有焦点
参数:略
void mbKillFocus(mbWebView webView)
略
参数:略
void mbRunJS(mbWebView webView, mbWebFrameHandle frameId, const utf8* script, BOOL isInClosure, mbRunJsCallback callback, void* param, void* unuse)
运行一段js。返回js的值mbValue在callback中获取。mbValue是个封装了内部v8各种类型的类,如果需要获取详细信息,有mbXXX相关接口可以调用。见下述。
参数:略
void mbOnJsQuery(mbWebView webView, mbJsQueryCallback callback, void* param)
注册js通知native的回调。
参数:回调:typedef void(* mbJsQueryCallback)(mbWebView webView, void* param, mbJsExecState es, int64_t queryId, int customMsg, const utf8* request)
void mbSetZoomFactor(mbWebView webView, float factor)
设置页面缩放系数,默认是1
参数:略
float mbGetZoomFactor(mbWebView webView)
略
参数:略
void mbOnTitleChanged(mbWebView webView, mbTitleChangedCallback callback, void* callbackParam)
设置标题变化的通知回调
参数:typedef void(*mbTitleChangedCallback)(mbWebView webView, void* param, const utf8* title);
title:标题的字符串封装。mbString怎么用,见相关接口。
param:通过mbOnTitleChanged的callbackParam设置
void mbOnURLChanged(mbWebView webView, mbURLChangedCallback callback, void* callbackParam)
url改变回调。注意回调中还返回了前面是否可以前进后退相关信息
参数:typedef void(*mbURLChangedCallback)(mbWebView webView, void* param, const utf8* url, bool canGoBack, bool canGoForward)
void mbOnPaintUpdated(mbWebView webView, mbPaintUpdatedCallback callback, void* callbackParam)
页面有任何需要刷新的地方,将调用此回调
参数:typedef void(*mbPaintUpdatedCallback)(mbWebView webView, void* param, const HDC hdc, int x, int y, int cx, int cy)
x、y、cx、cy表示刷新的区域矩形
void mbOnPaintBitUpdated(mbWebView webView, mbPaintBitUpdatedCallback callback, void* callbackParam)
同上。不同的是回调过来的是填充好像素的buffer,而不是DC。方便嵌入到游戏中做离屏渲染
参数:略
void mbOnAlertBox(mbWebView webView, mbAlertBoxCallback callback, void* callbackParam)
网页调用alert会走到这个接口填入的回调
参数:略
void mbOnConfirmBox(mbWebView webView, mbConfirmBoxCallback callback, void* callbackParam)
略
参数:略
void mbOnPromptBox(mbWebView webView, mbPromptBoxCallback callback, void* callbackParam)
略
参数:略
void mbOnNavigation(mbWebView webView, mbNavigationCallback callback, void* param)
网页开始浏览将触发回调
参数:typedef bool(*mbNavigationCallback)(mbWebView webView, void* param, mbNavigationType navigationType, const utf8* url);
mbNavigationType: 表示浏览触发的原因。可以取的值有:
MB_NAVIGATION_TYPE_LINKCLICK:点击a标签触发
MB_NAVIGATION_TYPE_FORMSUBMITTE:点击form触发
MB_NAVIGATION_TYPE_BACKFORWARD:前进后退触发
MB_NAVIGATION_TYPE_RELOAD:重新加载触发
void mbOnCreateView(mbWebView webView, mbCreateViewCallback callback, void* param)
网页点击a标签创建新窗口时将触发回调。注意此接口
参数:typedef mbWebView(*mbCreateViewCallback)(mbWebView webView, void* param, mbNavigationType navigationType, const mbString url, const mbWindowFeatures* windowFeatures);
void mbOnDocumentReady(mbWebView webView, mbDocumentReady2Callback callback, void* param)
同上。页面DOM发出ready事件时回调。可以判断是否是主frame
参数:略
void mbOnDownload(mbWebView webView, mbDownloadCallback callback, void* param)
页面下载事件回调。点击某些链接,触发下载会调用
参数:略
void mbOnDownloadInBlinkThread(mbWebView webView, mbDownloadInBlinkThreadCallback callback, void* param)
同上,但回调提供的参数更多。另外回调是在非UI线程。此外可在回调中调用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的回调中调用。mbPopupDialogAndDownload的参数来自mbOnDownloadInBlinkThread的回调
参数:略
void mbNetOnResponse(mbWebView webView, mbNetResponseCallback callback, void* param)
一个网络请求发送后,收到服务器response触发回调
参数:略
void mbOnConsole(mbWebView webView, mbConsoleCallback callback, void* param)
网页调用console触发
参数:略
void mbOnLoadUrlBegin(mbWebView webView, mbLoadUrlBeginCallback callback, void* callbackParam)
任何网络请求发起前会触发此回调
参数:typedef bool(*mbLoadUrlBeginCallback)(mbWebView webView, void* param, const char *url, void *job)
void mbOnLoadUrlEnd(mbWebView webView, mbLoadUrlEndCallback callback, void* callbackParam)
见mbOnLoadUrlBegin的描述
参数:略
void mbOnDidCreateScriptContext(mbWebView webView, mbDidCreateScriptContextCallback callback, void* callbackParam)
javascript的v8执行环境被创建时触发此回调
参数:略
void mbOnWillReleaseScriptContext(mbWebView webView, mbWillReleaseScriptContextCallback callback, void* callbackParam)
每个frame的javascript的v8执行环境被关闭时触发此回调
参数:略
bool mbIsMainFrame(mbWebView webView, mbWebFrameHandle frameId)
判断frameId是否是主frame
参数:略
mbWebFrameHandle mbWebFrameGetMainFrame(mbWebView webView)
获取主frame的句柄
参数:略
const utf8* mbGetString(const mbString s)
获取mbString结构体对应的字符串,utf8编码
参数:略
const wchar_t* mbGetStringW(const mbString string)const wchar_t* mbGetStringW(const mbString string)
获取mbString结构体对应的字符串,utf16编码
参数:略
void mbSetString(mbString string, const utf8* str, size_t len)
设置mbString结构体对应的字符串,utf8编码
参数:略
void mbDeleteString(mbString str)
析构这个mbString
参数:略
mbWebView mbCreateWebView()
创建一个webview,但不创建真窗口。一般用在离屏渲染里,如游戏
参数:略
void mbDestroyWebView(mbWebView webView)
效果同mbDestroyWebWindow
参数:略
mbWebView mbCreateWebWindow(mbWindowType type, HWND parent, int x, int y, int width, int height)
创建一个带真实窗口的mbWebView
参数:mbWindowType
WKE_WINDOW_TYPE_POPUP: 普通窗口
WKE_WINDOW_TYPE_TRANSPARENT:透明窗口。mb内部通过layer window实现
WKE_WINDOW_TYPE_CONTROL: 嵌入在父窗口里的子窗口。此时parent需要被设置
void mbOnClose(mbWebView webWindow, mbWindowClosingCallback callback, void* param)
mbWebView如果是真窗口模式,则在收到WM_CLODE消息时触发此回调。可以通过在回调中返回false拒绝关闭窗口
参数:略
void mbOnDestroy(mbWebView webWindow, mbWindowDestroyCallback callback, void* param)
窗口即将被销毁时触发回调。不像mbOnClose,这个操作无法取消
参数:略
void mbShowWindow(mbWebView webWindow, bool showFlag)
略
参数:略
void mbMoveToCenter(mbWebView webWindow)
窗口在父窗口或屏幕里居中
参数:略
void mbSetProxy(const mbProxy* proxy)
设置整个mb的代码。此句是全局生效
参数:略
void mbSetMemoryCacheEnable(mbWebView webView, bool b)
开启内存缓存。网页的图片等都会在内存缓存里。关闭后,内存使用会降低一些,但容易引起一些问题,如果不懂怎么用,最好别开
参数:略
void mbSetNavigationToNewWindowEnable(mbWebView webView, bool b)
关闭后,点a标签将不会弹出新窗口,而是在本窗口跳转
参数:略
void mbSetCspCheckEnable(mbWebView webView, bool b)
关闭后,跨域检查将被禁止,此时可以做任何跨域操作,如跨域ajax,跨域设置iframe
参数:略
void mbSetNpapiPluginsEnabled(mbWebView webView, bool b)
开启关闭npapi插件,如flash
参数:略
void mbSetHeadlessEnabled(mbWebView webView, bool b)
开启无头模式。开启后,将不会渲染页面,提升了网页性能。此功能方便用来实现一些爬虫,或者刷单工具
参数:略
void mbSetDebugConfig(mbWebView webView, const char* debugString, const char* param)
开启一些实验性选项。
参数:
debugString:
"showDevTools" | 开启开发者工具,此时param要填写开发者工具的资源路径,如file:///c:/miniblink-release/front_end/inspector.html。注意param此时必须是utf8编码 |
"wakeMinInterval" | 设置帧率,默认值是10,值越大帧率越低 |
"drawMinInterval" | 设置帧率,默认值是3,值越大帧率越低 |
"antiAlias" | 设置抗锯齿渲染。param必须设置为"1" |
"minimumFontSize" | 最小字体 |
"minimumLogicalFontSize" | 最小逻辑字体 |
"defaultFontSize" | 默认字体 |
"defaultFixedFontSize" | 默认fixed字体 |
void mbSetHandle(mbWebView webView, HWND wnd)
设置mbWebView对应的窗口句柄。
参数:略
void mbSetHandleOffset(mbWebView webView, int x, int y)
设置无窗口模式下的绘制偏移。在某些情况下(主要是离屏模式),绘制的地方不在真窗口的(0, 0)处,就需要手动调用此接口
参数:略
void mbSetUserAgent(mbWebView webView, const utf8* userAgent)
设置webview的UA
参数:略
void mbLoadURL(mbWebView webView, const utf8* url)
加载url。url必须是网络路径,如"http://qq.com/"
参数:略
void mbLoadHtmlWithBaseUrl(mbWebView webView, const utf8* html, const utf8* baseUrl)
加载一段html,但可以指定baseURL,也就是相对于哪个目录的url
参数:略
void mbNetSetHTTPHeaderField(void* jobPtr, wchar_t* key, wchar_t* value, bool response)
在mbOnLoadUrlBegin回调里调用,表示设置http请求(或者file:///协议)的 http header field。response一直要被设置成false
参数:略
const mbSlist* mbNetGetRawHttpHead(mbNetJob jobPtr)
在mbOnLoadUrlBegin回调里调用,获取curl返回的原生请求头
返回值:const mbSlist*,是一个C语言链表,详情看头文件
void mbNetSetMIMEType(void* jobPtr, char* type)
在mbOnLoadUrlBegin回调里调用,表示设置http请求的MIME type
参数:略
const char* mbNetGetMIMEType(void* jobPtr, mbString mime)
略
参数:第2个参数可以传nullptr
void mbNetSetData(void* jobPtr, void* buf, int len)
在mbOnLoadUrlEnd里被调用,表示设置hook后缓存的数据
参数:略
int mbNetGetFavicon(mbWebView webView, mbOnNetGetFavicon callback, void* param)
获取favicon。
参数:略
BOOL mbNetHoldJobToAsynCommit(void* jobPtr)
高级用法。在mbOnLoadUrlBegin回调里调用。
有时候,mbOnLoadUrlBegin里拦截到一个请求后,不能马上判断出结果。此时可以调用本接口,然后在
异步的某个时刻,调用mbNetContinueJob来让此请求继续进行
参数:略
返回值:TRUE代表成功,FALSE代表调用失败,不能再调用mbNetContinueJob了
mbRequestType mbNetGetRequestMethod(void *jobPtr)
获取此请求的method,如post还是get
参数:略
mbPostBodyElements* mbNetGetPostBody(void *jobPtr)
获取此请求中的post数据。只有当请求是post时才有效果
参数:略
mbPostBodyElements* mbNetCreatePostBodyElements(mbWebView webView, size_t length)
略
参数:略
void mbNetFreePostBodyElements(mbPostBodyElements* elements)
略
参数:略
void mbNetFreePostBodyElements(mbPostBodyElements* elements)
略
参数:略
mbPostBodyElement* mbNetCreatePostBodyElement(mbWebView webView)
略
参数:略
void mbNetFreePostBodyElement(mbPostBodyElement* element)
这四个接口要结合起来使用。
当mbOnLoadUrlBegin里判断是post时,可以通过mbNetCreatePostBodyElements来创建一个新的post数据包。
然后mbNetFreePostBodyElements来释放原post数据。
参数:略
double mbToDouble(mbExecState es, mbValue v)
如果v是个浮点形,返回相应值。如果是其他类型,返回0.0(这里注意)
参数:略
const utf8* mbToString(mbExecState es, mbValue v)
如果v是个字符串,返回相应值。如果是其他类型,返回L""(这里注意)
另外,返回的字符串不需要外部释放。mb会在下一帧自动释放
参数:略