让强大的EmEditor支持神奇的Python作为内置的宏脚本
在经历一段不堪回首的艰难探索后,终于成功地在EmEditor中使用Python作为宏脚本语言,运行出第一个“hello"
(特别注意:不是让Python仅仅作为一种外部工具,也不是建立Python的开发环境,而是让Python和EmEditor中默认的vbscript、javacript平起平坐,能够直接控制EmEditorpython在线模拟器的窗口各种元素)
这是一个复杂的过程,可能需要几篇博文才说得清,我尽量简单一点。
先介绍下本文所涉及的工作环境:WinXP sp2(WSH 5.7),EmEditor10.0.5(那啥版,你懂的),ActivePython2.6.6.18
(一)搞清楚EmEditor到底需要什么样的Python?
是不是随便装个Python,EmEditor就可以用它编写宏了??很遗憾,不是。
在EmEditor语焉不详的在线帮助文档中,作者明确表示EmEditor可以使用vbs与js之外的Perl
、Python、Ruby等作为宏脚本语言,但同时又明确表示对vbs和js之外的脚本语言不提供技术支持(小日本真变态~~),作者只是给了一个隐晦的提示——”ActiveScript“
娘的,转了一大圈,我才明白,问题就出在"ActiveScript"上。
ActiveScript是微软提出的,服务于早期的ActiveX、COM战略,可运行于于WSH(Windows Script Host,这个是解决EmEditor问题的关键)、IIS、WMI等,但自从.Net成了宝贝之后,ActiveScript已经事实上被微软抛弃了。所以,在线帮助很少,英文的少,中文的更少。
长话短说。无论如何,这里要明白一点:Python可以作为ActiveScript,前提是由pywin32这个模块为它提供封装支持。
真正的问题是,ActiveState这家不负责任的公司,虽然在ActivePython中集成了pywin32,但那是一个有缺陷的东东,并不是像它自己在可怜的一点帮助上所言,只要安装了ActivePython就会让Python成为windows下的ActiveScript!气愤啊!
小结一下,我们需要一个能够扮演ActiveScript角的Python,EmEditor才肯欣然接受它。
已经装了Python的请直接跳过这一步。没有Pyhont的,还是先去www.activestate,个合适版本的ActivePython拉下来,装上。个人推荐ActivePython2.6和3.2都装上,让2.6作为默认的版本(安装过程选项中,最后一项是设置默认的Python),3.2用于面向未来(众所周知它默认支持UTF-8,中国人最该支持,又题外话了),并建议装x86而不是x6×4版(又是题外话,支持x86版本的Python扩展模块更多)。有关Python安装问题,谷歌。
然后,也最重要的是,忘掉ActiveState默认安装的那个旧版的pywin32模块,自己动手丰衣足食,去这里下载一个最新版:sourceforge/projects/pywin32/files/pywin32/。我下的是:pywin32-216.(注意版本对应情况,下错了不能安装,白忙活)
覆盖安装pywin32。
我的python装在D盘,打开这里:D:\Python26\Lib\site-packages\win32comext\axscript\client
见证奇迹的时刻到了:运行pyscript.py!(双击一下,或者在cmd中敲"python pyscript.py)。就是这一步,才让Python具有ActiveScript的身份!!原理上,就是pywin32做了个二传手,把python封装成一个支持ActiveScript模式的东东。
呵呵,先别急,事情还没那么简单呢,还得先测试一下,WSH是否真正接受Python的注册了,我在这里吃过很多苦头。由于各台电脑情况不一样,问题也会多种多样,建议先测试好再进EmEditor。
pyscript运行的结果之一,是让WSH在处理后缀为.pys的脚本文件时,自动调用Python引擎。我们需要一个test.pys,我的是这样:
import sys
print "hello",sys.version
还是打开cmd,到test.pys所在文件夹,敲入"cscript test.pys",执行。“wscript test.pys”情况类似,不熟悉WSH工作方式的,狂搜谷歌。
在我的电脑上,test.pys执行结果为:
Microsoft (R) Windows Script Host Version 5.7 版权所有(C) Microsoft Corporation 1996-2001。保留所有权利。
hello 2.6.6 (r266:84292, Jan 7 2011, 13:16:36) [MSC v.1500 32 bit (Intel)]
这里,我也遇到一个错误,我的test.pys是个带有BOM前缀的UTF-8格式的文档,死活出错。直到我想起来用Notepad++直接把它转换为ansi编码,才正确运行。
至此,可以被EmEditor接受的PythonScript(有些半吊子的帮助文档会这么称呼已经ActiveScript化的Python)才算打造成功。
在EmEditor中,编写一个test.py(注意,这里又可以直接用.py了),如下:
#language = "Python"
Window.document.write( 'Hello' );
保存到EmEditor文件夹下的\PlugIns\@bin\test.py
然后,菜单“宏”——“选择”——“全部文件”——"test.py",再“宏”——“运行test.py"
哦也!!
你成功了吗??
(全文完)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论