[求助]对于多文档的cad,用vba怎样强制使cad退出
我现在的想法是,想限制vba程序的使用者,也就是说只能允许某一台计算机使用。于是我想起龙龙仔斑竹曾经提出的lisp方法,限制使用者---通过提取登陆用户名来做相应判断是否有权限即
Dim sCurUser$
sCurUser = Environ("USERNAME")
If sCurUser = "123" Then
.......
else
强制cad退出
end
请问:
当然这种方法也有弊端,还有其它好方法吗?
对于多文档的cad,用vba怎样强制使cad退出? 使用API函数。
如:TerminateProcess GetCurrentProcess, 0
TerminateProcess函数是结束指定进程号的进程。
GetCurrentProcess函数返回当前进程号。 呀!老朋友,久违了。出差回来了吗?怎么也不联系,这段时间我也挺忙的。你出去那段时间可真不方便啊! 如果强制结束进程,这样也太具杀伤力了.万一要是数据没有保存,损失可大可小.相信这样的软件,绝不利于推广.
要限制VBA的使用权,更好的办法是将大部份代码用VB编译成ActiveXDll文件,在VBA中引用.
这样在DLL文件中就可以作注册或限制的功能. zeng29说的也是。还有如果更改一下登陆用户名,那么程序又可以运行了,这也起不到限制的作用。zeng29朋友听你说的方法好像有道理,有实用价值,更具专业性。
但我不知道怎样在vba中引用dll文件?
在DLL文件中作注册或限制的功能,具体如何实现呢? 首先用VB编写ActiveXDll工程,在ActiveXDll工程中引用AutoCAD Type Library类型库,通过类型库的AcadApplication与AutoCADVBA中的Application间传递数据和执行方法.在VB中生成ActiveXDLL文件后,在VBA中的引用列表中就会出现你的ActiveXDll类,引用以后就可以调用ActiveXDll中的代码,在VBA中能作的事在ActiveXDll都可以作.具体的注册和限制的方法依个人习惯,如可以用API取得硬盘序列号,通过特定的算法得到Key,注册后才能使用等.
当软件移植到别的系统时调用regsvr32.exe对ActiveXDll进行注册,这样软件才能使用.
页:
[1]