请问我的这段代码有什么问题啊?

bug2002 2004-08-31 01:41:20
替换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

还请大家指导,谢谢
...全文
68 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jam021 2004-08-31
  • 打赏
  • 举报
回复
头好晕欧,只能帮顶了!
alicealiceyang 2004-08-31
  • 打赏
  • 举报
回复
晕!!
kmzs 2004-08-31
  • 打赏
  • 举报
回复
窗口的图表被替换了
ZGhua 2004-08-31
  • 打赏
  • 举报
回复
哇。你写也注释下啊。眼睛都花了
loverpyh 2004-08-31
  • 打赏
  • 举报
回复
楼主,看的我好累啊,帮你顶

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧