Freigeben über


Verwenden von ersetzbaren Parametern (Der Registrierungspräprozessor)

Hinweis

Die aktive Vorlagenbibliothek (ACTIVE Template Library, ATL) wird weiterhin unterstützt. Wir fügen jedoch keine Features mehr hinzu oder aktualisieren die Dokumentation.

Austauschbare Parameter ermöglichen es dem Client einer Registrierungsstelle, Laufzeitdaten anzugeben. Dazu verwaltet die Registrierungsstelle eine Ersetzungskarte, in die sie die Werte eingibt, die den ersetzbaren Parametern in Ihrem Skript zugewiesen sind. Die Registrierungsstelle macht diese Einträge zur Laufzeit.

Verwenden von %MODULE%

Der ATL-Steuerelement-Assistent generiert automatisch ein Skript, das %MODULE%verwendet. ATL verwendet diesen austauschbaren Parameter für den tatsächlichen Speicherort der DLL oder EXE Ihres Servers.

Verketten von Laufzeitdaten mit Skriptdaten

Eine weitere Verwendung des Präprozessors besteht darin, Laufzeitdaten mit Skriptdaten zu verketten. Angenommen, ein Eintrag ist erforderlich, der einen vollständigen Pfad zu einem Modul enthält, wobei die Zeichenfolge ", 1" am Ende angefügt ist. Definieren Sie zunächst die folgende Erweiterung:

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

Fügen Sie dann vor dem Aufrufen einer der skriptverarbeitungsmethoden, die in Aufrufen von Skripts aufgeführt sind, der Karte einen Ersatz hinzu:

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

Während der Analyse des Skripts erweitert der Registrar '%MODULE%, 1' zu c:\mycode\mydll.dll, 1.

Hinweis

In einem Registrar-Skript ist 4K die maximale Tokengröße. (Ein Token ist jedes erkennbare Element in der Syntax.) Dazu gehören Token, die vom Präprozessor erstellt oder erweitert wurden.

Hinweis

Um zur Laufzeit Ersatzwerte zu ersetzen, entfernen Sie den Aufruf im Skript zum DECLARE_REGISTRY_RESOURCE - oder DECLARE_REGISTRY_RESOURCEID Makro. Ersetzen Sie es stattdessen durch Ihre eigene UpdateRegistry Methode, die CAtlModule::UpdateRegistryFromResourceD oder CAtlModule::UpdateRegistryFromResourceS aufruft und übergeben Sie Ihr Array von _ATL_REGMAP_ENTRY-Strukturen. Ihr Array von _ATL_REGMAP_ENTRY muss mindestens einen Eintrag aufweisen, der auf {NULL,NULL} festgelegt ist, und dieser Eintrag sollte immer der letzte Eintrag sein. Andernfalls wird ein Zugriffsverletzungsfehler generiert, wenn UpdateRegistryFromResource aufgerufen wird.

Hinweis

Beim Erstellen eines Projekts, das eine ausführbare Datei ausgibt, fügt ATL automatisch Anführungszeichen um den zur Laufzeit erstellten Pfadnamen mit dem Skriptparameter %MODULE% des Registrars hinzu. Wenn Sie nicht möchten, dass der Pfadname die Anführungszeichen enthält, verwenden Sie stattdessen den neuen Parameter %MODULE_RAW% .

Beim Erstellen eines Projekts, das eine DLL ausgibt, fügt ATL dem Pfadnamen keine Anführungszeichen hinzu, wenn %MODULE% oder %MODULE_RAW% verwendet wird.

Siehe auch

Erstellen von Registrierungsskripts