无法嵌入互操作类型 请改用适用的接口_西门子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,一经查实,立即删除!

相关文章

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

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

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

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

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

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

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部分数据所有副本先后故障的抢救

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

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

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

通用usb集线器驱动_多口充电、高速传输——ORICO晶锐系列7口集线器测评

随着笔电越来越薄,机身接口数量越来越少,U盘、存储卡、移动硬盘、鼠标、蓝牙适配器等明显感觉无处可插,因此USB集线器就成为笔电的最佳拍档。近期,ORICO(奥睿科)推出了一款晶锐系列7口集线器产品,它集成了7个USB3.0接口…

【转】状态机思路在程序设计中的应用

状态机思路在单片机程序设计中的应用 状态机的概念 状态机是软件编程中的一个重要概念。比这个概念更重要的是对它的灵活应用。在一个思路清晰而且高效的程序中,必然有状态机的身影浮现。 比如说一个按键命令解析程序,就可以被看做状态机:本…

【转】超详细的UML状态图符号,初学者也能轻松看懂状态图

UML状态图,用于显示状态机,即描述一个对象所处的可能状态以及状态之间的转移。用状态图建模可以帮助开发人员分析复杂对象的各种状态的转换,以及对象何时执行怎样的动作。那状态图又是怎样表示这些信息的呢?要想看明白其中的奥妙&…

舒尔特注意力训练表格_舒尔特注意力训练,舒尔特方格练习入口

孩子的注意力是否集中,直接影响孩子的上课效率和作业正确率,最终影响学习成绩。道理大家都懂,关键是如何保证注意力的集中。接下来,我给大家推荐一个简单方便在家就能完成的训练方法,把它比作小游戏也不为过。那就是舒…

nginx文件系统大小_Nginx 了解一下?

这篇文章主要简单的介绍下 Nginx 的相关知识,主要包括以下几部分内容:Nginx 适用于哪些场景?为什么会出现 Nginx?Nginx 优点Nginx 的编译与配置Nginx 适用于哪些场景?如图所示,一个请求会先经过 Nginx 到达…

存储过程排版工具_安利一款比Evernote更为实用的云笔记工具,不容错过

作为一个爱分享的自媒体人,出于工作和兴趣前前后后接触到的云笔记工具很多,例如:有道云笔记、为知笔记、语雀、印象笔记、oneNote...在笔记工具的使用上还是略有点点心得,今天给大家分享一款实用的云笔记工具——Baklib&#xff0…

【转】有限状态机(FSM)学习总结C#

FSM(Finite State Machine有限状态机)可以理解成是对行为逻辑的抽象,就好象人在生活中会做出各种行为,例如吃饭、睡觉等,这些所有我们都看作是“行为”的分支,由大脑决定每种行为具体是什么实施。在整个FSM…

【转】[完全免费] 在线UML Sequence Diagram 时序图工具 - 教程第3部分

时序图教程 甲序列图描述了一组对象之间的相互作用参与协作(或情况),布置成按时间顺序; 它通过它们的“生命线”和它们发送给对方的消息来显示参与交互的对象。 什么是UML中的序列图? UML序列图是详细说明如何执行操作的交互图。…

【转】[完全免费] 在线UML Class Diagram 类图工具 - 教程第1部分

在线Visual Paradigm - UML编辑器 使用在线UML编辑器轻松绘制UML图,其中包含功能强大的UML编辑工具,即时UML语法检查和整洁的用户界面。Visual Paradigm在线UML 图,如类,用例,序列,活动,部署&a…

python 定时器_python 线程之四:定时器(Timer),非阻塞

线程之一讲了线程,如果不熟悉,可以点击【线程之一:线程的创建、启动及运行方式】1、定时器实质:Timer 定时器源码实现,和我们自定义一个线程方式一样,都是继承了 Thread 类,重写了 run() 方法&a…