 |
当在VB环境中要使用一个控件时,VB会调用ActiveX控件的VerifyUserLicense函数,如果函数返回TRUE,就说明用户有合法的许可,可以在VB环境中使用。在编译成EXE或DLL后,VB调用ActiveX控件的GetLicenseKey函数获得运行许可,并把这个许可写入EXE或DLL。当程序脱离集成环境运行时,EXE程序调用ActiveX控件的VerifyLicenseKey函数判断写在EXE中的运行许可是否正确,如果正确则可以运行程序,否则就会出现你说的没有许可并使程序退出。在VC中很容易实现你要的功能,只需要在VerifyUserLicense函数中永远返回TRUE。如果没有购买软件,GetLicenseKey函数返回一个错误的许可,这样VerifyLicenseKey函数就知道你是使用非法版本编译的,拒绝运行。我自己的CheckListBox控件(http://china.zealsoft.com/cn/checklistbox/)就采用了这样的技术。但在VB中无法实现这些功能,原因是VB自动提供这三个函数,你无法定制。
采用这种技术也有如下缺点:
1、这样的控件只能在VB中使用,因为在VC++和Delphi等软件中即使在集成环境中调试也需要运行许可。
2、对VB 4.0无效。VB 4.0的EXE程序不检查运行许可。
相关问题:
QA002506 "如何检查编译后控件的合法性"
此问题由李海回答。
附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, ActiveX技术, activex, com, ado。
|