Lisp+DWX 之一 强大的 DynamicWrapperX

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/yxp_xa/article/details/73320759

DynamicWrapperX 组件的认识,来自我的偶像 highflybird 在明经论坛里的帖子 —《在 LISP 中调用 C++, ARX 函数以及汇编语言 》。在一些 API 调试过程中,得到了 高老师 的亲自指点,在此表示衷心的感谢。本文仅仅是个人学习笔记,水平有限,不足之处请不吝指教。


在 vb、vc 或者 VBScript 中,只要声明了一个 Windows API 函数,就可以在程序中任意调用这个函数,就像使用自定义函数一样方便。
但是 VisualLisp 并未提供这个机制,现在,有个俄罗斯牛人用汇编语言写了一个 DLL,或许对其他语言的补充并不明显,但是却恰恰弥补了 VisualLisp 的这一缺陷。
这个程序就是 DynamicWrapperX,最新版本为 v2.1,大小 28.5KB(64位版本,本文代码均在 Windows 10, x64 位 CAD 平台中调试运行)

作者的原话:

DynamicWrapperX 是一个 ActiveX 组件,您可以在脚本语言中使用它来调用:

  • DLL库里的函数(特别是 Windows API 函数);
  • 任何你知道的内存中的地址的函数;
  • 您的机器代码(汇编语言)。

你也可以:

  • 从外部函数(回调)调用脚本函数;
  • 直接从/到内存读写数字;
  • 以任意编码读写字符串;
  • 分配和释放内存;
  • 将一个内存块的内容复制到另一个;
  • 将内存读入十六进制字符串,并将数据写入存储器;
  • 获取一个指向字符串,对象,数组或变量的指针;
  • 通过指向它的指针获取对象;
  • 获取您的脚本正在运行的进程的位(32或64)。

我们都知道, LISP 是不支持指针的(这是它运行速度慢的一个原因),有了这个工具,用 LISP 操作指针不在话下。

激动人心的时刻就要到来。

一、下载

百度 DynamicWrapperX 就可以下载一份,如果不好下载或担心病毒什么的,可以用下面这个方法。
加载运行 c:unbase64 程序,可以在 D: 盘生成一个 DynamicWrapperX 的压缩包文件,解压后即得到一个 64 位的 dynwrapx.dll .

;; 版权自由   by.  yxp  2017-6-15  QQ:9034598
;; 引用或转载程序,请注明出处
(vl-load-com)
(defun c:unbase64( / bin MSX wADO)
(setq wADO (vlax-create-object "ADODB.Stream")
    MSX (vlax-create-object "MSXML2.DOMDocument"))
(if(and wADO MSX)(progn
    (setq MSXb (vlax-invoke-method MSX 'createElement "TEST"))
    (vlax-put-property MSXb 'DataType "bin.base64")
    (vlax-put-property MSXb 'text (DputTxt))
    (setq bin (vlax-get-property MSXb 'nodeTypedValue))
    (vlax-release-object MSX)
    (vlax-put-property wADO 'type 1)
    (vlax-invoke-method wADO 'open 'nil 'nil 'nil 'nil 'nil)
    (vlax-invoke-method wADO 'Write bin)
    (vlax-invoke-method wADO 'saveToFile "d:\\dynwrapx.rar" 2)
    (vlax-invoke-method wADO 'close)
    (vlax-release-object wADO)
)(princ "\n错误,系统缺少 ADODB 或 MSXML 组件"))
(princ)
)

(defun DputTxt() (strcat
"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")
)

然后将这个 dll 文件复制到你自己的 lisp 文件夹,或者系统文件夹 c:\windows\system32,要使用前还需要注册。

二、注册

DLL 在使用前,一般需要在 windows 系统里进行注册,在开始栏图标上点右键,选择 “命令提示符(管理员)(A)”,然后在 dos 窗口里输入以下命令:

regsvr32 dynwrapx.dll

文件 dynwrapx.dll 也可以在自己的文件夹里,注册的时候在文件名前加绝对路径。如果你的 CAD 是以管理员身份运行的,可以在 CAD 窗口里输入下面代码来注册:

(startapp "regsvr32.exe" "/s \"dynwrapx.dll\"")

卸载 dll 的代码:

(startapp "regsvr32.exe" "/s /u \"dynwrapx.dll\"")

如果 CAD 以普通权限打开,注册和卸载均不成功,尚不明白如何绕过 Windows 的安全机制进行注册。在系统策略里可以修改,但是取消管理员身份认证可能会使你的系统不安全,例如某些恶意程序对系统的改动。

三、测试

检查一下 dynwrapx.dll 是否注册成功,打开 CAD 运行以下代码:

(defun c:test()
(vl-load-com)
(setq hCAD (vla-get-hwnd (vlax-get-acad-object))
    wrap (vlax-create-object "DynamicWrapperX"))
(if wrap (progn
(vlax-invoke wrap 'Register "user32" "MessageBoxW" "i=hwwu" "r=m")
(vlax-invoke wrap 'MessageBoxW hCAD "你好, 这是我的第一个API窗口" "啊哈" 1)
)(princ "\n错误,DynamicWrapperX 未注册"))
)

猜你喜欢

转载自blog.csdn.net/yxp_xa/article/details/73320759
今日推荐