Windows の任意のファイル パス (任意のファイル システム オブジェクト - ファイル、フォルダー、ドライブ、ショートカットなど) を取り、関連する .ICO ファイル (またはすべての画像サイズ表現を含むアイコンへのハンドル) を返す関数が必要です。 . たとえば、Windows 7 で「C:\MyTextFile.txt」を指定した場合、.txt ファイルの 256x256、48x48、32x32、および 16x16 表現のすべてが、imageres にある .ICO ファイルに取得されます。オフセット 102 の dll:
^ Stardock IconPackager によってインストールされる [アイコン] タブ。ファイル システム オブジェクトのアイコンが表示されます。
これまでの私の研究から、それはそれほど簡単ではないようです。関数がありExtractIconEx
ますが、16 ピクセルと 32 ピクセルの表現しか提供しません。、、、およびサイズを取得する方法を示すこの投稿もあります。これらは通常、それぞれ 16、32、48、および 256 ピクセルです。ただし、.ICO ファイルに格納される他のサイズも必ずしもカバーするとは限りません。たとえば、一部のアイコンには、4 つだけではなく 10 個以上の異なるサイズが格納されます。SHIL_SMALL
SHIL_LARGE
SHIL_EXTRALARGE
SHIL_JUMBO
だから、私はしようとしています:
- ファイル システム オブジェクトのアイコンの場所を見つけ、
- DLL、EXE、またはそれをカプセル化するリソースから取得します。
これは Windows レジストリのタスクですか? 以下に示すように、レジストリの txtfile->DefaultIcon 値には、.txt ファイル タイプのアイコンの場所が含まれています。
ただし、スタンドアロンの .exe ファイルもあります。たとえば、レジストリに格納されないアイコンを自己完結するものです。
最終的には、TImage 内にさまざまなサイズをすべて表示し、それらを .ICO ファイルにまとめて出力したいと考えています。どんな助けでも大歓迎です。