特定の拡張子 (フル パスなし) の説明と既定のアイコンを取得するには、いくつかの方法があります。たとえば、"*.doc" の場合、"Microsoft Word ドキュメント" と関連するアイコンを取得したいのですが、どちらが最速だと思いますか?次のいずれか:
レジストリを検索します。
- レジストリで、「HKCR.{拡張子}」に移動し、デフォルト値を読み取ります(ファイルタイプと呼びましょう)
- "HKCR{filetype}\DefaultIcon" で、デフォルト値を読み取ります。これは、アイコン ファイル (または、アイコン リソースが埋め込まれた .exe などのアイコン コンテナー ファイル) へのパスです。
- 必要に応じて、前述のファイルからアイコン リソースを抽出するお好みの方法を使用してください。
API ShGetFileInfo を呼び出します。これは少し遅いと思います。
ロブによると、ここ: Delphi を使用してファイル拡張子からアイコンと説明を取得する方法は?
IExtractIcon インターフェイスを「より柔軟で効率的な」代替手段として呼び出します。ただし、推奨される順序は、IShellFolder インターフェイスを使用し、次に GetUIObjectOf を呼び出してファイルの IExtractIcon インターフェイスを取得し、それに対して GetIconLocation と Extract を呼び出してアイコンのハンドルを取得することです。(しかし、このメソッドは拡張機能の説明を読み取ることができませんか?)
システム内のすべてのファイルタイプの情報を読み取る必要があるため、速度は非常に重要です。
どうもありがとうございました!