autohotkey 调用 aardio ,制作漂亮界面
autohotkey吧
全部回复
仅看楼主
level 1
JacenHe 楼主
aardio 提供 ahk 扩展库,
可以在 aardio 里调用 ahk代码,也可以在 ahk里调用 aardio代码。
来个例子:
import win.ui;
/*DSG{{*/
var winform = win.form(text="嵌入autohotkey演示";right=599;bottom=399)
winform.add(
edit={cls="edit";left=17;top=18;right=565;bottom=374;edge=1;multiline=1;z=1}
)
/*}}*/
import ahk;
//直接定义允许AHK调用的aardio函数(函数名以on开头)
ahk.onTest = function(param){
winform.edit.print( "winform.onTest被ahk调用",param )
}
//运行ahk代码
ahk.run( `
#Persistent ;保持ahk线程不退出
#NoTrayIcon ;不显示托盘图标
#include <aardio> ;启动ahk代码中必须加入这句才能与aardio交互
global gVar := ""
GetCursorPos(hwnd){
POINT_STRUCT =
(
UInt x;
UInt y;
)
point := Struct( POINT_STRUCT )
DllCall("user32.dll\GetCursorPos", "Ptr", point[])
; 直接调用aardio函数,支持任意类型、不定个数的调用参数
aardio.onTest({ x : POINT.x, y : POINT.y })
return { x : POINT.x, y : POINT.y }
}`);
//直接修改ahk全局变量的值
ahk.setGlobal("gVar","测试一下")
/*
直接调用ahk里定义的全局函数,
参数和返回值自动支持各种数据类型,就像调用普通aardio函数。
是不是很神奇?!
*/
var point = ahk.GetCursorPos(ahk.external.hwnd);
winform.edit.print("调用ahk函数的返回值:",point);
// 当然上面的代码用aardio直接写会更简单,例如:
var point = {int x;int y};
::User32.GetCursorPos(point)
winform.show()
win.loopMessage();
2020年01月04日 11点01分 1
level 1
JacenHe 楼主
控制正在运行的ahk脚本暂停或恢复
import fonts.fontAwesome;
import win.ui;
/*DSG{{*/
var winform = win.form(text="嵌入autohotkey演示";right=599;bottom=399)
winform.add(
button={cls="plus";text="暂停AHK";left=44;top=11;right=134;bottom=41;bgcolor=-6960024;font=LOGFONT(name='FontAwesome';charset=0);z=2};
edit={cls="edit";left=17;top=56;right=565;bottom=374;edge=1;multiline=1;z=1}
)
/*}}*/
import ahk;
var handle = ahk.run( `
#Persistent ;保持ahk线程不退出
#NoTrayIcon ;不显示托盘图标
#include <aardio> ;启动ahk代码中必须加入这句才能与aardio交互
::hj::run无乱码
`);
winform.button.onMouseClick = function(){
if(winform.button.text=="暂停AHK"){
thread.suspend(handle)
winform.button.text = "继续AHK"
}
else {
thread.resume(handle)
winform.button.text = "暂停AHK"
}
}
winform.button.skin({
color={
active=0xFFFFFFFF;
default=0xFF000000;
hover=0xFFFFFFFF
};
})
winform.show()
win.loopMessage();
2020年01月13日 02点01分 3
level 1
JacenHe 楼主
aardio提供可视化的设计器,拖拉就可以做出漂亮界面。
可以与 autohotkey 混合编程,可以相互调用对方的代码。
2020年01月15日 02点01分 5
level 1
JacenHe 楼主
开源的DLL查看工具,可以查看DLL文件的导出表、导入表,兼容32位/64位执行文件
2020年01月18日 05点01分 6
level 1
JacenHe 楼主
写一个漂亮的计时器,提供源码
2020年01月20日 03点01分 7
level 1
JacenHe 楼主
aardio 不仅可以调用autohotkey,也可以嵌入非常多的第三方语言,而且这些扩展库都是开源的,例如调用 PHP的 php.simpleHttpServer 就只有 3句代码。
2020年02月03日 06点02分 8
level 1
JacenHe 楼主
只要添加一句代码,就可以为自己的软件加上完整的自动更新功能。
2020年02月19日 11点02分 9
level 1
楼主,更新一下aardio吧,扩展库里面都是空的了
2020年02月20日 16点02分 10
看了下没有空的呀?!有时候可能网络故障,稍等一下看看,直接引用也可以,例如在代码里运行 import ahk 就会自动安装ahk扩展库
2020年02月21日 01点02分
level 1
JacenHe 楼主
aardio 实现的开源软件 wubiLex,体积只有810KB
wubiLex里的超级热键有点像autohotkey里的热字串:
2020年03月03日 12点03分 11
level 1
JacenHe 楼主
aardio 制作界面非常方便,可以嵌入 ahk脚本,遇到使用问题可以在这里留言。
2020年03月05日 09点03分 12
@早亦闪人 在ahk中,你可以使用 Menu,Tray,Icon,%A_ScriptFullPath%,1,1 修改拖盘图标为EXE图标,生成EXE文件后再执行就会显示你自己指定的图标。
2020年05月04日 15点05分
@早亦闪人 修改 autohotkey.dll 就不能用了,这是修改DLL文件本身造成你的DLL损坏了,不是 aardio 做了安全限制。
2020年05月04日 15点05分
@JacenHe 嗯 这样确实可以。还有一个问题,arrdio中插入ahk代码 对原本换行符号 `n 不能识别,不知道怎么回事
2020年05月05日 00点05分
@早亦闪人 请提供具体代码。
2020年05月05日 03点05分
level 1
你好,我想请问一下如何实现在aardio实现重载脚本功能。你的范例是用了thread的暂停跟启动,我想问的是脚本重载?试了用AHK 脚本定义Reload,再外部模拟热键模拟按下,行不通。(单独测试脚本是OK的 )
像以下写入脚本OK
f7::
Reload,Toggle
return
按下F7脚本重载
单独执行此脚本OK
但是放到aardio,的AHK.run里面,然后外部模拟按下F7,程序就出错。
如果直接在aardio里用ahk.reload(),也是程序崩溃。
谢谢!
2020年03月25日 07点03分 13
@JacenHe 谢谢回复,因为对aardio也是初用,thread也弄了半天不行。后来用 ahk.addscript()解决问题了。因为要对脚本的捕捉窗口重新设定,只能用去ahk.addscript()去改脚本。这个呼叫就没有问题了。
2020年03月25日 17点03分
@肌肉的野望 已经修正了不支持 reload 的问题,更新一下 ahk 扩展库就可以了。
2021年12月22日 11点12分
level 1
一鹤大神麻烦私信一下,有问题求助,私信不了你。。。。谢谢!
2020年04月03日 13点04分 14
都发不了私信吧,可以发邮件
2020年04月24日 15点04分
level 8
在ahk编辑器怎么调用aardio
2020年05月01日 01点05分 15
这个调用不了,但是可以在ahk编辑器写好ahk代码呀,aardio里可以调用ahk,预先写好ahk函数就可以
2020年05月01日 02点05分
level 1
JacenHe 楼主
这里说明一下为什么ahk代码放到反引号里,`n 就会出错了。
aardio 的字符串可以包含在双引号、单引号,或者反引号里都是可以的。在aardio 里下面的写法都是可以的:
//运行ahk代码
ahk.run( `ahk代码`);
ahk.run( "ahk代码");
ahk.run( "ahk代码");
如果你的代码本身包含引号,
双引号和反引号重复两次就可以表示一个原始引号了。
至于单引号里要转转义符,例如 ' \' '
aardio 还可以把字符串放到段注释里,例如下面的aardio代码:
var code = /***
ahk代码
***/
ahk.run( code );
这时候任何字符都可以放进去,不用做任何处理。
但是要注意这种写法,注释首尾的星号数目要匹配(也就是开始标记里有3个星号,那结尾就一定也要是3个星号)。
2020年05月06日 08点05分 16
还是有点问题[汗],代码我发你邮箱吧
2020年05月06日 23点05分
已发到邮箱,麻烦站长空了 看下 多谢[呵呵]
2020年05月06日 23点05分
@爆Blue ahk代码太长了,例如前面的 `n 明确出问题的ahk代码可能会好点
2020年05月21日 11点05分
level 1
JacenHe 楼主
支持屏幕图像文字识别并自动点击了
2021年05月02日 02点05分 18
1 2 尾页