AHK 快餐店 - 开机自动运行程序的延迟启动[绿色版]

AHK 快餐店   开机自动运行程序的延迟启动[绿色版] | 小众软件 > autohotkey

# 对于我上次那篇噱头文深感抱歉。

火山我的 PC 一开机就自动运行很多程序:strokeitGtalkAutoHotKey(N 个 ahk),ClclUberIcon……当瘟倒死一起把它们都启动的时候,硬盘一阵狂响。

我也听说过能让开机自动运行程序的延迟启动的小软件,一直懒得去找,今天灵感就在硬盘狂响声中迸发出来了。

先来看代码,这个代码太赞了:

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 是配置文件,里面有注释。代码全部可以在下面的任意地址下载:

下载1|来自小众|下载2


有 43 个评论
Gravatar | 小众软件

看不懂啊……

回复

Gravatar | 小众软件

我也是看不明白.

回复

Gravatar | 小众软件

请从头开始看 AHK 系列文章:http://www.appinn.com/search/ahk

回复

Gravatar | 小众软件

用过那个启动延时的软件,不过偶来还是删了。主要觉得为了启动这点儿事儿还装个程序,把系统拖累的更慢了。不过貌似那个程序比这个脚本更完善一些。比较重要的,比如支持暂停,也就是你着急开机干点儿什么,可以把所有不必要的启动程序先暂停一下,等有空了再resume.

回复

Gravatar | 小众软件

赞。。。

回复

Gravatar | 小众软件

可以把它改成等待启动多个程序

回复

Gravatar | 小众软件

这个也太 简单了点,
如果里面有一个程序启动失败,
那么下面的也启动不了了!

回复

Gravatar | 小众软件

你写的那个软件
在我机子上运行不了啊
不知道是什么原因

回复

Gavatar | 小众软件

请问你运行的是 Run2.exe 吗?请先看 RunSetting.ini 里面的注释。

回复

sfufoet reply on 四月 10th, 2008,10:08:

Gravatar | 小众软件

用runwait可以吗?这个不是要等前一个程序退出才会继续的吗?很多启动程序是不会立即退出的吧

没用过ahk,猜测而已。。

回复

Gavatar | 小众软件

:)

没用过的话,请不要乱猜。

我的写的每一个脚本都是进行过详细测试。没成功的话,就发布是不是太对不起小众的读者?

回复

sfufoet reply on 四月 10th, 2008,10:09:

Gravatar | 小众软件

我把那个代码的ahk文件也创建了一个快捷方式,放到f:\run里面去了,于是开机的时候恐怖的事情发生了~~~~~~~~~~~~~~
太恐怖了~~~~~~~~~~~~~~~

回复

Gavatar | 小众软件

不要吓我,请说明详细情况。

回复

sfufoet reply on 四月 10th, 2008,10:38:

Gavatar | 小众软件

看,我说的事情发生了吧!!!

回复

Fantasy OnLine reply on 四月 16th, 2008,12:25:

Gravatar | 小众软件

就是成为一个死循环了~~~~~变成递归启动了

回复

Gavatar | 小众软件

怪我没看清楚你的上一个评论,你把 AHK 也放进去的结果只能是递归。

我还以为我的脚本出问题了。:)

回复

sfufoet reply on 四月 10th, 2008,10:44:

Gravatar | 小众软件

其实…… 和*nix下的/etc/init.d/rc*的原理是类似的吧

回复

Gravatar | 小众软件

火山你好,我请问一下,如果需要设定开机5秒后才开始运行所有得快捷方式应该如何修改命令,因为是DHCP的网络,开机会有DHCP获取IP地址的一段时间,如果这个时候程序陆续运行,有部分网络程序会造成假死,另外,请问哪里有比较齐全得AHK中文命令帮助?看了几篇教程比较感兴趣,想系统的学习一下。

回复

Gavatar | 小众软件

在这句“folder = F:\Run”下面加上:

sleep 5000
睡眠 5000 毫秒,就是暂停 5 秒。

比较入门的只有这个:
汉化了一部分的 AutoHotKey 帮助文件 - 入门 AutoHotKey 必备

这里下载。http://www.box.net/shared/qnay28xn7s

由 yonken 汉化。

回复

sfufoet reply on 四月 10th, 2008,21:06:

Gravatar | 小众软件

好快得回复速度……难道订阅了最新回复的RSS……
我现在先下载教程看一下,等搞明白AHK的基本操作后后再慢慢请教。

回复

Gravatar | 小众软件

新评论会以邮件发送给我,再加 Gtalk。:)

回复

Gravatar | 小众软件

我也写了个小软件,用ini文件于管理启动程序的顺序,延迟时间,以及需要填的密码口令,呵呵

回复

Gravatar | 小众软件

能把代码贴到这里来吗?:)

回复

Gravatar | 小众软件

火山你好,ahk里有获得当前路径的命令么?我的ahk是英文的,读了便help文档,没有找到。
背景是这样的,我想用win+q在当前路径下”新建文件夹“,脚本如下:
#q:: ;新建文件夹
send {RButton}wf
return
但上述脚本我基本是模仿鼠标操作进行的,没有普遍性,要新建个txt,该套机制就不行了。所以想换个思路:run new.txt–>获取当前路径值–>保存 new.txt于当前路径。
顺便再问一句,国内有较好的ahk论坛么?我现在只知道上http://www.autohotkey.com/
谢谢

回复

Gavatar | 小众软件

获取当前文件夹的是没有这样的功能的。

最简单的办法,模拟键盘操作:

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

回复

sfufoet reply on 四月 15th, 2008,13:10:

Gavatar | 小众软件

那还用说
http://groups.google.com/group/autohotkey-appinn
这里么,你要的脚本都有!

回复

Fantasy OnLine reply on 四月 16th, 2008,12:27:

Gavatar | 小众软件

方法一我这就试试,至于方法二:send {RButton}w{up 8}{enter},由于我宿舍,实验室加起来有三四台电脑,up8没什么可移植性。
总之,非常感谢。

回复

riceking reply on 四月 16th, 2008,21:40:

Gravatar | 小众软件

我记得有个CMD下的START命令有个参数也有这个功能……可以写个CMD或者BAT嘛……

回复

Gavatar | 小众软件

start 有个参数是“WAIT”作用是启动应用程序并等候它结束。它和 ahk 这个命令不一样的。

这篇是专门介绍 ahk 的教程。

回复

sfufoet reply on 四月 27th, 2008,21:59:

Gavatar | 小众软件

= =想起来了,那个参数是要等前一个程序结束后再运行下一个程序,确实与这个要实现的不一样,抱歉呃

回复

reply on 四月 28th, 2008,12:08:

Gavatar | 小众软件

没事,谁都会失误啦。

回复

sfufoet reply on 四月 28th, 2008,12:26:

Gravatar | 小众软件

我想在每次启动AHK的时候自动运行一些程序,,就加进了这样的语句:

folder = F:\outil\Links\Run
Loop, %folder%\*.lnk
{
runwait %folder%\%A_LoopFileName%
}
ExitApp

可是为什么启动AHK之后并没有自动运行这里边的程序呢??

回复

Gavatar | 小众软件

放进去的必须是 lnk 即是快捷方式才行的。

回复

sfufoet reply on 七月 11th, 2008,09:59:

Gravatar | 小众软件

这个文件夹里边确实是lnk文件啊。。

回复

Gavatar | 小众软件

ahk 所在的文件夹是不是包含空格?请去掉空格。

回复

sfufoet reply on 七月 12th, 2008,18:21:

Gravatar | 小众软件

感觉 Runwait 运行 lnk 用起来和 Run 命令一样,启动进程后就马上执行下一句了。
Runwait 的正确作用是等待运行的程序结束才继续向下运行。
如:
Runwait, notepad
Msgbox, notepad have been closed

回复

Gravatar | 小众软件

火山你好,我试验了这个延迟启动方案,并且根据自己需要写了代码,效果很好,但是我发现一些问题:
1.启动顺序不是按照名称排序。在我的电脑上就是按照1,3,2这样的顺序启动(以msgbox判定的),似乎有其他的排序依据。有需要按照固定顺序启动的童鞋可以吧快捷方式剪切出去再放回来,顺序就会改变,但是没发现固定的规律。
@自言自语2.关于那个lnk启动不了,我也发现过,如果你通过修改把快捷方式上的小箭头图标去掉,AHK就认不出快捷方式了,不知道什么原因 :(。
@DemoJameson 3.这个问题我也发现了 runwait似乎确实是执行完程序就执行下一句,我想这也许是和咱们是通过执行快捷方式而不是原程序来执行有关。可以通过添加sleep来解决,对于需要延迟时间长些的程序还可以利用if语句单独处理。

暂时发现的就这些问题了,我还想问一下AHK有没有结束进程的语句?我是想通过一个快捷键来开关一些小程序,既按一下启动,再按一下结束,不知道火山有没有什么思路啊?

最后祝愿小众越搞越好,真是太喜欢你们的网站了!呱唧呱唧~~~

回复

Gavatar | 小众软件

@黑色柳丁, 是按照字母排列的,数字方面没注意过。其实也没所谓了。要提前就全部加 0。

结束进程可以用:Process, Close, %active_id%

active_id 请替换为实际变量。在启动软件的时候,可以获得。比如:Run Notepad.exe, , , active_id

回复

Gavatar | 小众软件

@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,记事本
}

关于那个启动顺序我再试试,因为我这边校园网要先启动一个客户端才有网络,所以那个流氓软件必须得先启动才行…

黑色柳丁 reply on 四月 4th, 2009,15:34:

Gavatar | 小众软件

@sfufoet, 厄 俺刚刚的回复被HX了?

黑色柳丁 reply on 四月 4th, 2009,15:49:

sfufoet reply on 四月 4th, 2009,13:49:

Gavatar | 小众软件

@黑色柳丁, 评论放出来了。加个 0 在前面就行了。绝对是第一个启动的。

回复

sfufoet reply on 四月 4th, 2009,16:44:

Trackbacks

  1. 酷米小客 - 每日网摘 » Blog Archive » links for 2008-04-09
  2. 为 AutoHotKey 做点事 | 小众软件 - Appinn
发表你的意见

(必需)

(必需)


支持 Ctrl+Enter