Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Делаем регистрацию для своей программы






Наверняка, если ты напишешь супер программу ты захочешь на ней бабло заработать. Вот только может хрень такая получиться, ты продашь челу программу, а он начнет ее распространять (создавать сайты всякие, на болванки скидывать(и продавать)). Так чтоб этого избежать, т.е. защитить свою программу от пиратов и злых дядек, надо сделать регистрацию программы. Т.е. программой сможет пользоваться только тот кто заплатил за нее деньги, и зарегистрировал. Надо сделать так, что б на каждом компе был свой серийный номер и ключ, т.к. если у всех будут одинаковые ключи и с/н то ты продашь ее одному челу, а он начнет всем говорить коды.

Ну, тянуть не буду, скажу идею:

На форме 2 текст. поля, первое текст. поле это с/н, при первом запуске программы в заныканый файл(или реестр) записывается случайный с/н(RND). Второе текстовое поле, это ключ. Он высчитывается в зависимости от с/н, по определенной формуле(например ключ = с/н * 3/555+1). Так вот, чел присылает тебе свой с/н(а он на каждом компе свой) + бабло, а ты ему ключ. Идею понял?? Ну тогда начнем`с:
Как я уже и говорил, на форму кинь кнопку(Caption = " Регистрация"), 2 текст. поля(в ряд), 2 метки(у первой Caption = " Серийный номер", она находится напротив первого текст. поля, у второй: Caption = " Ключ", напротив второго текст. поля). Вот что у тебя должно получиться:

 

Теперь подайдем к коду:

Dim SNPath As String ' В этой переменной будет храниться путь к заныканому файлу с с/н Dim GetReestr As String ' В эту переменную будет читаться данные из реестра Dim Serial As String ' А эта переменная, будет загружать в текст. поле 1 с/н из файла Function Start() ' Эта функция будет выполняться если программа зарегистрирована End ' Я написал End, а ты можешь сюда что - нбудь по умнее вставить End Function Private Sub Form_Load() Randomize ' Этот оператор нужен для того, чтоб всегда генерировались случайные числа(RND(ты что забыл??)) On Error Resume Next ' Если происходит ошибка, то игнорируем ее GetReestr = GetSetting(" proga", " serial", " serial") ' Читаем из реестра значение параметра serial(если serial = 0, значит программа не зарегистрированая, а если 1 то зарег-на) SNPath = Environ(" windir") & " key.sn" ' В переменную SNPath - записываем путь к заныканому в папке windows файлу key.sn f = FreeFile If Val(GetReestr) < > 1 Then ' Если GetReestr не равен 1, то продолжаем регистрацию, если же = 1, то программа уже зарегистрирована If Dir(SNPath) = " " Then ' Если файла с с/н не существует, то: Text1.Text = Fix(Rnd * 8000000000#) ' Генерируем случайное число(в любом пределе, можно вместо 8 с деветью нулями написать любое число), и округляем его(Fix()) Serial = Text1.Text ' Это число записываем в перем. Serial Open SNPath For Output As f ' Открываем заныканный файл Print #f, Text1.Text ' Записываем в него с/н из текст. поля 1 Close #f ' Закрываем SaveSetting " proga", " serial", " serial", 0 ' Записываем в реестр параметр Serial со значением 0(ноль означает что программа не зарегистрирована) Else ' Если же файл существует, то читаем из него с/н Open (SNPath) For Input As fSerial = Val(Input(LOF(f), f))Text1.Text = Serial ' В текс. поле помещаем с/н Close #f End IfElse ' Если же в реестре параметр Serial = 1(программа зарег-на), то запускаем функцию Start Start End IfEnd Sub Private Sub Command1_Click() ' При нажатии на кнопку: Text1.Text = Serial ' Копируем в текст. поле значение переменной serial(на случай, если чел изменил текст в текст. поле 1) If Text2.Text = Fix(Val(Serial) * 3 + 333 / 2) Then ' Вот самое интересное: -), если текст. поле 2(ключ) равен с/н умноженному на 3 + 333 / 2 SaveSetting " proga", " serial", " serial", 1 MsgBox " Программа зарегистрирована" Start ' Запускаем функцию Start Else MsgBox " Введен не правильный ключ!!! Для регистрации отправь автору программы с/н и $, а он вышлет тебе ключ" End IfEnd Sub

 

Генератор ключа на visual basic

Хотя этот шаг не стоило писать, т.к. это очень примитивная программка. Эта програмка будет по с/н(который пришлет покупатель программы) делать ключ:
На форму кинь кнопку(Caption = " Crack"), 2 текст. поля(в ряд), 2 метки(у первой Caption = " Введите Серийный номер", она находится напротив первого текст. поля, у второй: Caption = " Ключ", напротив второго текст. поля). Вот что у тебя должно получиться:

 

Теперь код:

Private Sub Command1_Click()Text2.Text = Fix(Val(Text1.Text) * 3 + 333 / 2) ' По С/Н узнаем ключ End Sub

 

Клавиатура на visual basic

Dim L As Boolean ' Объявляем переменную L как Boolean, т.е. значение переменной может принимать только 2 значения, True и False. Если переменная L принимает значение True то объект двигается, если False - то стоит Dim R As Boolean Dim U As Boolean Dim D As Boolean Private Sub Picture1_KeyDown(KeyCode As Integer, Shift As Integer) ' При НАЖАТИИ на кнопку: If KeyCode = vbKeyLeft Then ' Если нажата клавиша Left: L = True ' L = True, т.е. объект двигается в лево R = False ' Если объект двигался вправо, то останавливаем его End If If KeyCode = vbKeyRight Then ' Если нажата клавиша Right: L = False ' Если объект двигался влево, то останавливаем его R = True ' Объект двигаем вправо End If ' Здесь аналогично If KeyCode = vbKeyUp Then U = True D = FalseEnd If If KeyCode = vbKeyDown Then D = True U = FalseEnd IfEnd Sub Private Sub Picture1_KeyUp(KeyCode As Integer, Shift As Integer) ' При ОТЖАТИИ кнопки: If KeyCode = vbKeyLeft Then L = False ' Если отжата кнопка влево, то останавливаем объект If KeyCode = vbKeyRight Then R = FalseIf KeyCode = vbKeyUp Then U = FalseIf KeyCode = vbKeyDown Then D = FalseEnd Sub Private Sub Timer1_Timer() ' Здесь я думаю все понятно If L = True Then Picture1.Left = Picture1.Left - 20 If R = True Then Picture1.Left = Picture1.Left + 20 If U = True Then Picture1.Top = Picture1.Top - 20 If D = True Then Picture1.Top = Picture1.Top + 20 End Sub

 

Отправка письма

Public Function SendMail(adresant As String, adresat As String, adresantpass As String, mailsubj As String, mailbody As String, smtpservak As String, Optional mailattach1 As String)Set iMsg = CreateObject(" CDO.Message")Set iConf = CreateObject(" CDO.Configuration")Set Flds = iConf.FieldsFlds.Item(" https://schemas.microsoft.com/cdo/configuration/sendusing") = 2Flds.Item(" https://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1Flds.Item(" https://schemas.microsoft.com/cdo/configuration/sendusername") = adresantFlds.Item(" https://schemas.microsoft.com/cdo/configuration/sendpassword") = adresantpassFlds.Item(" https://schemas.microsoft.com/cdo/configuration/smtpserver") = smtpservak Flds.Item(" https://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 Flds.UpdateiMsg.Configuration = iConfiMsg.To = adresatiMsg.From = adresantiMsg.Subject = mailsubjiMsg.TextBody = mailbodyIf mailattach1 < > " " TheniMsg.AddAttachment = mailattach1End IfiMsg.SendSet iMsg = NothingSet iConf = NothingSet Flds = NothingEnd Function

 

Усыпление программы

В VBS есть функция wscript.sleep, позволяющая усыпить скрипт. Но как такое сделать в VB? Ответ прост: делаем новый модуль и пишем код:

Public Declare Sub Sleep Lib " kernel32" (byval dwMilliseconds As Long)

И все. Когда прогу нужно усыпить, просто пишем в коде проги, если например прога должна остановиться на 2 секунды то пишем

Sleep 2000

Этого способа нет на MSDN, я его сам отрыл

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.