请问我的这段代码有什么问题啊?
替换EXE文件图标的代码
运行后图标无变化,请问怎么回事啊?
Public Declare Function BeginUpdateResource Lib "kernel32" Alias "BeginUpdateResourceA" (ByVal pFileName As String, ByVal bDeleteExistingResources As Long) As Long
Public Declare Function EndUpdateResource Lib "kernel32" Alias "EndUpdateResourceA" (ByVal hUpdate As Long, ByVal fDiscard As Long) As Long
Public Declare Function FindResource Lib "kernel32" Alias "FindResourceA" (ByVal hInstance As Long, ByVal lpName As String, ByVal lpType As String) As Long
Public Declare Function FindResourceEx Lib "kernel32" Alias "FindResourceExA" (ByVal hModule As Long, ByVal lpType As Long, ByVal lpName As Long, ByVal wLanguage As Integer) As Long
Public Declare Function LockResource Lib "kernel32" (ByVal hResData As Long) As Long
Public Declare Function LoadResource Lib "kernel32" (ByVal hInstance As Long, ByVal hResInfo As Long) As Long
Public Declare Function UpdateResource Lib "kernel32" Alias "UpdateResourceA" (ByVal hUpdate As Long, ByVal lpType As Long, ByVal lpName As Long, ByVal wLanguage As Integer, ByVal lpData As Long, ByVal cbData As Long) As Long
Public Declare Function SizeofResource Lib "kernel32" (ByVal hInstance As Long, ByVal hResInfo As Long) As Long
Public Declare Function EnumResourceLanguages Lib "kernel32" Alias "EnumResourceLanguagesA" (ByVal hModule As Long, ByVal lpType As Long, ByVal lpName As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Public Declare Function EnumResourceNames Lib "kernel32" Alias "EnumResourceNamesA" (ByVal hModule As Long, ByVal lpType As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Public Declare Function EnumResourceTypes Lib "kernel32" Alias "EnumResourceTypesA" (ByVal hModule As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Public Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Public Const RT_ICON = 3&
Public Const DIFFERENCE = 11&
Public Const RT_GROUP_ICON = RT_ICON + DIFFERENCE
Dim hModule, IParam, hResInfo, hUpdateRes, hResData, wLang, UpdateRes, lpType As Long
Dim ResData As Long
Dim File, lpName As String
Public Function ReplaceIcon(file_from As String, file_to As String) As Boolean
File = file_to
hModule = LoadLibrary(file_from)
Call EnumResourceTypes(hModule, AddressOf EnumTypesFunc, 0&)
Call FreeLibrary(hModule)
End Function
Public Function EnumTypesFunc(ByVal hModule As Long, ByVal lpType As Long, ByVal lParam As Long) As Boolean
Call EnumResourceNames(hModule, lpType, AddressOf EnumNamesFunc, 0&)
EnumTypesFunc = True
End Function
Public Function EnumNamesFunc(ByVal hModule As Long, ByVal lpType As Long, ByVal lpName As Long, ByVal lParam As Long) As Boolean
Call EnumResourceLanguages(hModule, lpType, lpName, AddressOf EnumLangsFunc, 0&)
EnumNamesFunc = True
End Function
Public Function EnumLangsFunc(ByVal hModule As Long, ByVal lpType As Long, ByVal lpName As Long, ByVal wLang As Integer, ByVal lParam As Long) As Boolean
EnumLangsFunc = False
If lpType = RT_GROUP_ICON Then
hResInfo = FindResourceEx(hModule, lpType, lpName, wLang)
hResData = LoadResource(hModule, hResInfo)
ResData = LockResource(hResData)
hUpdateRes = BeginUpdateResource(File, 0&)
R = UpdateResource(hUpdateRes, lpType, lpName, wLang, ResData, SizeofResource(hModule, hResInfo))
If R <> 0 Then MsgBox "ok"
EndUpdateResource hUpdateRes, 0&
EnumLangsFunc = True
End If
End Function
还请大家指导,谢谢