powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / А существуют какие command-утилиты замены ресурсов в exe?
9 сообщений из 9, страница 1 из 1
А существуют какие command-утилиты замены ресурсов в exe?
    #36613622
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://sql.ru/forum/actualthread.aspx?tid=755370
Как смотрятся 32bi-альфа-ico мне очень понравилось.
Но перспектива каждый раз(после каждой компиляции) вручную править картинки в ресурсах(даже умным редактором):хорошо если их 10-20, а не от 100 и выше,
меня не очень радует, а другого способа видимо нет.
Идея иметь какой-нибудь bat-файл, кот. эту рутину будет делать за меня.

Application.exe MyExe.exe replace 101 "new101-32.ico"
Application.exe MyExe.exe replace 102 "new102-32.ico"
Application.exe MyExe.exe replace 103 "new103-32.ico"

Ну т.е. чего охота иметь понятно.
...
Рейтинг: 0 / 0
А существуют какие command-утилиты замены ресурсов в exe?
    #36613623
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
А существуют какие command-утилиты замены ресурсов в exe?
    #36613643
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он что, в готовом exe-шнике иконку с заданным номером сможет заменить на другую из заданного файла ico?
...
Рейтинг: 0 / 0
А существуют какие command-утилиты замены ресурсов в exe?
    #36613645
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
см хэлп, можно еще ресурсхакер поискать
...
Рейтинг: 0 / 0
А существуют какие command-утилиты замены ресурсов в exe?
    #36614792
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще можно открыть экзешник в любой .net студии.
...
Рейтинг: 0 / 0
А существуют какие command-утилиты замены ресурсов в exe?
    #36615825
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyА еще можно открыть экзешник в любой .net студии.
Ну это тоже самое, что я уже как год как делаю вручную в IcoFX 1.6, это когда 1-2 иконки надо менять, да и то замучило.
Konst_Oneможно еще ресурсхакер поискать
Ага, нашел, за совет спасибо.
Код: plaintext
1.
2.
3.
ResHacker.exe -addoverwrite Control5.exe, Control5.exe, Icon32\TEST1.ico , ICONGROUP, 101 , 1049 
ResHacker.exe -addoverwrite Control5.exe, Control5.exe, Icon32\TEST2.ico , ICONGROUP, 102 , 1049 
ResHacker.exe -addoverwrite Control5.exe, Control5.exe, Icon32\TEST3.ico , ICONGROUP, 103 , 1049 
ResHacker.exe -addoverwrite Control5.exe, Control5.exe, Icon32\TEST4.ico , ICONGROUP, 104 , 1049 
Все как заказывали, жить стало легче.

Правда, блин, пока искал вируса попутно схватил, надеюсь это не ResHacker.exe.
Вирус гадкий, ни Каспер, ни Авира его не нашли, пришлось ручками, много времени убил.
Напихал в system32 с 10-к файлов вида yklmn.exe по 109кб
и зараза, в hosts они уже не смотрят, блокировок IP понаставил штук 100-ть, они гады теперь это не в etc/hosts, а в PersistentRoutes в реестр пишут.

По делу вот еще вопрос:
Через VB можно ресурс доставать как:

Код: plaintext
1.
2.
3.
LoadResPicture( 101 , vbResIcon)
'по номеру ID
LoadResPicture("MyIconName", vbResIcon)
'т.е. по имени ресурса

а через API только по ID ресурса
Код: plaintext
        lngIcon = LoadImage(App.hInstance, MAKEINTRESOURCE( 101 ), IMAGE_ICON,  16 ,  16 , LR_DEFAULTCOLOR)
а хотелось бы
Код: plaintext
        lngIcon = LoadImage(App.hInstance, MAKEINTRESOURCE("MyIconName"), IMAGE_ICON,  16 ,  16 , LR_DEFAULTCOLOR)

Ну т.е. как получить Get_ID101 (ResourceName_"MyIconName")?

Было бы удобно, чтоб не держать все цифры в голове или в записях.
Ну и еще не выяснял, будет ли resource-хакер эти псевдонимы понимать...
...
Рейтинг: 0 / 0
А существуют какие command-утилиты замены ресурсов в exe?
    #36615976
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77а через API только по ID ресурса
Код: plaintext
        lngIcon = LoadImage(App.hInstance, MAKEINTRESOURCE( 101 ), IMAGE_ICON,  16 ,  16 , LR_DEFAULTCOLOR)
Я тебе раскрою страшную тайну: LoadImage это не API, это черти-что специально для VB.
Функции API это LoadBitmap и LoadIcon которые как раз и принимают на вход ASCIIz имена ресурсов.
А чтобы узнать номер ресурса по его имени можно использовать FindResource
...
Рейтинг: 0 / 0
А существуют какие command-утилиты замены ресурсов в exe?
    #36616517
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

FindResource -гляну позже, спасибо.

спорить с вашим опытом не буду, но сфабриковать рабочий код именно для VB мне пришлось несколько потрудится, особенно с MAKEINTRESOURCE, т.е.ничего basic-овского в ней не вижу.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Private Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal hInst _
  As Long, ByVal lpsz As String, ByVal dwImageType As Long, ByVal dwDesiredWidth _
  As Long, ByVal dwDesiredHeight As Long, ByVal dwFlags As Long) As Long

Dim lngIcon As Long
lngIcon = LoadImage(App.hInstance, MAKEINTRESOURCE( 1111 ), IMAGE_ICON,  16 ,  16 , LR_DEFAULTCOLOR)  'App.hInstance
  m_hIml = ImageList_Create( 16 ,  16 , ILC_MASK Or ILC_COLOR32,  3 ,  0 )
  ImageList_ReplaceIcon m_hIml, - 1 , lngIcon
  ImageList_ReplaceIcon m_hIml, - 1 , lngIcon
  ImageList_ReplaceIcon m_hIml, - 1 , lngIcon
...
Public Function MAKEINTRESOURCE(ByVal lID As Long) As String
    MAKEINTRESOURCE = "#" & CStr(MAKELONG(lID,  0 ))
End Function

Public Function LOWORD(ByVal dwValue As Long) As Long
    Call CopyMemory(LOWORD, dwValue,  2 )
End Function

Public Function MAKELONG(ByVal wLow As Long, ByVal wHi As Long) As Long
    If (wHi And &H8000&) Then
        MAKELONG = (((wHi And &H7FFF&) *  65536 ) Or (wLow And &HFFFF&)) Or &H80000000
    Else
        MAKELONG = LOWORD(wLow) Or (&H10000 * LOWORD(wHi))
    End If
End Function

LoadImage Function
LoadImage Function
Loads an icon, cursor, animated cursor, or bitmap.

LoadBitmap Function
The LoadBitmap function loads the specified bitmap resource from a module's executable file. This function has been superseded by the LoadImage function .

LoadIcon Function
[This function has been superseded by the LoadImage function .]
The LoadIcon function loads the specified icon resource from the executable (.exe) file associated with an application instance.
...
Рейтинг: 0 / 0
А существуют какие command-утилиты замены ресурсов в exe?
    #36617385
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlА чтобы узнать номер ресурса по его имени можно использовать FindResource
Крутил я ее, вертел, кроме нуля ничего не возвращает. Решил забить и голову не забивать.
В конце концов в API-ImageList картинки по-любому по номерам (0,1,2...)
Так что таблицу соответствий
101-> 0 ("Test1Picture")
102-> 1 ("Test2Picture")
все одно где то держать надо в комментариях:забыл, посмотрел...
Это не критично, ради альфа-канала можно и стерпеть.
А основное преимущество даже не в количестве цветов в маленькой иконке, а то что при выделении в ListView оно смотрится "не в клеточку", как если использовать 256-цветные.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / А существуют какие command-утилиты замены ресурсов в exe?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]