明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: nonsmall

[【不死猫】] [不死猫出品]原创vlisp直接调用WINDOWS API (核心秘密揭晓)

  [复制链接]
发表于 2009-8-3 21:43:00 | 显示全部楼层
学习中,谢谢!
发表于 2009-8-3 22:27:00 | 显示全部楼层
本帖最后由 作者 于 2009-8-11 18:57:56 编辑

只有想不到呀。。。。你厉害!!
说明白就简单了。。
就是一个使用VLISP动态访问VBA及动态创建VBA模块函数的过程
[Point=1]
  1. (defun c:vbetest()
  2.   (setq acadObject (vlax-get-acad-object))
  3.   (setq acadVbe (vla-get-vbe acadObject))
  4.   (setq acadVbeProjects (vlax-get-property acadVbe 'VBProjects))
  5.   (setq cProjects(vla-Item acadVbeProjects 1))
  6.   (setq cVBComponents(vlax-get-property cProjects 'VBComponents))
  7.   ;;(setq vbdmodule(vlax-invoke-method cVBComponents 'ADD "1"));_1 模块 2类模块 3窗体
  8.   (setq vbdmodules(vla-Item cVBComponents 1))
  9.    (setq vbCodeModule(vlax-get-property vbdmodules 'CodeModule))
  10.   (vlax-invoke-method vbCodeModule 'InsertLines 1 "sub vbetest()")
  11.   (vlax-invoke-method vbCodeModule 'InsertLines 2 "MsgBox "Hello Word,there is vlisp add", , "vbetest"")
  12.   (vlax-invoke-method vbCodeModule 'InsertLines 3 "END SUB")
  13.   (command "_-vbarun" "vbetest")
  14.   )
[/Point]
 楼主| 发表于 2009-8-8 01:06:00 | 显示全部楼层

这段代码前面可以加上一句

(command "vbaide")

凡是问题都应该留给大家思考的空间,

要坚决打击不劳而获的犯罪行为。

发表于 2009-8-21 11:10:00 | 显示全部楼层
呵呵,加了(command "vbaide"),跳出来vba编程对话框,且运行程序还是不行!
发表于 2009-8-22 19:12:00 | 显示全部楼层
nonsmall发表于2009-4-6 1:08:00一楼公布了答案具体的部分大家自己研究下可惜卸载的部分依然不完美实在是遗憾

请说说,卸载如何不完美?是vbaide没有关闭么?

发表于 2009-8-22 20:14:00 | 显示全部楼层

VBAIDE 不需要打开的

那句话是为了初始化VBAIDE 可以用其他的语句代替.

关键是在退出CAD的时候

本帖子中包含更多资源

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

x
发表于 2009-8-23 23:22:00 | 显示全部楼层
试了一下,看来不剪掉这条狐狸尾巴是挺闹心的。呵呵
发表于 2009-8-24 00:14:00 | 显示全部楼层

是不是在LSP中可以这样处理呢?

1、动态生成VBA程序代码

2、调用运行刚才生成的VBA程序

3、VBA调用完成后,再将生成的代码全部删除

只是不知对速度影响上是否过大,但只添加API的声明及简单调用SUB应该没有问题吧?

发表于 2009-8-24 01:01:00 | 显示全部楼层

即便删除生成的代码,退出cad时候还是会跳出提示

发表于 2009-8-24 14:09:00 | 显示全部楼层

VBA中调用api的例子:

Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Sub sss()
   SetCursorPos 100, 200
   MsgBox "Hello Word,there is vlisp add", , "vbetest"
   SetCursorPos 100, 200
End Sub

按运行,光标首先移到100, 200,点击对话框后,光标又移到100, 200

在autolisp中可用(command "_-vbarun" "sss")调用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-23 00:26 , Processed in 0.175314 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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