electron调用c#动态库
electron调用c#动态库
新建C#动态库
方法要以异步任务的方式,可以直接包装,也可以写成天然异步
代码如下
public class Class1
{
public async Task<Object> Invoke(object input)
{
return Helper.SayHi("Invoke1:" + (string)input);
} public async Task<Object> Invoke2(object input)
{
return Helper.SayHi("Invoke2:" + (string)input);
} static class Helper
{
public static string SayHi(string param)
{
return ".NET Welcomes " + param;
}
}
安装electron-edge-js模块
调用代码如下
const edge = require('electron-edge-js');
console.info("call c#") var DemoDll = edge.func({
assemblyFile: "electronedge.dll",
typeName: "electronedge.Class1",
methodName: "Invoke"
});
var DemoDll2 = edge.func({
assemblyFile: "electronedge.dll",
typeName: "electronedge.Class1",
methodName: "Invoke2"
});
// module.exports.DemoDll = DemoDll;
module.exports.DemoDll = {
demo: DemoDll,
demo2:DemoDll2
};node引用如下
const DemoDll = require("./csharputil.js"); DemoDll.DemoDll.demo("test", (err, value)=> {
log.debug(value); });
页面js引用如下
包装如下
function init() {
const DemoDll = require("F:/yanghuaihua/electronedge/csharputil.js"); return {
demo: DemoDll.DemoDll.demo,
demo2:DemoDll.DemoDll.demo2 };
}
const initRequire = init();
引用如下
<script>window.$ = window.jQuery = require('./js/jquery-3.4.1.min.js');</script>
<script type="text/javascript" src="./js/init.js"></script>
<script type="text/javascript" src="./js/index.js"></script>
<script type="text/javascript">
$("#btn").click(function () {
initRequire.demo("test", (err, value) => {
$("#demo").append(value);
$("#demo").text(value);
});
setInterval(()=>{
initRequire.demo2("test", (err, value) => {
$("#demo").append(value);
$("#demo").text(value);
});
}, 1500); }); </script>
源码地址
https://github.com/Ants-double/yumi/tree/master/electronedge
electron调用c#动态库的更多相关文章
- c#调用c++动态库的一些理解
调用c++动态库一般我们这样写 [DllImport("UCamer.dll", CallingConvention = CallingConvention.Winapi)] ...
- C#调用C++动态库(dll)
在实际软件开发过程中,由于公司使用了多种语言开发,在C#中可能需要实现某个功能,而该功能可能用其他语言已经实现了,那么我们可以调用其他语言写好的模块吗?还有就是,由于C#开发好的项目,我们可以利用re ...
- C#总结(四)调用C++动态库
由于公司很多底层的SDK,都是C++开发,上层的应用软件却是C# Winform程序.在实际工作的过程中,就经常碰到了C# 程序调用C++ 动态库的问题.最近一直在和C++ 打交道,C# 怎么调用C+ ...
- Java调用dll动态库
最近项目里使用java调用dll动态库,因此研究了一下这方面的东西. 使用的工具包如下 <dependency> <groupId>net.java.dev.jna</g ...
- 【C#】 使用Gsof.Native 动态调用 C动态库
[C#] 使用Gsof.Native 动态调用 C动态库 一.背景 使用C# 开发客户端时候,我们经常会调用一些标准的动态库或是C的类库.虽然C# 提供的PInvoke的方式,但因为使用的场景的多变, ...
- python调用.net动态库
# python调用.net动态库 ### pythonnet简介------------------------------ pythonnet是cpython的扩展- pythonnet提供了cp ...
- Delphi XE7调用C++动态库出现乱码问题回顾
事情源于有个客户需使用我们C++的中间件动态库来跟设备连接通讯,但是传入以及传出的字符串指针格式都不正确(出现乱码或是被截断),估计是字符编码的问题导致.以下是解决问题的过程: 我们C++中间件动态库 ...
- 使用ctypes在Python中调用C++动态库
使用ctypes在Python中调用C++动态库 入门操作 使用ctypes库可以直接调用C语言编写的动态库,而如果是调用C++编写的动态库,需要使用extern关键字对动态库的函数进行声明: #in ...
- C# 调用C++动态库注意事项
C# 调用C++动态库注意事项 最近项目上需要在C#中调用C++,期间遇到不少坑,总结如下: 1.in const char* 对应C#中string 或 IntPtr 2.out const ...
随机推荐
- [LeetCode]Jump GameII
题目:Jump GameII 如果要求找最小的调数,考虑扩张的思路. 思路如下: 1.首先找起始位能到达的范围是否覆盖了最终位置,并记录下搜索中的最远能到达的位置值,即max{nums[i] + i} ...
- 搭建maven本地仓库,idea应用本地maven仓库
提环境: 安装好tomcat.maven.jdk.idea. 打开maven安装目录,在目录下新建 maven仓库文件夹(名子随便): 打开conf\setting.xml 加入<localRe ...
- Spring Boot (六): 为 JPA 插上翅膀的 QueryDSL
在前面的文章中,我们介绍了 JPA 的基础使用方式,<Spring Boot (三): ORM 框架 JPA 与连接池 Hikari>,本篇文章,我们由入门至进阶的介绍一下为 JPA 插上 ...
- 记一次java-selenium自动抢红包最简单案例1
案例网址:http://xinyue.qq.com/act/pc/xyjf/a20170907envelopes/index.htm?ADTAG=AD_gw.home.pt.2_dyghb.20170 ...
- ubuntu13启动屏幕亮度0解决方法
在终端输入: sudo gedit /etc/default/grub 找到 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDL ...
- ps 将图片四角变成圆角
1.用PS打开一张图片,用矩形选框工具,选出你要保留的的那一部分,“选择→修改→平滑”.在弹出的选框里添入数值,值越大角就越圆. 2.选择“选择→反选”,再按delete删除就ok了.
- 在网页中动态地给表格添加一行内容--HTML+CSS+JavaScript
需求描述: 用户在页面上点击按钮,可以把文本框中的数据在表格的新的一行中显示,具体表现如下图: 如果如果输入框内容有一项为空,弹出对话框‘请将数据填入完全 步骤: 1.按钮注册单击事件 2.获取并判断 ...
- 编写shell脚本实现一键创建KVM虚拟机
shell脚本一键创建虚拟机 代码如下: #!/bin/bashname=$1 #把位置变量$1重新定义为name(创建虚拟机的名字)path1=/var/lib/libvirt/images/ #i ...
- 体验Code::Blocks下的C++编程
0.前言 在当前的行业发展和国际形势下,让更多的程序员思考跨平台编程问题.在众多的跨平台开发环境中,Code::Blocks具有独特的优势. 近二十年来,跨平台开发环境曾经如雨后春笋般产生,但是,由于 ...
- Shell之脚本检查与调试
目录 Shell之脚本检查与调试 参考 脚本语法检查 脚本运行调试 Shell之脚本检查与调试