来自 MIT 的用图片编程的 Sikuli 语言最近着实火了一把,看着对岸的程序员 Vgod 开发出如此酷的软件着实令人羡慕。但除了 Demo 之外,能不能拿 Sikuli 来 engineer a better life 呢?显然是可以的,就如 Vgod 这篇文章所说,Sikuli 有无穷的潜力,那我们就来玩儿一把,展示一下 Sikuli 的一个现实应用。
1. Dropbox
Dropbox 是一个在线文件存储系统,可以用来存储和在不同电脑间共享文件,但是一个 Dropbox 用户只有 2G 的存储空间,当我们文件多的时候,就受到限制了。而一般情况下 Dropbox 只能运行一个例程,使用多个用户貌似不可行。但是到底可能吗?
当然可能,只是我们需要多个 Windows 帐户。也就是说,每个 Windows 帐户可以运行一个 Dropbox,如果你系统里有多个帐户,就可以运行多个 Dropbox。注意,受到安全策略的限制,这些帐户必须设置密码。比如我们新建一个"dropbox"帐户,密码也是"dropbox"。
2. 笨的方法
一般情况下使用其它帐户运行程序的方式为:在程序或者快捷方式上点右键,选择“运行方式”,然后选择“下列用户”,输入你期望的用户和密码(dropbox:dropbox)来执行该程序。
3. 聪明的方法
但是这样做太麻烦了,我们可以用批处理脚本做这件事情:
start D:\Program\Dropbox\Dropbox.exe
runas /user:dropbox D:\Program\Dropbox\Dropbox.exe
但这样还要手工输入密码,有很多种方法可以避免手工输入 runas 密码,但很遗憾它们大多在 Windows XP Home Edition 上不可用。
用 Home Edition 的同志还是得交互式的输入密码。能不能不手工输呢?可以,比如 expect 就是专门处理交互的语言。不过,学起来太麻烦了吧,要不来看看 Sikuli 怎么做?
4. 使用 Sikuli
下面这个图就是完成启动两个 Dropbox 的 Sikuli 程序:
首先switchApp("cmd")启动 Windows 的命令行,然后wait等待那个提示符出现,然后 type() 键入一行 runas 命令,wait 等待提示输入密码,type 输入密码 dropbox 加回车 \n,bingo,出来一个 dropbox 了,最后再 type 一行启动非 runas 的 dropbox,又出来一个 dropbox。
上述程序运行结果如下图所示:
好玩吧!Sikuli 程序就是那么简单,我从下载 Sikuli 到完成这个程序大约花了四十分钟的时间,这可比去学 expect 快多了。这下 expact 之类的交互语言在简单的场景下可以无视了。
你可以将 Sikuli 程序导出成一个 .skl 文件,据说可以双击运行,不过我尝试未成功,这是一个遗憾,希望后续版本可以解决这个问题。
5. 注册 Dropbox
您如果对 Dropbox 感兴趣的话,可以点击下面我的两个邀请链接注册,这样咱们的空间都可以增加 250M。本人将非常感谢您的支持。(如果您打算再注册一个的话,最好不要用自己的邀请链接,因为同一台电脑上激活的用户不会奖励空间。)
这让我想到了这个: http://cnbeta.com/articles/102731.htm
这些简单的工作,可以用autohotkey.
我是twitter上的 @hacker_w,嘿嘿,名字有点自大。。。。
今天看了你的博客,原来是中科院软件所的大牛啊,呵呵,膜拜一下~
@Run
很高兴认识您,我不是软件所的,不过也差不多,就不多做解释了。刚回访了一下,窃以为您的LOGO使用NlogN.cn可能更醒目些。
@Solrex Yang
恩,呵呵,谢谢建议~
ps:别用”您“啊,我才大三,应该我称您”您“,哈哈
无意来到贵博,偶然发现Sikuli
发现貌似跟AHK等有异曲同工之妙
兴趣怏然之
不知道哪里有比较实用或者比较系统的tutorial呢?
P.S.学校网速奇慢(一般人难以想象),下Sikuli花了一节课。。。
看了你这篇文章开始试Sikuli,也是弄了四十分钟弄好。因为正好puff商业版没有记住密码功能。我直接从打开程序到输入密码连接最小化全自动化了,哈哈。
.skl 文件只要选择使用安装目录下的 Sikuli-IDE.bat 打开就行了
另外,capcha回复挺恼人的
@Yuest
呵呵,我也知道 ReCapcha 比较恼人,尤其是在手机上,但是目前还没有比这更好且更有益的抵抗垃圾评论的方法。 :)
用这个登陆dropbox有点慢了,不过这个Sikuli的创意不错。http://lioz.blogbus.com/logs/50516485.html