明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1635|回复: 9

[讨论] 原创思路:Lisp调用winapi--无需dwx,无需注册dll

[复制链接]
发表于 2018-12-31 17:26 | 显示全部楼层 |阅读模式
本帖最后由 陨落 于 2018-12-31 18:18 编辑

Lisp调用winapi--无需dwx,无需注册dll,但有一定的限制。基本思路是利用python的pywin32模块及动态编译功能,做成带参数调用的exe文件
再利用shell的exec方法执行并返回参数
缺点很明显:运行的时候会跳出cmd的小黑框,速度会受影响且不支持回调函数等
附件的exe里面打包了pywin32的win32api和win32gui两个模块





使用方法如下:(setq wsh(vlax-get-or-create-object "wscript.shell"))(setq hCAD (vla-get-hwnd (vlax-get-acad-object))
(setq  cap7(strcat"cmd.exe /c F:\\CAD资料\\winapi相关\\winapi应用于lisp测试\\dist\\winapi打包.exe -n MessageBox "(itoa hcad)" \'你好\' \'啊哈\' 1"))(setq mdi(vlax-invoke-method wsh 'exec cap7));;在cad中显示一个消息框
(setq       cap8 "F:\\CAD资料\\winapi相关\\winapi应用于lisp测试\\dist\\winapi打包.exe -n  keybd_event 20 0 0 0"
cap9 "F:\\CAD资料\\winapi相关\\winapi应用于lisp测试\\dist\\winapi打包.exe -n  keybd_event 20 0 2 0")(setq mdi(vlax-invoke-method wsh 'exec cap8)
      mdi(vlax-invoke-method wsh 'exec cap9));;;按下CAPSLOCK并释放

部分运行结果如下:


代码中exe的路径请自行修改
其它测试成功的api函数还有Beep ShellExecute等
具体可以参照pywin32相关模块的介绍
读者可自行尝试
也请高手指出有无改进方法
















本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2018-12-31 17:38 | 显示全部楼层
对于不需要返回参数的情况,可以用run来调用,那样就可以不用显示黑框了
 楼主| 发表于 2018-12-31 17:45 | 显示全部楼层
或者可以全部用run来调用,将执行结果通过txt文本文档来传递,可以避免小黑框的问题
但是速度可能是没办法了
发表于 2019-1-1 13:32 | 显示全部楼层
得研究才知道怎么用法
 楼主| 发表于 2019-1-2 00:43 | 显示全部楼层
烟盒迷唇 发表于 2019-1-1 13:32
得研究才知道怎么用法

就是命令行调用windowsapi
格式为: winapi打包.exe -n 参数1 参数2 参数3……
参数的写法与python中的写法一致,只是不需要逗号和括号
发表于 2019-1-2 07:58 | 显示全部楼层
这可执行文件好大啊,6M多
 楼主| 发表于 2019-1-2 09:46 | 显示全部楼层
baitang36 发表于 2019-1-2 07:58
这可执行文件好大啊,6M多

是的老大,好像是因为python打包的时候会把解释器打包进去
发表于 2019-1-3 14:19 | 显示全部楼层
不错曲线救国,就是绕有点远。
如果要部署程序,得把python也一起打包。
 楼主| 发表于 2019-1-3 16:35 | 显示全部楼层
yxp 发表于 2019-1-3 14:19
不错曲线救国,就是绕有点远。
如果要部署程序,得把python也一起打包。

python做成exe,可以在vlx里面打包这个exe就行了,文件确实会比较大
发表于 2019-1-7 09:34 | 显示全部楼层
还不如直接bat更强大
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-20 06:05 , Processed in 0.614932 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表