我说的设计环境就是VB6的IDE环境。
我需要判断自定义控件是否在IDE环境中。很多有名的ActiveX控件都需要注册码。比如不输入注册码不能拖到VB6的窗体上,运行的时候弹出对话框之类的。原理是什么?

解决方案 »

  1.   

    Ambient.UserMode=false 是设计模式,true是运行模式
      

  2.   

    谢谢!
    想不到这么简单!
    以前看过一个代码,用到了UserMode。当时没有留意,还以为是ScaleMode呢。第二个问题有人知道吗?ActiveX控件防盗的原理是什么?我正在考虑用 InitProperties 、ReadProperties 和 WriteProperties事件试试,还没有成功。
      

  3.   

    要做注册码,得自己写程序来判断。可以给控件或dll定义一个属性,用户设定这个属性为特定的值才能使用。
      

  4.   

    >要做注册码,得自己写程序来判断。可以给控件或dll定义一个属性,用户设定这个属性为特定的值才能使用。我是楼主。
    我也是这么做的。而且我的每一个属性都根据某一条件产生不同的密码,就是说同时、同一台PC、同一个窗体中,每一个DLL实例的属性的密码都不相同,近似于偏执狂。但我关心的是OCX控件。商业版的OCX在设计模式使用时会要求输入序列号,否则使用这个OCX的程序在别的机器不能使用。但是在开发的电脑的设计模式,输入了序列号之后,发布的程序就可以在别的电脑中使用OCX的功能了。而且仅仅是使用,别的电脑如果想把OCX引用到他的开发IDE中,同样要求输入序列号。我想知道他们是怎么实现的,原理是什么。