simatyga 发表于 2008-5-14 17:47:00

[求助]如何在DWG里面内嵌一个DVB,让该DWG无法打开?

<p>能不能在dwg里面内嵌一个dvb程序,让用于一打开这个dwg的时候,这个程序就自动把这个dwg关掉。</p><p>我不是无聊,这个程序用来加密的,确保这个dwg只能在某种特定的环境执行,例如我要在关掉dwg之前访问是否能ping通一个固定的IP地址,如果不能ping通,就认为是非法使用该dwg,就把这个dwg关掉,如果可以ping通,就让其执行。</p><p>我用了这个消息,可是执行到close的时候提示“图形忙”。不知道大家有没有好办法实现?<br/>Private Sub AcadDocument_Activate()</p><p>if (not isLaw()) then&nbsp;&nbsp;&nbsp; 'isLaw()&nbsp;&nbsp;函数用来判断该使用环境是否合法&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;thisdrawing.close<br/>end if</p><p>End Sub</p>

xxxtttxxx 发表于 2008-5-14 21:18:00

<p>加个doevents : sleep 10 试试</p>

simatyga 发表于 2008-5-14 23:34:00

<p>谢谢解答,不过还是不行,不管是加在close前还是后。</p><p>分析原因如下:</p><p>加在close后肯定没用,因为就是close这句出错。</p><p>加在close前也不行,doevents仅仅是把控制权交给系统,但是Private Sub AcadDocument_Activate()这个事件只要还是没有执行完,图形永远忙。</p><p>可能用这个事件就不对,不知还有没有别的事件可以用,例如OPEN事件</p>

英雄无敌 发表于 2008-5-15 08:25:00

<p>你这个有用吗?人家禁用宏,宏就不会运行了,你还不如将DWG设一个密码</p>

simatyga 发表于 2008-5-15 13:03:00

<p>DWG设置密码没用,因为我这个DWG是要放到别人笔记本的,只是我不希望他拷贝给别人看,或者把笔记本带出公司看。</p><p>我的isLaw()函数中会连接公司的服务器,如果连接不上,isLaw就返回false。</p><p>这种加密实际DWG在硬盘中是明文,所以用ARX或者其他语言都没有用,只能用内嵌的DVB来实现,而且DVB不能依赖其他的动态链接库。</p><p></p><p>如果实在不行,只有采用密文的方式加密了,让DWG存在硬盘上的时候就是密文,只有再打开的时候才会自动解密,加解密过程都在后台运行,使用者不会察觉,这种加密软件我也试用了,可以达到我的要求,但是需要花钱买,自己开发又太麻烦。所以才会想用DVB内嵌的方式来完成。</p>

英雄无敌 发表于 2008-5-15 21:30:00

但是内嵌DVB也应该行不通的,打开的时候,CAD会问你是不是执行宏,如果选择不执行,那你的DVB文件是没有作用的。

dxhy 发表于 2008-6-14 08:01:00

<p>请问楼主,怎么弄的让图形一打开就运行DVB程序?</p>
页: [1]
查看完整版本: [求助]如何在DWG里面内嵌一个DVB,让该DWG无法打开?