置き換え可能パラメーター (レジストラーのプリプロセッサ) の使用
置き換え可能パラメーターは、レジストラー クライアントがランタイムのデータを指定することができます。これを行うには、レジストラーは、スクリプトの置き換え可能パラメーターに関連付けられた値を入力する置換マップを保持します。レジストラーは実行時に入力を行います。
を使用して %MODULE%
[ATL コントロール ウィザード] が自動的に %MODULE%を使用するスクリプトを生成します。ATL は、サーバー上の DLL または EXE の実際の場所でこの置き換え可能パラメーターを使用します。
スクリプトのデータの実行時のデータのバインド
プリプロセッサのもう一つの使用は、スクリプトのデータのランタイム データを連結することです。たとえば、最後に追加した文字列「, 1」が付いているモジュールの完全パスを含む。エントリが必要であるとします。最初に、次の拡張を定義する:
'MySampleKey' = s '%MODULE%, 1'
次に、スクリプトの開始に示すメソッドを処理するスクリプトの 1 つがを呼び出す前に置換をマップに追加します:
TCHAR szModule[_MAX_PATH];
::GetModuleFileName(_AtlBaseModule.GetModuleInstance(), szModule, _MAX_PATH);
p->AddReplacement(OLESTR("Module"), T2OLE(szModule));
スクリプトの解析中、レジストラーは c:\mycode\mydll.dll, 1に '%MODULE%, 1' を展開します。
[!メモ]
レジストラー スクリプトでは、KB は、最大のトークンのサイズです。 (トークンは、構文を認識可能な要素です。これは、プリプロセッサによって作成された、または配置されたトークンが含まれています。
[!メモ]
実行時に置換値を代入するには、DECLARE_REGISTRY_RESOURCE または DECLARE_REGISTRY_RESOURCEID のマクロにスクリプトの呼び出しを削除します。代わりに、メソッドを CAtlModule::UpdateRegistryFromResourceD か CAtlModule::UpdateRegistryFromResourceSを呼び出す置き換え、_ATL_REGMAP_ENTRY の構造体の配列を渡す。UpdateRegistry に独自のメソッドで。_ATL_REGMAP_ENTRY の配列は、{、}NULLNULL設定されていると、このエントリは常に最後のエントリです。1 文字以上のエントリが必要です。それ以外の場合は、アクセス違反のエラーが UpdateRegistryFromResource が呼び出された場合に生成されます。
[!メモ]
プロジェクトをビルドしたときに出力が %MODULE% レジストラー スクリプト パラメーターの実行時に作成されるパス名の前後に実行可能ファイル、ATL 自動的に引用符を追加する。パス名に引用符がしない場合 %MODULE_RAW% に新しいパラメーターを使用します。
%MODULE% か %MODULE_RAW% が使用されている場合は出力パス名が、ATL DLL に引用符を追加しないプロジェクトをビルドするとき。