Как создать shareware защиту?

Источник: snakesoft

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

Немного о том как работает защита...

К примеру:кнопка "открыть cd-rom" недоступна чтобы она стала доступной нужно ввести регистрационный код.Мы нажимаем на "регистрация" появляется поле где мы вводим пароль.

При нажатии на кнопку OK программа сохраняет то что мы набрали в реестре.

При своем запуске программа считывает то что мы написали в реестре(т.е. пароль введенный ранее)и если он совпадаеи с тем который мы указали,тогда кнопка становится активной.В противном случае,кнопка остается неактивной.

Итак делаем:

1).-запускаем полюбившийся нам делфи.

2).-создаем новый проект.

3).

caption=shareware
width:=242
height:=140
BorderStyle=bsSingle
Position=poScreenCenter
uses=mmsystem,registry;

4).Создаем 3 кнопки:button1,button2,button3 и текстовое поле edit1

button1.caption=Регистрация
button2.caption=Открыть cd-rom
button1.caption=Выйти
edit1.text='snake software'//это код регистрации
edit1.text.visible:=False;  //делаем текстовое поле невидимым

button2.enabled:=False //делаем неактивной кнопку "открыть cd-rom"
---------------------------------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
begin
mciSendString('Set cdaudio door open wait',
    nil, 0, Form1.Handle);

end;
--------------------------------------------------------------------
procedure TForm1.Button3Click(Sender: TObject);
begin
Halt;
end;
-------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
form2.show;
form1.Hide;
end;
-------------------------------------------------------------------

5).Создаем вторую форму.

caption=registration
width:=234
height:=75
BorderStyle=bsSingle
Position=poScreenCenter
uses=registry;

6).Создаем кнопку(button1),и поле для ввода текста(edit1)

button1.caption=ok

7).на событие кнопки onclick пишем:

var
 Reg: TRegistry;
begin
  Reg := TRegistry.Create;
 try
 Reg.RootKey := HKEY_CLASSES_ROOT;
 if Reg.OpenKey('\Micr.I1\CLSID', True) then
 begin
      Reg.WriteString('tr',edit1.text);
      Reg.CloseKey;
    end;
    finally
    Reg.Free;
    MessageDlg('Ща проверим!',mtInformation,[mbOk],0);
  inherited;
  end;
  HALT;

end;

8).Возвращаемся к нашей Form1(первой форме).В вверху

в var пишем pwd:string;

На событие формы oncreate пишем:

var

  Reg:TRegistry;
begin
   try
  Reg:=TRegistry.Create;
  Reg.RootKey:=HKEY_CLASSES_ROOT;
  {False because we do not want to create it if it doesn't exist}
  Reg.OpenKey('\Micr.I1\CLSID',False);
  pwd:=Reg.ReadString('tr');
  finally
  Reg.Free;
  end;
if pwd=edit1.Text then
  begin
  button2.Enabled:=True;

end;

Страница сайта http://www.interface.ru
Оригинал находится по адресу http://www.interface.ru/home.asp?artId=2490