1

我正在使用 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。

4

0 回答 0