Конференция "WinAPI" » Замена ресурсов из dll файлов? [D7]
 
  • Nikfel (30.05.09 23:56) [0]
    Под скажите, пожалуйста. Как из dll файла взять ресурс и закинуть его в другую dll?
    Я пробовал так:

    procedure resupdate(strFile1,strFile2,lpType,Nameresourse:Pchar);
    var hHandle,hResLoad,hResData,hUHandle:cardinal;
    data:pointer;
    begin
    hHandle:=LoadLibrary(strFile1);
    hResLoad:=FindResource(hHandle, Nameresourse, lpType);
    hResData:=LoadResource(hHandle, hResLoad);
    data:=LockResource(hResData);
    hUHandle:=BeginUpdateResource(strFile2, false);
    UpdateResource (hUHandle, lpType, Nameresourse, LANG_Russian, Data,SizeofResource(hHandle, hResLoad));
    EndUpdateResource(hUHandle, false);
    FreeLibrary (hHandle);
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    resupdate('ResUpdate.dll','Res.dll',RT_BITMAP,'BMP');
    resupdate('ResUpdate.dll','Res.dll',RT_DIALOG,'Nokg');
    end;



    Но вот иконку так не перекинешь почему-то. Например:
    resupdate('ResUpdate.dll','Res.dll',RT_GROUP_ICON,'mainicon'); вот это уже не работает. Как сделать все правильно? Заранее спасибо.
  • Nikfel (31.05.09 01:07) [1]
    Я нашел только вот такой вариант:

    http://forum.vingrad.ru/forum/topic-259451.html

    Но вот по другому можно ли?
  • Nikfel (31.05.09 01:13) [2]
    Там можно разобраться как извлечь любой файл из файла ресурсов, а потом просто записать в ресурс из файла. Но так и не понятно как получить иконку сразу из ресурса и записать в другой ресурс.
  • Германн © (31.05.09 01:30) [3]

    > Nikfel   (31.05.09 01:13) [2]
    >
    > Там можно разобраться как извлечь любой файл из файла ресурсов,
    >  а потом просто записать в ресурс из файла. Но так и не
    > понятно как получить иконку сразу из ресурса и записать
    > в другой ресурс.
    >

    А вот тут уже стало интересно.
    Зачем нужно "получить иконку сразу из ресурса и записать в другой ресурс."
  • Nikfel (31.05.09 11:00) [4]
    Так что лучше записывать иконку из файла в ресурс сразу?
  • Nikfel (31.05.09 18:42) [5]
    У меня еще один вопрос остался. Почему-то после записи в dll файл некоторые данные из файла ресурса теряются. Например если в код добавить такую строку:
    resupdate('ResUpdate.dll','Res.dll','avi','avi');
    то тогда будет теряться ресурс RT_DIALOG. Что надо заблокировать чтобы не было потери ресурса RT_DIALOG? Как его полностью заблокировать чтобы не потерять данные?
  • Nikfel (31.05.09 21:03) [6]
    Разобрался вроде. Чтобы такой проблемы не было надо сразу записывать в файл ресурсов все, т.е. использовать несколько UpdateResource и одну EndUpdateResource.
 
Конференция "WinAPI" » Замена ресурсов из dll файлов? [D7]
Есть новые Нет новых   [134434   +28][b:0][p:0.001]