首先需要声明的是,本篇并非COMOS实用案例,只是希望借此让大家了解,如何使用微软的WPF和C#语言开发COMOS插件。
首先看下效果图
功能说明:
拖拽COMOS设备至定制的浏览器,自动根据设备的名称和其制造商参数值,搜索相关网页内容。
操作演示(gif动图):
国产浏览器我们见过的很多,现在基本上很多大厂都推出了各自的浏览器,但是如果我们仔细研究会发现,虽然叫法众多,但是终究逃不过两个引擎,IE内核和谷歌浏览器的WebKit。
需要说明的是WebKit并非谷歌产品,而是开源软件,苹果系统的Safari浏览器同样使用的是WebKit内核。
在COMOS软件中嵌入IE内核非常简单,只需使用WPF的WebBrowser控件,该控件会自动根据用户安装的IE版本加载相应的IE内核。
但是采用IE内核有很大的缺点:
- 如用户电脑系统中安装的IE版本过低,某些网页可能无法正常加载
- IE内核渲染速度慢
- IE内核对HTML5支持不足,甚至出现丢三落四的问题
WebKit优势
- 目前最快的浏览器核心
- 使用面最广的浏览器核心(谷歌浏览器、苹果浏览器都用这个核心)
- 对开发人员最友好的浏览器核心(社区支持很给力)
开发准备 :
- Visual Studio 2019 Community(免费使用)
- WebKit内核开发文件(免费开源)
首先需要把下载好的webkit.net bin目录下的所有文件复制到COMOS安装目录Bin文件夹中。
接下来使用管理员权限启动命令提示符。
输入“SUBST R:”+COMOS安装目录的Current文件夹路径,创建虚拟磁盘R,如下所示:
SUBST R: "C:Program Files (x86)COMOS103Current"
打开“我的电脑”将看到新增了R盘:
打开Visual Studio,点击创建新项目,搜索WPF,选择WPF用户控件库,点击下一步。
输入项目名称,推荐以“Custom.”为前缀,然后点击“创建”按钮
修改“UserControl1”名称为“WebNavigator”
修改XAML处的“UserControl1”为WebNavigator
修改CS文件中的“UserControl1”为“WebNavigator”
引用如下4个DLL文件
设置引用DLL属性中的互操作类型和复制本地均为false
因为WebKit引擎只支持32位系统,所以项目属性中的“目标平台”需要选择x86
生成事件中输入:
Copy "$(TargetDir)$(TargetName).dll" "R:Bin$(TargetName).dll"
Copy "$(TargetDir)$(TargetName).pdb" "R:Bin$(TargetName).pdb"
调试选择“外部程序”,并输入Comos.exe文件路径
在CS文件中加Using引用脚本
using Plt;
using WebKit;
using Comos.Controls;
using System.Windows.Forms.Integration;
using Chemserv;
给WebNavigator添加接口“IComosControl”。
选中“IComosControl”,按“Alt+Enter”弹出“实现接口”。
实现接口如下所示:
清理Throw语句
在COMOS安装目录“configmenu”文件夹中复制"ExampleMain.xml"文件,重命名为“Main.xml”。
编辑“Main.xml”文件,增加一个“Tool”,设置大致如下:
id="@NET.Custom.WebKitBrowser"
itx="产品搜索"
assembly="Custom.WebKitBrowser"
Progid="Custom.WebKitBrowser.WebNavigator