xiguao 发表于 2002-11-30 11:25:00

能帮我优化一下吗?

上传文件是一个dwg文件,内嵌一个vba程序,我的计划是,在vbaide后设一个程序口令,不知道的不能修改vba程序。
vba里设一对话框,输入口令,通过后修改dwg文件没有任何限制,否则,只能使用zoom,pan等命令。这个功能由锁定图层,先命令后选择,并取消不许使用的命令。
由于这个文件在acadr2002中生成,可以打开多文档,故激活别的文档时,本文档需全不可见,并将一些功能复原,当激活本文档时,可以看见本图。
本图在打开时acad能预览,但打开是什么也看不见,需要双击鼠标,这是程序设置的,如有更好的办法,请指教。
本程序只是限制拿到这个图的人只能用acad看,不能修改,除非我给密码。我看vba能嵌入很不错,很简单,所以就用了。网上有dwg文件加密的东西,但那是另编程序,我把dwg拷给别人不能也将那程序也拷了去:)
大家帮我看看?

xiguao 发表于 2002-11-30 16:03:00

怎么看不到上传的rar文件?

xiguao 发表于 2002-11-30 16:09:00

再上传rar文件吧

xiguao 发表于 2002-12-1 11:40:00

我自己先作一点修改

对autocad加速键作了一些限制:)

leeyeafu 发表于 2002-12-2 09:44:00

仔细看了你的程序,基本能满足要求

我对你的AcadDocument_BeginCommand()函数做了个小改动,这样当用户输入除Zoom等的其它任何命令时都会要求输入密码。而不必先执行PLINE命令。
Private Sub AcadDocument_BeginCommand(ByVal CommandName As String)
 On Error Resume Next
 If UserForm1.flag = 1 Then GoTo ENDMEA
  ThisDrawing.Application.Preferences.Selection.PickFirst = False
  ThisDrawing.Application.Preferences.Selection.DisplayGrips = False
  Select Case CommandName
   case "ZOOM","CLOSE","OPEN","QUIT","EXIT","HELP","PLOT","UNDO","U" '这样写代码你是否觉得更为简捷?
      GoTo ENDME
   Case Else   '这是我加的代码
    UserForm1.Show 1
    If UserForm1.flag = 1 Then GoTo ENDMEA
  End Select
  SendKeys "{esc}" & "{esc}"
  Exit Sub
  ENDMEA:
   ThisDrawing.Application.Preferences.Selection.PickFirst = True
   ThisDrawing.Application.Preferences.Selection.DisplayGrips = True
   Exit Sub
  ENDME:
End Sub
不过你这样做好象只是防止DWG文件被无效编辑,我不知道你的DWG文件是否在局域网上共享,那样应该可以将文件共享为只读的(文件可以编辑但不能保存),这岂不更容易?
最后,我想说VBA代码的保密性能是很弱的。只要能看到你的代码,就能很容易地得到密码。对代码进行加密,目前好象只有一个办法,VBA编辑器中“工具”->“Project属性...”->“保护”......(大概你知道这个办法)

xiguao 发表于 2002-12-2 13:30:00

多谢!

我写这个的目的就是为了别人只能看,不能修改,包括使用中间的任何局部,以至于要关掉中间的复制功能。但是,不好有附加的安装软件呀。只能将这个dwg文件给别人,很多时候别人会对这个图作出修改,所以我得限制。。。
文件是完全拷贝的,只读功能别人能改过来,所以我得在这里面加点功夫。
但是,visible = false 是没有用的,随便用一个dwg convert程序就可解密,只是我们要防备的人也只会看autocad的dwg,这段程序,足够挡着他们了。
有没有更好的思路,只是局限在这个dwg图形里的,多多指教!!!!
页: [1]
查看完整版本: 能帮我优化一下吗?