# 对于我上次那篇噱头文深感抱歉。
火山我的 PC 一开机就自动运行很多程序:strokeit,Gtalk,AutoHotKey(N 个 ahk),Clcl,UberIcon……当瘟倒死一起把它们都启动的时候,硬盘一阵狂响。
我也听说过能让开机自动运行程序的延迟启动的小软件,一直懒得去找,今天灵感就在硬盘狂响声中迸发出来了。
先来看代码,这个代码太赞了:
folder = F:\Run
Loop, %folder%\*.lnk
{
runwait %folder%\%A_LoopFileName%
; runwait 命令,等一个程序启动完成之后再循环启动下一个程序,直到循环自动退出。
}ExitApp
; 自动退出
我们只需要把那些开机自动运行的程序快捷方式放到 F:\run 就可以了,然后用超级兔子之类的程序去掉它们的自动运行,把这个 AHK 拖到“开始 – 运行”就可以了。
这样做有三个好处:
1、启动速度加快,这个是从心理上来说,我没有进行详细的测试,- -。欢迎大家留言说说使用后感觉如何。
2、以后重装系统的话,只要把这个 AHK 加入启动菜单。如果你经常看小众软件的话,我想大家手头的软件大部分都是绿色版的吧?
3、排序启动。把快捷键方式按照你想要的顺序命名就可以了,可以按照 A-Z,也可以在快捷方式的名字前面加数字。
另外,这样的代码只适合 AHK fans,对于不想用 AHK 的朋友我又重新写了一个可以配置的绿色版,RunSetting.ini 是配置文件,里面有注释。代码全部可以在下面的任意地址下载:
|来自小众|
看不懂啊……
我也是看不明白.
请从头开始看 AHK 系列文章:http://www.appinn.com/search/ahk
用过那个启动延时的软件,不过偶来还是删了。主要觉得为了启动这点儿事儿还装个程序,把系统拖累的更慢了。不过貌似那个程序比这个脚本更完善一些。比较重要的,比如支持暂停,也就是你着急开机干点儿什么,可以把所有不必要的启动程序先暂停一下,等有空了再resume.
赞。。。
可以把它改成等待启动多个程序
这个也太 简单了点,
如果里面有一个程序启动失败,
那么下面的也启动不了了!
[…] AHK 快餐店 – 开机自动运行程序的延迟启动[绿色版] [小众软件 – Appinn] […]
你写的那个软件
在我机子上运行不了啊
不知道是什么原因
请问你运行的是 Run2.exe 吗?请先看 RunSetting.ini 里面的注释。
用runwait可以吗?这个不是要等前一个程序退出才会继续的吗?很多启动程序是不会立即退出的吧
没用过ahk,猜测而已。。
:)
没用过的话,请不要乱猜。
我的写的每一个脚本都是进行过详细测试。没成功的话,就发布是不是太对不起小众的读者?
@sfufoet, 确实,这里用 RunWait 有问题,像 @msmouse 说的,要等到前一个程序结束才会启动下一个程序。暂时只能用 Run 配合 Sleep ,有没有同学有更合适的写法。
我把那个代码的ahk文件也创建了一个快捷方式,放到f:\run里面去了,于是开机的时候恐怖的事情发生了~~~~~~~~~~~~~~
太恐怖了~~~~~~~~~~~~~~~
不要吓我,请说明详细情况。
看,我说的事情发生了吧!!!
就是成为一个死循环了~~~~~变成递归启动了
怪我没看清楚你的上一个评论,你把 AHK 也放进去的结果只能是递归。
我还以为我的脚本出问题了。:)
其实…… 和*nix下的/etc/init.d/rc*的原理是类似的吧
火山你好,我请问一下,如果需要设定开机5秒后才开始运行所有得快捷方式应该如何修改命令,因为是DHCP的网络,开机会有DHCP获取IP地址的一段时间,如果这个时候程序陆续运行,有部分网络程序会造成假死,另外,请问哪里有比较齐全得AHK中文命令帮助?看了几篇教程比较感兴趣,想系统的学习一下。
在这句“folder = F:\Run”下面加上:
sleep 5000
睡眠 5000 毫秒,就是暂停 5 秒。
比较入门的只有这个:
汉化了一部分的 AutoHotKey 帮助文件 – 入门 AutoHotKey 必备
这里下载。http://www.box.net/shared/qnay28xn7s
由 yonken 汉化。
好快得回复速度……难道订阅了最新回复的RSS……
我现在先下载教程看一下,等搞明白AHK的基本操作后后再慢慢请教。
新评论会以邮件发送给我,再加 Gtalk。:)
我也写了个小软件,用ini文件于管理启动程序的顺序,延迟时间,以及需要填的密码口令,呵呵
能把代码贴到这里来吗?:)
火山你好,ahk里有获得当前路径的命令么?我的ahk是英文的,读了便help文档,没有找到。
背景是这样的,我想用win+q在当前路径下”新建文件夹“,脚本如下:
#q:: ;新建文件夹
send {RButton}wf
return
但上述脚本我基本是模仿鼠标操作进行的,没有普遍性,要新建个txt,该套机制就不行了。所以想换个思路:run new.txt–>获取当前路径值–>保存 new.txt于当前路径。
顺便再问一句,国内有较好的ahk论坛么?我现在只知道上http://www.autohotkey.com/
谢谢
获取当前文件夹的是没有这样的功能的。
最简单的办法,模拟键盘操作:
alt + d Ctrl + c 就可以把地址栏的地址复制到剪贴板(用 path=%clipboard%,就可以获得剪贴板),然后来个 filecopy 命令。
其实还可以模拟键盘的操作,send {RButton}w{up 8}{enter}
{up 8} 就是发送多少次向上键,根据你的右键菜单进行设置。
国内没有什么 ahk 论坛。
我建立了一个 ahk group :http://groups.google.com/group/autohotkey-appinn
那还用说
http://groups.google.com/group/autohotkey-appinn
这里么,你要的脚本都有!
方法一我这就试试,至于方法二:send {RButton}w{up 8}{enter},由于我宿舍,实验室加起来有三四台电脑,up8没什么可移植性。
总之,非常感谢。
我记得有个CMD下的START命令有个参数也有这个功能……可以写个CMD或者BAT嘛……
start 有个参数是“WAIT”作用是启动应用程序并等候它结束。它和 ahk 这个命令不一样的。
这篇是专门介绍 ahk 的教程。
= =想起来了,那个参数是要等前一个程序结束后再运行下一个程序,确实与这个要实现的不一样,抱歉呃
没事,谁都会失误啦。
我想在每次启动AHK的时候自动运行一些程序,,就加进了这样的语句:
folder = F:\outil\Links\Run
Loop, %folder%\*.lnk
{
runwait %folder%\%A_LoopFileName%
}
ExitApp
可是为什么启动AHK之后并没有自动运行这里边的程序呢??
放进去的必须是 lnk 即是快捷方式才行的。
这个文件夹里边确实是lnk文件啊。。
ahk 所在的文件夹是不是包含空格?请去掉空格。
[…] 下面又酷酷地拿了我的开机自动运行程序的延迟启动,再把33世界的移动文件或文件夹至目标路径-AutoHotkey脚本改头换面,和帅帅滴拿了关闭显示器-AutoHotkey脚本。 […]
感觉 Runwait 运行 lnk 用起来和 Run 命令一样,启动进程后就马上执行下一句了。
Runwait 的正确作用是等待运行的程序结束才继续向下运行。
如:
Runwait, notepad
Msgbox, notepad have been closed
火山你好,我试验了这个延迟启动方案,并且根据自己需要写了代码,效果很好,但是我发现一些问题:
1.启动顺序不是按照名称排序。在我的电脑上就是按照1,3,2这样的顺序启动(以msgbox判定的),似乎有其他的排序依据。有需要按照固定顺序启动的童鞋可以吧快捷方式剪切出去再放回来,顺序就会改变,但是没发现固定的规律。
@自言自语2.关于那个lnk启动不了,我也发现过,如果你通过修改把快捷方式上的小箭头图标去掉,AHK就认不出快捷方式了,不知道什么原因 :(。
@DemoJameson 3.这个问题我也发现了 runwait似乎确实是执行完程序就执行下一句,我想这也许是和咱们是通过执行快捷方式而不是原程序来执行有关。可以通过添加sleep来解决,对于需要延迟时间长些的程序还可以利用if语句单独处理。
暂时发现的就这些问题了,我还想问一下AHK有没有结束进程的语句?我是想通过一个快捷键来开关一些小程序,既按一下启动,再按一下结束,不知道火山有没有什么思路啊?
最后祝愿小众越搞越好,真是太喜欢你们的网站了!呱唧呱唧~~~
@黑色柳丁, 是按照字母排列的,数字方面没注意过。其实也没所谓了。要提前就全部加 0。
结束进程可以用:Process, Close, %active_id%
active_id 请替换为实际变量。在启动软件的时候,可以获得。比如:Run Notepad.exe, , , active_id
@sfufoet, 多谢点拨!一键开关程序实现了,代码如下
#c::
{
Process,exist,FastStone Capture.exe
if ErrorLevel
winclose,FastStone Capture
else
run E:\greed soft\FastStone capture\FastStone Capture.exe
return
}
这里我用的是winclose 因为发现Process, Close是结束进程强制退出,会出现很多问题(未刷新托盘区,退出无提示等)
对于像记事本这种标题会改变的窗口则这样写
…
if ErrorLevel
{
;部分匹配模式
SetTitleMatchMode, 2
;关闭含有”记事本”字样的窗口
winclose,记事本
}
…
关于那个启动顺序我再试试,因为我这边校园网要先启动一个客户端才有网络,所以那个流氓软件必须得先启动才行…
@sfufoet, 厄 俺刚刚的回复被HX了?
@黑色柳丁, 评论放出来了。加个 0 在前面就行了。绝对是第一个启动的。
在我的 win7 ultimate 32 sp1 不能正常运行,必须等上一个程序进程结束才能运行下一个程序,把 runwait 改成 run 就完美运行了!
@linuxfan 本人亲测在win8环境下也必须把runwait改成run