Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Автопатч формы из RCData в exe-файле, Изменение части ресурса - описания формы 
V
    Опции темы
fridkaratel
Дата 21.12.2008, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 221
Регистрация: 22.10.2007
Где: Error connect to MySQL Da...

Репутация: нет
Всего: нет



В-общем, появилась необходимость пропатчить файл приложения и изменить параметры формы в RCData. Программа не зашифрована, т.е. все данные можно просмотреть в Restorator'е.

Собственно, пример данных из RCData
Код

object Form1: TForm1
  Left = 78
  Top = 281
  BorderStyle = bsDialog
  Caption = 'Form1'
  ClientHeight = 136
  ClientWidth = 331
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  Position = poScreenCenter
  OnClose = FormClose
  OnShow = FormShow
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 24
    Top = 16
    Width = 289
    Height = 25
    AutoSize = False
    Caption = 'Label1'
  end
end


Необходимо изменить параметры ClientWidth и ClientHeight, а также Top и Left.

Автопатчер Restorator'а не подходит - он цепляется к версии, к тому же он патчит весь ресурс, а мне необъодимо только определенные строки. Остальные же оставить без изменения...

Знаю, что при просмотре Exe-файла в WinHEX'е видна эта информация...

Кто-нибудь сталкивался с такими задачами? Может есть советы или рекомендации? Буду очень признателен...
PM   Вверх
586
Дата 21.12.2008, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 39
Всего: 146



Пример редактирование Width:

Ищешь в WinHex строку Width. После этой строки будет идти байт 03 а потом 2-х байтовое число. Его надо исправить.

57 69 64 74 68 03 FF 00    Width.я.

0x00FF = 255 (Width)

Это сообщение отредактировал(а) 586 - 21.12.2008, 22:03
PM   Вверх
GremlinProg
Дата 21.12.2008, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



fridkaratel, возьми PE Explorer, он прекрасно видит борланд-формы и позволяет редактировать их отдельные свойства


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
fridkaratel
Дата 22.12.2008, 06:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 221
Регистрация: 22.10.2007
Где: Error connect to MySQL Da...

Репутация: нет
Всего: нет



В WinHEX'е видел это, но вот не могу понять - как можно изменить Caption, если вдруг понадобится... получается, надо переписать весь ресурс?

2GremlinProg: я вручную смогу и ресторатором отредатировать.... меня инетесует вопрос создания патча в C++, чтобы ручками каждый раз не делать.... ;)

Скажу проще, в той программе, которую надо будет патчить, около 15 форм, и на каждой форме надо изменить порядка 20 контролов...

Ручками это от версии к версии делать нелегко smile

Это сообщение отредактировал(а) fridkaratel - 22.12.2008, 06:23
PM   Вверх
586
Дата 22.12.2008, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 39
Всего: 146



Цитата
В WinHEX'е видел это, но вот не могу понять - как можно изменить Caption, если вдруг понадобится... получается, надо переписать весь ресурс?

Да. Существуют WinAPI функции для изменения ресурсов.

Functions (Resources Reference)
Adding, Deleting, and Replacing Resources 
Introduction to Resources
UpdateResource Function
PM   Вверх
GoldFinch
Дата 22.12.2008, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 2
Всего: 26



Цитата(fridkaratel @  22.12.2008,  06:21 Найти цитируемый пост)
В WinHEX'е видел это, но вот не могу понять - как можно изменить Caption, если вдруг понадобится... получается, надо переписать весь ресурс?

надо просто задать изначально под него максимум символов
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0785 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.