﻿unit webutils;

interface

uses
  // Usamos las unidades necesarias para la API de Windows
  Winapi.Windows, Winapi.ShellAPI, System.SysUtils;

type
  TWebHelper = class
  public
    /// <summary>
    /// Abre una URL en el navegador predeterminado del sistema.
    /// </summary>
    class procedure AbrirURL(const AURL: string);
  end;

implementation

{ TWebHelper }

class procedure TWebHelper.AbrirURL(const AURL: string);
var
  // Usamos NativeInt para evitar conflictos de tipos con HINSTANCE en XE3
  LResult: NativeInt;
begin
  if AURL.Trim = '' then Exit;

  // Ejecutamos y capturamos el resultado directamente como un entero nativo
  LResult := ShellExecute(0, 'open', PChar(AURL), nil, nil, SW_SHOWNORMAL);

  // Según la documentación de Windows, un valor <= 32 indica error
  if LResult <= 32 then
    raise Exception.CreateFmt('No se pudo abrir la URL. Código de error: %d', [LResult]);
end;

end.
