|
|

楼主 |
发表于 2006-11-29 14:51:00
|
显示全部楼层
Re: 关于动态修改EXE文件图标
我的代码(不成功的):
Private Declare Function EndUpdateResource Lib "kernel32" Alias "EndUpdateResourceA" (ByVal hUpdate As Long, ByVal fDiscard As Long) As Long
Private Declare Function UpdateResource Lib "kernel32" Alias "UpdateResourceA" (ByVal hUpdate As Long, ByVal lpType As Long, ByVal lpName As Long, ByVal wLanguage As Long, ByVal lpData As String, ByVal cbData As Long) As Long
Private Declare Function BeginUpdateResource Lib "kernel32" Alias "BeginUpdateResourceA" (ByVal pFileName As String, ByVal bDeleteExistingResources As Long) As Long
Private Declare Function EnumResourceNames Lib "kernel32" Alias "EnumResourceNamesA" (ByVal hModule As Long, ByVal lpType As String, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Private Declare Function LockResource Lib "kernel32" (ByVal hResData As Long) As Long
Const CREATEPROCESS_MANIFEST_RESOURCE_ID = 101
Private Const RT_CURSOR = 1&
Private Const RT_BITMAP = 2&
Private Const RT_ICON = 3&
Private Const RT_MENU = 4&
Private Const RT_DIALOG = 5&
Private Const RT_STRING = 6&
Private Const RT_FONTDIR = 7&
Private Const RT_FONT = 8&
Private Const RT_ACCELERATOR = 9&
Private Const RT_RCDATA = 10&
Private Const RT_MESSAGETABLE = 11&
Private Const DIFFERENCE = 11&
Private Const RT_GROUP_CURSOR = RT_CURSOR + DIFFERENCE
Private Const RT_GROUP_ICON = RT_ICON + DIFFERENCE
Private Const RT_VERSION = 16&
Private Const RT_DLGINCLUDE = 17&
Private Const RT_PLUGPLAY = 19&
Private Const RT_VXD = 20&
Private Const RT_ANICURSOR = 21&
Private Const RT_ANIICON = 22&
Private Const RT_HTML = 23&
Private Sub Command1_Click()
AddManifestResource "f:\1.exe"
End Sub
Public Sub AddManifestResource(ExeFile As String)
Dim Manifest As String
Dim aa As Long
Open "F:\1.ico" For Binary As #1
Manifest = Space$(LOF(1))
Get #1, , Manifest
Close
Dim hRes As Long
hRes = BeginUpdateResource(ExeFile, 0&)
UpdateResource hRes, RT_GROUP_ICON, CREATEPROCESS_MANIFEST_RESOURCE_ID, 0, ByVal Manifest, Len(Manifest)
EndUpdateResource hRes, 0
End Sub |
|