2

ローカライズされたリソースDLLを備えたDelphiアプリがあります。

DLLからロードされたら、リソース文字列を検索して置換したいと思います。

これを行うためにフックする内部手順はありますか?

特定のリソース文字列を変更するだけでなく、ロードされたリソース文字列を検索して置換する方法が必要です。

ラウル。

4

1 に答える 1

5

はい、System.pasで定義されているLoadResString()プロシージャをフックする必要があります。

たとえば、http://synopse.info/fossil/finfo?name = SQLite3/SQLite3i18n.pasでどのように行うかを参照してください。

このユニットコードにはすべてが含まれています。

  • すべてのリソース文字列を抽出するため(ただし、「詳細マップ」オプションを使用して実行可能ファイルをコンパイルして、同じリストを取得することもできます)。
  • すべてのリソース文字列をその場で期待される言語に置き換えるため。
  • デフォルトのLoadResStringAPIは低速になる可能性があるため、すべてのリソース文字列をキャッシュします。

同様のコードもありますが、これはオープンソースのmORMotフレームワークに含まれており、Delphi6からXE2まで機能します。同じ翻訳されたテキストファイルから、すべての.dfmコンテンツ(つまりフォーム)をその場で変更するコードもあります。http://mormot.netのフレームワークドキュメントにそれに関する章があります

タスクに必要なすべてのコードパターンがここに表示されると思います。

于 2012-09-02T16:53:04.670 に答える