Compartir a través de


Usar parámetros reemplazables (el preprocesador de registro)

Los parámetros reemplazables permiten al cliente de un registro especifique datos en tiempo de ejecución.Para ello, el registro mantiene un reemplazo asignado en la que escribe los valores asociados con los parámetros reemplazables en el script.El registro crea estas entradas en tiempo de ejecución.

Mediante el %MODULE%

Asistente para controles ATL automáticamente genera un script que utilice %MODULE%.ATL utiliza este parámetro reemplazable para la ubicación real de DLL o EXE del servidor.

Concatenar datos en tiempo de ejecución con datos de script

Otro uso de preprocesador es concatenar datos en tiempo de ejecución con datos del script.Por ejemplo, supongamos que una entrada es necesaria que contiene una ruta de acceso completa a un módulo con la cadena “, 1” anexado al final.Primero, defina la siguiente extensión:

'MySampleKey' = s '%MODULE%, 1'

A continuación, antes de llamar a uno de los métodos de procesamiento de script enumerados en Invocar scripts, agregue un reemplazo al mapa:

TCHAR szModule[_MAX_PATH];
::GetModuleFileName(_AtlBaseModule.GetModuleInstance(), szModule, _MAX_PATH);
p->AddReplacement(OLESTR("Module"), T2OLE(szModule));   

Durante el análisis de script, el registro expanda '%MODULE%, 1' a c:\mycode\mydll.dll, 1.

[!NOTA]

En un script de registro, 4K es el tamaño máximo de token.(El símbolo consiste en cualquier elemento reconocible en la sintaxis.) Esto incluye los tokenes creados o expandidos por el preprocesador.

[!NOTA]

Sustituir valores de reemplazo en tiempo de ejecución, quite la llamada en el script a la macro de DECLARE_REGISTRY_RESOURCE o de DECLARE_REGISTRY_RESOURCEID .En su lugar, sustitúyalo con su propio método de UpdateRegistry que llame a CAtlModule::UpdateRegistryFromResourceD o CAtlModule::UpdateRegistryFromResourceS, y pase la matriz de estructuras de _ATL_REGMAP_ENTRY .La matriz de _ATL_REGMAP_ENTRY debe tener una entrada que se establezca {NULL,NULL}, y esta entrada debe ser siempre la última entrada.Si no, un error de infracción de acceso se generará cuando se llama a UpdateRegistryFromResource .

[!NOTA]

Al compilar un proyecto que genera un archivo ejecutable, ATL agrega automáticamente comillas alrededor del nombre de ruta creado en tiempo de ejecución con el parámetro de script de registro de %MODULE% .Si no desea que el nombre de ruta para incluir las comillas, utilice el nuevo parámetro de %MODULE_RAW% en su lugar.

Al compilar un proyecto que genere un archivo DLL, ATL no agregará comillas al nombre de ruta si se utiliza %MODULE% o %MODULE_RAW% .

Vea también

Referencia

Crear el registro Scripts