yesorno
示例看调用aar的函数,但是不能修改aar的变量, 在函数里修改变量的话,只是修改ahk线程的变量, 主线程的变量值改不了
import win.ui;
/*DSG{{*/
var winform = win.form(text="嵌入 AutoHotkey v1 演示")
winform.add(
edit={cls="edit";left=17;top=18;right=741;bottom=445;edge=1;multiline=1;z=1}
)
/*}}*/
//导入 AutoHotkey v1 扩展库
import ahk;
/* 定义 AARDIO主线程的变量 */
aardioVar = "这是aardioVar"
winform.edit.print("未修改前,AAR主线程的值:",aardioVar);
/*
导出允许AutoHotkey 调用的 aardio 函数(函数名必须以 on 开头)。
*/
ahk.onTest = function(param){
if param.x==1 ..aardioVar = "AHK 修改aardioVar"
else ..aardioVar = "AHK 修改aardioVar " ++ tostring(param.x)
winform.edit.print("ahk调用修改AAR主线程的值:",..aardioVar);
winform.show(true);
}
//运行ahk代码
ahk.run( `
#Persistent ;保持 AHK 线程不退出
#NoTrayIcon ;不显示托盘图标
#include <aardio> ;启动 AHK 代码中必须加入这句才能与 aardio 交互
ahkVar := "这是AHK变量值"
; 定义函数与 aardio 有点像,aardio 一般会写为 GetPoint = function(hwnd){ return value;}
GetPoint(){
global ahkVar
; 直接调用aardio函数,支持任意类型、不定个数的调用参数
aardio.onTest({x:1})
ahkVar := "这是修改后AHK变量值"
return { x : ahkVar }
}
^7::
aardio.onTest({x:"我修改了哦"})
ahkVar :="我修改了哦"
MsgBox % ahkVar
return
`);
var point = ahk.GetPoint();
winform.edit.print("Aardio 调用ahk函数的结果:",point);
winform.edit.print("ahk调用修改AAR主线程的值:",aardioVar);
win.loopMessage();
aardio 轻松修改 AHK中的值 ,
按下快捷键 Ctrl + 7,ahk 同样修改 aardio 的值。