发表回复 
AHK_L的帮助还是太简略了
2012-05-23, 12 : 55
AHK_L的帮助还是太简略了
字符串,变量,数组都没怎么说,例子也少,加长了用户学习过程。特别是if表达式,字符串引号,变量百分号,看的不明不白。一会在faq里说除了什么不需要,一会在数组那​里又说需要。还有很多命令的参数,没有例子,都不知道怎么用,都得上论坛查半天。
autoit3看个把小时就能开始写东西了,遇到问题F1帮助就能解决。这块ahk_L真是差距太大。不过ahk_L速度快,功能强,还是继续慢慢学。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-05-23, 17 : 36
 
深有同感,虽然AHK帮助文档本身的结构安排的很好,少有的好。然后大部分帮助的内容也是比较详尽的,但是有些部分的内容感觉像一笔带过,那就放个简单的例子嘛,还要自个​琢磨半天。如果能介绍的透彻一点或者再放个简单的例子,这样对于新手会省去不少的麻烦。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-05-23, 18 : 11
 
我的感觉是这样:
AutoHotkey 的帮助足够详尽了, 很多中文博客用户第一次接触用个几十分钟个把小时就写出了满足自己需要的简单代码 (可以去搜索中文博客). 对于初学者, 可能容易出现困惑的地方是它过于宽泛的灵活, 例如对于变量什么时候应加百分号. 编程最重要的是实践, 没有理解的实践过后自然理解了. 如果说 AutoHotkey 的帮助是一笔带过, 那么 AutoIt3 的帮助可能接近目录了.
现在的帮助中非常欠缺的部分主要是 AutoHotkey_L 中增加的那些功能, 例如对象. 这部分通常算高级的内容了, 而且有些细节还处于变化当中, 期待未来会完善吧. 官方论坛中有人在组织计划重写这方面的内容, 有能力的人多帮忙, 有兴趣的人多关注.
很长一段时间里, 我一直想写关于学习 AutoHotkey 的东西, 不过一来帮助过于详尽而我不想重复同样的内容, 二来有些深入的功能我不熟悉, 第三是 AutoHotkey 目前的开发处于波动中, 即使写出来对于以后的版本可能意义不大. 所以...
之前看到官方论坛有人组织写 <ahkbook>, 很开心, 可惜目前进展停滞, 只好先将里面我觉得不错的几篇都翻译过来. 有能力的人不妨参与.

AutoHotkey 学习指南 我的帖子
我不生产代码,我只是 AutoHotkey 的搬运工:从官方到中文;从其他语言到 AutoHotkey;有时则把 AutoHotkey 搬运到普通用户面前。
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-05-23, 19 : 34
 
多谢版主解惑!
主要是自身没有技术底子,导致很多概念都搞不清楚,就如您上面提到的变量什么时候该加百分号或者引号我至今也不熟练。然后AHK本身的帮助确实挺好的,是我见过的软件里面​少有的好,只是在看个别函数的说明时有点困惑,不知道是帮助在这部分写的不好还是我没有理解,我想是后者(L版用的不多,基本都用Basic,感觉够用了)。
版主想写AHK的入门教程的话,我建议您可以这样,以Basic 版为基础,反正也不会更新了,而一般情况下其功能足矣;首先举一些很实际的应用例子,然后重点介绍AHK的特色及AHK当中的核心的一些概念,还可以写一些AHK的学习方​法和经验之谈,即“授之于渔”,而对于各种“鱼”——功能函数等的介绍倒不是特别重要。
至于帮忙,很抱歉,我想我可能帮不上了,因为我自己虽然能勉强看懂英文,但是语文水平太差,恐怕表达不出来。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-05-24, 08 : 46
 
我跟楼上不一样,学ahk就是因为某些分支版,L有数组,dll版可用功能比au3多。之前作了8,9年技术,90%程序都是用c和c++的stl,然后5%某些cpu汇​编。剩下有vb,vba,python,lua等都是边用边查完成的。前几天用au3基本是没有学习时间,后来发现ahk较快较强大开源有生命力才想转了。目前依然感觉a​hk这语法较乱,文档不够查。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-05-24, 10 : 41
 
在2010到2011期间,我从 AutoHotkey Basic 完全转到了 AutoHotkey_L,目前电脑上旧的脚本仍用 AutoHotkey Basic执行,不过新的脚本和现在的学习测试等都是 AutoHotkey_L。我想对于中文用户,Unicode 支持非常重要,所以不太可能会返回经典版本上的,至于其他的新功能,对于非程序员的普通电脑用户一般属于高级功能,所以重要性一般。
AutoIt3 的 DLL 功能非常有限,与 AutoHotkey.dll 和 AutoHotkey.dll 的全功能相差很远。以前曾试验希望通过它的 DLL 调用里面的 UDF,仔细考虑过。现在许多时候直接 DllCall() 也不太麻烦,效率还高很多。
对于 ahk 与 au3 的比较,很多时候的看法受个人因素和环境的印象非常大,而且这种看法在慢慢深入了解的过程中还会变化。例如单从语法上看会 C 语言的人很可能也喜欢 JavaScript 的语法,对 basic 类的语法则不太习惯。

AutoHotkey 学习指南 我的帖子
我不生产代码,我只是 AutoHotkey 的搬运工:从官方到中文;从其他语言到 AutoHotkey;有时则把 AutoHotkey 搬运到普通用户面前。
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-05-27, 07 : 43
 
现在觉得可能以前没学过编程的,对ahk这个语法比较适应吧。看到官方论坛上也有类似说法。
还说ahkV2要改动语法了,%和if表达都要大改。
关于帮助文件的翻译,个人感觉是基本到位了(剩下问题是官方原版就例子不够),高级的内容翻译过来初学者也用不上,对象、类那块其实会用到这种语言的场合都不太需要。往往​学深入了都是直接看英文版。而且都说V2要大改。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-05-27, 09 : 41
 
还真没见过比AHK还要详细的帮助.........

不管是中文版还是英文版
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-05-27, 13 : 29
 
[i=s] 本帖最后由 magusneo 于 2012-5-27 13:46 编辑 [/i]

楼上这绝对是开玩笑,ahk帮助目录里很多东西索引都没有,例子也少。随便找个其他语言lua,python的帮助,哪个不是从常量,变量,数据类型,操作符,表达式,控​制流一二三这样排出来的一大堆。而ahk三言两语就讲完了。中文版和英文版还不一样?否则“不管。。还是”这个语句?中文翻译版我没看几句,就是大致翻了下

帮助真有那么详细的话,就不会有那么多人被if表达和百分号弄晕了。表达式,变量这是一个语言最基本的东西,一般应该看完帮助就有概念而不是被弄晕。
你让初学者去实践中理解的潜台词就是这个内容帮助没讲明白或者无法讲明白。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-05-27, 14 : 19
 
引用:给变量赋值: 要把字符串或数字保存到变量中, 有两种方法: 传统方法和表达式方法. 传统方法使用 等号运算符 (=) 来指定 没有加引号的 原义字符串或包围在百分号中的变量. 例如:

MyNumber = 123
MyString = This is a literal string.
CopyOfVar = %Var% ; 和 = 运算符一起使用时, 需要使用百分号来获取变量的内容.与之相比, 表达式方法使用 冒号等号运算符 (:=) 来保存数字, 加引号的 字符串和其他类型的 表达式. 下面的例子在功能上与前面的例子相同:

MyNumber := 123
MyString := "This is a literal string."
CopyOfVar := Var ; 和前面段落中与其作用相同的语句不同, 百分号不和 := 运算符一起使用.后一种方法由于其更清晰并且与其他许多语言几乎一致的 表达式语法 成为大多数人的首选方法.

从上面的例子中您可能已经想到了有两种方法来清除变量的内容 (即让变量为空):

MyVar =
MyVar := ""上面的这对空引号只能和 := 运算符一起使用, 因为和 = 运算符一起使用时, 则会在变量中保存两个原义的引号字符.
表达式,变量
如果说有被这段话弄晕的话.......我的是很无语.......

我经常说的一句话 是 仔细看帮助 而不是一目十行......仔细理解里面的每一句话......既然他是帮助 那么他就不可能没有提到.....你说被弄晕...我很理解......我也见过那么多人了......说实话...我见到的初学者里.....没仔细看帮助的最少占到了​80%......我帮助别人时经常做的一件事 就是直接从帮助里COPY出一段话....他们看完就懂...可是他们自己去看....就是找不到那段话.......

另外....我好像从没说过 让初学者去实践中理解........不过既然你提到这个.....我觉得 如果是新学一段语法.....是否有必要先跑一下呢.....不运行这个语法 如何能学得会.......

光看文字完全不运行就能学会一个语言????????
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-05-27, 14 : 49
 
你楼上引用的是“给变量赋值”这件事,这件事没人晕。
晕的是“变量的使用”,何时用百分号何时不用百分号。还有字符串引号。

其他语言哪有在帮助文件都说不清楚变量表达式使用的?变量,表达式这么基础的东西都要自己动手跑一下,那还跑的过来?其他语言有这样的吗?随便写个表达式或者变量,就要先​去另外开个temp.ahk来测试下?
官网论坛你去搜索“syntax confuse”看看多少结果。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-05-27, 14 : 55
 
何时使用 何时不使用 就是我上面说的 仔细看帮助.....

每一个该用的地方 例子里面都有写......该不该用 人家也写得很明白了.......

另外我上面说的运行一下......请仔细看我前面有说 是新学一段语法.....我没说你随便写每句话都要测试.......

不过我真的觉得......如果你对你写的代码没信心 也就是没学会.....那还真是要这么做....因为你是在学习
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-05-27, 16 : 39
 
来解释下面的,2,6为什么一个能用,一个不能用?帮助里哪条可以对应上?
代码: (全选)
Array:=7
i:=1
ahk:=5
Array1:="ahk"
Array2:="ahk2"
MsgBox,  Array%i%        ;1
MsgBox, % Array%i%        ;2
MsgBox, % %Array1%        ;3
MsgBox, %Array%%i%        ;4
MsgBox, % Array2        ;5
MsgBox, % Arrayi+1        ;6
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-05-27, 16 : 43
 
这还只是百分号的简单搞晕应用,如果和引号及if组合,搞晕变化更是千变万化。每次都开个temp测试下?
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-05-27, 16 : 59
 
; 通过在任何参数前加上 "% ", 可以让此参数支持表达式. 在下面的例子中,
; 执行数学运算, 访问数组元素, 并且调用函数. 所有这些项
; 都可以通过 "." 运算符串联组成可以由 MsgBox 显示的单个字符串:


你的6 后面写的是
Arrayi+1

这是一个很明显的数学运算 Arrayi + 1 因为前面的 Arrayi 不存在.....所以.....

我想不会有任何一种语言 把你连着写在一起的一堆字母 分析成是 Array(i+1)

比如如果我定义了
a=1
b=2
ab=3

那么如果我写 msgbox, % ab

你觉得是输出3 还是 12
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-05-27, 16 : 59
 
8# ddandyy
这个还是有的,某些商业软件和元老级的开源软件的帮助做的相当详细,不过其内容相对来说有些晦涩难懂(对普通人来说)。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-05-27, 17 : 32
 
[i=s] 本帖最后由 magusneo 于 2012-5-27 18:23 编辑 [/i]

2 3呢,啥理由不报错。这种用法在帮助里是有,但也没明确说明理由。强制表达式里还可以自由加%%?
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-05-27, 19 : 30
 
简单的说 % 后面可以放表达式.....

表达式就是 := 后面可以写的格式......或是 if 后的格式

这个不用我说了吧....在帮助里有说的

你所说的2的格式 在帮助的表达式例子里也有写到....

至于你说的在(强制)表达式里用%% ..... 这个强制可以不用......所有表达式都可以这么用.....

看表达式的优先级列表里......


引用:
如果表达式中的变量包围在百分号中 (例如 %Var%), 不管此变量 包含 什么内容都会被假定为另一个变量 (如果不存在这样的变量, 那么 %Var% 会被解析为空字符串) 的名称或部分名称. 这种方法常用来引用 伪数组 元素, 例如:
Var := MyArray%A_Index% + 100为了向后兼容, 注明了 "可以使用表达式" 的命令参数把百分号中的孤立名称 (例如 %Var%, 但不是 Array%i%) 当作其两边的百分号不存在一样. 通过把引号包围在括号中可以避免这种情况; 例如 Sleep (%Var%)
[AHK_L 52+]: 除了普通变量, %Var% 还可以解析为 环境变量, 剪贴板或任何的 保留/只读的变量. 在修订号 52 之前, 在这些情况中 %Var% 会被当成空字符串.

另外在多说一点点......不是说你.......

是说大部分搞晕的人...都是没搞明白用法 也不仔细查找帮助的情况下....自己想当然的就觉得应该能怎么写....

比如有好多人问的时候....直接就说.....懒得查帮助
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-05-27, 19 : 42
 
这个......
在开始时,我也是被搞得晕晕乎乎的,想要写几行代码必看范例,然后在copy过来。
现在基本上没什么问题了。
在我看来ahk似乎有两套独立的语法系统,一套是“字符串语法系统”(姑且这样叫吧),另一套是“表达式语法系统”。

在字符串系统里,所有的行都被视为字符串,只有放在“%%”内的是变量。解释器变量解析为“内容”,在句子的原位置仍然是一个字符串,感觉这有点象 宏 但是这个宏又是动态的......,在字符串里有解释器可以识别的“关键字”,解释器识别关键字后就执行相应的命令。 这个执行过程是可以由字符串作完整的描述的。

在表达式系统里,所有的非运算符的字符序列都被视为变量,解释器在解释时总是试图获取变量的“内容”进而进行某种运算,运算的结果是一个“值”。和其他“正规”的语言没啥​区别......最后那个“值”好像又被弄成字符串了。

但是这两个系统又是混在一起的,于是多混几下就不知道哪儿是哪儿了.......

一般,赋值号(:=)、单个百分号(%)右边的一定是表达式,括号里边一定是表达式;
除了上面的情况,一般就是字符串了,我发现例外的情况只有一个:涉及到变量地址时。
也就是说
msgbox, variable ;(1)
是一个字符串
msgbox, %variable% ;(2)
也是一个字符串
他们的区别是:第(2)句在执行前会将%variable%替换成variable的内容。
msgbox, % variable
总体来看,它还是一个字符串,但“%”右边是一个表达式,因此它先执行,执行玩之后是一个值,最后“% variable”被替换成计算结果的字符串。

我的理解就差不多这个样子了,有不对的地方,还请高手指点!

资源还是开放的好!<br />
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-05-27, 19 : 54
 
基本差不太多...

只是建议 语句尽量不要写过分复杂的.......只要有可能.....都是越简单越好......

现在初学者最容易犯的错误.....就是总以为字数或行数最少的代码 就是最好的代码

如果不这么想.....其实很容易写出正确不出错的代码.......时间长了....才会越来越熟练...写复杂的才也不会出错
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
发表回复 


论坛跳转:


联系我们 | Autohotkey 中文站 | 回到顶部 | 回到正文区 | 精简(归档)模式 | RSS 聚合