桌面软件里支持脚本这个技术是不是难度很高?

看到 EmEditor 这样的小软件都能支持脚本,有点很感慨。还有地球人几乎都用的 MS Office 不仅是个办公软件,也是一个开发平台,总感觉这非常了不起。很多国外的工业软件也支持非常复杂的脚本。好像现在的 WPS 里也能写脚本了?也许我孤陋寡闻,国人做的软件似乎很少想到要弄个脚本功能。

桌面软件里面支持脚本这个技术是不是难度很高?专家如果有空的话请解惑一下,谢谢!

难度不高啊,脚本引擎都是别人写的自己调下库就行了

1 个赞

象 EmEditor 它有一些自己的 API,而且每个命令都可以录制成脚本再翻译成代码,我觉得要做到这些,也许程序的基本结构上就要专门设计好?以我这有限的脑容量是想破脑瓜也想不出来是怎么做到的,恐怕不会只是调用脚本引擎的库那么简单吧?我记得好像在哪里看到过 python 的一个特性就是可以用作桌面应用程序内部实现自动化(automation)的工具,这机制好像也挺难理解的

自动化如果对应程序不开源的话,基本就是模拟点击,包括python终端命令的自动化也是监听字符串(比如pexpect),要实现api确实有点难,要该脚本和自己程序的api绑定

1 个赞

有时的确能感觉到录制宏就是在记录点击菜单项的动作,一次点击对应一行代码

python,lua,javascript都可以做成脚本引擎,都是现成的。

我感觉,在一个特定的桌面应用软件中,定制出一个带有即使是数量不多的专用API的脚本引擎,恐怕不会象调用库函数那样简单,我猜测主体代码的基本结构可能都不一样

比如 EmEditor 这么一个小软件,就有不少的 API,它的脚本语言介绍

ActiveScript languages other than JavaScript and VBScript can be used. For instance, you can use PerlScript , PHPScript , Python , Ruby , and many other ActiveScript languages as long as the script engines you would like to use are installed on your system.

这个介绍能看出来,它的脚本可以用这么多种语言写,可见其设计基本上是独立于这些语言的

ActiveScript又不是EmEditor的作者写的,这个是微软写的。

是啊,这些脚本引擎工具肯定不是他写的。我的意思是,从这些脚本引擎工具出发,到在特定的桌面应用程序中实现一套专用脚本体系,这个难度恐怕比较大,可能涉及到软件的基本结构。换句话说,写一个桌面应用,要支持脚本或不支持脚本,可能从第一行代码开始的写法就不一样,当然这纯粹是脑补的瞎琢磨

你说的这些微软都解决了,EmEditor只是调用现成的接口。

微软都解决了?EmEditor 好像是用 C++写的,所以EmEditor 用 JS 或 python 写脚本的技术和微软也有关系?

EmEditor只是文本编辑器,不会去写负责执行的脚本引擎。

像自动化点击这些功能都是微软提供的,和EmEditor本身没关系。EmEditor只是把你写好的,让微软那边类似VBS的脚本引擎去执行。

你说自动化点击交给微软的引擎做我相信能做到,但EmEditor 这么些专属API,和它的主体代码有千丝万缕的联系,这个恐怕别人没法代劳吧?所以我猜测这涉及到软件从第一行代码开始的基本结构

这个就是封装的对外接口,只能说麻烦,可以用时间堆出来。

有难度的是EmEditor的文本编辑器本身,以及读写16TB文本的数据结构,这两才是真的难,现有的开源实现对比EmEditor的都是渣渣。

都说这个难度高,我试着操作过一次,感觉只不过是把大文件分割成多块,分别操作,然后再合并起来。它把这个过程隐藏的比较好,所以看起来就像直接在操作大文件。

实际上,在操作大文件时,很多常规的功能是被 disable掉的。

编辑文本是很难的。

我相信编辑文本有一些技术上的诀窍。但是解决超大文件问题的最直觉方法就是分块,似乎和处理文本的基本算法技巧并不矛盾。大数据库分割处理不也是常规操作么。

如果不知道有EmEditor这个东西,我一定是把大文件手动分割,一个一个拖进编辑器处理,再合并起来。EmEditor把这个过程自动化了一下,这么理解看不出有明显的问题。

我的意思是说大文件分割处理和编辑文本之间并不矛盾。EmEditor 能做到事情,没有它手动分割也是能做,EmEditor把这个手动操作的简单过程自动化起来了,这个逻辑看上去不应该有什么问题啊。数据库文件超过上限,就把它分成多个,不也是一样吗

1 个赞

你理解错了。把上面我贴的文章都看看。