无法嵌入互操作类型 请改用适用的接口_西门子COMOS软件开发定制学习7-嵌入谷歌浏览器内核...

首先需要声明的是,本篇并非COMOS实用案例,只是希望借此让大家了解,如何使用微软的WPF和C#语言开发COMOS插件。

首先看下效果图

747581bde4781fd185cd56fe05fcff17.png

功能说明:

拖拽COMOS设备至定制的浏览器,自动根据设备的名称和其制造商参数值,搜索相关网页内容。

操作演示(gif动图):

8f3e60dd2a82819aeed71f6a66946e60.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盘:

9eba46074a8f454bfc72e4794047186f.png

打开Visual Studio,点击创建新项目,搜索WPF,选择WPF用户控件库,点击下一步。

1fa64e4fc63c9c35f77400806270e95b.png

输入项目名称,推荐以“Custom.”为前缀,然后点击“创建”按钮

fa3c75c2b3dac6cdf7c76b55182f122f.png

修改“UserControl1”名称为“WebNavigator”

6c04f5a1c8b9f5a3c1acbd3b41ecf1da.png

修改XAML处的“UserControl1”为WebNavigator

34ac68fb78e3f0921fcebc9cab50a41b.png

修改CS文件中的“UserControl1”为“WebNavigator”

e5621676f823b023aab01aeb368f1376.png

引用如下4个DLL文件

4d2c3f7f7cf06e48613ce1dccb276855.png

设置引用DLL属性中的互操作类型和复制本地均为false

c9136ba3ba950f110996ca8c05a79125.png

因为WebKit引擎只支持32位系统,所以项目属性中的“目标平台”需要选择x86

815f6cad2ec842846f8cb62d6b931fc8.png

生成事件中输入:

Copy "$(TargetDir)$(TargetName).dll" "R:Bin$(TargetName).dll"

Copy "$(TargetDir)$(TargetName).pdb" "R:Bin$(TargetName).pdb"

5b741e5625f107b51b650fc1231c227c.png

调试选择“外部程序”,并输入Comos.exe文件路径

b3207d50200cc494855e85cf43fa4958.png

在CS文件中加Using引用脚本

using Plt;

using WebKit;

using Comos.Controls;

using System.Windows.Forms.Integration;

using Chemserv;

给WebNavigator添加接口“IComosControl”。

选中“IComosControl”,按“Alt+Enter”弹出“实现接口”。

ccc69a748f53dc2b18a4a1a7a659ccd1.png

实现接口如下所示:

d2e380910eeb92b2547117ac6748a540.png

清理Throw语句

c24caf519280b58918c0b5a8beeca9c0.png

在COMOS安装目录“configmenu”文件夹中复制"ExampleMain.xml"文件,重命名为“Main.xml”。

编辑“Main.xml”文件,增加一个“Tool”,设置大致如下:

id="@NET.Custom.WebKitBrowser"

itx="产品搜索"

assembly="Custom.WebKitBrowser"

Progid="Custom.WebKitBrowser.WebNavigator

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437132.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Win10上VMware的问题汇总

装xp很卡顿的问题 卸载360,重启电脑即可。 拖拽文件/文件夹到虚拟机直接卡住 使用15.1版本的VMware即可。 资源: 链接:https://pan.baidu.com/s/1dtr_cPwzprRTznpxj-OKTw 提取码:1wpj

【转】C#与C++的发展历程第一 - 由C#3.0起

C#5.0作为第五个C#的重要版本,将异步编程的易用度推向一个新的高峰。通过新增的async和await关键字,几乎可以使用同编写同步代码一样的方式来编写异步代码。 本文将重点介绍下新版C#的异步特性以及部分其他方面的改进。同时也将介绍WinRT程序一些异步编…

python数据库实例_Python操作MySQL数据库9个实用实例

用python连接mysql的时候,需要用的安装版本,源码版本容易有错误提示。下边是打包了32与64版本。MySQL-python-1.2.3.win32-py2.7.exeMySQL-python-1.2.3.win-amd64-py2.7.exe实例 1、取得 MYSQL 的版本实例 2、创建一个表并且插入数据实例 3、 python 使…

Win10+VMware上安装macOS过程记录

2021年更新 主要参考文章:https://blog.csdn.net/qq_40143985/article/details/104011778 参考了其他一些文章,最后会出现…not successfully错误,安装失败。建议参考这篇文章。 FAQ 安装好macOS后,电脑运行有点卡的问题&#x…

【转】5.2高性能IO模型浅析

服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型。 (2)同步非阻塞IO(Non-blocking IO&#xff0…

vba 修改文本文档 指定行_VBA程序报错,用调试三法宝,bug不存在的

如果把VBA比作一门刀法,那么经过前面内容的操练,大家已经掌握了很多实用的招式。如果我们在刀法招式的基础之上,再掌握更多的“磨刀”心法,那么我们的刀用起来才会又好又快。所以今天主要和大家分享——VBA“磨刀”心法之程序调试…

VMware使用

重要功能 快照 快照就是保存当前虚拟机完整状态,相当于手动克隆一个虚拟机副本,也相当于是git中的一个提交点。在安装好一个新的虚拟机之后,一般都要创建一个快照,便于日后恢复。

【转】VS TFS源码分析软件PATFS使用方法一:配置团队项目

# 项目交付用正版,省下一台Iphone12 # # 31款JAVA开发必备控件和工具 # 相关链接: VS TFS源码分析软件PATFS使用方法二:设置新数据检查间隔VS TFS源码分析软件PATFS使用方法三:数据附件大小限制的自定义设置VS TFS源码分析软件P…

python selenium api_Selenium2+python自动化-查看selenium API

前面都是点点滴滴的介绍selenium的一些api使用方法,那么selenium的api到底有多少呢?本篇就叫大家如何去查看selenium api,不求人,无需伸手找人要,在自己电脑就有。pydoc是Python自带的模块,主要用于从pytho…

软件开发

1、先后台后前台,先功能后界面。 2、结构化,是指分层、分模块软件设计,简化复杂的软件系统。非结构化的,例如使用GOTO语句,会导致模块间高度耦合。

mqtt协议详解_IoT物联网设备上云技术方案详解

随着传感器和通信技术的不断发展,物联网行业方兴未艾,业务链路涉及数据采集,通信连接,数据存储,数据可视化,洞察,行动决策。但,在实施过程中,碎片化的设备端通信连接难题…

【转】基于WebSocketSharp 的IM 简单实现

websocket-sharp 是一个websocket的C#实现,支持.net 3.5及以上来开发服务端或者客户端。本文主要介绍用websocket-sharp来做服务端、JavaScript做客户端来实现一个简单的IM。 WebSocketBehavior WebSocketBehavior是核心对象,他包含了OnOpen,OnMessage…

我的技术观

变化 技术是日新月异层出不穷的。人类在不断实践,技术也在不断更新变化。 选择 有的技术只是为了解决某一领域内的问题,有的技术只有在某个领域的某个时期才有用。 一个人没有必要也不可能掌握所有技术。 个人要首先熟练掌握自己涉猎领域内的相关技术…

【转】极限编程一览

极限编程(XP)起源始于1990年代。当时肯特布莱克(Kent Black)在戴姆勒克莱斯勒(DaimlerChrysler)处理项目时,试图寻找一种更好的软件开发方法。他的创立新方法后来被称为极限编程方法论&#xff…

mysql 关联更新_跳出初学MySQL知识的原理整理(一)

一、基础架构MySQL 可以分为 Server 层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。而存储引擎层负责数据的存储和提取。支持 InnoDB、MyISAM等多…

如何看待编程语言

什么是语言 语言是用来传递信息的交流工具。它的常见形式有:文字(视觉上)、话语(听觉上)。 语言是如何表达信息的 语言提供了模型和规则。 语言模型必须有足够的信息复杂度,如字、词、短语。只有语言本身…

【转】TcpListener和tcpclient使用

前段时间公司项目中遇着需要做文件的远程传输,场景是用户通过网页选择一些文件,然后提交请求到服务器,同时把请求标识传递给本机的TCP文件传输端;服务器收到请求后在服务器端创建任务生成保存文件的路径同时通知文件传输端开始传文…

sleep期间读取所有_ceph部分数据所有副本先后故障的抢救

半天河网易游戏高级运维工程师,主要负责云存储的运维;一个既希望跟业务聊又喜欢能够默默在后面忙活的普通运维人。背景故障现场故障恢复故障恢复分析第一种方式:物理磁盘对拷第二种方式:服务启动时跳过故障扇区来避免异常退出解决…

面向过程和面向对象的联系和区别

以C语言和C为例。 C语言是面向过程的,封装单元是函数。函数里面按照逻辑流程一步一步实现就行了,这符合我们现实生活中解决问题时的思考过程。 C是面向对象的,封装单元是类。首先,面向对象是为了提高开发效率而设计的。使用C语言…

【转】有限状态机用法教程

如博文无法正常显示,请访问原文地址: https://blog.csdn.net/ChinarCSDN/article/details/82263126 有限状态机用法教程 文章目录 有限状态机用法教程 [toc]1Finite-state machine —— 有限状态机2Foreword —— 前言()3Example —— 示例4Moltimode —…