Keyboard Support

Contact and Search

Keyman.com Homepage

Header bottom

Keyman.com

Other versions
Version 8.0

Index

On this page

IKeymanProduct::Activate

Attempt to activate the product using the activation blob provided. If activation fails, a reason will be given in an exception.

Declaration
Sub Activate(ActivationResponseBlob As String)
Parameters
NoNameTypeDescription
1ActivationResponseBlobStringA text string as returned from the Tavultesoft Activation Server
Example Code
            

function ActivateProduct(const licno: WideString): Boolean;
var
  s: string;
  arb: WideString;
begin
  Result := False;

  { Validate the licence number }

  try
    FActiveProduct.GetActivationRequestCode(licno, arb);
  except
    on E:EOleException do
    begin
      WideShowMessage(MsgFromIdFormat(SKActivation_InvalidLicenceNumber, [E.Message]));
      Exit;
    end;
  end;

  { Connect to tavultesoft.com and get the response blob }

  try
    with THTTPUploader.Create(nil) do
    try
      Fields.Add('LicenceNumber', licno);
      Fields.Add('ActivationRequestBlob', arb);
      Proxy.Server := GetProxySettings.Server;
      Proxy.Port := GetProxySettings.Port;

      Request.Agent := 'Tavultesoft Keyman/'+GetVersionString;
      Request.Protocol := Upload_Protocol;
      Request.HostName := Upload_Server;
      Request.UrlPath := UploadPath_Activation; // '/prog/70/activation.php';
      Upload;
      s := Trim(Response.MessageBodyAsString);
    finally
      Free;
    end;
  except
    on E:Exception do
    begin
      WideShowMessage(MsgFromIdFormat(SKActivation_ErrorConnectingToTavultesoft, [E.Message]));
      Exit;
    end;
  end;

  { Check that no trappable errors occurred }

  if Copy(s, 1, 7) = '<error>' then
  begin
    Delete(s,1,7);
    if Pos('</error>', s) > 0 then Delete(s, Pos('</error>', s), Length(s));
    WideShowMessage(MsgFromIdFormat(SKActivation_ErrorActivating, [s]));
    Exit;
  end;

  { Pass the response blob to kmcomapi for validation and product activation }

  try
    FActiveProduct.Activate(s);
  except
    on E:EOleException do
    begin
      WideShowMessage(MsgFromIdFormat(SKActivation_ErrorActivating, [E.Message]));
      Exit;
    end;
  end;

  WideShowMessage(MsgFromId(SKActivation_Success));
  Result := True;
end;