星期二, 十月 30, 2007

AutoHotkey-自动化脚本工具

一、何为AutoHotkey

AutoHotkey 是一款免费的、Windows平台下开放源代码的热键脚本语言工具。有了它,您就可以:通过发送键盘或鼠标的键击动作命令来实现几乎所有操作的自动化。您可以自己编写 宏 或者使用宏录制器来生成;为键盘,游戏操纵杆和鼠标创建 热键。

  比如要登录某论坛,你只要按一个键,AutoHotkey就会替你打开IE(推荐使用FireFox、Opera或Maxthon),输入网址,输入用户名和密码,回车。

二、实现原理
  第一,用win+r启动程序。从软件如何快速启动来看,有两大流派:一是hoekey、slickrun、type and run等专用工具派。二是强化的win run派:快捷方式专用目录+自定义名称。
  第二,使用脚本工具实现自动化。好用的脚本工具有AutoIt3 和 Auto Hotkey。

三、应用举例:快速登录163信箱
  1. 下载 AutoHotkey,并解压或安装。
  2. 建立脚本文件。把下述内容复制到文本编辑器,保存为 m163.ahk。
run, http://mail.163.com
WinActivate, Maxthon ;;防止窗口不激活
winwait, 网易 ;;等待网页加载成功(至少title显示出来)
sleep, 500 ;;保险起见,再等0.5秒(视网速)
send, xbeta{tab}password{enter};;模拟键入用户名、密码、回车
return

  3. 为m163.ahk 建立快捷方式 m163.lnk,复制到已加入path的目录,就可以了
  4. 现在键入:win+r m163 enter,就是不是进入163信箱了。

 四、AutoHotkey命令解释

(1)运行文件或程序

Run 命令用在运行加载程序、文件、链接、快捷方式等,格式例如:

Run Notepad
Run C:\My Documents\Address List.doc
Run C:\My Documents\My Shortcut.lnk
Run www.yahoo.com
Run mailto:someone@somedomain.com

hotkey label 定义热键。第一句定义热键为:Win+N, 第二句定义为:Control+Alt+C

#n::Run Notepad
^!c::Run calc.exe

上面的例子只能定义只有一个命令的单行热键。用一个键包含更多命令的例子如下: 第一行定义热键,最后一行用return返回,中间为命令集。

#n::
Run http://www.google.com
Run Notepad.exe
return

run 包含绝对路径的命令的写法:Run %A_ProgramFiles%\Winamp\Winamp.exe

RunWait命令产生程序运行的延时。
MsgBox 命令则弹出提示框。例如:

RunWait Notepad
MsgBox The user has finished (Notepad has been closed).

(2)传递键盘输入和鼠标点击
Send将击键送入当前窗口
Click Click 112, 223点击鼠标左键。
MouseMove无点击移动鼠标
MouseClickDrag按下后移动鼠标

(3)激活和操作窗体

WinActivate激活一个窗体。


(4)接收用户输入:MsgBox, InputBox等
下面例子显示一个有两个按钮的对话框:

MsgBox, 4, , Would you like to continue?
IfMsgBox, No
return
; Otherwise, the user picked yes.
MsgBox You pressed YES.

InputBox命令提示用户输入一个字符串。
FileSelectFile FileSelectFolder提示用户选择一个文件。
Gui 命令建立更复杂的客户端数据输入表和用户界面。

(5)使用变量和剪切板

定义变量variables格式:
MyVar1 = 123
MyVar2 = my string

数学表达式expression
NetPrice := Price * (1 - Discount/100)

clipboard 粘贴板:
MsgBox %clipboard%


(6)系列动作的循环重复
loop 循环命令。例如下面例子循环msgbox3次:

Loop 3
{
MsgBox This window will be displayed three times.
}

循环次数可以是变量:
Loop %RunCount%
{
Run C:\Check Server Status.exe
Sleep 60000 ; Wait 60 seconds.
}

还可以和键操作关联起来,下面例子是按下F1时,自动点击鼠标左键:

$F1:: ; Make the F1 key into a hotkey (the $ symbol facilitates the "P" mode of GetKeyState below).
Loop ; Since no number is specified with it, this is an infinite loop unless "break" or "return" is encountered inside.
{
if not GetKeyState("F1", "P") ; If this statement is true, the user has physically released the F1 key.
break ; Break out of the loop.
; Otherwise (since the above didn't "break"), keep clicking the mouse.
Click ; Click the left mouse button at the cursor's current position.
}
return

更多用法见:

File-reading/writing loop: 逐行检索一个文本文件。

Files and folders loop: 逐个检索一个特殊的文件和文件夹。

Parsing loop: 逐个检索字符串中的子串。

Registry loop: 逐条检索registry子键。


(7)操作文件和文件夹

FileAppend命令,在文件末尾追加内容。用 `n 来分行。例如:
FileAppend, A line of text to append.`n, C:\My Documents\My Text File.txt

FileDelete用新文件覆盖一个存在的文件。例如:
FileDelete, C:\My Documents\My Text File.txt

其它文件操作命令:
(8)命令清单: command list

五、脚本应用举例

获取鼠标所在点的颜色值(RGB),然后发送到剪贴板

#c::
MouseGetPos, mouseX, mouseY
; 获得鼠标所在坐标,把鼠标的 X 坐标赋值给变量 mouseX ,同理 mouseY
PixelGetColor, color, %mouseX%, %mouseY%, RGB
; 调用 PixelGetColor 函数,获得鼠标所在坐标的 RGB 值,并赋值给 color
StringRight color,color,6
; 截取 color(第二个 color) 右边的 6 个字符,因为获得的值是这样的:#RRGGBB,一般我们只需要 RRGGBB 部分。把截取到的值再赋给 color(第一个 color)。
clipboard = %color%
; 把 color 的值发送到剪贴板
tooltip, 鼠标所在颜色值已发送到剪贴板。`n小众软件 - appinn.com`n 本系列教程作者:sfufoet
; tooltip 弹出鼠标提示的命令,后面加上要显示的语句。中间的 `n 表示回车
sleep 2000
; 时间暂停 两秒
tooltip,
; 关闭鼠标提示
return

使用方法,需要取屏幕上颜色值时,按下 Win + C。

yonken汉化的AHK帮助文件:下载地址Box.net下载
参考资料:
http://www.appinn.com/ahk-fast-food-restaurant-6-color-thief/
http://yonken.blogcn.com/index.shtml
http://blog.sina.com.cn/s/blog_46dac66f010005g7.html

星期日, 十月 28, 2007

10个有用的web-to-email服务

当你所在的环境只能收发email,不能用其它网络服务的时候,怎样通过email来浏览网站和博客,或者查询股票价格,或者发现CNN首页的最新故事?

其实,通过email你可以做很多事情,即使没有连接到网站--你能阅读任何网页、定制你的任务清单、转化文件、上传照片和录像,查询字典等等。

你只要添加下面的email地址到你的email地址簿:

10. pdf@koolwire.com--如果你有一个office文档或者图片在你手机或者计算机上,需要转化成PDF格式文件。你只要把这个文件以附件形式email到上面这个地址,不久就会返回你的收件箱一个PDF文档。
9. ..@photos.flickr.com--Flickr提供了一个email上传照片的地址。..为你的用户名,你只要以附件形式发email到这个地址,照片马上会在你的相册里显示出来。email的标题变成照片的主题,email的内容变成照片的描述。
8. e@xpenser.com--通过这个email像是填写一个旅行的数据报表。你可以用这个地址去快速记录和收集你在路上的各种旅行费用(通过手机、IM、PDA、打电话等形式)。事后你可以查查账单了。
7. go@blogger.com--你可以用这个地址递交图片到Blogger的博客中。任何你发到这个地址的图片将作为一篇新日志出现在你的手机博客上。你也可以发普通文本到你的Blogspot博客中。前提是,你在博客后台设置“Send to blogger”为开。
6. upload@upload.slideshare.net--假如你有很多PowerPoint 和PDF文件想迅速和你的朋友分享,只要把这些文件email到slideshare,它能马上将文档转化成网页播放格式。
5. …@mms.youtube.com--在你的YouTube帐号里设置好后http://www.youtube.com/my_profile_mobile,就可以用email发布你的视频文件到YouTube了。
4. pdf2txt@adobe.com - 当你没有查看PDF文件的软件时,你可以通过把你的PDF文件email到这个地址,它能将PDF格式自动转化成文本格式(发到pdf2txt@adobe.com),或者html格式(发到pdf2html@adobe.com)的文件。
3. ..@prod.writely.com--Google Docs支持email发布文档。你可以把Word文档、电子表格、PowerPoint email发布到你的Google Docs里(email在Google Docs设置)。这样你可以通过网页或者手机(http://docs.google.com/m)直接查看这些文档了。
2. …@rmilk.com--在rmilk.com注册后,得到一个email地址,向此地址发送的任何邮件都会自动作为收件箱内的一项任务,可以随时随地发布和提醒您工作任务等事情。
1. wsmith@wordsmith.org--发一封空白邮件到这个地址,就可以得到它的定义和同义词。邮件标题写: define myword。

下面隆重推荐最有用的不需要连接到网页,通过email访问网页的email:

0. www@web2mail.com--在邮件标题上写上您要访问的域名,例如www.cnn.com,不久您就可以收到这个网页的拷贝了。这也是突破网络封锁的方法的一种。

类似的服务还有:www4mail@wm.ictp.trieste.it。只是这个域名需要写在邮件的正文里,而不是在标题中。

这些web-to-email服务对于用在股票报价、天气预报、当前汇率等方面信息的接收是非常方便的。

以上转载翻译自:10 Email Addresses That Will Be Useful When You No Internet Access

类似的服务还有很多,再补充几个:

1、upload@box.net--把文件作为附件email到:upload@box.net,就可以将文件共享到Box.net了。
2、twitter@twitter.com--在twitter后台设置email后,通过发email到这个邮箱,就可以发布即时消息了。
3、匿名、不需要登录发邮件:http://www.note2email.com/
一次性邮件
4、临时邮箱:http://spambox.us/
5、email订阅Rss Feed:http://www.r-mail.org/
6、email提醒服务:http://www.forlater.net/
7、email提醒服务:http://www.notifyr.org/

这种email、手机、网页、等微元素的越来越多元化的互通服务和数据共享是互联网信息深化发展的结果的趋势之必然。

星期四, 十月 25, 2007

Send Email to the Future 去发一封冰冻的电子邮件吧

通过这个网站:http://www.mailfreezr.com/

你可以写一封电子邮件,等最多一百年后,你写信给的心上人儿,将会收到这封电子邮件。也许时间能够理解、解释一切吧!还是希望大家不要这样消极,要勇敢追求自己的理想。

看看网站的logo图片:
Send Email to the Future

想想一百年后,不知道谁会收到这封信,即浪漫又伤感。是这世界变化太快,还是我心可已有丝毫的更改?!

星期一, 十月 01, 2007

结绳五种-fishing knots



所谓的渔人结即fisherman knot,由于比较特殊,它是一种越扯越紧的结,同时也被称为是几乎不可能解得开的结。其实这种结绳方法并不复杂,过程大概就是下面这个样子:

fisherman_knot.gif

录像演示见:
http://www.metacafe.com/watch/789881/how_to_tie_fishing_knots/
http://fishing-live-bait.com/

结绳相册:http://picasaweb.google.com/amingphoto/Knots
《实用的户外结绳》http://www.exweb.cn/book/ShowArticle.asp?ArticleID=8730