Verwenden von ersetzbaren Parameter (der Präprozessor der Registrierungsstelle)
Ersetzbare Parameter ermöglichen dem Client einer Registrierungsstelle, um Ablaufdaten anzugeben.Hierzu, wartet die Registrierungsstelle eine Ersatzzuordnung in die es die Werte eingeben, die mit den ersetzbaren Parametern im Skript zugeordnet sind.Die Registrierungsstelle macht diese Einträge zur Laufzeit.
Verwenden %MODULE%
ATL-Steuerelement-Assistent automatisch generiert ein Skript, das %MODULE% verwendet.ATL verwendet diesen ersetzbaren Parameter für den tatsächlichen Speicherort der DLL oder der EXE-Datei Ihres Servers.
Verketten von Ablaufdaten mit Skript-Daten
Eine andere Verwendung des Präprozessors ist, Ablaufdaten mit Skriptdaten zu verketten.Angenommen, ein Eintrag erforderlich ist, der einen vollständigen Pfad zu einem Modul mit der Zeichenfolge ", 1 enthält", das am Ende angefügt wird.Zuerst definieren Sie die folgenden Erweiterung:
'MySampleKey' = s '%MODULE%, 1'
Anschließend bevor Sie ein des Skripts aufrufen, das die Methoden verarbeitet, die in Aufrufen von Skripts aufgeführt sind, fügen Sie eine Ersetzung der Zuordnung:
TCHAR szModule[_MAX_PATH];
::GetModuleFileName(_AtlBaseModule.GetModuleInstance(), szModule, _MAX_PATH);
p->AddReplacement(OLESTR("Module"), T2OLE(szModule));
Während der Analyse des Skripts, erweitert die Registrierungsstelle '%MODULE%, 1' zu c:\mycode\mydll.dll, 1.
Hinweis |
---|
In einem Registrierungsstellenskript ist 4K die maximale Scheingröße.(A-Token erkennbare ist jedes Element in der Syntax.) Dies schließt ein Token, die vom Präprozessor erstellt oder erweitert wurden. |
Hinweis |
---|
Um Wiederbeschaffungswerte zur Laufzeit zu ersetzen, entfernen Sie den Aufruf im Skript für den DECLARE_REGISTRY_RESOURCE oder DECLARE_REGISTRY_RESOURCEID-Makro.Stattdessen ersetzen Sie diese durch eine eigene UpdateRegistry-Methode, die CAtlModule::UpdateRegistryFromResourceD oder CAtlModule::UpdateRegistryFromResourceS aufruft, und führen Sie das Array _ATL_REGMAP_ENTRY-Strukturen.Das Array von _ATL_REGMAP_ENTRY muss mindestens einen Eintrag verfügen, dem NULL{,}NULL festgelegt wird, und dieser Eintrag sollte der letzte Eintrag immer sein.Andernfalls wird ein Zugriffsverletzungsfehler generiert, wenn UpdateRegistryFromResource aufgerufen wird. |
Hinweis |
---|
Wenn es ein Projekt erstellt, das eine ausführbare Datei ausgibt, fügt ATL automatisch Anführungszeichen um den Pfadnamen hinzu, der zur Laufzeit mit dem %MODULE% Registrierungsstellenskriptparameter erstellt wird.Wenn Sie den Pfadnamen die keine Anführungszeichen enthalten soll, verwenden Sie den neuen %MODULE_RAW%-Parameter stattdessen. Wenn ein Projekt erstellt, das ein DLL ausgibt, fügt ATL Anführungszeichen nicht den Pfadnamen hinzu, wenn %MODULE% oder %MODULE_RAW% verwendet wird. |