วันจันทร์ที่ 30 มกราคม พ.ศ. 2555

รวมเทคนิค:การสร้างโปรแกรมที่ต้องต่ออายุการใช้งานด้วยการลงทะเบียน

รวมเทคนิค:การสร้างโปรแกรมที่ต้องต่ออายุการใช้งานด้วยการลงทะเบียน

เห็นมีหลายท่านที่พัฒนาโปรแกรมขึ้นมา และอยากจำกัดสิทธิ์ให้ใช้งานแบบทดลองใช้ (Trial Version)

และใช้งานแบบสมบูรณ์ (Full Version) ด้วยการลงทะเทียน ฉนั้น..อาจารย์ก็จะจัดให้ตามคำเรียกร้อง.
-------------------------------------------------------------------------------------------------------
อาจารย์จะพัฒนา หรีอ สร้างโปรแกมอะไรขึ้นมา มักใช้ Autoit เขียน เพราะง่าย สดวก รวดเร็ว

เราสามารถนำโปรแกรมที่สร้างจาก Autoit ไปประยุกต์ใช้งานร่วมกับโปรแกรมภาษาอื่นๆได้

อ้นนี้เป็นโค๊ดตัวอย่าง: โปรแกรม นาฬิกา ดิจิทอล ..ถ้าท่านไม่ลงทะเบียน ในเวลาไม่ถึง 1 นาที นาฬิกาจะหยุดเดิน

หลักคิด: ตัวเชื่อมโยงสำคัญที่ใช้เป็นสะพาน (Path) ข้ามหรือไม่ข้ามขีดจำกัดการใช้งานโปรแกรม คือ

หมายเลขที่กำหนดไว้ให้ลงทะเบียน (Serial Number) อาจารย์กำหนดเงื่อนไขไว้ ดังนี้..

ถ้าไม่มีหมายเลขลงทะเบียนไว้ใน Registry ..อาจารย์เขียนบังคับให้นาฬิกาเดินได้สักครู่แล้วหยุด

แต่ถ้ามีการลงทะเบียนไว้ใน Registry เรียบร้อยแล้ว ข้อจำกัดข้างต้นก็จะถูกยกเลิกไปโดยอัตโนมัติ

Download: Sample Project โปรแกรม Digital Clock.exe Click here http://file2.uploadfile.biz/i/XEEIMEIMINMZII

Serial Number: 123

โค๊ด: [Select]
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Global Const $HKeyName = "HKEY_CURRENT_USER\Software\Clock"
Global Const $TitleName = "Registration Sample"
$Form1 = GUICreate($TitleName, 263, 200, 400, 300)
$Input1 = GUICtrlCreateInput("", 64, 90, 121, 21)
GUICtrlSetState(-1, $GUI_DISABLE)
$Label1 = GUICtrlCreateLabel("00:00:00", 56, 16, 138, 41)
GUICtrlSetFont(-1, 24, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x575C64)
$Checkbox1 = GUICtrlCreateCheckbox("Trial", 64, 120, 49, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox2 = GUICtrlCreateCheckbox("Full", 144, 120, 41, 17)
$Label2 = GUICtrlCreateLabel("Register", 102, 72, 43, 17)
$Button1 = GUICtrlCreateButton("OK", 48, 152, 75, 25, $WS_GROUP)
GUICtrlSetState(-1, $GUI_DISABLE)
$Button2 = GUICtrlCreateButton("Cancel", 136, 152, 75, 25, $WS_GROUP)
$Label3 = GUICtrlCreateLabel("About", 230, 180, 138, 41)
GUICtrlSetCursor(-1, 0)
$Label4 = GUICtrlCreateLabel("ReTrial Version", 6, 180, 120, 41)
GUICtrlSetState(-1, $GUI_HIDE)
GUICtrlSetCursor(-1, 0)
GUISetState(@SW_SHOW)
If RegRead($HKeyName, "Number")= 123 Then
    _DeleteObject()
    GUICtrlSetState($Label4, $GUI_SHOW)
EndIf
$begin = TimerInit()
AdlibRegister("Timer", 1000)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
        Case $Checkbox1
    GUICtrlSetState($Checkbox2, $GUI_UNCHECKED)
    GUICtrlSetData($Input1, "")
GUICtrlSetState($Input1, $GUI_DISABLE)
    GUICtrlSetState($Button1, $GUI_DISABLE)
Case $Checkbox2
            GUICtrlSetState($Checkbox1, $GUI_UNCHECKED)
GUICtrlSetState($Input1, $GUI_ENABLE)
GUICtrlSetState($Button1, $GUI_ENABLE)
Case $Button1
If GUICtrlRead($Input1)= 123 Then
MsgBox(64, "", "Registration complete."&@CRLF&@CRLF& _
               "เพื่อให้การลงทะเบียนมีผล"&@CRLF& _
               "กรุณาปิดโปรแกรมและเปิดใหม่อีกครั้ง.")
RegWrite($HKeyName, "Number", "REG_SZ", 123)
ElseIf GUICtrlRead($Input1)= "" Then
    MsgBox(0, "", "ท่านยังไม่ได้กรอกหมายเลขลงในช่อง.")
Else
    MsgBox(0, "", "หมายเลขไม่ถูกต้อง ลองใหม่.")
        EndIf
    Case $Button2
ExitLoop
Case $Label3
If RegRead($HKeyName, "Number")= 123 Then
MsgBox(64, "About", "Full Version")
Else
MsgBox(64, "About", "Trial Version")
EndIf
    Case $Label4
$btn = MsgBox(36, "", "ท่านต้องการกลับไปใช้เวอร์ชั่นทดลองใช่หรือไม่?")
        If $btn = 7 Then ContinueLoop
RegDelete($HKeyName, "Number")
MsgBox(64, "", "Trial Version complete"&@CRLF&@CRLF&"ปิดโปรแกรมและเปิดใหม่อีกครั้ง")
        GUICtrlSetState($Label4, $GUI_DISABLE)
EndSwitch
If RegRead($HKeyName, "Number")<> 123 Then
If TimerDiff($begin)>1000 Then
$begin = TimerInit()
If @SEC >= 59  Then
MsgBox(64, "", "กรุณาลงทะเบียน เพื่อการใช้งานที่สมบูรณ์.")
AdlibUnRegister("Timer")
EndIf
EndIf
EndIf
WEnd

Func _DeleteObject()
    GUICtrlDelete($Input1)
GUICtrlDelete($Label2)
GUICtrlDelete($Checkbox1)
GUICtrlDelete($Checkbox2)
    GUICtrlDelete($Checkbox2)
GUICtrlDelete($Button1)
GUICtrlDelete($Button2)
ControlMove($TitleName, "", $Label1, 56, 50)
    AdlibRegister("Timer", 1000)
EndFunc

Func Timer()
    ControlSetText($TitleName, "", $Label1, StringFormat("%02i:%02i:%02i", @HOUR, @MIN, @SEC))
EndFunc


ข้อมูลจาก zone-it.com

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

;