Получение описания программы из файла ресурсов.

Тема в разделе "WASM.WIN32", создана пользователем pas, 25 сен 2004.

  1. pas

    pas New Member

    Публикаций:
    0
    Регистрация:
    18 апр 2003
    Сообщения:
    330
    Адрес:
    Russia
    Делаю так:

    brl : times 600 db 0

    bz du '\\StringFileInfo\\040904E4\\FileDescription',0

    brl2 : times 600 db 0

    brl3 : times 600 db 0

    dllll dd 0



    invoke GetModuleFileName,[hinstance],brl,300



    invoke GetFileVersionInfo,brl,0,600,brl2

    invoke VerQueryValue,brl2,bz,brl3,dllll

    cmp eax,0

    jne .noerr

    invoke MessageBox,0,FontName,FontName,MB_OK

    .noerr:

    mov eax,brl3

    mov eax,[eax]

    invoke MessageBoxW,0,brl3,eax,MB_OK

    Должен появиться МессаджБокс с названием описанием в заголовке, но почему то получается какая то ерунда.

    В проводнике сведения о версии показываются.

    Поясните где я ошибся?
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
  3. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    > cmp eax,0



    Почему не

    or eax,eax

    или

    test eax,eax

    ??



    Хотя у MS я встречал ещё более прикольную проверку на ноль

    sub eax,0

    =)
     
  4. pas

    pas New Member

    Публикаций:
    0
    Регистрация:
    18 апр 2003
    Сообщения:
    330
    Адрес:
    Russia
    q_q



    Нет просто пока пробую, что то новое имена переменным не придумываю, случайное положение рук при названии переменной. Сделал пока немного по другому:
    Код (Text):
    1.  
    2.           bz du '\',0
    3.  
    4.           invoke GetModuleFileName,[hinstance],brl,300
    5.         invoke GetFileVersionInfoSize,brl,dllll
    6.         invoke GetFileVersionInfo,brl,0,1600,brl
    7.         invoke VerQueryValue,brl,bz,brl,dllll
    8.         mov     eax,brl
    9.         mov     eax,[eax]
    10.         mov     ecx,eax
    11.         mov     eax,brl
    12.         add     ecx,192
    13.         .noends:
    14.         mov     dl,[ecx]
    15.         mov     [eax],dl
    16.         inc     eax
    17.         inc     ecx
    18.         inc     ecx
    19.         cmp     dl,0
    20.         jne      .noends
    21.  


    Asterix

    В данном случае все эти команды занимают по 1 такту, разве не так?
     
  5. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    В FASM адреса строк version info известны во время компиляции, так что IMHO можно обойтись совсем без API.





    ЗЫ

    <font face="monospace]test eax,eax</font><!--face--> 2 байта занимает в отличае от <font face="monospace]cmp eax,0</font><!--face-->.

    Предпочтительнее использовать именно эту команду, т.к. <font face="monospace]or eax,eax</font><!--face--> сохраняет результат операции.
     
  6. pas

    pas New Member

    Публикаций:
    0
    Регистрация:
    18 апр 2003
    Сообщения:
    330
    Адрес:
    Russia
    S_T_A_S_

    Я пользуюсь RadAsm-ом и все ресурсы собираю в нём и компилю masm-ом. В таком случае контроль версий работает нормально и тратить кучу времени, что бы разместить на диалоговом окне метки, эдиты и пр. несколько часов не целесообразно, как мне кажется. А скомпилированный ресурс добавляю в исходный файл посредством одной строчки в исходнике. Так вроде удобней.