jacenhe 发表于 2024-6-27 09:20:07

/hwnd 这样传参数是为了可扩展,这样以后就可以传更多其他的参数。
命令行参数会自动解析成表对象 _ARGV,例如在 aardio 里 _ARGV.hwnd 就可以得到 hwnd 参数的值。

_CMDLINE 取到的是解析前的完整命令行。

也可以获取父进程的主窗口得到 AutoCAD 的窗口句柄。

import process;

//获取父进程对象
var parentProcess = process.getParent();

//取到 AutoCAD 的窗口句柄
var hwndCad = parentProcess.getMainWindow();

或者直接获取所有 AutoCAD 窗口句柄。
import process;

//遍历所有 AutoCAD 窗口句柄
for hwnd in process.eachWindow( "@acad.exe" ) {

   
}


还有一种方法更简单:

在 aardio 工程向导界面点选『窗口程序 / ActiveX EXE 』。
发布生成 EXE 文件,双击 EXE 注册控件(或调用 /r 命令行参数静默注册)。
然后在 AutoLISP 里就可以直接调用 aardio 编写的函数了。

工程里已经有 AutoLISP 调用 aardio 函数的演示。
通过这种方式,在 AutoLISP 里将窗口句柄作为参数直接传给 aardio 函数就可以了。




自贡黄明儒 发表于 2024-6-27 10:16:23

jacenhe 发表于 2024-6-27 09:20
/hwnd 这样传参数是为了可扩展,这样以后就可以传更多其他的参数。
命令行参数会自动解析成表对象 _ARGV, ...

您太优秀了,向您学习

黄翔 发表于 2024-6-27 10:28:37

jacenhe 发表于 2024-6-27 09:20
/hwnd 这样传参数是为了可扩展,这样以后就可以传更多其他的参数。
命令行参数会自动解析成表对象 _ARGV, ...

大神,还逛cad论坛..
页: 1 [2]
查看完整版本: 关于autolisp和aardio混用时传参的疑问