Uipath 调用Vbs(含传递参数和返回值)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Uipath 调用Vbs(含传递参数和返回值)相关的知识,希望对你有一定的参考价值。

参考技术A 首先Uipath.System.Activities和Uipath.UIAutomation.Activities需要分别升级到最高版本(因为最高版本才有Invoke Vbscript):

然后在下写上VBScript:

Wscript: Vbscript自带,相当于Excel的ThisWorkbook

Wscript.Arguments:用于接收从Uipath传递的参数

Wscript.Arguments.Count:查看从Uipath传递了多少个参数

Wscript.Arguments(1):传递的第二个参数(传递参数序列号从0开始)

Wscript.Echo:返回结果 逗号分隔可以返回多个结果,但是会合并为一个String(因为Uipath的invoke Vbscript仅接受String)

然后我们加一下参数:

查看运行效果:

ObjectARX调用LISP方法(含参数传递)返回值

ObjectARX调用LISP方法(含参数传递)返回值

//acrxEntryPoint.cpp

void Test()
{
struct resbuf *ptList,*ptResult=NULL;
//注意,一定要写成_T(“c:lisp_test”),写成”c:lisp_test”调用会失败
double dx=135.6;
double dy=147.5;
ptList=acutBuildList(RTSTR,_T(“c:lisp_test”),RTREAL,dx,RTREAL,dy,RTNONE);
int rc=acedInvoke(ptList,&ptResult);
if(rc!=RTNORM)
{
acutPrintf(_T(“ 调用LISP失败,请检查依赖的LISP是否加载”));
acutRelRb(ptList);
return;
}
acutRelRb(ptList);
if(ptResult==NULL)
{
acutPrintf(_T(“ 调用LISP失败,返回空值”));
return;
}
if(ptResult->restype!=RTSTR)
{
acutPrintf(_T(“ 调用LISP失败,返回错误的值类型”));
acutRelRb(ptResult);
return;
}
CString strRC=ptResult->resval.rstring;
acutRelRb(ptResult);
acutPrintf(_T(“ 返回值:%s”),strRC);
}
//—————————————————————————–
//—– ObjectARX EntryPoint
class CInvokeLispTestApp : public AcRxArxApp {

public:
CInvokeLispTestApp () : AcRxArxApp () {}

virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt) {
// TODO: Load dependencies here

// You *must* call On_kInitAppMsg here
AcRx::AppRetCode retCode =AcRxArxApp::On_kInitAppMsg (pkt) ;
acedRegCmds->addCommand(_T(“InvokeLispTestApp”),_T(“Test”),_T(“Test”),0,Test);

// TODO: Add your initialization code here

return (retCode) ;
}

virtual AcRx::AppRetCode On_kUnloadAppMsg (void *pkt) {
// TODO: Add your code here

// You *must* call On_kUnloadAppMsg here
AcRx::AppRetCode retCode =AcRxArxApp::On_kUnloadAppMsg (pkt) ;

// TODO: Unload dependencies here
acedRegCmds->removeGroup(_T(“InvokeLispTestApp”));

return (retCode) ;
}

virtual void RegisterServerComponents () {
}

} ;

//—————————————————————————–
IMPLEMENT_ARX_ENTRYPOINT(CInvokeLispTestApp)

 

//InvokeLispTest.lsp

;;定义函数lisp_test
;;函数有两个参数x,y
;;函数名必须写成c:xx否则ARX无法调用
(defun c:lisp_test(x y)
;;将X转换成字符串
(setq strX(rtos x 2 10))
;;将Y转换成字符串
(setq strY(rtos y 2 10))
;;将X,Y转换的字符串合并起来,并返回给ARX函数
;;返回给ARX调用
;;LISP最后一个运算的返回值做为函数的返回值
(setq strXY(strcat strX “|” strY))
)

以上是关于Uipath 调用Vbs(含传递参数和返回值)的主要内容,如果未能解决你的问题,请参考以下文章

Python__19--函数调用的参数传递与变量的作用域

Java基础------真实大厂面试题汇总(含答案)

C#和C++传递结构体

面向对象----构造方法this 关键字函数的参数传递package语句/import语句

当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?