EXE・DLLからアイコン取得(Y) <TOP>
EXE・DLLからアイコンを取得します。
ExtractAssociatedIcon 関連付けられている実行可能ファイルに含まれるアイコンハンドルを取得
DrawIconEx アイコンを描画
DestroyIcon アイコンのハンドルを解放
例では、c:\fbasicv63\bin\fbasic.exeからアイコンを取得表示しています。色々な方法があるものですネ!
'================================================================ '= EXE・DLLからアイコン取得(Y) '= (ExtractAssociatedIcon.bas) '================================================================ #include "Windows.bi" #define DI_COMPAT 4 'システムイメージで描画する #define DI_DEFAULTSIZE 8 'width パラメータとheightパラメータに0が指定されている場合、アイコンまたはマウスカーソルをデフォルト・ #define DI_IMAGE 2 'イメージを使ってアイコン(またはマウスカーソル)を描画 #define DI_MASK 1 'マスクを使ってアイコン(またはマウスカーソル)を描画 #define DI_NORMAL 3 'DI_IMAGE と DI_MASK の組み合わ ' 関連付けられている実行可能ファイルに含まれるアイコンハンドルを取得 Declare Function Api_ExtractAssociatedIcon& Lib "shell32" Alias "ExtractAssociatedIconA" (ByVal hInst&, ByVal lpIconPath$, lpiIcon&) ' アイコンを描画 Declare Function Api_DrawIconEx& Lib "user32" Alias "DrawIconEx" (ByVal hDC&, ByVal xLeft&, ByVal yTop&, ByVal hIcon&, ByVal cxWidth&, ByVal cyWidth&, ByVal istepIfAniCur&, ByVal hbrFlickerFreeDraw&, ByVal diFlags&) ' アイコンのハンドルを解放 Declare Function Api_DestroyIcon& Lib "user32" Alias "DestroyIcon" (ByVal hIcon&) ' 指定されたウィンドウのクライアント領域または画面全体を表すディスプレイデバイスコンテキストのハンドルを取得 Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&) ' デバイスコンテキストを解放 Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&) Var Shared Picture1 As Object Var Shared Button1 As Object Picture1.Attach GetDlgItem("Picture1") Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() ShowWindow -1 Cls End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var hpDC As Long Var hIcon As Long Var Ret As Long hpDC = Api_GetDC(Picture1.GethWnd) Picture1.cls hIcon = Api_ExtractAssociatedIcon(GethInst, "c:\fbasicv63\bin\fbasic.exe", 0) Ret = Api_DrawIconEx(hpDC, 0, 0, hIcon, 32, 32, 0, 0, DI_NORMAL) Ret = Api_DestroyIcon(hIcon) Ret = Api_ReleaseDC(Picture1.GethWnd, hpDC) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End