PDA

Просмотр полной версии : [Руководство] MXProtector. Защита программы регистрацией.


Павел.DO
19.03.2016, 14:41
Всем привет :pandal: сегодня мы добавим в нашу программу регистрацию :wow:
MXprotector -отличный и нужный компонент. С его помощью вы сможете защитить свою программу серийником, сделать из неё Trial версию, можно поставить ограничение на количество запусков программы и многое, многое другое.
Итак, начнем.
ШАГ 1:
Установка

Распаковываем архив с компонентом.
Открываем Delphi и закрываем все активные проекты.
В папке, куда распаковался компонент есть еще одна папка под названием Component заходим в неё и копируем все от туда, в ...Delphi\Projects\Bpl\
Находим файл mxProtector_d6.res .Если версия delphi у вас отличается от 6, то переименуйте этот файл заменив последнюю цифру в его имени. Т.е. например если ставим на delphi 7 то файл переименовываем с mxProtector_d6.res на mxProtector_d7.res
Находим файл mxProtector_d7.dpk (если устанавливать будем на delphi 7) и запускаем его. Delphi выдаст нам окошечко в, котором нужно сначала нажать Compile, а затем Instal.

СКАЧАТЬ ([Ссылки могут видеть только зарегистрированные и активированные пользователи])
VIRUSTOTAL ([Ссылки могут видеть только зарегистрированные и активированные пользователи] 38bf24ef99df63/analysis/1458385230/)

ШАГ 2:
Подготовка
Создаем новый проект. Кидаем на него 4 button (регистрация, старт, сброс, инфо), новый компонент mxprotector, 2 label`a и groupbox. На groupbox ложим 2 edit`a и ещё один button (серийник). У меня вышло примерно так:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]

ШАГ 3:
Код
Добавляем между private и public:
Procedure ProcessRights; и жмем Ctrl + Shift + C
Далее код:
procedure TForm1.ProcessRights;
Begin
button3.Enabled := mxProtector1.IsRegistered;
groupbox1.Enabled := Not mxProtector1.IsRegistered;
button1.Enabled := Not mxProtector1.IsRegistered;
button2.Enabled := Not mxProtector1.IsRegistered;
button4.Enabled := mxProtector1.IsRegistered;
Edit1.Enabled := Not mxProtector1.IsRegistered;
Edit2.Enabled := Not mxProtector1.IsRegistered;
button2.Enabled := ( Edit1.Text <> '' ) And ( Edit2.Text <> '' ) And ( Not mxProtector1.IsRegistered );

If mxProtector1.IsRegistered Then
Begin
label1.Caption := 'Зарегестрированая версия';
Label5.Caption := 'Спасибо за регистрацию!';
End
Else
Begin
label1.Caption := 'Демо версия';
Label5.Caption := 'Для запуска программы надо зарегестрироваться!';
End;
end;
Теперь каждой кнопке добавляем событие on click и пишем:
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text := mxProtector1.GenerateSerialNumber( Edit1.Text );
end;
///СЕРИЙНИК
procedure TForm1.Button2Click(Sender: TObject);
begin
mxProtector1.Registration;
ProcessRights;
if label1.Caption = 'Демо версия' then
form1.Caption:= form1.Caption + '[DEMO]'
else form1.Caption:= StringReplace(form1.Caption, '[DEMO]', '', [rfReplaceAll]);
end;
///РЕГИСТРАЦИЯ

procedure TForm1.Button4Click(Sender: TObject);
begin
mxProtector1.Reset;
MessageDlg( 'Регистрация удалена!', mtInformation, [ mbOK ], 0 );
ProcessRights;
edit1.Text:='';
edit2.Text:='';
if label1.Caption = 'Демо версия' then
begin
form1.Caption:= form1.Caption + '[DEMO]';
end;
end;
///СБРОС

procedure TForm1.Button5Click(Sender: TObject);
Var
S: String;
Begin
If mxProtector1.GetRegisteredUserName = '' Then
S := 'Незарегестрированная копия' Else
S := 'Зарегестрировано на:'#13#10 + mxProtector1.GetRegisteredUserName;

MessageDlg( S, mtInformation, [ mbOK ], 0 );
end;
///ИНФО
Теперь добавляем событие on form create:
procedure TForm1.FormCreate(Sender: TObject);
begin
ProcessRights;
if label1.Caption = 'Зарегестрированная версия' then
begin
edit1.Text:=mxprotector1.UserName;
edit2.Text:=mxProtector1.GenerateSerialNumber( Edit1.Text );
end;

if label1.Caption = 'Демо версия' then
begin
form1.Caption:= form1.Caption + '[DEMO]';
end;
end;
Ещё событие на edit2 change (edit с серийником):
procedure TForm1.Edit2Change(Sender: TObject);
begin
button2.Enabled := ( Edit1.Text <> '' ) And ( Edit2.Text <> '' );
end;

И добавляем 2 события на mxprotector (OnGetSerialNunber и OnInvalidSerialNumber):
procedure TForm1.mxProtector1InvalidSerialNumber(Sender: TObject);
begin
MessageDlg( 'Неправильный серийный номер!', mtError, [ mbOK ], 0 );
end;
procedure TForm1.mxProtector1GetSerialNumber(Sender: TObject; var UserName,
SerialNumber: String);
begin
UserName := Edit1.Text;
SerialNumber := Edit2.Text;
end;
Не забываем менять у mxprotector protectiontype на [stregister] :elefant:
Вышло примерно так /bonk
[Ссылки могут видеть только зарегистрированные и активированные пользователи] ([Ссылки могут видеть только зарегистрированные и активированные пользователи])

Павел.DO
25.03.2016, 19:23
Видео:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]

GameOldHack
26.03.2016, 17:25
Все Супер ну есть одно но ! На Delphi XE 10 ты не поставишь этот компонент так как поддержка Delphi 6,7 и вроде 9