找回密码
 加入
搜索
查看: 26567|回复: 62

[系统综合] 看到au3的兄弟已经曲线实现了多线程,咱们的au3应该也不远了吧!

 火... [复制链接]
发表于 2012-5-6 23:25:38 | 显示全部楼层 |阅读模式
本帖最后由 happytc 于 2012-5-6 23:27 编辑

ahk用dll的方式实现了简单的多线程,至少可以线程之间共享变量了。它是由志愿者开发出来的,看来这就是开源的优势了,志愿者拿到源码,就可以修改和增加重大功能了,而我们的au3,非开发者,拿不到源码,想开发都不可能了。

我知道P版曾在这方面努力过,不知道有没有进展呀
不过,就我认知而言,没有au3的源码,做起来很难很难的。
希望那个大侠能实现au3的多线程,现在的软件界面,很少不是UI多线程的了

比较ahk的线程间共用变量的例子:
;创建一个AhkDllThread类的实例,每创建一个实例,就是一个线程
ahkDll01 :=AhkDllThread("AutoHotkey.dll")
ahkDll02 :=AhkDllThread("AutoHotkey.dll")


;接下来用ahkDll01举例,启动这个空脚本
ahkDll01 .ahktextdll()     ;启动 #Persistent + #NoTrayIcon 模式的空线程

;用addFile或者addScript等函数,往这个空脚本添加要执行的内容。。。
ahkDll01.addFile("MyScript.ahk")        ;添加但暂时不执行,待会用别的命令去执行

; 用ahkassign 方法,访问到线程中的变量,把主进程的变量值,传给线程里的变量
ahkDll01.ahkassign.a:="test"


; 用ahkgetvar  方法,得到线程中的变量变量值
MyString := ahkDll01.ahkgetvar.a
发表于 2012-5-6 23:38:58 | 显示全部楼层
如果是用DLL来做中间人
AU3也可以实现变量共享.
难实现的只是直接使用变量名.
如果它能实现一个变量名一个地址,我想多线程早就出来了
 楼主| 发表于 2012-5-6 23:59:58 | 显示全部楼层
回复 2# ceoguang

我大体看了下,ahk那个DLL用了三种方法来实现变量共享
①用创建线程时返回的指针,这样只需传递一个指针即可操作在其他线程中的所有变量
②传递需共用变量的指针, 如果需共用多个变量, 则需要传递多个变量的指针
③用Critical Section的方法(我不知道翻成啥,应该是象‘关键代码段’之类的吧),锁定/解锁操作来解决同时访问冲突问题
发表于 2012-5-9 16:15:39 | 显示全部楼层
我想知道ahk有报毒的痛苦吗,没有的话,准备尝试往那转转。。。
 楼主| 发表于 2012-5-9 16:24:30 | 显示全部楼层
我想知道ahk有报毒的痛苦吗,没有的话,准备尝试往那转转。。。
sanmoking 发表于 2012-5-9 16:15



    呵,看看ahk官方给杀软厂商的公开信
http://www.autohotkey.com/community/viewtopic.php?t=31975
发表于 2012-5-9 16:49:58 | 显示全部楼层
回复 5# happytc


    这是神马原因。。。脚本语言天生命苦?
 楼主| 发表于 2012-5-9 16:59:35 | 显示全部楼层
回复  happytc


    这是神马原因。。。脚本语言天生命苦?
sanmoking 发表于 2012-5-9 16:49



    差不多这个意思了
由解释型语言生成的exe,其实也可以现解为exe里再包含了个Exe(解释器),运行时先释放源代码,然后一行行由解释器来执行,烂的杀软,只要发现这样的,直接警告或删除了。

所以现在一大半的解释型语言都给出新功能:可以编译成机器码了,如VBS,以前不能,现在可能生成两种行事的Exe文件。

au3不可能出这种编译了,官方连问都不会给问的,问了就直接锁帖。
发表于 2012-5-9 17:11:15 | 显示全部楼层
回复 7# happytc


    那au3官方这么固执,就是因为他比较好用?业余选手从来没经过专业训练,接触编程就是AU3,现在要转学其他语言的话,比较容易入门的还望推荐一下。
发表于 2012-5-9 17:12:03 | 显示全部楼层
现在已经习惯au3这一套东西了,离了帮助文件都不敢写代码。

评分

参与人数 1金钱 +20 贡献 +2 收起 理由
zldfsz + 20 + 2 同感啊~

查看全部评分

 楼主| 发表于 2012-5-9 17:54:43 | 显示全部楼层
回复 8# sanmoking


    就国内而言,用ahk的比用au3的多很多的

之所以还是一大群au3的Fans,其实本论坛的作用占了很大的因素,以及比ahk早汉化帮助和打包成的Autoit_cn

不然学它的会少很多的。

转学其它,并且好学的很多呀,比如东家比较硬的:vb ,C#和 G
有点过气,但超好入门的Delphi

评分

参与人数 2金钱 +55 贡献 +7 收起 理由
zldfsz + 20 + 2
sanmoking + 35 + 5 多谢普及知识。。

查看全部评分

发表于 2012-5-9 19:10:02 | 显示全部楼层
已经有点了解au3了,早知道该学AHK
 楼主| 发表于 2012-5-9 19:24:52 | 显示全部楼层
已经有点了解au3了,早知道该学AHK
whitehead 发表于 2012-5-9 19:10



    你也不用后悔呀,au3比ahk还是有一些优势的。
可以这样比:au3 VS ahk相当于Opera VS Firefox
看看老外的对比:http://paperlined.org/apps/autohotkey/autoit_and_autohotkey.html
发表于 2012-5-9 19:30:47 | 显示全部楼层
回复 12# happytc

感谢指教
发表于 2012-5-9 20:17:28 | 显示全部楼层
不過3.3.9.5已經出現3元運算符和一些新特性
還是可以期待
发表于 2012-5-9 20:19:07 | 显示全部楼层
接受新事物比较慢的我表示想把WIN7换回XP
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 01:19 , Processed in 0.120034 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表