AutoIT3 vs AutoHotkey

AutoIT3vsAutoHotkey

(2007-05-14 08:06:31)
分类:系统工具
作者:xbeta 版本:070514/060904 出自: 善用佳软http://xbeta.info

两者皆为此中翘楚,得一即可安天下。然兴致而来,不妨搜一些比较结果。

AutoIT3<wbr></p>vs<wbr>AutoHotkey

AutoIT3<wbr></p>vs<wbr>AutoHotkey
  我最早听说的是AutoIt3,看了看,没用。后来了见了AutoHotkey,也没用。再后来用的时候,发现AutoHotkey更简单,并且vim自带了语法着色文件,就一直用它。后经yul88补充启示,就有了这篇文章。

* 官方的解释
  在AutoHotkey的help文件中,搜一下AutoIt,可以发现好几处内容。并且,有一个专门的Notes for AutoIt v2 Users,比较详细地讲了两者的兼容和区别。此外,在help的第一节,AutoHotkey介绍的标题下,还有

AutoIT3<wbr></p>vs<wbr>AutoHotkey

* 简译一段
  多人在版上说起AutoHotKey,我来说说AutoIt3。它是AutoHotKey的大哥。AutoHotKey是AutoIt v2 的仿制,并做了强化。但AutoIt3是新品,更强大,有很多改进(COM、GUI兼容,正则表达式)。因此,应了解一下AutoIt3。……AutoHotKey的开发者是原AutoIt2成员。这两个项目之间可能有些不快。AutoIt3后来不再GPL,来保护代码。你可以下载到AutoIt2的代码,想要AutoIt3,就要做保证。…… AutoHotKey相当于AutoIt2++……猜:他想扩展AutoIt2,但其他人关注于AutoIt3(增加了很多功能:GUIs,tray icons,even with their own right click menus,calling COM objects directly from the AutoIt scripts and a lot more stuff)
  {英文原文}

* yul88的观点
  我觉得,AutoHotKey的语法太不规范了,使用数组很头疼。如果脚本里面的控制比较复杂的话,还是用AutoIt比较好。

* yonken的评价
  至于说到究竟哪种语言比较好,我的想法是其实应该看个人习惯和你要解决的问题了,毕竟这是两种不同的脚本语言,自然在语法和功能级别上有所不同(但两者同样都能解决大部分的自动化操作问题),因此若你曾学习过其他(程序)语言那么你可以选择与你所熟悉的语言相近的一个。
  我的个人意见是如果你学过BASIC(VB),那么可以选择AutoIt,否则可以考虑AutoHotkey,因为它的语法简单而且直观。
  {原文全文}

* yonken荐/译的两篇评论
  另外,你可以考虑参考一下老外对这两者的讨论:
http://www.blogcn.com/user48/yonken/blog/26348290.html
http://www.blogcn.com/user48/yonken/blog/26348321.html
摘引如下:

……其实根本没有所谓的AUT vs. AHK 之类的事。我有点怀疑(楼主的企图)。Chris(AutoHotkey开发者)刚开始想要(和John B.讨论)搞热键功能的时候他得到的只是冷漠的回应,现在AHK越来越受欢迎了却有人(这些人可能现在是/曾经是AUT用户)来要求两种语言的合并?)
  谁会把自己的亲生孩子杀掉?会是Chris?还是John??还是安心让他们各自开发吧。BTW:这两种语言都是开源的,如果你有兴趣的话不妨自己开发一个,比如说AutoHITkey ??
  AHK的语法更加简单,而(在多数情况下)实现同样的功能却只要键入更少的内容。对我们这种懒人来说,还有什么更好不过的?……

AHK相对AutoIt的优越之处
  语法上稍微比较容易理解,特别是GUI部分的语法更加容易而且表现很好。
  更加友好/更好的论坛支持。
  获得源码的途径非常明显。而AutoIt “开发小组”似乎对获取新源码的行为设置了一些“障碍”。

AutoIt 相对 AHK的优越之处
  优点在于拥有更多而且较好的像修改版SciTe(非常棒)和AutoMacroGenerator(对很多任务的实现要比AU3recorder好多了)这样的用户创建工具。众多的工具一直都在更新开发中。至于会有这么多针对AutoIt 的工具出现的另外一个原因可能是因为它的知名度和强大的用户功能吸引了更多的人去开发(AutoIt这个词早就出现在人们的视力范围内)。
  当然,我们不能这么片面地分析, SmartGui (Gui stealer) 就是AHK的一个值得引以为傲的示例工具。
  AutoIt的开发级别恐怕更加高级(比如说ActiveX/OLE/COM),但这也往往意味着要有复杂而且较难的语法来实现,使得用户只好频繁询求帮助。

  我想如果AutoHotKey融合CS-Script的话,那么平衡两方力量的天平将可能倾斜。CS-Script是一种C# 脚本语言,它可以用来实现很多事情,比如MAKE DLLs 以及一切C# 能实现的功能。我认为之所以众多用户投奔AutoIt怀抱的一个重要原因就是它的“强大”(这也是为什么那么多用户工具针对它来开发的原因),但是如果有一天AutoIt 失去了它的“强大”优势那么将会有好戏看了。
  也许AutoHotKey与CS-Script (C#)的逐渐融合将会吸引更多的开发人员,而且更多的用户工具也将为AutoHotKey开发。 AutoHotKey 本身的优点例如语法上较易理解和更加友好可能会受到更多人的喜爱。所以很难说将来将会怎样,但那肯定是值得期待的。
  我觉得其实大家对 AutoHotKey 和 AutoIt 的比较是无法避免的。这两种语言如此相似,许多人都曾在选择最好的一个之前试过这两种语言,有些人可能会用了某个之后一段时间然后又换回原来的,有些人甚至可能会有第四次的选择。
  ……用AutoHotkey 来解决问题往往更加轻松、更加简单,而且更加直观。即使我用AutoIt和 AutoHotkey 脚本来实现同一个功能,往往是用AutoHotkey写的脚本更容易让人理解或者更容易实现。尽管AutoIt 对COM/OLE/ActiveX的支持使得它在一些应用面上占据了优势,但我还是看重AutoHotkey众多细节方面的优点。对于多数自动化任务来说AutoHotkey都是较好的选择。如果有一天AutoHotkey也出一个支持COM/OLE/ActiveX的版本的话(其实结合VBscript/JScript 和 AutoHotkey也是一样能实现),那么我想AutoHotkey将肯定会在这场竞争中占据优势。
  AutoHotkey在某种程度上来说带有一点Javascript的味道,我觉得这样不错。我认为AutoHotkey就是应该参考Javascript/JScript/JScript.NET 的语法。VB.NET的变化越大或者本来用VB.NET后来转而投奔C#、Javascript、Jscript、JScript.NET等语言怀抱的人数越多,则VBScript 和 VBA的未来就越不太让人看好。………总体来说,我觉得AUT这么像Visual Basic 应该算是一个失误。
  还有,我发现就算用最垃圾的记事本来编写AutoHotkey 脚本都是很轻松的一件事,而对AutoIt来说,如果不是有强大的SciTe4AutoIt 版,那么用记事本来编写AutoIt 脚本简直就是折磨。
  ……我始终认为随着AutoHotkey 越来越强大(如果它能支持COM/OLE/ActiveX则更加完美了),它迟早会变得更加受欢迎的。


* 再补几篇老外的讨论

* 再谈一下编辑器的支持
  等用了vim之后,最初在AHK的论坛上发现有ahk语法文件,于是就用它了。
  后来经yul88提醒,autoit3的也有,呵呵,是在vim站点——这才是正道,为什么没想到呢?
  当然,编autoit3还是用改造后的SciTE4AutoIt(点击这里)最好,有折叠、自动补全、函数提示:

AutoIT3<wbr></p>vs<wbr>AutoHotkey

AutoIT3<wbr></p>vs<wbr>AutoHotkey

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强制返回为文本 -------------------------------- 数字类型的格式化 --------------------------------     固定格式参数:     General Number 普通数字,如可以用来去掉千位分隔号     format$("100,1
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办法, Format 或者FormatDateTime 竟然结果和系统设置的区域语言的日期和时间格式相关。意思是尽管你用诸如 Format(Now, "MM/dd/yyyy"),如果系统的设置格式区域语言的日期和时间格式分隔符是"-",那他还会显示为 MM-dd-yyyy     只有拼凑: <%response.write
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace My ‘全局错误处理,新的解决方案直接添加本ApplicationEvents.vb 到工程即可 ‘添加后还需要一个From用来显示错误。如果到这步还不会则需要先打好基础啦 ‘======================================================== ‘以下事件
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用的爽呀,这篇文章写与2011年,看来我以前没有认真去找这个方法呀。 https://blog.csdn.net/chzjxgd/article/details/6176325 金蝶K3 BOS的插件官方是用VB6编写的,如果  能用.Net下的语言工具开发BOS插件是一件很愉快的事情,其中缘由不言而喻,而本文则是个人首创,实现在了用V
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选中的单元格进行处理 Dim m As Range, tmpStr As String, s As String Dim x As Integer, y As Integer, subStr As String If MsgBox("确定要分列处理吗?请确定分列的数据会覆盖它后面的单元格!", _
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) 2 Dim path As String, hash As String 3 For Each fil
  Imports MySql.Data.MySqlClient Public Class Form1 ‘ GLOBAL DECLARATIONS Dim conString As String = "Server=localhost;Database=net2;Uid=root;Pwd=123456;" Dim con As New MySqlConnection
‘導入命名空間 Imports ADODB Imports Microsoft.Office.Interop   Private Sub A1() Dim Sql As String Dim Cnn As New ADODB.Connection Dim Rs As New ADODB.Recordset Dim S As String   S = "Provider=OraOLEDB.Oracl
Imports System.IO Imports System.Threading Imports System.Diagnostics Public Class Form1 Dim A(254) As String    Function ping(ByVal IP As Integer) As String Dim IPAddress As String IPAddress = "10.0.
VB运行EXE程序,并等待其运行结束 参考:https://blog.csdn.net/useway/article/details/5494084 Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Pr
今天碰到一个问题,登陆的时候,如果不需要验证手机号为空,则不去验证手机号 因为登陆的时候所有的验证信息都存放在一个数组里 Dim CheckUserInfo() As String ={UserBirthday, SecEmail, UserMob, UserSex, RealNameFirst, RealName, CheckCardID, CheckCardType, Contactemail
在VB6.0中,数据访问接口有三种: 1、ActiveX数据对象(ADO) 2、远程数据对象(RDO) 3、数据访问对象(DAO) 1.使用ADO(ActiveX Data Objec,ActiveX数据对象)连接SQL Server 1)使用ADO控件连接 使用ADO控件的ConnectionString属性就可以连接SQL Server,该属性包含一个由分号分隔的argument=value语
注:大家如果没有VB6.0的安装文件,可自行百度一下下载,一般文件大小在200M左右的均为完整版的软件,可以使用。   特别提示:安装此软件的时候最好退出360杀毒软件(包括360安全卫士,电脑管家等,如果电脑上有这些软件的话),因为现如今的360杀毒软件直接会对VB6.0软件误报,这样的话就可能会在安装过程中被误报阻止而导致安装失败,或者是安装后缺乏很多必须的组件(其它的杀毒软件或安全卫士之类的
Private Sub Form_Load() Call conndb End Sub Private Function conndb() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim strCn, sql As String Dim db_host As String Dim db_user As String
  PPSM06S70:  Add  moddate  EDITSPRINTJOB:  MAX(TO_CHAR(ETRN.MODDATE, ‘yyyy/mm/dd/HH24:MI AM‘)) ACTUAL_SHIPDATE   4.Test Scenario (1) :Query SQL Test DN:8016578337 SELECT CTRN.TKCTID TRUCK_ID,        
  沒有出現CrystalReportViewer時,須安裝CRforVS_13_0. 新增1個數據集,新增1個數據表,添加二列,列名要和資料庫名一樣. 修改目標Framework 修改app.config, <startup >改成<startup useLegacyV2RuntimeActivationPolicy ="true">  CrystalReport1.rpt增加數據庫專家 在表單
Imports System.Threading Imports System Public Class Form1 Dim th1, th2 As Thread Public Sub Method1() Dim i As Integer For i = 1 To 100 If Me.Label1.BackColor =
Friend Const PROCESS_ALL_ACCESS = &H1F0FFF = 2035711 Friend Const PROCESS_VM_READ = &H10 Friend Const PROCESS_VM_WRITE = &H20 Friend Const PAGE_READONLY = &H2 Friend Const PAGE_READWRITE = &H4 Friend
以下代码随手写的 并没有大量测试 效率也有待提升 如果需要C#的请自行转换 Function SplitBytes(Data As Byte(), Delimiter As Byte()) As List(Of Byte()) Dim i = 0 Dim List As New List(Of Byte()) Dim bytes As New
Imports System.Data.SqlClient Public Class Form1 REM Public conn1 As SqlConnection = New SqlConnection("server=.; Integrated Security=False;Initial Catalog= mydatabase1; User ID= sa;password")