【RPA干货来袭】 使用 C/C++ 扩展 UiBot 的功能

news/2023/12/10 15:56:59

本期教程将为大家讲解如何使用 C/C++扩展 UiBot 的功能。

1、 安装Visual Studio 2010或更高版本的Visual Studio,不支持更低版本的Visual Studio或其他编程工具/IDE/编译器。
2、下载UiBot的C/C++语言插件模板。
3、 用Visual Studio打开插件模板中的LuaPlugin.sln文件。
4、 如果使用高版本的Visual Studio,会提示对模版项目进行升级。直接按照提示进行升级即可。
5、打开Visual Studio的Solution Explorer(中文版一般叫做“解决方案资源管理器”),找到项目名称LuaPlugin,按鼠标右键,选择Rename(中文版一般叫做“重命名”),将其改为你自己为插件起的名称,名称支持英文大小写字母、数字和下划线。如下图所示,其中左图为Visual Studio 2010英文版,右图为Visual Studio 2015中文版。
图片描述
在插件的命名中,建议英文字母全部采用大写。这样的话,在脚本中使用插件时,无论是大写还是小写,都能正确识别到。因为编译器会用全大写的形式去尝试一次。
6、在Solution Explorer(中文版一般叫做“解决方案资源管理器”),可以看到本项目有三个文件:dllmain.cpp、entry.cpp和luaclib.cpp,我们只需要关注luaclib.cpp,其他两个文件一般不用修改。
7、注意:我们已经在项目中包含了Lua语言相关的头文件定义,不需要额外定义,更不需要把Lua语言的源码引入到这个项目中来。
8、在luaclib.cpp中,我们已经定义了两个插件函数add和strcat,其功能分别是两个整数相加,以及两个字符串连接。这两个函数仅仅作为例子,不具有实际意义,在充分阅读其源码后,可以将这两个函数删掉。
9、同时,文件的最后还有一个叫module_name的struct,其中的每一行注册了每一个插件函数。可以把其中作为示例的add和strcat删掉。
10、编写你自己的插件函数,函数名可以随意取,但函数类型必须是:

static int (lua_State *L)
11、 你自己的插件函数必须在文件最后的名称为module_name的struct中注册,才可以使用。仿照add和strcat函数进行注册即可。其中每一行有两项内容,第一项是字符串,代表这个插件函数在UiBot中的名字,第二项是插件函数本身的名字。
12、在你自己的插件函数中,请参考示例和Lua的扩展接口文档,明确参数传递规则,以及返回值的规则。
13、 当插件函数的代码中出现各种异常结果时,推荐使用下面的函数抛出一个异常,这个异常会被UiBot捕捉到:

luaL_error(L, msg);

其中,msg是一个字符串,代表你要在异常中附加的信息。

14、在UiBot的脚本中,有数组(Array)和字典(Dictionary)两种数据类型。如果需要在插件中返回一个数组,请按照以下语句书写:

luaL_dostring(L, “return BasicLib.NewTable(1)”);

上述语句会在Lua的栈里面放置一个Table,你可以使用Lua的相关函数来处理这个Table,比如为其增加元素,等等。但这个Table会在UiBot中被识别为一个数组。
类似的,以下语句可以在栈里放置一个Table,但这个Table在UiBot中被识别为一个字典:

luaL_dostring(L, “return BasicLib.NewTable(2)”);

15、插件编写完成后,对其进行编译,会生成一个名为 插件名称.so的文件。把这个文件复制到UiBot的extendlua_mod目录中即可。

16、 在UiBot中如下书写,即可调用插件中的add函数(假设插件名称为MyPlugin):

Import MyPlugin

Dim result = MyPlugin.add(100, 200)

现在下载

还有机会参与到我们的活动当中!

还等什么?赶快来体验!

活动期间(1月16日至2月5日)下载注册登录UiBot不仅有机会可以和产品大牛、技术大神亲密接触,还有更多高级培训课程、个人版年卡等丰厚奖品等你来拿。

我们每一次努力
只为让用户获得更好的体验!
图片描述


https://dhexx.cn/news/show-1627088.html

相关文章

不得不会的10点Java基础知识

1.实例变量和类变量 实例变量:指每个对象独立的,修改其中一个对象的实例变量,不会影响其他实例变量的值,变量值无 static 关键字修饰; 类变量:是指所有对象共享的,其中一个对象把该变量的值修改…

这款 Java 性能调优的可视化工具,你真的会用吗?

点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!每天 14:00 更新文章,每天掉亿点点头发...源码精品专栏 原创 | Java 2021 超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框…

李志诉腾讯《明日之子》侵权案获赔20万

消息,2018年下半年,李志诉《明日之子》节目出品方哇唧唧哇以及腾讯公司侵权、要求索赔300万事件引起了广泛关注。经过了将近半年的诉讼,1月17日,李志在微博上发表视频,宣布维权案判决结果为获赔20万,并表示…

Spark学习之路(一)Spark概述

一,什么是spark 定义:Spark一种基于内存的快速,通用,可扩展的大数据分析引擎. 官网地址:http://spark.apache.org/ 历史:2009年诞生于加州伯克利分校AMPLab,项目采用scala编写 2010年开源 2013年6月成为Apache孵化项目 2014年2月成为Apache顶级项目 注:离线计算:会反…

Java虚拟机基本结构的简单记忆

2019独角兽企业重金招聘Python工程师标准>>> Java堆:一般是放置实例化的对象的地方,堆分新生代和老年代空间,不断未被回收的对象越老,被放入老年代空间。分配最大堆空间:-Xmx 分配初始堆空间:-Xms,分配新生代空间:-Xmn&#x…

不要再用 if (obj != null) 判空了!!!

点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!每天 14:00 更新文章,每天掉亿点点头发...源码精品专栏 原创 | Java 2021 超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框…

如何使用serverchan微信推送告警

2019独角兽企业重金招聘Python工程师标准>>> 之前实现推送告警信息到微信的方法有如下几种: 1、通过企业公众号实现----收费: 2、通过QQ邮箱,在微信平台上开启收到邮件进行提醒; 3、第三方告警平台API,一般…

国内最牛逼的 Java 框架,它排第一!

今天有粉丝问我:SpringBoot中默认有135个自动配置类,难道SpringBoot启动时都要去解析它们?难道这就是SpringBoot启动慢的原因吗?在回答这个问题之前,我还是得先给这位粉丝点个赞,看得出来他是在认真思考的&…

nginx搭建tomcat集群配置

什么是tomcat集群? 利用nginx对请求进行分流,将请求分配给不同的tomcat去处理,减少每个tomcat的负载量,提高服务器的响应速度。 目的 实现高性能负载均衡的tomcat集群。 工具 nginx和tomcat 实现步骤 1、下载nginx和tomc…

JPA的工具类

2019独角兽企业重金招聘Python工程师标准>>> package cn.itcast.utils; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; /** * 保证整个工程里之后唯一的一个工厂EntityManagerF…