vb基础   vb实例教程   api调用   控件使用   经验技巧   数据库操作   算法及技术   vb源码下载
您的位置:首页 >> vb教程 >> 控件使用

VBA限制非注册软件使用时间
出处:网络

   对于共享软件来言,在软件未注册时仅提供有限时间和有限次数的使用权限,当超过使用期限,程序给出提示信息并关闭程序。在EXCEL中如果你用宏进行了两次开发,你希望使此开发程序在时间和次数上对非注册用户有所限制,那么不妨试一下以下方法。

---- 1、在工作簿中新建一工作表,本文命名为"时间次数限制"表。

---- 2、在"时间次数限制"表单元格IV65536键入 = TODAY();在单元格IV65533键入1;(可按"Ctrl+向下键"即可到IV65536)

---- 3、打开 Visual Basic 编辑器,在当前工作簿新建一模块,在代码窗口输入如下代码:(可不输入插入在程序内的解释语句)

Option Explicit

Const Degree As Integer = 30

'Degree 是程序使用次数的限制常量

Const Time As Integer = 30

'Time 是程序使用时间的限制常量

Sub auto_open()

//auto_open()程序每次启动时自动运行

Dim I As Integer //当前程序的使用次数变量

Dim ThisTime As Long //当前程序使用时间变量

Dim LastTime As Long //上次程序使用时间变量

Dim Comp As Long //时间比较变量

ActiveWindow.WindowState = xlMinimized

//最小化当前程序窗口

Application.ScreenUpdating = False

//宏执行时,屏幕冻结

Sheets("时间次数限制").Visible = xlSheetVisible

//使"时间次数限制"表可见

Sheets("时间次数限制").Select

I = Sheets("时间次数限制").Range("IV65533").Value

//读取保存在表"时间次数限制"中的程序的使用次数的值

If I = 1 Then

Sheets("时间次数限制").Range("IV65536").Select

Selection.Copy

Sheets("时间次数限制").Range("IV65535").Select

Selection.PasteSpecial Paste:=xlValues

Sheets("时间次数限制").Range("IV65534").Select

Selection.PasteSpecial Paste:=xlValues

Application.CutCopyMode = False

Else

Sheets("时间次数限制").Range("IV65536").Select

Selection.Copy

Sheets("时间次数限制").Range("IV65535").Select

Selection.PasteSpecial Paste:=xlValues

Application.CutCopyMode = False

//将单元格IV65536中的当前时间以纯数字形式粘贴至

单元格IV65535

ThisTime = Sheets("时间次数限").Range("IV65535")

LastTime = Sheets("时间次数限制").Range("IV65534")

Comp = ThisTime - LastTime

If Comp < Time And I < Degree And Comp > -1 Then

Sheets("时间次数限制").Range("IV65536").Select

Selection.Copy

Sheets("时间次数限制").Range("IV65534").Select

Selection.PasteSpecial Paste:=xlValues

Application.CutCopyMode = False

//将单元格IV65536中的当前时间

以纯数字形式粘贴至单元格IV65534

Else

//当程序在超过使用期限或使用次数时提示用户,

并关闭工作簿,退出程序

MsgBox "您已超过了未注册软件的使用时间!"

Sheets("时间次数限制").Visible=xlSheetVeryHidden

ActiveWorkbook.Close SaveChanges:=False

Exit Sub

End If

End If

I = I + 1

Sheets("时间次数限制").Range("IV65533").Value = I

//累加程序使用次数并回传至将单元格IV65533

Sheets("时间次数限制").Visible = xlSheetVeryHidden

//使"时间次数限制"表用户不可见

ActiveWorkbook.Save

//保存当前活动工作簿

Application.ScreenUpdating = False

//激活窗口

ActiveWindow.WindowState = xlMaximized

//最大化当前程序窗口

End Sub

---- 4、在Visual Basic 编辑器的项目窗口单击"时间次数限制"表, 在属性窗口中的Visible选择xlSheetVeryHidden。

---- 5、在Visual Basic 编辑器的项目窗口右键点击VBAProject,选择VBAProject(属性)...,在保护标签中选中"查看时琐定工程"并在密码和确认密码中键入8位以上的密码。(不易被解密软件破译)

---- 6、保存本工作簿,退出即可。

---- 从安全的角度分析以上步骤,如果使用者修改系统时间,将时间恢复至安装软件之日,由于和最近软件使用时间相比为负值仍不能正常使用,另外对于使用次数又有逐次累计不可能被修改.

---- 如果使用者打开程序时按住"Shift"键,阻止auto_open宏的运行的话,由于任何一次打开程序时,填写使用次数和使用时间变量的工作表都处于" xlSheetVeryHidden"状态,在此状态下不可以从取消隐藏工作表的方法予以显示工作表,唯一显示工作表的途径VBAProject又被加密(一旦解密由于使用次数和使用时间变量的单元格位于工作表底端不易被发现).也不易被使用者修改,更何况在此种状态下所有宏程序都将被终止。充分保护了软件的使用权限。

[返回]

     

首页 | 设为首页 | 加入收藏 | 关于本站 | 友情链接 | 版权声明

     
 
Copyright© www.bianceng.cn Powered by 编程入门网 All Rights Reserved
吉ICP备06005558号