Делаю так: 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 Должен появиться МессаджБокс с названием описанием в заголовке, но почему то получается какая то ерунда. В проводнике сведения о версии показываются. Поясните где я ошибся?
pas Считывание атрибутов файла. PS не используешь тег оформления кода и имена переменным придумываешь для лучшей читабельности?
> cmp eax,0 Почему не or eax,eax или test eax,eax ?? Хотя у MS я встречал ещё более прикольную проверку на ноль sub eax,0 =)
q_q Нет просто пока пробую, что то новое имена переменным не придумываю, случайное положение рук при названии переменной. Сделал пока немного по другому: Код (Text): bz du '\',0 invoke GetModuleFileName,[hinstance],brl,300 invoke GetFileVersionInfoSize,brl,dllll invoke GetFileVersionInfo,brl,0,1600,brl invoke VerQueryValue,brl,bz,brl,dllll mov eax,brl mov eax,[eax] mov ecx,eax mov eax,brl add ecx,192 .noends: mov dl,[ecx] mov [eax],dl inc eax inc ecx inc ecx cmp dl,0 jne .noends Asterix В данном случае все эти команды занимают по 1 такту, разве не так?
В 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--> сохраняет результат операции.
S_T_A_S_ Я пользуюсь RadAsm-ом и все ресурсы собираю в нём и компилю masm-ом. В таком случае контроль версий работает нормально и тратить кучу времени, что бы разместить на диалоговом окне метки, эдиты и пр. несколько часов не целесообразно, как мне кажется. А скомпилированный ресурс добавляю в исходный файл посредством одной строчки в исходнике. Так вроде удобней.