Saludos amigos, es que tengo una gran pregunta, estoy haciendo la parte de seguridad de mi aplicacion para que nadie la piratee, pero estoy haciendo algo muy basico, pero tengo el siguiente problema, y voy a escribir todo lo que tengo para que se den cuenta del problema:
tengo la siguiente funcion, que me captura el Id del disco duro del pc donde voy a instalar mi aplicacion:
Código Delphi
[-]
function GetVolumeID(DriveChar: Char): String;
var
MaxFileNameLength, VolFlags, SerNum: DWord;
begin
if GetVolumeInformation(PChar(DriveChar + ':\'), nil, 0,
@SerNum, MaxFileNameLength, VolFlags, nil, 0)
then
begin
Result := IntToHex(SerNum,8);
Insert('-', Result, 5);
end
else
Result := '';
end;
entonces mi formulario de seguridad quedaria algo asi:
[] = son los edits o dbedits
{} = son botones.
Ingresa tu Id: [ xxxxx ] {id}
ingresa tu serial [xxxxx]
.................................................................{siguiente}
bueno como ven el boton id contiene el siguiente codigo:
Código Delphi
[-]
procedure TfrmSerial.Button1Click(Sender: TObject);
begin
edtID.Text:= GetVolumeID('C');
end;
aqui lo que hago es extraer el Id del disco del pc y pasarlo a dbedit.
por el otro lado en el edit del serial, es un codigo que ya esta predeterminado por nostros, este es el codigo para que me entiendan mejor, y esta almacenado en el boton siguiente:
Código Delphi
[-]
procedure TfrmSerial.BitBtn1Click(Sender: TObject);
begin
if edtSerial.Text = '64703706571782' then
begin
ShowMessage('El serial es correcto');
end
else
begin
ShowMessage('El serial es incorrecto');
end;
end;
es un codigo que yo mismo genero y siempre va a ser el mismo, como se pueden dar cuenta.
el problema radica en lo siguiente, necesito que ese formulario donde me pide el serial y el id, solo salga una sola vez , es algo asi como cuando vas a registrar algun producto legal, el te pide el serial y te salen las casillas para ingresar el serial, si esta bien nunca jamas volvera a salir ese formulario de registrarce, eso es lo que necesito...teniendo en cuenta que cada vez que el usuario ingrese el formulario no sale pero si me tiene que ejecutar siempre una consulta donde diga que el ID del disco duro es el mismo que esta almacenado en la tabla SEGURIDAD para permitirle al usuario utilizar la aplicacion, si ese ID llega a cambiar, pues obviamente se tendra que bloquear la aplicacion....
lo que quiero hacer con la consulta del ID es algo asi:
Funcion idvolumen('C') : este es el id que extrae la funcion.
Id : este es un campo almacenado en una tabla paradox de tipo Alpha.
Código Delphi
[-]
if funcion idvolumen('C') = id then
begin
end
else
begin
end;
esa es la condicion que la aplicaicon siempre tiene que ejecutar sin necesidad del formulario....para que quede al estilo de Microsoft Office 2007 JEJE, que ingresas el serial una solo vez y ya....pare de contar, nunca jamas vuelve a salir el formulario....
por favor si alguien sabe como hacer esto, por favor espero una ayuda...
ya muestro anteriormente como extraigo el ID del disco duro, y tener en cuenta que ese ID lo guardo en una tabla en paradox.....
por favor agradeceria su ayuda y aportes.....