明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 31145|回复: 67

[函数] 我也来个VLISP直接调用WIN API函数

    [复制链接]
发表于 2009-3-5 08:18 | 显示全部楼层 |阅读模式
本帖最后由 yyzhan12 于 2022-2-2 23:53 编辑

<p>Vlisp直接调用Win API通用函数:c:ysx-use-api by yyzhan12</p>

本帖子中包含更多资源

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

x

评分

参与人数 2威望 +2 明经币 +3 金钱 +20 贡献 +5 激情 +5 收起 理由
菜卷鱼 + 1 低调更新
mccad + 2 + 2 + 20 + 5 + 5 【精华】好程序

查看全部评分

发表于 2020-8-21 21:51 | 显示全部楼层
  多谢大神分享,学习一下!
发表于 2022-10-5 17:40 | 显示全部楼层
这不好吧,花了钱也学习不到知识。。。
发表于 2018-8-10 11:56 | 显示全部楼层
权限太高了   
 楼主| 发表于 2009-3-5 08:22 | 显示全部楼层
本帖最后由 yyzhan12 于 2010-12-5 19:30 编辑

Vlisp直接调用Win API通用函数:c:ysx-use-api by yyzhan12

参数说明:

1、参数1

API返回值类型,long为nil, string为T

返回值目前仅支持long和string,其他类型的日后完善

2、参数2

API函数声明,文本

3、参数3

API函数名称

4、参数4

API函数参数表

例子:

(c:ysx-use-api nil "Private Declare Function GetCurrentProcessId Lib \"kernel32\" () As Long" "GetCurrentProcessId" nil)

获取进程标识符

(c:ysx-use-api nil "Private Declare Function ShowCursor Lib \"user32\" Alias \"ShowCursor\" (ByVal bShow As Long) As Long" "ShowCursor" (list 1))

显示鼠标

(c:ysx-use-api nil "Private Declare Function ShowCursor Lib \"user32\" Alias \"ShowCursor\" (ByVal bShow As Long) As Long" "ShowCursor" (list 0))

隐藏鼠标

(c:ysx-use-api nil "Private Declare Function CopyFile Lib \"kernel32\" Alias \"CopyFileA\" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long" "CopyFile" (list "c:\\bootfont.bin" "d:\\1.vxd" 0))

复制文件


____________________________________________________________________________________________

Vlisp直接调用Win API函数

解决了以下几个问题:

1、解决了AutoCAD退出时提示保存工程的问题。

2、解决了连续调用API时卸载工程不成功的问题

3、解决命令行多余信息显示的问题

4、解决影响其它工程的问题

5、改进Win API代码的加载方式

6、加强了程序代码反破解功能

____________________________________________________________________________________________

程序已更新 2009-4-4

本帖子中包含更多资源

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

x
发表于 2009-3-5 08:42 | 显示全部楼层
本帖最后由 作者 于 2009-4-16 9:51:20 编辑

不错不错

终于有人明白了 呵呵

核心的秘密已经揭晓 感兴趣的朋友可以参考研究:

http://www.mjtd.com/BBS/dispbbs.asp?BoardID=3&replyID=115948&id=72145&skin=0

 楼主| 发表于 2009-3-5 13:40 | 显示全部楼层
nonsmall发表于2009-3-5 8:42:00不错不错终于有人明白了 呵呵咱们讨论一下最后关闭AutoCAD的时候会有个是否保存工程的提示另外没有alert的话 你这个程序一定会有不好使的情况这几个问题怎么解决?

1、最后关闭AutoCAD的时候会有个是否保存工程的提示

这个暂时没想到怎么解决,这是美中不足,多多少少留下了手尾,明白人一看就知道怎么回事了,我想你的程序之前没放出来是不是有这方面的原因。

2、另外没有alert的话 你这个程序一定会有不好使的情况

这个不是问题,这是关于返回值的处理问题,在你帖子我已经提出了几种方法,隐蔽性做到无痕迹最好不过了

3、在你的帖子中给出的提示,可能让不少人做了很多无用功,因为关键语句就是两条,之前也想过这种方法,我想用过VBA的人应该也会

想过,以前用add不成功,就没细想了,不过你的“ VLisp开发小助手”真的很实用。要想用VLISP做扩展,那就要用好vlax-invoke-method

发表于 2009-3-5 13:53 | 显示全部楼层

保存的提示我有下面的尝试:

1是程序结束之前把工程保存一下 可以做到退出AUTOCAD不提示

(但我没保存成功)

2是程序结束前使用命令VBAUNLOAD但是会弹出提示框询问

(我尝试使用Sendkeys操作该提示框 有时可以 有时不可 奇也怪哉)

我之所以还没放出来 因为我抽空在研究Vlx封装VBA窗体 这个已经实现了

 楼主| 发表于 2009-3-5 16:15 | 显示全部楼层
本帖最后由 作者 于 2009-3-11 21:48:10 编辑

请转至1楼

发表于 2009-3-5 16:30 | 显示全部楼层

厉害,啊,神啊,无敌啊,NON哥,太厉害啦,

 楼主| 发表于 2009-3-5 16:32 | 显示全部楼层
本帖最后由 作者 于 2009-3-5 17:07:56 编辑

nonsmall发表于2009-3-5 13:53:00保存的提示我有下面的尝试:1是程序结束之前把工程保存一下 可以做到退出AUTOCAD不提示(但我没保存成功)2是程序结束前使用命令VBAUNLOAD但是会弹出提示框询问(我尝试使用Sendkeys操作该提示框 有

Vlx封装VBA窗体,和调用API有何区别?

发表于 2009-3-5 17:22 | 显示全部楼层
本帖最后由 作者 于 2009-3-5 17:24:52 编辑

我已经找出API部分的破解方法了:

Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Sub AutoCadVLispUseVbaSystemApi()
msgbox "当前Acad程序的PID(进程标识符)为:" & CStr(GetCurrentProcessId()), vbInformation, "Vlisp调用API函数"
End Sub

本帖子中包含更多资源

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

x
 楼主| 发表于 2009-3-5 17:53 | 显示全部楼层
和你的有什么异同的地方没有?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-29 21:13 , Processed in 0.254629 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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