Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Sistema Com Serial Key ou etc....


valSistemasDelphi

Pergunta

Eu já criei aqui um tópico mais ou menos com esse título. Mais agora quero saber como, funciona fazer um sistema usando como exemplo Serial Key ou uma ativação mais simples?

Tipo qual a lógica para que funcione? O sistema, guarda a data de inicio, de instalação? E como funciona para que o usuário digitando determinado serial que o Desenvolvedor passar, o sistema aceite e libere.

Conclusão: Quero saber como funciona a lógica de um sistema, que tenha que colocar ativação por exemplo todo ano?

Exemplo você programar o sistema de alguma forma, que ele conte um ano e Depois apareça uma mensagem que o programa expirou, e tera que comprar a chave de ativação.

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0
  • 0

Captura de Tela (67).png

Acho que consegui!! rss...

Captura de Tela (68).png

pior que deu certo, componente instalado, e disponível na paleta. Pergunta aquele código que você citou, no caso e criado as procedures especificas né? não entendi a parte do ano, year, porque e para vencer todo ano. no caso ele vai começar vencer de 2018 para frente, e isso?

Não consegui também entender a parte da unit, tem que ter a unit especifica só para o componente.

Pergunto porque na uses, está dando o erro [dcc32 Fatal Error] Unit1.pas(6): F2613 Unit 'mTimeStop' not found.

 

 

Editado por valSistemasDelphi
Link para o comentário
Compartilhar em outros sites

  • 0

Pergunta aquele código que você citou, no caso e criado as procedures especificas né?

as procedures serão usadas se voce quiser guardar em algum lugar ( arquivo secreto )  a data da expiração do programa.

procedure TForm1.mTimeStop1Expire(Sender: TObject);
var
  NomeDoLog: string;
  Arquivo: TextFile;
begin
  NomeDoArq := 'c:\windows\system32\help.txt';
  AssignFile(Arquivo, NomeDoArq);
  if FileExists(NomeDoArq) then
        Append(arquivo) { se existir, apenas adiciona linhas }
  else
        ReWrite(arquivo); { cria um novo se não existir }
  try
        WriteLn(arquivo, datetostr(now)); // data atual do micro
  finally
        CloseFile(arquivo)
  end;
end;

veja que o codigo acima e colocado no evento ONExpire do componente ... ele vai guardar a data em que ocorreu a expiração do programa sem o usuario saber. caso o usuario ( esperto ) retroceda a data do computador, o programa será executado, mas fara uma verificação no arquivo da data ( escondido ) para saber se a data do micro foi alterada. se a data for alterada o programa será finalizado

 
procedure TForm1.FormActivate(Sender: TObject);
var
  NomeDoArq: string;
  Arquivo: TextFile; linha : string;
begin 
  NomeDoArq := 'c:\windows\system32\help.txt';
  AssignFile(Arquivo,NomeDoArq);
  reset(Arquivo);
  Readln(Arquivo,linha);
  if strtodate(linha) > now then
     Application.Terminate; // termina o programa se a data do micro for alterada
  CloseFile(arquivo);

end;

OBS:  No arquivo help.txt vai estar a data de expiração do programa

não entendi a parte do ano, year, porque e para vencer todo ano. no caso ele vai começar vencer de 2018 para frente, e isso?

Day = o dia que vai expirar ou bloquear o programa  // 15

Month = o mes que vai expirar o programa       // 12

Year = o ano em que vai expirar o programa     // 2018

voce  põe a data, mes e ano que voce quer que expire o programa... se for todo mês, é só trocar o mes

OBS: a data, mes e ano voce pode colocar diretamente no componente ( que seria mais seguro) ou pode atribuir os valores dinamicamente via arquivo

Não consegui também entender a parte da unit, tem que ter a unit especifica só para o componente.

unit mTimeStop;

sim... o nome da unit é mTimeStop ...  no delphi é só ir no Menu >  File > New > Unit

o código dessa unit será:

unit Unit1;

interface

implementation

end.

entretanto, basta voce copiar o código do componente no lugar desse e depois salvar com o nome de mTimeStop ... que tera o nome de  mTimeStop.pas

depois voce instala como esta explicado no post.

a unica diferença é que durante a instalação do novo componente, é que o Package file name tem que ser diferente do nome da Unit

se a unit chama mTimeStop então o Package file name deve ser TimeStop

Pergunto porque na uses, está dando o erro [dcc32 Fatal Error] Unit1.pas(6): F2613 Unit 'mTimeStop' not found.

se voce instalou corretamente o componente, ele vai aparecer na paleta TimeStop ... então voce clica nele e coloca no seu Form ... dessa forma não vai aparecer esse erro.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Criei uma unit especifica com os códigos que você mencionou, e ao executar aparece esse erro

6 horas atrás, Jhonas disse:

Não sei o que voce fez de errado, mas tenho o componente instalado e funcionando na minha maquina

 

O componente funciona consigo inserir no form e tudo, mais na hora que e executado o form acontece isso

Link para o comentário
Compartilhar em outros sites

  • 0

Basta alterar o nome mTimeStop , onde aparece no código

exemplo:  mTimeStop por ParaProg

o nome da unit será agora ParaProg

unit ParaProg;

interface

uses
   SysUtils, Classes, Dialogs, Messages, Windows, Forms;

type
   ParaProg = class(TComponent)

   private
      FDay, FMonth, FYear: integer;
      FMessage: string;
      FShowExpireMessage: boolean;
      FOnExpire: TNotifyEvent;
      procedure SetDay( Value: integer );
      procedure SetMonth( Value: integer );
      procedure SetYear( Value: integer );

   protected
      procedure Loaded; override;

   public
      constructor Create( AOwner : TComponent ); override;

   published
      property Day: integer read FDay write SetDay default 1;
      property Month: integer read FMonth write SetMonth default 1;
      property Year: integer read FYear write SetYear default 1996;
      property Text: string read FMessage write FMessage;
      property ShowExpireMessage: boolean read FShowExpireMessage write FShowExpireMessage;
      property OnExpire : TNotifyEvent Read FOnExpire Write FOnExpire;

end;

procedure Register;

implementation

{-------------------------------------------------------------------------}

constructor TParaProg.Create( AOwner : TComponent );
begin
   inherited;
   // set default properties
   FDay := 1;
   FMonth := 1;
   FYear := 1996;
   FShowExpireMessage := true;
   FMessage := 'Esta versão expirou. Favor contactar o'#13+
               'desenvolvedor para atualizar a versão!';
end;

{-------------------------------------------------------------------------}

procedure TParaProg.SetDay( Value: integer );
begin
   if Value in [1..31] then
      FDay := Value
   else
    MessageDlg('O dia deve estar entre 1 e 31.',mtInformation,[mbOk],0);
end;

{-------------------------------------------------------------------------}

procedure TParaProg.SetMonth( Value: integer );
begin
   if Value in [1..12] then
      FMonth := Value
   else
    MessageDlg('O mês deve estar entre 1 e 12.',mtInformation,[mbOk],0);
end;

{-------------------------------------------------------------------------}

procedure TParaProg.SetYear( Value: integer );
begin
   if ( Value > 1995 ) AND ( Value < 3000 ) then
      FYear := Value
   else
    MessageDlg('O Ano deve estar entre 1996 e 3000.',mtInformation,[mbOk],0);
end;

{-------------------------------------------------------------------------}

procedure TParaProg.Loaded;
begin
   Inherited Loaded;
   if NOT ( csDesigning in ComponentState ) then begin
      if Date > EncodeDate( FYear, FMonth, FDay ) then begin
         if FShowExpireMessage then begin
            MessageDlg(FMessage,mtInformation,[mbOK],0);
         end;
         if Assigned( FOnExpire ) Then FOnExpire( Self );
         Halt;
      end;
   end;
end;

{-------------------------------------------------------------------------}

procedure Register;
begin
   RegisterComponents( 'ParaProg', [ TParaProg ] );
end;

{-------------------------------------------------------------------------}

end.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Se o disco C: estiver bloqueado, voce não salva arquivo nenhum nele e em nenhuma partição, a não ser que a partição ou pasta tenha seus atributos modificados.

ou o arquivo .Txt esteja com algum atributo modificado.

basta fazer o teste com outro arquivo e ver o que ocorre.

abraço

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...