我正在使用 VB.NET 并从 System-DLL 获取图标。因此,我使用ExtractIconEx
. 如评论中所述,我正在使用DestroyIcon
再次释放资源。
到目前为止,我使用了这条线
Private Declare Auto Function DestroyIcon Lib "user32.dll" (
ByVal hIcon As IntPtr) As Boolean
声明该方法。
从这个例子中Icon.FromHandle
,我看到他们使用
<System.Runtime.InteropServices.DllImportAttribute("user32.dll")> _
Private Shared Function DestroyIcon(
ByVal hIcon As IntPtr) As Boolean
End Function
有什么区别?
我尤其感到困惑的是,DllImportAttribute
它似乎不像Declare
. 我做了以下测试:
我用来GetPrivateProfileString
从 ini 文件中获取字符串。
Private Declare Auto Function GetPrivateProfileString Lib "kernel32" (
ByVal lpApplicationName As String,
ByVal lpKeyName As String,
ByVal lpDefault As String,
ByVal lpReturnedString As String,
ByVal nSize As Integer,
ByVal lpFileName As String) As Integer
作品; 它将条目写入lpReturnedString
缓冲区并返回 41。
<System.Runtime.InteropServices.DllImportAttribute("kernel32.dll")> _
Private Shared Function GetPrivateProfileString(
ByVal lpApplicationName As String,
ByVal lpKeyName As String,
ByVal lpDefault As String,
ByVal lpReturnedString As String,
ByVal nSize As Integer,
ByVal lpFileName As String) As Integer
End Function
保持lpReturnedString
不变,但返回正确的字符串长度 41。