UpdateResource

Тема в разделе "WASM.WIN32", создана пользователем cresta, 18 авг 2005.

  1. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Никак не разберусь, в чём проблема :dntknw:

    Не удаётся строку в ресурсы затолкать. Файл нормально заносится в ресурсы ехе, а строка - с искажениями. Номер ресурса строки вносится нормально, сама строка - искажается. Действую так:


    Код (Text):
    1. LoadAcceptor proc
    2.     LOCAL buffer[16]        :BYTE
    3.    
    4.     invoke  BeginUpdateResource,addr szAcceptorName,FALSE  ;загрузка ехе для добавления ресурса
    5.     .if     (eax)
    6.         mov     hUpdate,eax
    7.         ;ID ресурса перевод в строку:
    8.         invoke  cr_dwtostr,ResID,addr buffer    ;строка "1000" - номер ресурса
    9.         ;запись файла в ресурс:        
    10.         invoke  UpdateResource,hUpdate,RT_RCDATA,addr buffer,LANG_NEUTRAL,hMemory,file_size
    11.         ;ID ресурса перевод в строку:
    12.         mov     ecx,ResID
    13.         add     ecx,1000
    14.         invoke  cr_dwtostr,ecx,addr buffer      ;строка "2000" - номер ресурса
    15.         ;запись юникод-строки "10_006m" в ресурс (string_size = 14 = кол-во байт юникод-строки без двух нулей)
    16.         invoke  UpdateResource,hUpdate,RT_STRING,addr buffer,LANG_NEUTRAL,addr uni_string_name,string_size
    17.         .if     (eax)
    18.             invoke  EndUpdateResource,hUpdate,FALSE
    19.             inc     ResID
    20.         .endif
    21.     .endif
    22.     ret
    23. LoadAcceptor endp
    24.  




    Стандартными LoadString затем строка не извлекается, если просматривать утилитой PEExplorer, то строка "10_006m" выглядит в ресурсах как


    Код (Text):
    1. STRINGTABLE
    2. LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
    3. {
    4. 31984, "0_006m\0x00\0x00?!\0x01??\0x00????????\0x00??????????????????????????"
    5.  




    Строка нормально переведена в юникод перед внесением в ресурс, размер ресурса правильный, а вот никак...

    Кто вносил строки в ресурсы, выручайте.