Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: EXE и его иконка Добавлено: 08.11.07 19:30  

Автор вопроса:  Stars

Ответить

  Ответы Всего ответов: 20  

Номер ответа: 16
Автор ответа:
 Mr.Smile



ICQ: 427682013 

Вопросов: 14
Ответов: 464
 Профиль | | #16 Добавлено: 09.11.07 17:26
По идее должно работать

Option Explicit

'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-сайт: domkratt.com
 Профиль | | #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-сайт: kalamfur.ru
 Профиль | | #20
Добавлено: 11.11.07 18:31
Спасибище, братцы, особливо за код,
- пошел, то что нужно!

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам