happytc 发表于 2012-5-6 23:25:38

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

本帖最后由 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

ceoguang 发表于 2012-5-6 23:38:58

如果是用DLL来做中间人
AU3也可以实现变量共享.
难实现的只是直接使用变量名.
如果它能实现一个变量名一个地址,我想多线程早就出来了

happytc 发表于 2012-5-6 23:59:58

回复 2# ceoguang

我大体看了下,ahk那个DLL用了三种方法来实现变量共享
①用创建线程时返回的指针,这样只需传递一个指针即可操作在其他线程中的所有变量
②传递需共用变量的指针, 如果需共用多个变量, 则需要传递多个变量的指针
③用Critical Section的方法(我不知道翻成啥,应该是象‘关键代码段’之类的吧),锁定/解锁操作来解决同时访问冲突问题

sanmoking 发表于 2012-5-9 16:15:39

我想知道ahk有报毒的痛苦吗,没有的话,准备尝试往那转转。。。

happytc 发表于 2012-5-9 16:24:30

我想知道ahk有报毒的痛苦吗,没有的话,准备尝试往那转转。。。
sanmoking 发表于 2012-5-9 16:15 http://www.autoitx.com/images/common/back.gif


    呵,看看ahk官方给杀软厂商的公开信
http://www.autohotkey.com/community/viewtopic.php?t=31975

sanmoking 发表于 2012-5-9 16:49:58

回复 5# happytc


    这是神马原因。。。脚本语言天生命苦?

happytc 发表于 2012-5-9 16:59:35

回复happytc


    这是神马原因。。。脚本语言天生命苦?
sanmoking 发表于 2012-5-9 16:49 http://www.autoitx.com/images/common/back.gif


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

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

au3不可能出这种编译了,官方连问都不会给问的,问了就直接锁帖。

sanmoking 发表于 2012-5-9 17:11:15

回复 7# happytc


    那au3官方这么固执,就是因为他比较好用?业余选手从来没经过专业训练,接触编程就是AU3,现在要转学其他语言的话,比较容易入门的还望推荐一下。

sanmoking 发表于 2012-5-9 17:12:03

现在已经习惯au3这一套东西了,离了帮助文件都不敢写代码。

happytc 发表于 2012-5-9 17:54:43

回复 8# sanmoking


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

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

不然学它的会少很多的。

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

whitehead 发表于 2012-5-9 19:10:02

已经有点了解au3了,早知道该学AHK

happytc 发表于 2012-5-9 19:24:52

已经有点了解au3了,早知道该学AHK
whitehead 发表于 2012-5-9 19:10 http://www.autoitx.com/images/common/back.gif


    你也不用后悔呀,au3比ahk还是有一些优势的。
可以这样比:au3 VS ahk相当于Opera VS Firefox
看看老外的对比:http://paperlined.org/apps/autohotkey/autoit_and_autohotkey.html

whitehead 发表于 2012-5-9 19:30:47

回复 12# happytc

感谢指教

rchockxm 发表于 2012-5-9 20:17:28

不過3.3.9.5已經出現3元運算符和一些新特性
還是可以期待

502762378 发表于 2012-5-9 20:19:07

接受新事物比较慢的我表示想把WIN7换回XP
页: [1] 2 3 4 5
查看完整版本: 看到au3的兄弟已经曲线实现了多线程,咱们的au3应该也不远了吧!