.net CF SHGetFileInfo的问题
想使用SHGetFileInfo函数来获取文件图标。
参考了http://www.c2i.fr/code.aspx?IDCode=401的代码,并且在PC上的.NET FF上调试成功。
但是在SmartPhone 2003的.NET CF下面失败,NotSupportException错误~~~
有没有人知道是怎么回事么?
已经Google了一百遍一百遍了~~只在http://www.codecomments.com/Smartphone_Developer_Forum/发现有人提相同的问题,不过他的机器是PPC 2003~~
为什么?为什么啊?
郁闷死了,已经遇到几个问题都是FF上可以但到了CF就出错了~~
主要代码如下:
Public Class FileInfo
Private Const SHGFI_USEFILEATTRIBUTES As Short = &H10S
Private Const SHGFI_ICON As Short = &H100S
Private Const FILE_ATTRIBUTE_NORMAL As Short = &H80S
Private Const SHGFI_TYPENAME As Short = &H400S
Private Const SHGFI_DISPLAYNAME As Short = &H200S
Private Const SHGFI_SMALLICON As Short = &H1S
Private Const SHGFI_LARGEICON As Short = &H0S
'<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)>
Private Structure SHFILEINFO
Dim hIcon As IntPtr
Dim iIcon As Integer
Dim dwAttributes As Integer
'<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> Public szDisplayName As String
'<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=80)> Public szTypeName As String
Public szDisplayName As String
Public szTypeName As String
End Structure
Private Declare Function SHGetFileInfo Lib "coredll.dll" (ByVal pszPath As String, _
ByVal dwFileAttributes As Integer, _
ByRef psfi As SHFILEINFO, _
ByVal cbFileInfo As Integer, _
ByVal uFlags As Integer) As Integer
Public Shared Sub getLargeIcon(ByVal sFileName As String) 'As System.Drawing.Icon
'Return _getIcon(sFileName, SHGFI_LARGEICON Or SHGFI_ICON Or SHGFI_USEFILEATTRIBUTES)
Dim shfi As SHFILEINFO
SHGetFileInfo(sFileName, FILE_ATTRIBUTE_NORMAL, shfi, System.Runtime.InteropServices.Marshal.SizeOf(shfi), SHGFI_LARGEICON Or SHGFI_ICON Or SHGFI_USEFILEATTRIBUTES)'到这里就出错啦
End Sub
End Class