AHK 快餐店[17] 之 秒杀 U 盘 1
昨晚一直在测试一个把程序最小化到系统托盘的 AHK 脚本——mini2tray,测试到一半发现一个非常郁闷的 bug :BossKey 功能竟然只能用一次!如果你有兴趣的话,不妨试试它,令我佩服的是:在窗口标题栏上按下鼠标滚轮,窗口就会最小化到系统托盘。该脚本是纯快捷键实现操作的。右击其托盘图标,选“ Preferences ”就会打开其设置快捷键界面。

今天柠檬(LEMONed)同学在 Gtalk 上说: thinkpad 有一个很好用的工具,能非常方便的移除 usb 设备,你有空研究一下 ahk 的这个功能吧。

其实这个功能早就在我的 AHK 系列计划列表里面了。既然柠檬提到了,就顺便写出来吧。

特色功能——可以对付莫名其妙的:无法停止 ‘通用卷’ 设备。这个错误窗口,可是人人喊打。用过 Unlocker 的朋友一定会这样弹出 U 盘:打开我的电脑 → 右击 U 盘 →   unlocker → 全部解锁 → 再弹出一次 U 盘。

下面的脚本就是使用了 Unlocker 的命令参数。来看看用 AHK 写出来的吧:

AHK 快餐店[17] 之 秒杀 U 盘 2

相关链接: 带有绿色版 Unlocker 的压缩包:box | 无 Unlocker 的压缩包:box

DriveGet, DriverList, list, REMOVABLE
; 列出( list )移动设备( REMOVABLE )的盘符,如果你有两个移动设备,它们的盘符分别是 H: 和 I: 的话,那么这里 DriverList 的值会是: HI ,省略“ : ”。

StringSplit, DriverListArray, DriverList
; 把 DriverList 的值进行字符串分解,后面不带任何要分割的符号的话,表示一个字母一个字母地分解,这样我们就可以得到每一个盘符了。

loop %DriverListArray0%
{
RegRead, UnlockerPath, HKEY_LOCAL_MACHINE, SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Unlocker, DisplayIcon
; 读取注册表,获得 Unlocker.exe 所在路径。

target = % DriverListArray%A_Index% . “: ”
; 从后面开始解释:
; . “: “,连接一个字符串“ : ”
; %A_Index% ,表示当前循环到第几次
; % DriverListArray%A_Index% ,表示第 N 个移动磁盘

runwait %UnlockerPath% %target% /s
; 等待 Unlocker 的退出。这里就是解锁每一个移动磁盘了。 /s 参数用来让 Unlocker 在后台运行。
run %A_ScriptDir%\unplug.exe %target%
; %A_ScriptDir% ,代表当前脚本所在的文件夹。利用 unplug.exe 弹出 U 盘。

}
TrayTip,, 所有移动设备全部弹出! ,3000
; 弹出气泡提示, 3 秒后气泡消失。 TrayTip 的完整语法是: TrayTip [, 标题 , 文字 , 时间 , Options]

sleep 3000

怎样制造无法停止 ‘通用卷’ 设备呢?很简单,用 Winrar 之类的软件打开 U 盘里的压缩包就行了。

另外,如果你觉得系统托盘一排的 H ,或者一排的图标太碍眼了,在那些脚本的开头加上:

#NoTrayIcon

就可以隐藏其托盘图标。

# sfufoet :我弄了个 AutoHotKey 的 Google Group,有兴趣的不妨加进来。最后,感谢我们煎蛋的阿企的测试。

AHK 系列 | 上回 | 来自 appinn.com | 下回预告: AHK 快餐店 [18] 之 关掉天网防火墙的开机提示