aardio + AutoHotkey 混合编程

本文主要介绍 aardio + AutoHotkey 混合编程。

在 aardio 中可以调用很多编程语言,例如 C语言、C++、C#、Java、Python、R、Javascript、Node.Js、Fortran、VB、Flash ActionScript、PHP、VBScript、PowerShell、NewLISP、AutoLISP、Delphi、FreeBASIC、Ruby、Rust、Julia、Nim、Go 语言、批处理 … 请参考《 aardio 调用第三方编程语言示例》。

aardio + AutoHotkey 混合编程_第1张图片

《 aardio 编程语言快速入门 —— 语法速览 》

▶ 使用 ahk 扩展库

1、双击打开:aardio 工具 / 扩展库
2、扩展库名字输入 ahk,搜索结果中双击 ahk 扩展库 —— 打开最新范例。
aardio + AutoHotkey 混合编程_第2张图片

aardio 提供了 ahk 扩展库可用于嵌入 AutoHotkey 并与 AutoHotkey 交互调用,支持 AutoHotkey v1 以及 AutoHotkey v2 版本。

▶ aardio 调用 AutoHotkey v1

aardio 可以直接调用 AutoHotkey 函数,AutoHotkey 也可以调用 aardio 函数,非常简单:

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; 

/*
导出允许AutoHotkey 调用的 aardio 函数(函数名必须以 on 开头)。
*/
ahk.onTest = function(param){
   
    winform.edit.print( "winform.onTest被ahk调用",param ); 
    winform.show();
}

//运行ahk代码
ahk.run( `
#Persistent ;保持 AHK 线程不退出
#NoTrayIcon ;不显示托盘图标
#include   ;启动 AHK 代码中必须加入这句才能与 aardio 交互

; 定义函数与 aardio 有点像,aardio 一般会写为 GetPoint = function(hwnd){ return value;}
GetPoint(){    
    
    ; 直接调用aardio函数,支持任意类型、不定个数的调用参数
    aardio.onTest({ x : 2, y : 3 })
    
    return { x : 2, y : 3 }
}`);


/*
直接调用ahk里定义的全局函数,
参数和返回值自动支持各种数据类型,就像调用普通aardio函数。
是不是很神奇?!
*/
var point = ahk.GetPoint();

winform.edit.print("调用ahk函数的返回值:",point);
win.loopMessage(); 

请注意 aardio 中文件路径以斜杆(或反斜杆)开始表示应用程序根目录,应用程序根目录在开发时指工程目录或工程外独立启动的文件所在目录,发布后指 EXE 所在目录。应用程序根目录已设为 AHK 工作目录 %A_WorkingDir% 。

导出 aardio 函数给 ahk 时也可以返回一个异步执行的函数对象,调用虚拟桌面示例:

import ahk; 
import dotNet.desktop;
import win.ui;

你可能感兴趣的:(windows)