用 VC++ 调用最小的浏览器内核创建一个简易的浏览器

文章介绍

目前最小的浏览器内核是龙泉寺扫地僧基于Chromium二次封装后,体积比原来缩小十几倍的Miniblink,本文章将介绍如何使用神僧封装的Miniblink开发一款非常实用并且体积非常小的浏览器,Miniblink编译输出的是C语言接口,可以在不同的语言间导入调用,甚至包括国内著名程序语言“易语言”,只需要用到不多的接口即可创建一个非常流畅的浏览器。

内核下载

官方主页:https://miniblink.net/
内核最新版本下载:https://github.com/weolar/miniblink49/releases
本文章所使用版本:下载链接
内核源码:https://github.com/weolar/miniblink49

教程说明

本文章使用VisualStudio里提供的VC++来进行演示,使用Miniblink不需要用到过多的操作,只要把下载好压缩包里的头文件wke.h复制到我们的工程目录下,在程序内部导入此头文件即可调用到Miniblink提供的API函数,因为Miniblink是以动态链接库的方式调用的,在我们运行程序之前还需要复制压缩包里的node.dll到程序项目生成目录下,wke.h头文件里会自动导入此库。

需要注意的是调用Miniblink提供的接口时,绝对不能夸线程调用的,我们在窗口消息线程调用即可,如果一定要在其他线程调用,建议使用发送窗口消息(SendMessage,PostMessage)形式来进行调用即可,这不是Miniblink内核本身的问题,算是一种线程安全的基本常识吧。

用Miniblink创建一个简易的浏览器非常简单,如果用到的功能单一,只是打开一个显示页面,用到以下几个API即可。

API 说明
wkeInitialize 导入动态链接库node.dll,初始化Miniblink的接口
wkeCreateWebWindow 创建浏览器窗口,返回可操作该页面的接口指针
wkeOnWindowDestroy 绑定浏览器窗口的销毁事件,用于处理程序的退出
wkeGetWindowHandle 通过操作指针(wkeWebView)来获取创建后的窗口句柄
wkeMoveToCenter 把浏览器窗口移动到屏幕中心的位置
wkeShowWindow 显示或隐藏创建后的浏览器窗口
wkeLoadURL 让浏览器窗口视图加载指定页面地址

这里只介绍几个常用到的API,如果想知道更多其他的东西可以到官方页面查看更多API说明信息

我们先用VisualStudio创建一个空的项目,项目名称为mb_simple_demo,位置可以选择自己常用的目录下即可。
用 VC++ 调用最小的浏览器内核创建一个简易的浏览器_第1张图片
项目创建完成后,因为我们的浏览器需要用到窗口界面,所以需要把我们的项目配置里的配置属性->链接器->系统->子系统修改成窗口属性,
用 VC++ 调用最小的浏览器内核创建一个简易的浏览器_第2张图片
做完以上步骤后我们就可以开始创建一个非常简单的浏览器了,在“源文件”筛选器下创建一个C++源码文件main.cpp
用 VC++ 调用最小的浏览器内核创建一个简易的浏览器_第3张图片
接下来源码部分非常简单,几十行代码即可完成创建了,是不是很方便呢?

main.cpp

//在下载好的Miniblink压缩包里可以找到此头文件,把其复制到我们的工程源码目录下即可
//复制完成后,再把压缩文件下的node.dll复制到项目生成目录,Miniblink开发环境便完成搭建
#include "wke.h"

wkeWebView	G_WebView = NULL;		//Miniblink浏览器视图指针
HWND		G_WindHandle = NULL;	//浏览器窗口的窗口句柄

//消息循环分发
void MessageLoop() {
	MSG v_Message = { 0 };
	while (GetMessage(&v_Message, NULL, 0, 0))
	{
		TranslateMessage(&v_Message);
		DispatchMessage(&v_Message);
	}
}

//浏览器窗口销毁回调函数,在行36处执行绑定到浏览器窗口后有效。
void onWindowDestroy(wkeWebView webWindow, void* param) {
	PostQuitMessage(0);
}

int __stdcall WinMain(
	HINSTANCE hInstance,
	HINSTANCE hPrevInstance,
	LPSTR lpCmdLine,
	int nCmdShow
) {
	//这个API函数用于导入动态链接库node.dll,初始化Miniblink的接口
	wkeInitialize();

	//Miniblink接口初始化完成后,我们就可以直接开始创建一个简单的浏览器窗口
	G_WebView = wkeCreateWebWindow(wkeWindowType::WKE_WINDOW_TYPE_POPUP, NULL, 0, 0, 1024, 700);

	//绑定窗口销毁事件,用于退出整个程序
	wkeOnWindowDestroy(G_WebView, onWindowDestroy, NULL);

	//窗口创建完成后通过这个接口我们就可以获取到窗口句柄
	G_WindHandle = wkeGetWindowHandle(G_WebView);

	//调用此API把刚刚创建的浏览器创建移动到屏幕中间
	wkeMoveToCenter(G_WebView);

	//之后我们还需要调用此API把窗口显示下
	wkeShowWindow(G_WebView, TRUE);

	//这里让浏览器窗口打开我们指定的页面即可
	wkeLoadURL(G_WebView, "https://www.csdn.net");

	//运行Windows消息循环,处理与用户交互的消息,这里会阻塞直到浏览器窗口销毁后运行PostQuitMessage(0)执行程序最后的退出步骤
	MessageLoop();

	return 0;
}

原创不易,转载请注明出处

你可能感兴趣的:(浏览器内核,Miniblink)