Verwenden von ersetzbaren Parametern (Der Registrierungspräprozessor)

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

Verwenden von %MODULE%

Der ATL-Steuerelement-Assistent generiert automatisch ein Skript, das verwendet %MODULE%wird. 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 '%MODULE%, 1' erweitert sich die Registrierungsstelle auf c:\mycode\mydll.dll, 1.

Hinweis

In einem Registrierungsstellenskript 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 sie 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 beim Aufrufen ein Zugriffsverletzungsfehler generiert UpdateRegistryFromResource .

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% der Registrierungsstelle 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