|
> ただし、この方法だと、ディスク上に実在するファイルを > 指定しないといけません。 > 実在のファイルを指定せず、拡張子だけを(たとえば ".txt" だけ) > 頼りにアイコンの画像を取得する方法はありますでしょうか?
Win32 API の、AssocQueryString を使えばファイルが無くても パス取得できます。
※ VISTA でも動作しましたので大丈夫でしょう XP でエラーすると言う記述は見つけましたが・・・
お試し下さい。
※ 宣言(VBで)
<Flags()> _ Private Enum AssocF As Integer Init_NoRemapCLSID = 1 Init_ByExeName = 2 Open_ByExeName = 2 Init_DefaultToStar = 4 Init_DefaultToFolder = 8 NoUserSettings = &H10 NoTruncate = &H20 Verify = &H40 RemapRunDll = &H80 NoFixUps = &H100 IgnoreBaseClass = &H200 End Enum
Private Enum AssocStr As Integer Command = 1 Executable FriendlyDocName FriendlyAppName NoOpen ShellNewValue DDECommand DDEIfExec DDEApplication DDETopic End Enum
<DllImport("Shlwapi.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _ Private Shared Function AssocQueryString(ByVal flags As AssocF, ByVal str As AssocStr, ByVal pszAssoc As String, ByVal pszExtra As String, ByVal pszOut As String, ByRef pcchOut As Integer) As Integer End Function
以上。
|