Страница: 1 | 2 |
Вопрос: EXE и его иконка
Добавлено: 08.11.07 19:30
Автор вопроса: Stars
Ответы
Всего ответов: 20
Номер ответа: 16
Автор ответа:
Mr.Smile
ICQ: 427682013
Вопросов: 14
Ответов: 464
Профиль | | #16
Добавлено: 09.11.07 17:26
По идее должно работать
'Predefined Resource Types
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 RT_GROUP_CURSOR = 12
Private Const RT_GROUP_ICON = 14
Private Const RT_VERSION = 16
Private Const RT_DLGINCLUDE = 17
Private Type BITMAPINFOHEADER '40 bytes
a_Size As Long '=40
b_Width As Long
b_Height As Long
c_Planes As Integer
d_BitCount As Integer
e_Compression As Long
f_SizeImage As Long
g_XPelsPerMeter As Long
g_YPelsPerMeter As Long
h_ClrUsed As Long
i_ClrImportant As Long
End Type
Private Declare Function BeginUpdateResource Lib "KERNEL32" Alias _
"BeginUpdateResourceA" (ByVal pFileName As String, ByVal _
bDeleteExistingResources As Long) As Long
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, lpData As Any, ByVal cbData _
As Long) As Long
Private Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" _
(Destination As Any, Source As Any, ByVal Length As Long)
Dim fBM As BITMAPINFOHEADER
Dim dlHw As Long
Dim dl As Long
Dim mas(1151) As Byte
Dim masColors(255) As Long
Private Sub Command1_Click()
Dim fFileName As String
Dim resID As Long
' Exe-файл, в котором поменяется иконка
fFileName = "C:\Project1.exe"
' Идентификатор ресурса иконки в Exe файле
resID = 30003
' По умолчанию в скомпилированной программе на VB
' иконка 16x16 имеет идентификатор 30003.
' Если bDeleteExistingResources равен True, то все
' ресурсы файла будут удалены
dlHw = BeginUpdateResource(fFileName, False)
fBM.a_Size = 40
fBM.b_Width = 16
fBM.b_Height = 16 * 2
fBM.c_Planes = 1
fBM.d_BitCount = 32
fBM.f_SizeImage = 1024
For i = 0 To 255
masColors(i) = RGB(Int(Rnd * 256), Int(Rnd * 256), Int(Rnd * 256))
Next i
' Собираем все данные в один массив
CopyMemory mas(0), fBM, 40
CopyMemory mas(40), masColors(0), 1024
'40 - на BITMAPINFOHEADER (fBM)
'1024 - на данные растра (masColors())
'128 - на данные маски
dl = UpdateResource(dlHw, RT_ICON, resID, 0, mas(0), 40 + 1024 + 128)
dl = EndUpdateResource(dlHw, False)
End Sub
Номер ответа: 17
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #17
Добавлено: 09.11.07 21:58
блин, люди, читайте MSDN - там все написано
посмотри где в файле секция ресурсов, найди там иконку с id=101 и поменяй на свою. структуры все есть в MSDN.
только не всегда это просто. возможно, придется полностью секцию ресурсов пересчитывать, бывают такие случаи.
Номер ответа: 18
Автор ответа:
Docal
ICQ: 408802757
Вопросов: 9
Ответов: 147
Профиль | | #18
Добавлено: 11.11.07 00:15
Na sayte yest v primerah proga happy birthday tam yest to chto tebe nada
Номер ответа: 19
Автор ответа:
Mr.Smile
ICQ: 427682013
Вопросов: 14
Ответов: 464
Профиль | | #19
Добавлено: 11.11.07 00:30
Это та прога, что трояны (Trojan.Win32.VB.ayw) клепает? Да, есть там такой код.
З.Ы.: Заодно научишься трояны делать! :D
Номер ответа: 20
Автор ответа:
gekko
Вопросов: 39
Ответов: 127
Web-сайт:
Профиль | | #20
Добавлено: 11.11.07 18:31
Спасибище, братцы, особливо за код,
- пошел, то что нужно!