· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

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

Посл.отвђт Сообщенiе


Дата: Сен 25, 2004 22:43:03

Делаю так:
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
Должен появиться МессаджБокс с названием описанием в заголовке, но почему то получается какая то ерунда.
В проводнике сведения о версии показываются.
Поясните где я ошибся?


Дата: Сен 26, 2004 04:10:11

pas
Считывание атрибутов файла.

PS не используешь тег оформления кода и имена переменным придумываешь для лучшей читабельности?


Дата: Сен 26, 2004 05:01:21

> cmp eax,0

Почему не
or eax,eax
или
test eax,eax
??

Хотя у MS я встречал ещё более прикольную проверку на ноль
sub eax,0
=)


Дата: Сен 26, 2004 11:53:17

q_q
„ не используешь тег оформления кода и имена переменным придумываешь для лучшей читабельности“
Нет просто пока пробую, что то новое имена переменным не придумываю, случайное положение рук при названии переменной. Сделал пока немного по другому:
          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 такту, разве не так?


Дата: Сен 26, 2004 17:36:14

В FASM адреса строк version info известны во время компиляции, так что IMHO можно обойтись совсем без API.


ЗЫ
test eax,eax 2 байта занимает в отличае от cmp eax,0.
Предпочтительнее использовать именно эту команду, т.к. or eax,eax сохраняет результат операции.


Дата: Сен 26, 2004 23:06:08

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


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.072