Linux 下有没有类似于 autohotkey中文版 这样的软件

有没有类似于.chm这样的文件_百度知道MAC有没有类似按键精灵的软件额_百度知道不知哪位高人知道和autohotkey类似的中国版软件
不知哪位高人知道和autohotkey类似的中国版软件
不知哪位高人知道和autohotkey类似的中国版软件
我以前看到过一个软件堪称中国版的Autohotkey或Autoit3,功能和这两个软件极其相似,不知哪位高人知道叫什么名字?
不是按键精灵吧? {:3_46:}
aauto 快手?
简单,再简单一点儿
应该说的是快手吧!
同意楼上的,快手确实不错,我试用过,功能什么的都挺强,语法上也接近主流编程语言。
好像快手的前身是“模拟精灵”,当时比2L说的那个还好,可惜推广不力或者是对手的排挤,后来停止开发了,作者又开发出了功能更强的快手,而且其新版本完全免费,比按键好​多了,按键的推广手段真恶心。
国内还有一款脚本工具也不错,叫"脚本大师",老牌了,但可能兼容性和执行效率上有点问题。
RE: 不知哪位高人知道和autohotkey类似的中国版软件
快手好像写起来太麻烦?
我觉得代码最好写的就是autohotkey了,简单的事情,用记事本就搞定了。哈哈
(这个帖子最后修改于:
13 : 41 by .)
RE: 不知哪位高人知道和autohotkey类似的中国版软件
有意思,AAuto可以嵌入AutoHotkey脚本
import&win.ui;/*DSG{{*/var&winform&=&win.form(&bottom=442;right=610;max=false;text="AAuto调用autohotkey"&)winform.add(static={&bottom=39;text="请在下面输入Autohotkey脚本";left=33;right=198;top=16;z=2;transparent=1;cls="static"&};btnRurn={&bottom=38;right=556;left=405;top=5;z=3;text="运行脚本";cls="button"&};edit={&bottom=425;right=579;left=30;multiline=1;top=43;z=1;text="Gui,&Add,&Tab2,,&第一页|第二页|第三页&;&Gui,&Add,&Checkbox,&vMyCheckbox,&一个复选框Gui,&Tab,&2Gui,&Add,&Radio,&vMyRadio,&单选框1Gui,&Add,&Radio,,&单选框2Gui,&Tab,&3Gui,&Add,&Edit,&vMyEdit&r5&;&r5&表示总共有5行Gui,&Tab&;&表示之后创建的控件不属于属性页控件Gui,&Add,&Button,&default&xm,&OK&;&xm&表示把该控件显示在窗体的左下角Gui,&ShowreturnButtonOK:GuiClose:GuiEscape:Gui,&Submit&;&保存每个与控件相关联的变量MsgBox&你选择了:`n%MyCheckbox%`n%MyRadio%`n%MyEdit%ExitApp";edge=1;cls="richedit"&})/*}}*/import&ahk;winform.btnRurn.oncommand&=&function(id,event){&&&&ahk.run(winform.edit.text)}winform.show()win.loopMessage();&
看到一个AAuto自动玩扫雷的代码, 好简洁!
import&key;import&mouse;import&process;import&winex;import&win.ui;/*DSG{{*/var&winform&=&win.form(&text="AAuto&自动玩扫雷";right=346;bottom=138&)winform.add(&btnCall={&bottom=88;right=291;left=187;top=49;z=2;text="Call自动扫雷";cls="button"&};btnMouse={&bottom=88;right=156;left=52;top=49;z=1;text="鼠标自动扫雷";cls="button"&})/*}}*/var&CALLADDR&=&0x&&&//call地址var&DATABASE&=&0x1005340&&&&//棋盘基址var&SETBASE&=&0x&&&&&&&&&//设置基址+0:雷点个数&+4:棋盘宽&+8:棋盘高var&XYBASE&=&0x&&&&&&&&&&&&&&&&//call参数:XYBASE:x&&&XYBASE+4:ysweeper&&=&function(byMouse){&&&&var&prc&=&process("winmine.exe")&//创建扫雷进程&&&&//这里最好指定进程ID,不然会找到你刚发的贴子窗口,因为浏览器标题栏也有"扫雷"这几个字&&&&hwnd&=&winex.waitVisible(&"&扫雷&|&Minesweeper&",,,,,prc.id&);&&//获取窗口句柄&&&&&&&&&&win.setForeground(hwnd)&//外部进程最好用这个函数&&&&&&&&&&&&&&&&&&var&x,y,cx,cy=win.getPos(hwnd);&&&&//获取窗口坐标&&&&&&&&var&width&=&prc.readNumber(SETBASE+4,"INT")&&&&var&height&=&prc.readNumber(SETBASE+8,"INT")&&&&var&Act_c&=&prc.remoteApi("void()",&CALLADDR);&&//获取远程call&&&&for(j=1;height){&&&&&&&&for(i=1;width)&begin&&&&&&&&&&&&var&n&=&prc.readNumber(DATABASE+i+32*j,"byte")&&//棋盘基址+x+y*32=棋盘点的值&&&&&&&&&&&&//&未点击时:无雷:0f;;;有雷,8f&(有用)&点击后:无雷:4x,x=周围雷的个数;;;有雷8x&&&&&&&&&&&&if(n==0x0f)&{&&&&&&&&&&&&&&&&if(byMouse){&&&&&&&&&&&&&&&&&&&&&mouse.move(x+4+16*i,y+96+16*j,true);&&//移动到坐标点&&&&&&&&&&&&&&&&&&&&mouse.click();&&&&&&&&&&&&&&&&&&&&&&win.delay(10);&//加点延时,不然太快完成看不到过程&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&else&{&&&&&&&&&&&&&&&&&&&&prc.writeNumber(XYBASE,i,"INT")&&//写X坐标&&&&&&&&&&&&&&&&&&&&prc.writeNumber(XYBASE+4,j,"INT")&&//写Y坐标&&&&&&&&&&&&&&&&&&&&Act_c();//点击函数&&&&&&&&&&&&&&&&&&&&win.delay(100);&//加点延时,不然太快完成看不到过程&&&&&&&&&&&&&&&&}&&&&&&&&&&&&};&&&&&&&&end;&&&&}&&&&prc.free();&&//释放句柄&}winform.btnCall.oncommand&=&function(){&&&&sweeper(false)}&&winform.btnMouse.oncommand=&function(){&&&&sweeper(true)}winform.show()&win.loopMessage();&
下面是autohotkey的扫雷:
start:Process&Exist,winmine.exepid:=ErrorLevelWinGet&id,id,ahk_pid%pid%WinActivate&ahk_pid%pid%WinWaitActive&ahk_pid%pid%WinGetPos&,,,wl,hl,ahk_pid%pid%xn:=Round((wl-30)/16)yn:=Round((hl-115)/16)m:=xn*ynCoordMode&pixel,relativePixelSearch&xl1,xl2,9,hl-50,20,hl-50,0x808080xl1+=3xl2:=16*xn-1+xl1;>>???Y· 1/2 ?ò??· 1/2 ?é???òu?×??¤??PixelSearch&,,yl2,50,hl-9,50,hl-20,0xFFFFFFyl2-=3yl1:=yl2-16*yn+1CoordMode&mouse,relativeoffcount:=0loop&%yn%&&&&&&&&{&&&&&&&&&&&&ifoffy:=A_Index&&&&&&&&&&&&Loop&%xn%&&&&&&&&&&&&{&&&&&&&&&&&&&&&&noff:=ifnoff(A_index,ifoffy)&&&&&&&&&&&&&&&&If&(noff="off")&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&offcount++&&&&&&&&&&&&&&&&}&&&&&&&&&&&&}&&&&&&&&}&&&&If&(offcount&=0)&&&&{&&&&&&&&MsgBox&,64,?á? 3/4 ,hidder&&&&&&&&ControlSend&,,{F2},?¨?×&&&&}clickstart:Random&nxrandom,1,xnRandom&nyrandom,1,ynnrpx:=xl1+8+16*(nxrandom-1)nrpy:=yl1+8+16*(nyrandom-1)ControlClick&x%nrpx%&y%nrpy%,ahk_pid%pid%,,L,,NASearch:done:=0Loop&%yn%{&&&&ny:=A_Index&&&&nvy:=ny&&&&Loop&%xn%&&&&{&&&&&&&&nvx:=A_Index&&&&&&&&ny:=nvy&&&&&&&&nx:=A_Index&&&&&&&&n%nx%_%ny%:=number(nx,ny)&&&&&&&&n:=n%nx%_%ny%&&&&&&&&nnx:=xl1+8+16*(nx-1)&&&&&&&&nny:=yl1+8+16*(ny-1)&&&&&&&&if&n%nx%_%ny%&is&Number&&&&&&&&{&&&&&&&&&&&&on=0&&&&&&&&&&&&off=0&&&&&&&&&&&&flag=0&&&&&&&&&&&&nr=&&&&&&&&&&&&nrd=&&&&&&&&&&&&nd=&&&&&&&&&&&&nld=&&&&&&&&&&&&nl=&&&&&&&&&&&&nlu=&&&&&&&&&&&&nu=&&&&&&&&&&&&nru=&&&&&&&&&&&&Gosub&ntype&&&&&&&&}&&&&}}If&(done=1)Gosub&searchElse{&&&&offcount:=0&&&&loop&%yn%&&&&&&&&{&&&&&&&&&&&&ifoffy:=A_Index&&&&&&&&&&&&Loop&%xn%&&&&&&&&&&&&{&&&&&&&&&&&&&&&&noff:=ifnoff(A_index,ifoffy)&&&&&&&&&&&&&&&&If&(noff="off")&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&offcount++&&&&&&&&&&&&&&&&&&&&offx%offcount%:=A_Index&&&&&&&&&&&&&&&&&&&&offy%offcount%:=ifoffy&&&&&&&&&&&&&&&&}&&&&&&&&&&&&}&&&&&&&&}&&&&If&(offcount&=0)&&&&Exit&8&&&&Random&nrandom,1,offcount&&&&nrpx:=xl1+8+16*(offx%nrandom%-1)&&&&nrpy:=yl1+8+16*(offy%nrandom%-1)&&&&ControlClick&x%nrpx%&y%nrpy%,ahk_pid%pid%,,L,,NA&&&&Gosub&search}Exit&4ntype:If&(ny=1)&and&(nx=1){Gosub&noLUReturn}If&(ny=1)&and&(nx&&1)&and&(nx&&xn){Gosub&noUReturn}If&(ny=1)&and&(nx=xn){Gosub&noRUReturn}If&(ny&&1)&and&(ny&&yn)&and&(nx=1){Gosub&noLReturn}If&(ny&&1)&and&(ny&&yn)&and&(nx&&1)&and&(nx&&xn){Gosub&ASReturn}If&(ny&&1)&and&(ny&&yn)&and&(nx=xn){Gosub&noRReturn}If&(ny=yn)&and&(nx=1){Gosub&noLDReturn}If&(ny=yn)&and&(nx&&1)&and&(nx&&xn){Gosub&noDReturn}If&(ny=yn)&and&(nx=xn){Gosub&noRDReturn}Detect:noLU:na:=3nx++nr:=Status(nx,ny)ny++nrd:=Status(nx,ny)nx--nd:=Status(nx,ny)Gosub&DoReturnnoU:na:=5nx++nr:=Status(nx,ny)ny++nrd:=Status(nx,ny)nx--nd:=Status(nx,ny)nx--nld:=Status(nx,ny)ny--nl:=Status(nx,ny)Gosub&DoReturnnoRU:na:=3ny++nd:=Status(nx,ny)nx--nld:=Status(nx,ny)ny--nl:=Status(nx,ny)Gosub&DoReturnnoL:na:=5nx++nr:=Status(nx,ny)ny++nrd:=Status(nx,ny)nx--nd:=Status(nx,ny)ny-=2nu:=Status(nx,ny)nx++nru:=Status(nx,ny)Gosub&DoReturnAS:na:=8nx++nr:=Status(nx,ny)ny++nrd:=Status(nx,ny)nx--nd:=Status(nx,ny)nx--nld:=Status(nx,ny)ny--nl:=Status(nx,ny)ny--nlu:=Status(nx,ny)nx++nu:=Status(nx,ny)nx++nru:=Status(nx,ny)Gosub&DoReturnnoR:na:=5ny++nd:=Status(nx,ny)nx--nld:=Status(nx,ny)ny--nl:=Status(nx,ny)ny--nlu:=Status(nx,ny)nx++nu:=Status(nx,ny)Gosub&DoReturnnoLD:na:=3nx++nr:=Status(nx,ny)nx--ny--nu:=Status(nx,ny)nx++nru:=Status(nx,ny)Gosub&DoReturnnoD:na:=5nx--nl:=Status(nx,ny)ny--nlu:=Status(nx,ny)nx++nu:=Status(nx,ny)nx++nru:=Status(nx,ny)ny++nr:=Status(nx,ny)Gosub&DoReturnnoRD:na:=3nx--nl:=Status(nx,ny)ny--nlu:=Status(nx,ny)nx++nu:=Status(nx,ny)Gosub&DoReturnStatus(nx,ny){&&&&global&&&&px:=xl1+1+16*(nx-1)&&&&py:=yl1+1+16*(ny-1)&&&&CoordMode&pixel,relative&&&&PixelGetColor&,color,px,py&&&&if&(color=0xFFFFFF)&&&&{&&&&&&&&PixelGetColor&color1,xl1+7+16*(nx-1),yl1+5+16*(ny-1)&&&&&&&&PixelGetColor&color2,xl1+8+16*(nx-1),yl1+11+16*(ny-1)&&&&&&&&If&(color1=0x0000FF)&and&(color2=0x000000)&&&&&&&&{&&&&&&&&&&&&flag++&&&&&&&&&&&&Return&"flag"&&&&&&&&}&&&&&&&&Else&&&&&&&&{&&&&&&&&&&&&off++&&&&&&&&&&&&off%off%x:=xl1+8+16*(nx-1)&&&&&&&&&&&&off%off%y:=yl1+8+16*(ny-1)&&&&&&&&&&&&Return&"off"&&&&&&&&}&&&&}&&&&Else&&&&{&&&&&&&&on++&&&&&&&&Return&"on"&&&&}}Number(nx,ny){global&xl1,yl1py:=yl1+8+16*(ny-1)px:=xl1+8+16*(nx-1)CoordMode&pixel,relativePixelGetColor&color,px,pyif&(color=0xFF0000)Return&1if&(color=0x008000)Return&2if&(color=0x0000FF)Return&3if&(color=0x800000)Return&4if&(color=0x000080)Return&5if&(color=0x808000)Return&6if&(color=0x000000){&&&&PixelGetColor&color,px-1,py-1&&&&if&(color=0xFFFFFF)&&&&{&&&&&&&&PixelGetColor&color1,xl1+7+15*(nx-1),yl1+5+15*(ny-1)&&&&&&&&PixelGetColor&color2,xl1+8+15*(nx-1),yl1+11+15*(ny-1)&&&&&&&&If&(color1=0x0000FF)&and&(color2=0x000000)&&&&&&&&Return&"flag"&&&&&&&&Else&&&&&&&&{&&&&&&&&&&&&ControlSend&,,{F2},?¨?×&&&&&&&&&&&&Gosub&search&&&&&&&&}&&&&}}If&(color=0xC0C0C0){&&&&PixelGetColor&color7,px+1,py+1&&&&If&(color7=0x000000)&&&&Return&7}if&(color=0x808080)Return&8}Do:If&(n=na-on)&and&(flag&&n){&&&&Gosub&flag&&&&done:=1}If&(n=flag)&and&(off&&&0){&&&&Gosub&Dig&&&&done:=1}ReturnDig:ControlClick&x%nnx%&y%nny%,ahk_pid%pid%,,M,,NAReturnFlag:Loop&%off%{&&&&flagx:=off%A_Index%x&&&&flagy:=off%A_Index%y&&&&ControlClick&x%flagx%&y%flagy%,ahk_pid%pid%,,R,,NA}Returnifnoff(xn,yn){&&&&global&xl1,yl1&&&&py:=yl1+8+16*(yn-1)&&&&px:=xl1+8+16*(xn-1)&&&&CoordMode&pixel,relative&&&&PixelGetColor&color,px,py&&&&if&(color=0xC0C0C0)&&&&{&&&&&&&&PixelGetColor&color,px-7,py-7&&&&&&&&If&(color=0xFFFFFF)&&&&&&&&Return&"off"&&&&}}&
RE: 不知哪位高人知道和autohotkey类似的中国版软件
记得以前有个可以在qq游戏自动玩连连看的,找不到了
RE: 不知哪位高人知道和autohotkey类似的中国版软件
( 22 : 40)bugmenot 提到: 同意楼上的,快手确实不错,我试用过,功能什么的都挺强,语法上也接近主流编程语言。
好像快手的前身是“模拟精灵”,当时比2L说的那个还好,可惜推广不力或者是对手的排挤,后来停止开发了,作者又开发出了功能更强的快手,而且其新版本完全免费,比按键好​多了,按键的推广手段真恶心。
国内还有一款脚本工具也不错,叫"脚本大师",老牌了,但可能兼容性和执行效率上有点问题。
快手作者很偏激的,唉,不提也罢,免得心烦,他技术倒很棒.
实际上还没那么老....
RE: 不知哪位高人知道和autohotkey类似的中国版软件
( 09 : 55)overpan 提到:
( 22 : 40)bugmenot 提到: 同意楼上的,快手确实不错,我试用过,功能什么的都挺强,语法上也接近主流编程语言。
好像快手的前身是“模拟精灵”,当时比2L说的那个还好,可惜推广不力或者是对手的排挤,后来停止开发了,作者又开发出了功能更强的快手,而且其新版本完全免费,比按键好​多了,按键的推广手段真恶心。
国内还有一款脚本工具也不错,叫"脚本大师",老牌了,但可能兼容性和执行效率上有点问题。
快手作者很偏激的,唉,不提也罢,免得心烦,他技术倒很棒.
对一个免费软件不喜欢不用就是了不至于、也不值得去心烦的。这个急功近利的时代能去做点东西又愿意免费分享的不多了,从模拟精灵到快手七八年了一直是免费的、一边用一边骂​的多也没看快手作者得到什么好名声,但人家一直在免费的为大家服务着,不要整天只看到别人黑暗的一面,如果让你去做同样的事也许喷你的人更多,所以宽容一些、开心一心,没​必要去烦。
RE: 不知哪位高人知道和autohotkey类似的中国版软件
Autohotkey 真是神一样的软件,居然可以嵌入其他编程语言
RE: 不知哪位高人知道和autohotkey类似的中国版软件
国产软件,无条件支持一个
Super Moderator
RE: 不知哪位高人知道和autohotkey类似的中国版软件
以为快手支持AHK,结果运行了7楼那段快手代码后,发现就是调用AHK.DLL文件来运行AHK代码。
最诡异的是,ahk.run() 这玩意,不管是AHK那里,还是快手那里,没有任何地方有任何说明。
而且,也没法和快手本身进行交互。
严重怀疑是改了ahk_h的dll文件,可惜是两年前的版本了……
RE: 不知哪位高人知道和autohotkey类似的中国版软件
( 16 : 42) 提到: 以为快手支持AHK,结果运行了7楼那段快手代码后,发现就是调用AHK.DLL文件来运行AHK代码。
最诡异的是,ahk.run() 这玩意,不管是AHK那里,还是快手那里,没有任何地方有任何说明。
而且,也没法和快手本身进行交互。
严重怀疑是改了ahk_h的dll文件,可惜是两年前的版本了……
快手里的ahk.dll 就是原版的 ahk.dll ,版本说明里不是写了 AutoHotkey_H 1.1 么,这个不是官网的最新稳定版? 其他编程语言要支持ahk肯定要用他的dll啊。
ahk.run() 很简单就是运行ahk脚本,
输入 ahk.run( 就看到代码提示里的参数说明了。
可以在扩展库里看 ahk.run 函数的源码,调用的 ahktextdll,
ahk 可以跟快手交互的,ahk.assign() 修改ahk变量的值,ahk.getvar() 获取变量的值,ahk.function() 调用函数 ,ahk. 输入看代码提示的函数列表,都有说明的。
(这个帖子最后修改于:
11 : 40 by .)
Super Moderator
RE: 不知哪位高人知道和autohotkey类似的中国版软件
( 12 : 35)tdx190 提到:
( 16 : 42) 提到: 以为快手支持AHK,结果运行了7楼那段快手代码后,发现就是调用AHK.DLL文件来运行AHK代码。
最诡异的是,ahk.run() 这玩意,不管是AHK那里,还是快手那里,没有任何地方有任何说明。
而且,也没法和快手本身进行交互。
严重怀疑是改了ahk_h的dll文件,可惜是两年前的版本了……
快手里的ahk.dll 就是原版的 ahk.dll ,版本说明里不是写了 AutoHotkey_H 1.1 么,这个不是官网的最新稳定版? 其他编程语言要支持ahk肯定要用他的dll啊。
ahk.run() 很简单就是运行ahk脚本,
输入 ahk.run( 就看到代码提示里的参数说明了。
可以在扩展库里看 ahk.run 函数的源码,调用的 ahktextdll,
ahk 可以跟快手交互的,ahk.assign() 修改ahk变量的值,ahk.getvar() 获取变量的值,ahk.function() 调用函数 ,ahk. 输入看代码提示的函数列表,都有说明的。
首先,我上次回帖时,自动下载下来的AHK库文件,就只有一个AHK.DLL文件,并且版本是2年前的……
今天忽然变成1.1.13.0的了……
我本身是AAU和AHK都在用,能够在一方中使用另一方,当然是很爽的事情。
问题是,我还是不明白,AHK.RUN()这个函数,是写在哪个文件中的?我翻遍了AAU的目录,尤其是LIB目录,就只有一个AHK.DLL文件,完全没找到记载AHK​.RUN()的文件。
我知道输入AHK.RUN( 可以看见智能提示,但是这些提示,都太模糊了,我想看代码怎么写的,我才能知道怎么用。
我咧个娘,还真是改了DLL,直接写在DLL里面的………………………………………… 一千万头草泥马开始狂奔…………………………………………
(这个帖子最后修改于:
13 : 40 by .)
Super Moderator
RE: 不知哪位高人知道和autohotkey类似的中国版软件
( 12 : 35)tdx190 提到:
( 16 : 42) 提到: 以为快手支持AHK,结果运行了7楼那段快手代码后,发现就是调用AHK.DLL文件来运行AHK代码。
最诡异的是,ahk.run() 这玩意,不管是AHK那里,还是快手那里,没有任何地方有任何说明。
而且,也没法和快手本身进行交互。
严重怀疑是改了ahk_h的dll文件,可惜是两年前的版本了……
快手里的ahk.dll 就是原版的 ahk.dll ,版本说明里不是写了 AutoHotkey_H 1.1 么,这个不是官网的最新稳定版? 其他编程语言要支持ahk肯定要用他的dll啊。
ahk.run() 很简单就是运行ahk脚本,
输入 ahk.run( 就看到代码提示里的参数说明了。
可以在扩展库里看 ahk.run 函数的源码,调用的 ahktextdll,
ahk 可以跟快手交互的,ahk.assign() 修改ahk变量的值,ahk.getvar() 获取变量的值,ahk.function() 调用函数 ,ahk. 输入看代码提示的函数列表,都有说明的。
import win.
var winform = win.form( bottom=442;right=610;max=text="AAuto调用autohotkey" )
winform.add(
static={ bottom=39;text="请在下面输入Autohotkey脚本";left=33;right=198;top=16;z=2;transparent=1;cls="static" };
btnRurn={ bottom=38;right=556;left=405;top=5;z=3;text="运行脚本";cls="button" };
edit={ bottom=425;right=579;left=30;multiline=1;top=43;z=1;text="
text=这是一个测试变量,用于测试是否能被外部获取
Gui, Add, Tab2,, 第一页|第二页|第三页 ;
Gui, Add, Checkbox, vMyCheckbox, 一个复选框
Gui, Tab, 2
Gui, Add, Radio, vMyRadio, 单选框1
Gui, Add, Radio,, 单选框2
Gui, Tab, 3
Gui, Add, Edit, vMyEdit r5 ; r5 表示总共有5行
Gui, T 表示之后创建的控件不属于属性页控件
Gui, Add, Button, default xm, OK ; xm 表示把该控件显示在窗体的左下角
GuiEscape:
Gui, S 保存每个与控件相关联的变量
MsgBox 你选择了:`n%MyCheckbox%`n%MyRadio%`n%MyEdit%
";edge=1;cls="richedit" }
winform.btnRurn.oncommand = function(id,event){
&&&&ahk.run(winform.edit.text)
io.print("您输入的是" ,ahk.getvar("test",0) );
winform.show()
win.loopMessage();
以上AAU代码,经测试无法从AAU中获取AHK的变量值。
请教,如何在AAU中获取并设置AHK中的变量,数组,对象 3种东西的值?
能否给个简单的示例???
另外,AAU调用AHK的DLL,是各种崩溃…… 就上面那个代码,多运行几次,就会崩溃……
(这个帖子最后修改于:
00 : 51 by .)
RE: 不知哪位高人知道和autohotkey类似的中国版软件
取不到变量,是因为你变量名写错了:
你上面发的代码试了几次没发现崩溃。
这aauto只是做一个简单的DLL调用,运行代码的是 autohotkey,
autohotkey应当不会这么弱不经风吧?!
aauto 并没有修改ahk.dll, 因为我试过自己替换官方dll一样能使用,
扩展库在资源文件里(也可以放DLL外面,参考AAuto手册),其实就几句代码我是觉得没什么复杂的,说什么一万个草泥马就没必要了,
你要觉得麻烦那就别折腾了,其他问题就别问我,我只是个菜鸟。
(这个帖子最后修改于:
10 : 18 by .)
Super Moderator
RE: 不知哪位高人知道和autohotkey类似的中国版软件
( 00 : 07)tdx190 提到: 取不到变量,是因为你变量名写错了:
你上面发的代码试了几次没发现崩溃。
这aauto只是做一个简单的DLL调用,运行代码的是 autohotkey,
autohotkey应当不会这么弱不经风吧?!
aauto 并没有修改ahk.dll, 因为我试过自己替换官方dll一样能使用,
扩展库在资源文件里(也可以放DLL外面,参考AAuto手册),其实就几句代码我是觉得没什么复杂的,说什么一万个草泥马就没必要了,
你要觉得麻烦那就别折腾了,其他问题就别问我,我只是个菜鸟。
变量问题昨天发现了。
扩展库为了省一个 .res 目录,所以写在DLL的资源文件中,方不方便更新先不说,让不是特别清楚的人,把时间浪费在诸如,为什么别的库可以直接看见源码,这个不行?这个库怎么就一个DLL文件,​源码到底写在哪里?这是让我草泥马狂奔的原因。
崩溃问题,经测试,是AHK本身问题。AHK确实强壮,不过如果使用多线程并编译,呵呵……
有兴趣可以搜搜。
(这个帖子最后修改于:
16 : 25 by .)
RE: 不知哪位高人知道和autohotkey类似的中国版软件
( 10 : 14) 提到: 变量问题昨天发现了。
扩展库为了省一个 .res 目录,所以写在DLL的资源文件中,方不方便更新先不说,让不是特别清楚的人,把时间浪费在诸如,为什么别的库可以直接看见源码,这个不行?这个库怎么就一个DLL文件,​源码到底写在哪里?这是让我草泥马狂奔的原因。
崩溃问题,经测试,是AHK本身问题。AHK确实强壮,不过如果使用多线程并编译,呵呵……
有兴趣可以搜搜。
.res目录这些我还真没注意过,看得出你对aauto非常熟悉啊,分析能力细致入微真不错,向你学习了。
不过AAuto帮助文档中有关于dll库的说明:引用:dll库:可以在标准dll的资源文件(资源类型名字"LIB",资源名字"IMPORT" )中添加AAuto代码、以支持import语句。在AAuto代码中可以声明dll的API函数,并进行封装优化。
感觉这个功能还是挺方便的,直接用DLL文件就可以作为AAuto的库模块使用,也不用改变标准DLL原来的功能。
ahk.run() 这个函数在AAuto IDE里的使用说明是这样的:
引用:ahk.run(脚本,"/Debug",其他参数)
运行ahk脚本,第二第三个参数可省略
第一个参数可以是脚本代码,也可以是脚本文件路径
返回线程句柄
ahk.run() 函数的 AAuto源码
run&=&function(file,argv="",argc=""){&&&&if(..io.exist(file)&){&&&&&&&&return&ahkdll(file,argv,argc)&&&&}&&&&else&{&&&&&&&&file&=&#file&0x104/*_MAX_PATH*/&?&..string.load(file)&:&&&&&&&&&return&ahktextdll(file,argv,argc)&&&&&}&}&
可以看出如果参数是AHK脚本就调用 ahktextdll() 函数,如果是文件就调用 ahkdll() 函数,
这是autohotkey.dll 帮助文档里的对ahktextdll() 的说明
引用:Parameters passed to dll.
These will be handled same way as done in AutoHotkey.exe. E.g. when you Run myscript.exe “parameters”
ahkdll returns a thread handle.
希望上面提供的信息对你有所帮助。
关于你说的崩溃问题, 你前面发的代码,我现在改用公司的电脑试了下,狂点了几十次运行也没有崩溃,当然可能是我的操作不正确、或者是我的系统原因。
(这个帖子最后修改于:
17 : 20 by .)
Super Moderator
RE: 不知哪位高人知道和autohotkey类似的中国版软件
( 16 : 18)tdx190 提到:
( 10 : 14) 提到: 变量问题昨天发现了。
扩展库为了省一个 .res 目录,所以写在DLL的资源文件中,方不方便更新先不说,让不是特别清楚的人,把时间浪费在诸如,为什么别的库可以直接看见源码,这个不行?这个库怎么就一个DLL文件,​源码到底写在哪里?这是让我草泥马狂奔的原因。
崩溃问题,经测试,是AHK本身问题。AHK确实强壮,不过如果使用多线程并编译,呵呵……
有兴趣可以搜搜。
.res目录这些我还真没注意过,看得出你对aauto非常熟悉啊,分析能力细致入微真不错,向你学习了。
不过AAuto帮助文档中有关于dll库的说明:引用:dll库:可以在标准dll的资源文件(资源类型名字"LIB",资源名字"IMPORT" )中添加AAuto代码、以支持import语句。在AAuto代码中可以声明dll的API函数,并进行封装优化。
感觉这个功能还是挺方便的,直接用DLL文件就可以作为AAuto的库模块使用,也不用改变标准DLL原来的功能。
ahk.run() 这个函数在AAuto IDE里的使用说明是这样的:
引用:ahk.run(脚本,"/Debug",其他参数)
运行ahk脚本,第二第三个参数可省略
第一个参数可以是脚本代码,也可以是脚本文件路径
返回线程句柄
ahk.run() 函数的 AAuto源码
run&=&function(file,argv="",argc=""){&&&&if(..io.exist(file)&){&&&&&&&&return&ahkdll(file,argv,argc)&&&&}&&&&else&{&&&&&&&&file&=&#file&0x104/*_MAX_PATH*/&?&..string.load(file)&:&&&&&&&&&return&ahktextdll(file,argv,argc)&&&&&}&}&
可以看出如果参数是AHK脚本就调用 ahktextdll() 函数,如果是文件就调用 ahkdll() 函数,
这是autohotkey.dll 帮助文档里的对ahktextdll() 的说明
引用:Parameters passed to dll.
These will be handled same way as done in AutoHotkey.exe. E.g. when you Run myscript.exe “parameters”
ahkdll returns a thread handle.
希望上面提供的信息对你有所帮助。
关于你说的崩溃问题, 你前面发的代码,我现在改用公司的电脑试了下,狂点了几十次运行也没有崩溃,当然可能是我的操作不正确、或者是我的系统原因。
AAU 和 AHK 都挺好的。
现在还能直接混合编程了,挺爽的。
( 16 : 18)tdx190 提到:
( 10 : 14) 提到: 变量问题昨天发现了。
扩展库为了省一个 .res 目录,所以写在DLL的资源文件中,方不方便更新先不说,让不是特别清楚的人,把时间浪费在诸如,为什么别的库可以直接看见源码,这个不行?这个库怎么就一个DLL文件,​源码到底写在哪里?这是让我草泥马狂奔的原因。
崩溃问题,经测试,是AHK本身问题。AHK确实强壮,不过如果使用多线程并编译,呵呵……
有兴趣可以搜搜。
.res目录这些我还真没注意过,看得出你对aauto非常熟悉啊,分析能力细致入微真不错,向你学习了。
不过AAuto帮助文档中有关于dll库的说明:引用:dll库:可以在标准dll的资源文件(资源类型名字"LIB",资源名字"IMPORT" )中添加AAuto代码、以支持import语句。在AAuto代码中可以声明dll的API函数,并进行封装优化。
感觉这个功能还是挺方便的,直接用DLL文件就可以作为AAuto的库模块使用,也不用改变标准DLL原来的功能。
ahk.run() 这个函数在AAuto IDE里的使用说明是这样的:
引用:ahk.run(脚本,"/Debug",其他参数)
运行ahk脚本,第二第三个参数可省略
第一个参数可以是脚本代码,也可以是脚本文件路径
返回线程句柄
ahk.run() 函数的 AAuto源码
run&=&function(file,argv="",argc=""){&&&&if(..io.exist(file)&){&&&&&&&&return&ahkdll(file,argv,argc)&&&&}&&&&else&{&&&&&&&&file&=&#file&0x104/*_MAX_PATH*/&?&..string.load(file)&:&&&&&&&&&return&ahktextdll(file,argv,argc)&&&&&}&}&
可以看出如果参数是AHK脚本就调用 ahktextdll() 函数,如果是文件就调用 ahkdll() 函数,
这是autohotkey.dll 帮助文档里的对ahktextdll() 的说明
引用:Parameters passed to dll.
These will be handled same way as done in AutoHotkey.exe. E.g. when you Run myscript.exe “parameters”
ahkdll returns a thread handle.
希望上面提供的信息对你有所帮助。
关于你说的崩溃问题, 你前面发的代码,我现在改用公司的电脑试了下,狂点了几十次运行也没有崩溃,当然可能是我的操作不正确、或者是我的系统原因。
补充下关于崩溃吧。
我自己今天测试以上代码,也没崩溃了……
之所以判断是AHK本身的问题,理由如下。
ahk_h的正确安装方法,以ahk_l 32位 unicode 版本为例
1. 安装ahk_l
2. 下载ahk_h http://www.autohotkey.net/~HotKeyIt/AutoHotkey.zip
3. 将必要的文件解压并覆盖到ahk_l安装目录,它们是
“lib”文件夹
“Compiler”文件夹
“win32w”文件夹中的“AutoHotkey.exe”
“win32w”文件夹中的“AutoHotkeySC.bin”(覆盖到“ahk_l安装目录”的“Compiler”文件夹中)
“win32w”文件夹中的“AutoHotkey.dll”,“AutoHotkeyMini.dll”(放在自己脚本所在目录)
最大的问题是,以下代码直接运行正常,编译后运行就出错!!!!!!
&&&&var%A_Index%:=[]&&;创建4个外部数组,用于之后各线程操作,然后返回给主线程,可以理解为共用变量。之所以不用ahkgetvar,因为ahkgetvar只能获取变量,不能获​取数组(对象?)。之所以不用CriticalObject(),因为它无法释放内存
&&&&AhkThRead%A_Index% := AhkDllThRead(A_ScriptDir . "\AutoHotkeyMini.dll")&&;创建线程。若不指定路径,则AutoHotkeyMini.dll要放在自己脚本所在目录
AhkThRead1.ahktextdll("Alias(new1," GetVar(var1) ")`nloop,500000`nnew1.Insert(A_Index)")&&;ahkExec和ahktextdll的区别类似与RunWait和Run的区别
AhkThRead2.ahktextdll("Alias(new2," GetVar(var2) ")`nloop,500000`nnew2.Insert(A_Index)")&&;虽然名字变了,var2变成了new2,但其实它们操作的是同一处的数据,所以当var2的值改变时new2的值也就变了。只不过主线程只能读取var2,线​程只能读取new2
AhkThRead3.ahktextdll("Alias(new3," GetVar(var3) ")`nloop,500000`nnew3.Insert(A_Index)")&&;需要注意的是,被双引号引起来的东西,会直接计算它的值再传进去,例如这里就是GetVar(var3)的返回值传入函数,而不是“GetVar(var3)​”这个字符串传入了函数
AhkThRead4.ahktextdll("Alias(new4," GetVar(var4) ")`nloop,500000`nnew4.Insert(A_Index)")
&&&&ToolTip,% var1.maxindex()+var2.maxindex()+var3.maxindex()+var4.maxindex()&&;这里显示的是var1+var2+var3+var4的总元素数量,此时可以打开任务管理器,看看内存是不是一直在增,最后会增加到40M左右
&&MsgBox,看看内存占用!
&&&&&&var%A_Index%:=""&&;清空变量,释放变量占用的内存
&&MsgBox,再看看内存占用!
以上代码,非编译状态下,运行正常。编译后,一定出错。
事实上,只要是用 AhkDllThRead() 创建线程,编译状态下,就一定出错。
请选择目的地:
--------------------
用户控制面板
查看在线用户
AutoHotkey
-- 提问交流
---- 已解决问题
---- Bug报告和建议
-- 综合讨论
-- 官网资讯
---- 官方公告
-- 教程和文档
---- 中文帮助
------ 翻译好的
-- 作品展示
---- 游戏操作
-- 软件&资源
-- 版务处理
-- 论坛公告、反馈
-- 水漫金山
&&&中文(简体)
&&&English (American)
Powered By , &

我要回帖

更多关于 autohotkey 教程 的文章

 

随机推荐