Utilisation de paramètres remplaçables (préprocesseur d’inscription)
Les paramètres remplaçables permettent au client d’un bureau d’enregistrement de spécifier des données d’exécution. Pour ce faire, le bureau d’enregistrement conserve une carte de remplacement dans laquelle elle entre les valeurs associées aux paramètres remplaçables dans votre script. Le bureau d’enregistrement effectue ces entrées au moment de l’exécution.
Utilisation de %MODULE%
L’Assistant Contrôle ATL génère automatiquement un script qui utilise %MODULE%
. ATL utilise ce paramètre remplaçable pour l’emplacement réel de la DLL ou exe de votre serveur.
Concaténation des données d’exécution avec des données de script
Une autre utilisation du préprocesseur consiste à concaténer des données d’exécution avec des données de script. Par exemple, supposons qu’une entrée soit nécessaire qui contient un chemin d’accès complet à un module avec la chaîne «, 1
» ajoutée à la fin. Tout d’abord, définissez l’extension suivante :
'MySampleKey' = s '%MODULE%, 1'
Ensuite, avant d’appeler l’une des méthodes de traitement de script répertoriées dans l’appel de scripts, ajoutez un remplacement à la carte :
TCHAR szModule[_MAX_PATH];
::GetModuleFileName(_AtlBaseModule.GetModuleInstance(), szModule, _MAX_PATH);
p->AddReplacement(OLESTR("Module"), T2OLE(szModule));
Pendant l’analyse du script, le serveur d’enregistrement s’étend '%MODULE%, 1'
sur c:\mycode\mydll.dll, 1
.
Remarque
Dans un script de bureau d’enregistrement, la taille maximale du jeton est 4K. (Un jeton est un élément reconnaissable dans la syntaxe.) Cela inclut les jetons créés ou développés par le préprocesseur.
Remarque
Pour remplacer les valeurs de remplacement au moment de l’exécution, supprimez l’appel du script à la macro DECLARE_REGISTRY_RESOURCE ou DECLARE_REGISTRY_RESOURCEID . Remplacez-la par votre propre UpdateRegistry
méthode qui appelle CAtlModule ::UpdateRegistryFromResourceD ou CAtlModule ::UpdateRegistryFromResourceS et passez votre tableau de structures _ATL_REGMAP_ENTRY. Votre tableau de _ATL_REGMAP_ENTRY doit avoir au moins une entrée définie sur {NULL,NULL}, et cette entrée doit toujours être la dernière entrée. Sinon, une erreur de violation d’accès est générée quand elle UpdateRegistryFromResource
est appelée.
Remarque
Lors de la génération d’un projet qui génère un exécutable, ATL ajoute automatiquement des guillemets autour du nom du chemin d’accès créé au moment de l’exécution avec le paramètre de script du bureau d’enregistrement %MODULE%. Si vous ne souhaitez pas que le nom du chemin d’accès inclue les guillemets, utilisez le nouveau paramètre %MODULE_RAW% à la place.
Lors de la génération d’un projet qui génère une DLL, ATL n’ajoute pas de guillemets au nom du chemin d’accès si %MODULE% ou %MODULE_RAW% est utilisé.