Información sobre el estado de la licencia en XLSPadlock

Pepescri

New member
Me gustaría incluir en una aplicación un botón que pueda abrir un formulario y el usuario pueda comprobar el tipo de licencia (demo, anual o ilimitada), la caducidad y su código de activación. Las tres versiones están protegidas por hardware. He creado el formulario y la macro con ayuda de Copilot pero llega un momento en que se necesita activar unas opciones:
- "Enable XLS Padlock VBA API"
- "Expose VBA API via PLEval"
En teoría se accede mediante la aplicación de escritorio XLSPadlock.exe pero en la licencia que compré de la versión 2025.2 no aparece este fichero ejecutable.
Me podrían ayudar a encontrar una solución para conseguir mi propósito?. Muchas gracias
 
Antes de nada, hay una confusión sobre las opciones que Copilot te ha indicado. Las casillas "Enable XLS Padlock VBA API" y "Expose VBA API via PLEval" no existen como tales en XLS Padlock 2025.2, y tampoco hay ningún fichero XLSPadlock.exe independiente que haya que activar: la API de VBA ya está disponible de forma nativa en cualquier EXE compilado con XLS Padlock, a través del COM add-in GXLSForm.GXLSFormula. No hay nada que habilitar en la licencia.

El problema de que tu macro "no devuelva nada" es que los nombres de funciones que te ha sugerido Copilot (XLSPL_GetActivationKey, XLSPL_GetLicenseExpirationDate, etc.) no existen en XLS Padlock. Copilot los ha inventado.

La API real se consulta a través de PLEvalVar(...). Estas son las únicas variables de licencia disponibles en tiempo de ejecución:

  • PLEvalVar("IsTrial") — True si el EXE se ejecuta como clave de prueba (demo), False si está registrado
  • PLEvalVar("TrialState") — días (o ejecuciones) restantes; funciona tanto para claves trial como para claves registradas con fecha de caducidad
  • PLEvalVar("SystemID") — el ID de hardware del equipo del usuario
Limitaciones importantes (por diseño, por seguridad):

  • No existe ninguna API para recuperar el código de activación en texto claro en tiempo de ejecución — hacerlo invalidaría la protección por hardware
  • No hay ninguna API para obtener la fecha exacta de caducidad como fecha; se usa TrialState para saber los días/usos restantes
Ejemplo de función que puedes asignar a tu botón:

Code:
Public Sub MostrarInfoLicencia()
    Dim XLSPadlock As Object
    Dim tipoLic As String
    Dim restante As Variant
    Dim sysID As String

    On Error Resume Next
    Set XLSPadlock = Application.COMAddIns("GXLSForm.GXLSFormula").Object
    On Error GoTo 0

    If XLSPadlock Is Nothing Then
        MsgBox "La información de licencia sólo está disponible al ejecutar el EXE compilado."
        Exit Sub
    End If

    If XLSPadlock.PLEvalVar("IsTrial") Then
        tipoLic = "Demo / Trial"
    Else
        tipoLic = "Registrado (anual o ilimitado)"
    End If

    restante = XLSPadlock.PLEvalVar("TrialState")
    sysID = XLSPadlock.PLEvalVar("SystemID")

    MsgBox "Tipo de licencia: " & tipoLic & vbCrLf & _
           "Días/usos restantes: " & restante & vbCrLf & _
           "System ID: " & sysID
End Sub
Tres puntos importantes para tus tres tipos de licencia (demo, anual, ilimitada), todas con bloqueo por hardware:

  • IsTrial sólo devuelve True cuando la clave se ha generado como clave trial con la opción "nag screen". Tus claves "anuales" deben generarse como claves registradas con fecha de caducidad — para ellas IsTrial será False y la duración restante se lee de TrialState.
  • Para distinguir "anual" e "ilimitada" en tu formulario, lo más limpio es usar un producto distinto (o un prefijo de clave distinto) para cada plan, o codificar el tipo de plan en un campo personalizado al generar la clave. XLS Padlock por sí solo no distingue "anual" de "ilimitada", ya que una clave ilimitada simplemente no tiene fecha de caducidad.
  • PLEvalVar devuelve un valor vacío cuando el fichero .xlsm se ejecuta directamente en Excel (fuera del EXE). Por eso tu macro con On Error Resume Next no devolvía nada durante las pruebas: hay que probar siempre desde el .exe ya compilado.
Documentación: https://www.xlspadlock.com/doc/vba-api-cookbook
 
Back
Top