字號: 小 中 大 |
推薦給好友
上一篇 |
下一篇
用VB“破解”有時間限制的程序
發布: 2007-5-25 09:19 |
作者: hktl |
來源:
互聯網 |
查看: 67次 | 進入軟件測試論壇討論
領測軟件測試網
用VB“破解”有時間限制的程序
張 勝
你是否經常遇到有時間限制的程序?我等懶人尤其對此特別反感,可惜囊中羞澀,只好反復修改其系統日期而使自己多用幾次此軟件——實在是辛苦!于是使用“Anyday32”,可惜也太麻煩了;再后使用“時光倒流”,也不好用,而且——居然還有Bugs!......看樣子只好自己動手做“VB軟件DIY”了。 |
有時間限制的程序大都是依靠在啟動過程中檢測系統日期,再與其記錄的第一次使用日期(放于注冊表或特殊文件中)進行對比檢測是否試用期已到,若試用期已到,可能會在注冊表中作一定的標記,使下次程序不可用。 |
我們一般可以通過修改系統時間來使用此類程序,當然在其作過過期標志后可能此“大法”就無效了;也有一些程序的檢測細化到了小時,那我們只能將時間也一塊改了。 |
我們可以在自己的程序中先修改系統日期,再啟動相應的有時間限制的程序,過一段時間后再將系統日期改回來。 |
注意:在等待外部程序檢測系統日期的等待過程中,系統日期已經改變,那么我們改回的系統日期將是錯誤的!因此我們要進行一定的檢測,以防止此類錯誤的發生。 |
這里我們為方便控制,使用Access數據庫進行軟件編制。 |
MILY: 宋體; FONT-SIZE: 10pt; mso-hansi-font-family: Arial">字段名 |
類型 |
長度 |
備注 |
程序名稱 |
Text |
20 |
程序的標識,以便于管理 |
啟動程序 |
Text |
255 |
實際啟動的程序 |
啟動日期 |
Date/Time |
8 |
應改回的系統日期 | |
名稱 |
類型 |
設置 |
Form1 |
窗體 |
BorderStyle=1 |
Command1 |
command |
Caption="執行(&R)" |
Command2 |
command |
Caption="退出(&Q)" |
Check1 |
CheckBox |
Caption="啟動程序后自動關閉本軟件" |
Timer1 |
Timer |
Enabled=False;Interval=5000 |
Data1 |
Data |
DatabaseName=數據庫路徑及名稱
RecordSource=數據表名稱 |
CommonDialog1 |
CommonDialog |
Filter="請選擇您想要啟動的程序 (*.*)" |
DBGrid1 |
DBGrid |
AllowaddNew=True;AllowDelete=True;DataSource=Data1 | |
CommonDialog和DBGrid控件需要另外加載,其中還需在DBGrid的屬性頁中進行一定的數據庫掛接和設置,要在其屬性頁中“布局”中的第二列的“按鈕”選中。 |
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _ |
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _ |
ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long |
Dim OldDate As Date '保存系統日期 |
Private Sub Command1_Click() |
If Not Data1.Recordset.EOF Then '若數據庫正在添加記錄則不動作 |
Date = Data1.Recordset(2) '改系統時間 |
Call ShellExecute(0, vbNullString, Data1.Recordset(1), vbNullString, vbNullString, vbOK) '啟動外部程序 |
Me.Enabled = False '屏蔽其他操作 |
Timer1.Enabled = True '啟動延時記時器 |
Private Sub Command2_Click() |
Private Sub DBGrid1_BeforeUpdate(Cancel As Integer) |
If MsgBox("記錄改變嗎?", vbYesNo + vbQuestion) <> vbYes Then Cancel = True '是否更新數據庫控制 |
Private Sub DBGrid1_ButtonClick(ByVal ColIndex As Integer) |
On Error GoTo errdeal '打開錯誤監測 |
CommonDialog1.CancelError = True '系統對話框錯誤控制 |
CommonDialog1.ShowOpen '打開系統對話框 |
If CommonDialog1.filename <> "" Then DBGrid1.Text = CommonDialog1.filename '寫入要啟動的程序信息 |
Call Parameter '獲取系統啟動時的參數 |
Private Sub Timer1_Timer()’五秒鐘后恢復 |
If Format(Time, "HH:MM:SS") < "00:00:05" Then OldDate = OldDate + 1 '防止在接近零時時的日期恢復錯誤 |
Me.Enabled = True '恢復正常操作 |
Timer1.Enabled = False '屏蔽延時記時器 |
If Check1.Value = 1 Then End '是否關閉本系統 |
Private Sub Parameter() '系統參數處理 |
Data1.RecordSource = "Select * From [StartProgram] Where [程序名稱]='" & Trim(Command) & "'" |
If Not (Data1.Recordset.EOF And Data1.Recordset.BOF) Then |
Command1_Click '激活本系統的執行事件 |
MsgBox "沒有此啟動程序!", 16, Me.Caption '錯誤提示 |
本小軟件可啟動多個有時間限制的程序,也可以通過命令參數(格式是:本程序名 要啟動的程序名稱)一次啟動一個程序,可用于作相應的快捷方式(和Anyday32類似),讓你放心去使用。 |
程序編完了,但還需你的完善和潤色,遇到問題自己解決——我是軟件DIY人! |
文章來源于領測軟件測試網 http://www.kjueaiud.com/
老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
|