Buscar

Evita cópia do aplic outras máquinas

Código

{Evita copiar seus aplicativos para outra máquina.
Mas, há o inconveniente de instalar o aplicativo no cliente.

Primeiramente, crie uma Tabela com um nome qualquer bem diferente de “Registro”, “Reg”, ou outro que esteja associado a registro ou chave. É claro que isto não vai esconder
do usuário mas disfarça.
Crie uma coluna também com um nome disfarçado.


Agora você tem um campo onde armazenar um dado específico.
Este dado será o número do HD onde estará (Provavelmente) seu aplicativo.

Coloque na unit principal um botão e um TEdit e um TDBEdit.

O código para pegar este número é este:}


procedure TFrm_Main.BFSBitBtn1Click(Sender: TObject);
 var
SerialNum : pdword;
a, b : dword;
Buffer  : array [0..255] of char;
begin
if DBEdit1.Text > '' then
//showmessage('Esta operação é ilegal. Por favor, contate seu revendedor');
 exit
  else
if GetVolumeInformation('c:', Buffer, SizeOf(Buffer), SerialNum, a, b, nil, 0) then //Pega o //número do HD
DM.TB_REG.Open; //Abre a tabela criada
DM.TB_REG.Edit; // coloca-a em modo de edição
 DBEdit1.Text := IntToStr(SerialNum^); // DBEdit1 é a caixa de texto onde será //armazenada a informação sobre o número do HD.
DM.TB_REG.Post;
DM.Transaction.CommitRetaining;
showmessage('Produto registrado com sucesso');
end;

{O Edit1 servirá para fazer a comparação entre o número que está armazenado e o número que será recolhido no exato momento que abrir uma determinada janela.
Eventualmente esta janela deverá ser a mais importante do aplicativo..

Entendendo:
Quando instalar o programa no cliente você deve gravar o número do HD no campo de registro criado clicando num botão com o código acima. Obviamente este campo estará vazio.
Após clicar no botão o número do HD corrente estará armazenado no campo de registro.

Quando o usuário abrir uma pré determinada janela encontrará este código:}


procedure TFrm_Main.Estoque1Click(Sender: TObject);
 var
SerialNum : pdword;
a, b : dword;
Buffer  : array [0..255] of char;
begin
if GetVolumeInformation('c:', Buffer, SizeOf(Buffer), SerialNum, a, b, nil, 0) then
edit1.Text := IntToStr(SerialNum^);
 if  edit1.Text = dbedit1.Text then
   //showmessage('Tudo Ok')
   else
// showmessage('Este programa executou uma operação...')
   close;
end;

{Este código captará para a Edit1 o número do HD corrente que fará uma comparação com o número anteriormente armazenado na DBEdit1.
Se a máquina for a mesma o programa correrá normalmente. Mas, se o cliente copiou o programa para outra máquina com certeza este programa se encerrará.

Sou novato em Delphi (7), não tenho conhecimento algum nesta área que é extraordinária.
Conheço mais ou menos o Visual Basic 6.
Mas, para mim que sou apenas um curioso (Mas, pensando seriamente em programar com seriedade) o Delphi arrebenta com o Visual Basic .
Só para esclarecer, o código que captura o número do HD não é meu. Tive apenas a idéia de criar esta estratégia tão simples que talvez eu esteja fazendo alguma “besteira”.

Se este for o caso por favor, me alertem, critiquem denunciem...
Pois, quero levar muito a sério esta magnífica programação chamada DELHI.
Meu e-mail é gamote_2006@yahoo.com.br.
Muito obrigado.}




 

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Arquivos
Adicionada dia: 30/11/06
Por: João De Freitas
Visualizada: 8947 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009