msdn.microsoft.com/en-us/library/ms712879(VS.85,printer).aspx Как обычно методом тыка набрал код, но работает! С флагами я разберусь, но интересно что собсно в программе я начудил, как более адекватно надо расписать константы и вариаблы? Вообщем что как улучшить? Код (Text): include '%fasm%\win32ax.inc' section '.code' code readable executable start: invoke PlaySound,pszSound,NULL,NULL invoke Sleep,7000 invoke ExitProcess,0 pszSound db 'C:\Audio.wav' SND_NOSTOP dw ? data import library kernel32,'KERNEL32.DLL',winmm,'WINMM.DLL' import kernel32,ExitProcess,'ExitProcess',Sleep,'Sleep' import winmm,PlaySound,'PlaySound' end data самое приятно что для дела даже пригодилось, а не как просто баловство! 8-) конкретно, я не понимаю как код узнаёт флаги по именам? или они в функции в самой DLL уже определены? хотя нет в win32ax.inc наверное! иногда я туплю, но это полезно =)
Это компилятор узнает, а не код. Естественно, для этого они должны быть определены в камом-либо месте.
NEW! премерчег играет -PATH\FNAME.wav переделал из асм, но SND_SYNC - я так и не осилил! invoke sndPlaySound,ebx,SND_SYNC пришлось нуллем занопить Код (Text): section '.code' code readable executable start: invoke GetCommandLine mov ebx,eax next: cmp byte [ebx],'-' je found cmp byte [ebx],0 jz exit inc ebx jmp next found: inc ebx invoke sndPlaySound,ebx,NULL exit: invoke ExitProcess,0 ret data import library kernel32,'KERNEL32.DLL',winmm,'WINMM.DLL' import kernel32,ExitProcess,'ExitProcess',\ GetCommandLine,'GetCommandLineA' import winmm,sndPlaySound,'sndPlaySoundA' end data А как cmp byte [ebx],'-' поменять на два байт? Чтоб '-' в '--' расширить?
Чел ты сам свой экзешник чтоли собрался проигрывать???? И чего ты там символ "-" ищешь? Функция GetCommandLine возвращает в ЕАХ указатель на строку к собственному ЭкЗеШниКу: 00401000 >/$ FF15 92204000 CALL DS:[402092] ; [GetCommandLineA После выполнения: EAX 00081EE0 ASCII ""C:\Documents and Settings\User\Desktop\FFFFF\Leshi\Loader2.EXE"" Далее ты копируешь указатель в ЕВХ mov ebx,eax И пытаешься в этом указателе искать какойто символ '-' cmp byte [ebx],'-' Которого нигде рядом в пространстве,плоском и двумерном ненаходится. Дамп- 00081EC0 00 00 AB AB AB AB AB AB AB AB EE FE EE FE EE FE ..««««««««оюоюою 00081ED0 00 00 00 00 00 00 00 00 0C 00 08 00 28 07 1F 00 ...........(. 00081EE0 22 43 3A 5C 44 6F 63 75 6D 65 6E 74 73 20 61 6E "C:\Documents an 00081EF0 64 20 53 65 74 74 69 6E 67 73 5C 55 73 65 72 5C d Settings\User\ 00081F00 44 65 73 6B 74 6F 70 5C 46 46 46 46 46 5C 4C 65 Desktop\FFFFF\Le 00081F10 73 68 69 5C 4C 6F 61 64 65 72 32 2E 45 58 45 22 shi\Loader2.EXE" 00081F20 00 AB AB AB AB AB AB AB AB FE EE FE EE FE EE FE .««««««««юоюоюою 00081F30 00 00 00 00 00 00 00 00 5E 00 0C 00 14 07 18 00 ........^.... Чел ты чтото явно не то съел,раз говоришь что то что ты написал еще и работает. +Еще одна ошибка - у Функции sndPlaySound три параметра.А ты только два передал.. Воообщем...... !?--*