PlaySound

Тема в разделе "WASM.BEGINNERS", создана пользователем Semiono, 14 мар 2009.

  1. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    768
    msdn.microsoft.com/en-us/library/ms712879(VS.85,printer).aspx

    Как обычно методом тыка набрал код, но работает!
    С флагами я разберусь, но интересно что собсно в программе я начудил, как более адекватно надо расписать константы и вариаблы? Вообщем что как улучшить? :)

    Код (Text):
    1. include '%fasm%\win32ax.inc'
    2.  
    3. section '.code' code readable executable
    4. start:
    5. invoke PlaySound,pszSound,NULL,NULL
    6. invoke Sleep,7000
    7. invoke ExitProcess,0
    8.  
    9. pszSound db 'C:\Audio.wav'
    10. SND_NOSTOP dw ?
    11.  
    12. data import
    13. library kernel32,'KERNEL32.DLL',winmm,'WINMM.DLL'
    14. import kernel32,ExitProcess,'ExitProcess',Sleep,'Sleep'
    15. import winmm,PlaySound,'PlaySound'
    16. end data
    самое приятно что для дела даже пригодилось, а не как просто баловство! 8-)

    конкретно, я не понимаю как код узнаёт флаги по именам?
    или они в функции в самой DLL уже определены? хотя нет в win32ax.inc наверное!

    иногда я туплю, но это полезно =)
     
  2. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Это компилятор узнает, а не код. Естественно, для этого они должны быть определены в камом-либо месте.
     
  3. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    768
    NEW! премерчег играет -PATH\FNAME.wav
    переделал из асм, но SND_SYNC - я так и не осилил!
    invoke sndPlaySound,ebx,SND_SYNC
    пришлось нуллем занопить :)

    Код (Text):
    1. section '.code' code readable executable
    2. start:
    3. invoke GetCommandLine
    4. mov ebx,eax
    5. next:
    6. cmp byte [ebx],'-'
    7. je found
    8. cmp byte [ebx],0
    9. jz exit
    10. inc ebx
    11. jmp next
    12. found:
    13. inc ebx
    14. invoke sndPlaySound,ebx,NULL
    15. exit:
    16. invoke ExitProcess,0
    17. ret
    18.  
    19. data import
    20. library kernel32,'KERNEL32.DLL',winmm,'WINMM.DLL'
    21.  import kernel32,ExitProcess,'ExitProcess',\
    22.  GetCommandLine,'GetCommandLineA'
    23.  import winmm,sndPlaySound,'sndPlaySoundA'
    24. end data
    А как cmp byte [ebx],'-' поменять на два байт? :) Чтоб '-' в '--' расширить?
     
  4. Worm32

    Worm32 New Member

    Публикаций:
    0
    Регистрация:
    18 янв 2005
    Сообщения:
    33
    Адрес:
    Azerbaijan
    Чел ты сам свой экзешник чтоли собрался проигрывать????
    И чего ты там символ "-" ищешь? Функция 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 три параметра.А ты только два передал..
    Воообщем......
    !?:)--*
     
  5. TaileR

    TaileR Сергей

    Публикаций:
    0
    Регистрация:
    17 сен 2008
    Сообщения:
    7
    Код (Text):
    1. BOOL sndPlaySound(
    2.  
    3.     LPCSTR lpszSound,  
    4.     UINT fuSound   
    5.    );