У меня есть следующая проблема с моим кодом.Win32 дескриптор, который был передан значку, недействителен или неправильный тип
Win32 handle that was passed to Icon is not valid or is the wrong type
Линия кодов являются следующие:
SHFILEINFO декларации
Private Structure SHFILEINFO
Public hIcon As IntPtr ' : iconc
Public iIcon As Integer ' : icondex
Public dwAttributes As Integer ' : SFGAO_ flags
_
Public szDisplayName As String
_
Public szTypeName As String
End Structure
SHGetFileInfo Декларация
Private Declare Auto Function SHGetFileInfo Lib "shell32.dll" _
(ByVal pszPath As String, _
ByVal dwFileAttributes As Integer, _
ByRef psfi As SHFILEINFO, _
ByVal cbFileInfo As Integer, _
ByVal uFlags As Integer) As IntPtr
Private Const SHGFI_ICON = &H100
Private Const SHGFI_SMALLICON = &H1
Private Const SHGFI_LARGEICON = &H0 ' Large icon
Private Const MAX_PATH = 260
S HGetFileInfo Использование
Private Sub AddImageToImageListBox(ByVal strFileName As String)
On Error GoTo errHandler
Dim shInfo As SHFILEINFO
shInfo = New SHFILEINFO()
shInfo.szDisplayName = New String(vbNullChar, MAX_PATH)
shInfo.szTypeName = New String(vbNullChar, 80)
Dim hIcon As IntPtr
hIcon = SHGetFileInfo(strFileName, 0, shInfo, Marshal.SizeOf(shInfo), SHGFI_ICON Or SHGFI_SMALLICON)
Dim MyIcon As Drawing.Bitmap
MyIcon = Drawing.Icon.FromHandle(shInfo.hIcon).ToBitmap
imgAttachment.AddImage(MyIcon)
ilstAttachments.Items.Add(strFileName.ToString(), imgAttachment.Images.Count - 1)
Exit Sub
errHandler:
ErrMsg("AddImageToImageListBox (errHandler)")
End Sub
Продолжительность
Ниже приведены значения, которые пропускают в SHGetFileInfo.
strFileName = "Copy (223) of Uncollected Card - Multiple Pages.TIF"
shInfo.dwAttributes = 0
shInfo.hIcon = 0
shInfo.iIcon = 0
shInfo.szDisplayName = ""
shInfo.szTypeName = ""
Ошибка
Когда указанные значения выше передается в SHGetFileInfo, возвращается, таким образом, значение 0 делает Hicon = 0.
Когда он достигает
MyIcon = Drawing.Icon.FromHandle(shInfo.hIcon).ToBitmap
произошла ошибка
Win32 handle that was passed to Icon is not valid or is the wrong type
Можете ли вы, ребята, помочь мне определить, в чем проблема?
Спасибо
Я попытался использовать ваш код, но та же ошибка все еще появилась. Что касается On Error GoTo, я не могу использовать метод Try/Catch, поскольку мы использовали пользовательский MessageBox для отображения ошибки и местоположения. –
Он работал на моей машине. –
Действительно? Я скопировал ваш код и заменил его, но на моем сайте произошла одна и та же проблема. Спасибо BTW. –