在尊重軟件著作權(quán)的時(shí)代,電子注冊(cè)版軟件的應(yīng)用也越來越廣。它的出現(xiàn)使用戶對(duì)程序中未受限制的功能有了一定了解,起到了推廣和傳播作用,同時(shí)也很好地保護(hù)了制作人的切身利益。那么,我們?nèi)绾沃谱饕粋€(gè)電子注冊(cè)版軟件呢?
經(jīng)過摸索,筆者利用VB也簡(jiǎn)單地制作了一個(gè)電子注冊(cè)版軟件。
設(shè)計(jì)原理
利用API中的“GetVolumeInformation”函數(shù)提取使用者機(jī)器的硬盤序列號(hào)為特征碼,注冊(cè)時(shí)提交此碼,經(jīng)過軟件著作權(quán)人加以運(yùn)算,給出注冊(cè)碼,最后軟件使用人輸入注冊(cè)碼完成整個(gè)注冊(cè)過程(為使說明簡(jiǎn)單,本例中以特征碼減101做為注冊(cè)碼)。
新建一模塊文件
新建一模塊文件,并將如下聲明的語句和常量添加到Module1.Bas模塊中:
Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA"
(ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal
nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As
Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal
nFileSystemNameSize As Long) As Long
Global GetVal As Long
編程時(shí)需注意的是要將聲明語句寫在同一行中。
窗體設(shè)置
在Form1上添加2個(gè)文本框,Name屬性分別設(shè)置為Text1、Text2;再添加1個(gè)按鈕,Name屬性設(shè)置為Command1。
添加代碼
將如下程序代碼添加到Form1的Form1_Load事件中:
Private Sub Form_Load()
Dim TempStr1 As String * 256
Dim TempStr2 As String * 256
Dim TempLon1 As Long
Dim TempLon2 As Long
………
‘讀取是否注冊(cè)的信息,如何控制這里不再說明
………
Call GetVolumeInformation("C:", TempStr1, 256, GetVal, TempLon1, TempLon2, TempStr2, 256)
Text1.Text = GetVal ‘提取本機(jī)C盤的序列號(hào)至文本框一
End Sub
將如下程序代碼添加到Command1的Command1_Click事件中:
Private Sub Command1_Click()
If Text2 〈〉 CStr(GetVal) Then
MsgBox "注冊(cè)碼不正確,請(qǐng)認(rèn)真檢查輸入是否正確。"
Else
MsgBox "你已經(jīng)成功注冊(cè),請(qǐng)重新啟動(dòng)本軟件。"
………
(將正確注冊(cè)的信息寫入,使軟件功能以后不受限制。具體方法依個(gè)人愛好進(jìn)行設(shè)置。)
………
End If
End Sub
至此,我們可以運(yùn)行一下程序。你會(huì)發(fā)現(xiàn)我們已經(jīng)簡(jiǎn)單地實(shí)現(xiàn)了利用硬盤序列號(hào)制作電子注冊(cè)版軟件的功能。
新聞熱點(diǎn)
疑難解答