我有个方案,但可能不是最好的Private Type BITMAP bmType As Long bmWidth As Long bmHeight As Long bmWidthBytes As Long bmPlanes As Integer bmBitsPixel As Integer bmBits As Long End TypePrivate Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long Private Sub Command1_Click() Dim b As BITMAP
Dim i As Long
i = GetObject(Handle, Len(b), b) Debug.Print i ' 偿试用位图的方案来读取其信息,如果是位图它将返回一个非0值。如果不是位图返回值应该是0 End Sub
你用记事本打开一个BMP文件,会在开头有这样的字符 : BM~? 6 ( k 2 H? 你直接判断前两个字符就可以了 BM就是位图,否则就是图标ij
Option ExplicitPrivate Const OBJ_BITMAP = 7Private Declare Function GetObjectType Lib "gdi32" (ByVal hgdiobj As Long) As LongPrivate Declare Function CopyIcon Lib "user32" (ByVal hIcon As Long) As LongPrivate Sub Command1_Click() Dim FileName As String Dim oPict As StdPicture
FileName = "C:\WINDOWS\Blue Lace 16.bmp" Set oPict = LoadPicture(FileName) MsgBox GetObjectType(oPict.handle) ' OBJ_BITMAP MsgBox CopyIcon(oPict.handle) ' 0 函数调用失败 Picture1.Picture = oPict Set oPict = Nothing End Sub Private Sub Command2_Click() Dim FileName As String Dim oPict As StdPicture
FileName = "C:\WINDOWS\system32\Autorun.ico" Set oPict = LoadPicture(FileName) MsgBox GetObjectType(oPict.handle) ' 0 函数调用失败 MsgBox CopyIcon(oPict.handle) ' <>0 Picture1.Picture = oPict Set oPict = Nothing End Sub
bmType As Long
bmWidth As Long
bmHeight As Long
bmWidthBytes As Long
bmPlanes As Integer
bmBitsPixel As Integer
bmBits As Long
End TypePrivate Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
Private Sub Command1_Click()
Dim b As BITMAP
Dim i As Long
i = GetObject(Handle, Len(b), b)
Debug.Print i ' 偿试用位图的方案来读取其信息,如果是位图它将返回一个非0值。如果不是位图返回值应该是0
End Sub
BM~? 6 ( k 2 H? 你直接判断前两个字符就可以了 BM就是位图,否则就是图标ij
Dim FileName As String
Dim oPict As StdPicture
FileName = "C:\WINDOWS\Blue Lace 16.bmp"
Set oPict = LoadPicture(FileName)
MsgBox GetObjectType(oPict.handle) ' OBJ_BITMAP
MsgBox CopyIcon(oPict.handle) ' 0 函数调用失败
Picture1.Picture = oPict
Set oPict = Nothing
End Sub
Private Sub Command2_Click()
Dim FileName As String
Dim oPict As StdPicture
FileName = "C:\WINDOWS\system32\Autorun.ico"
Set oPict = LoadPicture(FileName)
MsgBox GetObjectType(oPict.handle) ' 0 函数调用失败
MsgBox CopyIcon(oPict.handle) ' <>0
Picture1.Picture = oPict
Set oPict = Nothing
End Sub