Lisp 调用 API 函数示例

来源:互联网 发布:怎么设置linux的ip地址 编辑:程序博客网 时间:2024/06/05 17:48

Lisp 调用 API 函数示例,包括:进程与线程类,控件与消息类、文件及处理类、硬件与系统类、文本和字体类、Windows消息类等。
API 函数随着测试在不断增加中,如有错误,敬请指正。

API 函数查询网址: http://www.vbgood.com/api.html

创建对象

(vl-load-com)(setq *APP (vlax-get-acad-object)    *DOC (vla-get-ActiveDocument *APP)    hCAD (vla-get-hwnd *APP)    hDOC (vla-get-hwnd *DOC)    wrap (vlax-create-object "DynamicWrapperX"))

1 控件和消息类

;;1.1 获得桌面窗口句柄(vlax-invoke wrap 'Register "user32" "GetDesktopWindow" "r=m")(setq hDesk (vlax-invoke wrap 'GetDesktopWindow));;1.2 延迟函数,该函数运行时间较长时,主程序会陷入无响应状态,应该用多线程处理一下。(vlax-invoke wrap 'Register "kernel32" "Sleep" "i=m")(vlax-invoke wrap 'Sleep 5000);;1.3 判断一个窗口句柄是否有效,返回 0 或非 0(vlax-invoke wrap 'Register "user32" "IsWindow" "i=h" "r=m")(vlax-invoke wrap 'IsWindow hDOC);;1.4 判断一个窗口是否为 Unicode 窗口。这意味着窗口为所有基于文本的消息都接收 Unicode 文字(vlax-invoke wrap 'Register "user32" "IsWindowUnicode" "i=h" "r=m")(vlax-invoke wrap 'IsWindowUnicode hDOC);;如是 Unicode 窗口则返回非零值,如是 ANSI 窗口则返回零;;1.5 判断窗口是否可见(vlax-invoke wrap 'Register "user32" "IsWindowVisible" "i=h" "r=m")(vlax-invoke wrap 'IsWindowVisible hDOC);;1.5 弹出一个消息窗口(vlax-invoke wrap 'Register "user32" "MessageBoxW" "i=hwwu" "r=m")(vlax-invoke wrap 'MessageBoxW hCAD "你好, 这是我的第一个API窗口" "啊哈" 1);;1.6 在指定的窗口里允许或禁止所有鼠标及键盘输入(vlax-invoke wrap 'Register "user32" "EnableWindow" "i=hm" "r=m")(vlax-invoke wrap 'EnableWindow hCAD 1) ;;0为禁止,非0允许;;1.7 判断窗口是否处于活动状态(可输入)(vlax-invoke wrap 'Register "user32" "IsWindowEnabled" "i=h" "r=m")(vlax-invoke wrap 'IsWindowEnabled hCAD) ;;1.8 最小化指定的窗口(vlax-invoke wrap 'Register "user32" "CloseWindow" "i=h" "r=m")(vlax-invoke wrap 'CloseWindow hDOC);;1.9 判断窗口是否已最小化(vlax-invoke wrap 'Register "user32" "IsIconic" "i=h" "r=m")(vlax-invoke wrap 'IsIconic hDOC);;1.10 恢复一个最小化的程序(并不是最大化),并将其激活(vlax-invoke wrap 'Register "user32" "OpenIcon" "i=h" "r=m")(vlax-invoke wrap 'OpenIcon hDOC);;1.11 判断窗口是否最大化(vlax-invoke wrap 'Register "user32" "IsZoomed" "i=h" "r=m")(vlax-invoke wrap 'IsZoomed hDOC);;1.12 返回包含了指定点的窗口的句柄。忽略屏蔽、隐藏以及透明窗口(vlax-invoke wrap 'Register "user32" "WindowFromPoint" "i=mm" "r=m")(setq hnewWin (vlax-invoke wrap 'WindowFromPoint 200 200));;包含了指定点的窗口的句柄。如指定的点处没有窗口存在,则返回零;;1.13 控制窗口的可见性(vlax-invoke wrap 'Register "user32" "ShowWindow" "i=hm" "r=m")(setq hnewWin (vlax-invoke wrap 'ShowWindow hDOC 2));参数:;   1   隐藏窗口,活动状态给令一个窗口;   2   最小化窗口,并将其激活;   3   最大化窗口,并将其激活;   4   用最近的大小和位置显示一个窗口,同时不改变活动窗口;   5   用当前的大小和位置显示一个窗口,同时令其进入活动状态;   6   最小化窗口,活动状态给令一个窗口;   7   最小化一个窗口,同时不改变活动窗口;   8   用当前的大小和位置显示一个窗口,不改变活动窗口;   9   用原来的大小和位置显示一个窗口,同时令其进入活动状态;;1.14 调查窗口标题文字或控件内容的长短(vlax-invoke wrap 'Register "user32" "GetWindowTextLength" "i=h" "r=m")(vlax-invoke wrap 'GetWindowTextLength hCAD);;1.15 获取窗口的标题文字或控件的内容(vlax-invoke wrap 'Register "user32" "GetWindowTextW" "i=hpm" "r=m")(setq ss (vlax-invoke wrap 'Space 256 " "))(setq pStr (vlax-invoke wrap 'StrPtr ss))(vlax-invoke wrap 'GetWindowTextW hDOC pStr 256)(vlax-invoke wrap 'strget pStr);;1.16 设置窗口的标题文字或控件的内容(vlax-invoke wrap 'Register "user32" "SetWindowTextW" "i=hw" "r=m")(vlax-invoke wrap 'SetWindowTextW hDOC "好大一只兔子");;1.17 为指定的窗口取得类名(vlax-invoke wrap 'Register "user32" "GetClassNameW" "i=hpm" "r=m")(setq ss (vlax-invoke wrap 'Space 256 " ")    pStr (vlax-invoke wrap 'StrPtr ss))(vlax-invoke wrap 'GetClassNameW hDOC pStr 256)(vlax-invoke wrap 'strget pStr);;1.18 获取一个记事本窗口的句柄(startapp "notepad.exe")(vlax-invoke wrap 'Register "user32" "FindWindowExW" "i=hhhw" "r=m")(setq Jsb (vlax-invoke wrap 'FindWindowExW 0 hCAD 0 "无标题 - 记事本"));;1.19 闪烁显示指定窗口,引起用户注意(例如,记事本窗口)(vlax-invoke wrap 'Register "user32" "FlashWindow" "i=hm" "r=m")(vlax-invoke wrap 'FlashWindow Jsb 1);; 1 闪烁窗口标题和任务栏图标, 0 仅闪烁任务栏图标;;1.20 让窗口总在最前(例如,记事本窗口)(vlax-invoke wrap 'Register "user32" "SetWindowPos" "i=hmmmmmm" "r=m")(vlax-invoke wrap 'SetWindowPos Jsb -1 0 0 0 0 3);;参数 2:;;      1   将窗口置于窗口列表底部;;      0   将窗口置于Z序列的顶部;Z序列代表在分级结构中,窗口针对一个给定级别的窗口显示的顺序;;      -1  将窗口置于列表顶部,并位于任何最顶部窗口的前面(类似 QQ 界面);;      -2  将窗口置于列表顶部,并位于任何最顶部窗口的后面(正常);;参数 34: 窗口坐标 x y;;参数 56: 窗口大小 w h;;参数 7: ;       1 保持当前大小;       2 保持当前位置;       4 保持窗口在列表的当前位置;       8 窗口不自动重画;       16 不激活窗口;       32 围绕窗口画一个框;       64 显示窗口
原创粉丝点击