Сейчас на форуме: (+5 невидимых) |
![]() |
eXeL@B —› Программирование —› Что хукнуть чтоб получить адрес JPG ? |
Посл.ответ | Сообщение |
|
Создано: 19 июля 2007 09:43 · Личное сообщение · #1 Есть программа написання на Delphi. Форма на которой TImage с загруженной картинкой (JPG). Хочу на ходу подменить рисунок. Поиск по памяти не подходит. Нужен универсальный метод, прога может быть аспром запакована.Насколько я понял, Delphi ресурс из этой JPG не делает. Какой апи нужно перехватить чтобы получить адрес JPG в памяти ? JPG перед рисованием на форму должна распаковываться, кто это делает ? В проекте рисунок храниться в Unit1.dfm object Image1: TImage Left = 8 Top = 8 Width = 583 Height = 251 AutoSize = True Picture.Data = { 0A544A504547496D61676511160200FFD8FFE000104A46494600010201006000 ….} ![]() |
|
Создано: 19 июля 2007 10:47 · Личное сообщение · #2 |
|
Создано: 19 июля 2007 11:47 · Личное сообщение · #3 |
|
Создано: 19 июля 2007 11:50 · Личное сообщение · #4 SergX, dfm (форма) хранится в ресурсах приложения. В статике: находишь ее в ресурсах, к примеру, по имени и модифицируешь как хочешь. заменить - никаких проблем нет. посмотри исходники DeDe / различных редакторов ресурсов, это поможет. В динамике: только во время создания формы, когда она читает свои ресурсы и создает дочерние компоненты. API работы с ресурсами (-> MSDN), интересует чтение, конечно. перехватываем чтение dfm'a, подменяем, получаем результат. "JPG перед рисованием должен распаковываться"... это не совсем так. посмотрите как устроен TImage / TGraphics, каким образом используется jpeg.pas и поймете, как это устроено. не зря Borland vcl\source на паблик выносит. SLV, а смысл?... ![]() |
|
Создано: 19 июля 2007 13:19 · Личное сообщение · #5 |
|
Создано: 19 июля 2007 15:03 · Поправил: NaumLeNet · Личное сообщение · #6 Icelot, заменять картинку надо в момент чтения dfm (самый низкий уровень для динамики, ниже с такими же удобствами, имхо, уже нет, в плане перехвата). замену производить именно модифицированием dfm-контента, все остальное загружающаяся форма уже сделает сама. и по барабану формат картинки, это ваще может быть не картинка, а любые иные свойства объектов или же новые объекты вообще. сложного ничего нет. если бы обладал свободным временем попробывал бы реализовать сам. Icelot, только что перечитал первый пост - вариант со статикой вообще отпадает из-за aspack'a. но в целом задача попахивает каким-то абсурдом, если быть честным. SerX, если "успеешь" реализовать ;) отпишись о результатах, будь добр. все должно быть в ажуре. ![]() |
|
Создано: 19 июля 2007 15:07 · Личное сообщение · #7 |
|
Создано: 19 июля 2007 22:28 · Личное сообщение · #8 NaumLeNet пишет: задача попахивает каким-то абсурдом, если быть честным. Ты прав ![]() Сделать успел ![]() Долго втыкал на Memory map в Olly, но без результатов. Как-то оно там всё странно. Решил подойти с другой стороны и хукнул StretchBlt. Я с начала так и думал решить эту задачу, но не знал, что есть StretchBlt и безрезультатно хукал BitBlt. Function StretchBlt (DestDC: HDC; X, Y, Width, Height: Integer; SrcDC: HDC; XSrc, YSrc, SrcWidth, SrcHeight: Integer; Rop: DWORD): BOOL; stdcall;
![]() |
![]() |
eXeL@B —› Программирование —› Что хукнуть чтоб получить адрес JPG ? |