Ver Mensaje Individual
  #1  
Antiguo 12-07-2008
Avatar de BuRtOn
BuRtOn BuRtOn is offline
Miembro
 
Registrado: ene 2008
Ubicación: Bucaramanga
Posts: 215
Reputación: 17
BuRtOn Va por buen camino
Mostrar Formulario solo 1 vez y destruirlo

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
//el id del disco es correcto puede ejecutarce la aplicacion.
end
 
else
begin
//el id es incorrecto bloquear aplicacion;
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.....
Responder Con Cita