Recuperare un'icona da un eseguibile utilizzando PInvoke
Scritto da
Massimo Bonanni il
lunedì 14 marzo 2011
•
Linguaggio:
• Livello: 100
Se vogliamo recuperare un'icona da un eseguibile (anche non
.NET) possiamo utilizzare una API presente nella dll
shell32.dll.
Il seguente metodo esegue esattamente questo:
VB.NET
<DllImport("shell32.dll")> _
Private Shared Function ExtractIcon(ByVal hInst As IntPtr, _
ByVal lpszExeFileName As String, _
ByVal nIconIndex As Integer) As IntPtr
End Function
Public Shared Function ExtractIconFromFile(ByVal FileName As String, _
ByVal Index As Integer) As Icon
Dim tmpIcon As System.Drawing.Icon = Nothing
Dim iHandle As IntPtr
iHandle = ExtractIcon(IntPtr.Zero, FileName, Index)
If iHandle <> IntPtr.Zero Then
tmpIcon = System.Drawing.Icon.FromHandle(iHandle)
End If
Return tmpIcon
End Function
C#
[DllImport("shell32.dll")]
static extern IntPtr ExtractIcon(IntPtr hInst, string lpszExeFileName, int nIconIndex);
public static Icon ExtractIconFromFile(String FileName, Int32 Index)
{
Icon tmpIcon = null;
IntPtr iHandle;
iHandle = ExtractIcon(IntPtr.Zero, FileName, Index);
if (iHandle != IntPtr.Zero)
tmpIcon = System.Drawing.Icon.FromHandle(iHandle);
return tmpIcon;
}
In entrambi i linguaggi va importato il namespace
System.Runtime.InteropServices.
Tags: