下面的这段代码只能够用一个文件中包含的图片替换另外一个文件中包含的图片,但是我希望能够直接直接用一个图片(比如:Test.jpg)文件替换掉这个文件中包含的图片. 可以吗?各位大侠们,求求你们一定要帮帮我呀!感谢!代码下载: http://basic.nease.net/MyExe/RES.zip这段代码是从CSDN上找到的,仅供参考:(小部分代码) On Error GoTo Error_Handler
Dim hResInfo As Long
Dim hResData As Long
Dim hRes As Long
Dim lRet As Long
Dim hMod As Long
Dim sTmp As String
Dim lpResType As Long, lpResName As Long
Dim bResType() As Byte, bResName() As Byte
With oResEntry
If oResEntry.ResTypeLng <> m_lResTypeLng Then
RaiseError vbObjectError + 9999, "文件" & .Filename & "不存在", THIS_MODULE_NAME
End If
hMod = LoadLibrary(.Filename)
If hMod = 0 Then
RaiseError vbObjectError + 9999, "文件" & .Filename & "不存在", THIS_MODULE_NAME
End If
If (.ResTypeLng And &HFFFF0000) = 0 Then
lpResType = .ResTypeLng
Else
'lpResType = StrPtr(m_sResTypeStr)
bResType = StrConv(.ResTypeStr & Chr(0), vbFromUnicode)
lpResType = VarPtr(bResType(0))
End If
If (.ResNameLng And &HFFFF0000) = 0 Then
lpResName = .ResNameLng
Else
'lpResName = StrPtr(m_sResNameStr)
bResName = StrConv(ResNameStr & Chr(0), vbFromUnicode)
lpResName = VarPtr(bResName(0))
End If
hResInfo = FindResourceEx(hMod, lpResType, lpResName, .LangInt)
If hResInfo = 0 Then
RaiseError vbObjectError + 99999, "资源查找错误", THIS_MODULE_NAME
End If
hResData = LoadResource(hMod, hResInfo)
If hResData = 0 Then
RaiseError vbObjectError + 9999, "资源查找错误", THIS_MODULE_NAME
End If
hRes = LockResource(hResData)
If hRes = 0 Then
RaiseError vbObjectError + 9999, "资源查找错误", THIS_MODULE_NAME
End If
End With
Dim hUpdateRes As Long
MsgBox m_sFilename
hUpdateRes = BeginUpdateResource(m_sFilename, 0&)
If hUpdateRes = 0 Then
RaiseError vbObjectError + 9999, "资源替换错误", THIS_MODULE_NAME
End If
If (m_lResTypeLng And &HFFFF0000) = 0 Then
lpResType = m_lResTypeLng
Else
'lpResType = StrPtr(m_sResTypeStr)
bResType = StrConv(m_sResTypeStr & Chr(0), vbFromUnicode)
lpResType = VarPtr(bResType(0))
End If If (m_lResNameLng And &HFFFF0000) = 0 Then
lpResName = m_lResNameLng
Else
'lpResName = StrPtr(m_sResNameStr)
bResName = StrConv(m_sResNameStr & Chr(0), vbFromUnicode)
lpResName = VarPtr(bResName(0))
End If
MsgBox oResEntry.ResSize
If UpdateResource(hUpdateRes, lpResType, lpResName, m_iLangInt, hRes, oResEntry.ResSize) = 0 Then
RaiseError vbObjectError + 9999, "资源替换错误", THIS_MODULE_NAME
End If
If EndUpdateResource(hUpdateRes, 0&) = 0 Then
RaiseError vbObjectError + 9999, "资源替换错误", THIS_MODULE_NAME
End If
FreeResource hResData
FreeLibrary hMod
OpReplaceRes = True
Exit Function
Error_Handler:
'自定义错误处理
If hResData <> 0 Then
FreeResource hResData
End If
If hMod <> 0 Then
FreeLibrary hMod
End If
'调用默认错误处理函数
Call DefaultErrorHandler(THIS_MODULE_NAME)
Dim hResInfo As Long
Dim hResData As Long
Dim hRes As Long
Dim lRet As Long
Dim hMod As Long
Dim sTmp As String
Dim lpResType As Long, lpResName As Long
Dim bResType() As Byte, bResName() As Byte
With oResEntry
If oResEntry.ResTypeLng <> m_lResTypeLng Then
RaiseError vbObjectError + 9999, "文件" & .Filename & "不存在", THIS_MODULE_NAME
End If
hMod = LoadLibrary(.Filename)
If hMod = 0 Then
RaiseError vbObjectError + 9999, "文件" & .Filename & "不存在", THIS_MODULE_NAME
End If
If (.ResTypeLng And &HFFFF0000) = 0 Then
lpResType = .ResTypeLng
Else
'lpResType = StrPtr(m_sResTypeStr)
bResType = StrConv(.ResTypeStr & Chr(0), vbFromUnicode)
lpResType = VarPtr(bResType(0))
End If
If (.ResNameLng And &HFFFF0000) = 0 Then
lpResName = .ResNameLng
Else
'lpResName = StrPtr(m_sResNameStr)
bResName = StrConv(ResNameStr & Chr(0), vbFromUnicode)
lpResName = VarPtr(bResName(0))
End If
hResInfo = FindResourceEx(hMod, lpResType, lpResName, .LangInt)
If hResInfo = 0 Then
RaiseError vbObjectError + 99999, "资源查找错误", THIS_MODULE_NAME
End If
hResData = LoadResource(hMod, hResInfo)
If hResData = 0 Then
RaiseError vbObjectError + 9999, "资源查找错误", THIS_MODULE_NAME
End If
hRes = LockResource(hResData)
If hRes = 0 Then
RaiseError vbObjectError + 9999, "资源查找错误", THIS_MODULE_NAME
End If
End With
Dim hUpdateRes As Long
MsgBox m_sFilename
hUpdateRes = BeginUpdateResource(m_sFilename, 0&)
If hUpdateRes = 0 Then
RaiseError vbObjectError + 9999, "资源替换错误", THIS_MODULE_NAME
End If
If (m_lResTypeLng And &HFFFF0000) = 0 Then
lpResType = m_lResTypeLng
Else
'lpResType = StrPtr(m_sResTypeStr)
bResType = StrConv(m_sResTypeStr & Chr(0), vbFromUnicode)
lpResType = VarPtr(bResType(0))
End If If (m_lResNameLng And &HFFFF0000) = 0 Then
lpResName = m_lResNameLng
Else
'lpResName = StrPtr(m_sResNameStr)
bResName = StrConv(m_sResNameStr & Chr(0), vbFromUnicode)
lpResName = VarPtr(bResName(0))
End If
MsgBox oResEntry.ResSize
If UpdateResource(hUpdateRes, lpResType, lpResName, m_iLangInt, hRes, oResEntry.ResSize) = 0 Then
RaiseError vbObjectError + 9999, "资源替换错误", THIS_MODULE_NAME
End If
If EndUpdateResource(hUpdateRes, 0&) = 0 Then
RaiseError vbObjectError + 9999, "资源替换错误", THIS_MODULE_NAME
End If
FreeResource hResData
FreeLibrary hMod
OpReplaceRes = True
Exit Function
Error_Handler:
'自定义错误处理
If hResData <> 0 Then
FreeResource hResData
End If
If hMod <> 0 Then
FreeLibrary hMod
End If
'调用默认错误处理函数
Call DefaultErrorHandler(THIS_MODULE_NAME)
谢谢呀 :)
On Error GoTo Error_Handler
Dim lRet As Long
Dim lpResType As Long, lpResName As Long
Dim bResType() As Byte, bResName() As Byte
Dim bRawBytes() As Byte
Dim hUpdateRes As Long
bRawBytes = oIconEntry.GetRawBytes
...把bRawBytes = oIconEntry.GetRawBytes 中的oIconEntry.GetRawBytes改成你读入的jpg文件字节数组bJPG就可以了
你能够给我一个详细的代码吗?谢谢了!
下面是我改的:
Public Function GetImgBytes(ByVal new_File As String) As Byte()
On Error GoTo Error_Handler
Dim b() As Byte
Dim lFreefile As Long
Dim ImgFile As String
lFreefile = FreeFile
ImgFile = new_File
Open ImgFile For Binary As #lFreefile
'Seek #lFreefile, m_lRawDataOffset + 1
ReDim b(Len(ImgFile) - 1) As Byte
Get #lFreefile, , b
Close #lFreefile
GetImgBytes = b
Exit Function
Error_Handler:
'自定义错误处理
Close #lFreefile
'调用默认错误处理函数
Call DefaultErrorHandler(THIS_MODULE_NAME)
End Function
Dim lRet As Long
Dim lpResType As Long, lpResName As Long
Dim bResType() As Byte, bResName() As Byte
Dim bRawBytes() As Byte
Dim hUpdateRes As Long
bRawBytes = oIconEntry.GetRawBytes If SizeOfArray(bRawBytes) <= 0 Then
RaiseError vbObjectError + 9999, "资源查找错误", THIS_MODULE_NAME
End If
hUpdateRes = BeginUpdateResource(m_sFilename, 0&)
If hUpdateRes = 0 Then
RaiseError vbObjectError + 9999, "资源替换错误", THIS_MODULE_NAME
End If
If (m_lResTypeLng And &HFFFF0000) = 0 Then
lpResType = m_lResTypeLng
Else
'lpResType = StrPtr(m_sResTypeStr)
bResType = StrConv(m_sResTypeStr & Chr(0), vbFromUnicode)
lpResType = VarPtr(bResType(0))
End If If (m_lResNameLng And &HFFFF0000) = 0 Then
lpResName = m_lResNameLng
Else
'lpResName = StrPtr(m_sResNameStr)
bResName = StrConv(m_sResNameStr & Chr(0), vbFromUnicode)
lpResName = VarPtr(bResName(0))
End If If UpdateResource(hUpdateRes, lpResType, lpResName, m_iLangInt, VarPtr(bRawBytes(0)), SizeOfArray(bRawBytes)) = 0 Then
RaiseError vbObjectError + 9999, "资源替换错误", THIS_MODULE_NAME
End If
If EndUpdateResource(hUpdateRes, 0&) = 0 Then
RaiseError vbObjectError + 9999, "资源替换错误", THIS_MODULE_NAME
End If
On Error GoTo Error_Handler
Dim lRet As Long
Dim lpResType As Long, lpResName As Long
Dim bResType() As Byte, bResName() As Byte
Dim bRawBytes() As Byte
Dim hUpdateRes As Long
bRawBytes = oIconEntry.GetRawBytes If SizeOfArray(bRawBytes) <= 0 Then
RaiseError vbObjectError + 9999, "资源查找错误", THIS_MODULE_NAME
End If
hUpdateRes = BeginUpdateResource(m_sFilename, 0&)
If hUpdateRes = 0 Then
RaiseError vbObjectError + 9999, "资源替换错误", THIS_MODULE_NAME
End If
If (m_lResTypeLng And &HFFFF0000) = 0 Then
lpResType = m_lResTypeLng
Else
'lpResType = StrPtr(m_sResTypeStr)
bResType = StrConv(m_sResTypeStr & Chr(0), vbFromUnicode)
lpResType = VarPtr(bResType(0))
End If If (m_lResNameLng And &HFFFF0000) = 0 Then
lpResName = m_lResNameLng
Else
'lpResName = StrPtr(m_sResNameStr)
bResName = StrConv(m_sResNameStr & Chr(0), vbFromUnicode)
lpResName = VarPtr(bResName(0))
End If If UpdateResource(hUpdateRes, lpResType, lpResName, m_iLangInt, VarPtr(bRawBytes(0)), SizeOfArray(bRawBytes)) = 0 Then
RaiseError vbObjectError + 9999, "资源替换错误", THIS_MODULE_NAME
End If
If EndUpdateResource(hUpdateRes, 0&) = 0 Then
RaiseError vbObjectError + 9999, "资源替换错误", THIS_MODULE_NAME
End If
OpReplaceResUsingRawBytes = True
Exit Function
Error_Handler:
'自定义错误处理
'调用默认错误处理函数
Call DefaultErrorHandler(THIS_MODULE_NAME)
End Function