API 脚本命令是嵌入的还是外部创建的?

Posted

技术标签:

【中文标题】API 脚本命令是嵌入的还是外部创建的?【英文标题】:Are API scripting commands embedded or created externally? 【发布时间】:2021-12-04 15:01:50 【问题描述】:

我正在尝试使用 Lua/Moonsharp API 脚本。有一个命令库,但没有我需要的函数。我的问题是,我能否创建自己的函数,还是仅限于所写的内容?

具体来说,对于名为 BobCAD 的软件,可以使用 Lua 插件。有像 Bcc.SetCamObjParameter 这样的命令列表,但是没有我需要的命令。我假设 BobCAD 软件的某些方面无法通过 API 访问,但我是否仅限于此插件中的库,还是我可以添加自己的命令?我以为程序目录中的某个地方会有一些 C# 文件,我可以在其中读取函数并可能学习如何创建自己的函数,但我没有看到类似的东西。 (或者是软件内部设置了脚本功能,而我只能访问已提供的内容?)

【问题讨论】:

【参考方案1】:

(注意,我对 BobCAD 并不特别熟悉,但这个答案应该是普遍适用的。)

一般来说,对于这样的用例(Lua 脚本作为大型程序的一部分提供,或者由大型程序的插件提供),由程序或插件的开发人员决定 Lua 可以使用哪些 API .在后一种情况下,它们也可能受到程序插件 API 允许的限制;在 BobCAD 的情况下,您可能受限于 BobCAD 插件 API 允许的内容,然后进一步受限于 Lua 插件的开发人员选择提供给 Lua 本身的 API 的哪些部分。 p>

您当然可以在 Lua 中编写自己的函数,但就实际与主机程序的对话而言,您仅限于程序提供的 API,除非它们提供了某种机制(如 LuaJIT 的外部函数接口)来访问从 Lua 进入程序并调用未明确提供的函数——大多数函数不可用。

至于“在程序目录的某处找到一个C#文件”——C#是一种编译语言; C# 库通常作为预编译的 CLR 二进制文件(带有 .dll 扩展名)提供,并且不包含源代码。如果 BobCAD 和/或 Lua 插件的源代码可用,您可以随时修改并重新编译它,但由于 BobCAD 是商业的闭源软件,我不希望它可用。

此时,您的选择基本上是:

想办法用可用的命令来做你需要的事情; 尝试对程序进行足够的逆向工程,以便在不访问源代码的情况下完成您需要的工作; 或寻找其他具有您需要的功能的程序。

【讨论】:

以上是关于API 脚本命令是嵌入的还是外部创建的?的主要内容,如果未能解决你的问题,请参考以下文章

PHP 脚本的安全性差异:嵌入 HTML 还是单独的文件?

Linux查看命令是内部命令还是外部命令

Linux 控制台

linux type命令(用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令,如果给出的指令为外部指令,则显示其绝对路径)

Linux嵌入式学习之Ubuntu入门基本命令软件安装及文件结构

如何查找哪些Camunda任务是正常还是外部?