强大的 DynamicWrapperX

来源:互联网 发布:湖北招生考试软件 编辑:程序博客网 时间:2024/05/21 00:50

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 未注册")))