只问耕耘
分类: WINDOWS
2010-03-04 16:57:56
07年写的一个小程序, 一个很简单的命令行下的MP3播放程序,循环播放单首MP3。
用MASM32写的,FSG压缩后1.55K。
发上源码,请大家批评指正~
//////////////////////////////////////////////////////
.386
.model flat, stdcall
option casemap :none
include windows.inc
include user32.inc
include kernel32.inc
include masm32.inc
include winmm.inc
includelib user32.lib
includelib kernel32.lib
includelib masm32.lib
includelib winmm.lib
.data
szMp3 dd 64 dup(0), 0
szSuccess dd 64 dup(0), 0
szCommand dd 64 dup(0), 0
szFormat db 'play %s repeat', 0
szFormat2 db '>>> 正在播放:%s', 0dh, 0ah, 0
szFalse db '>>> 播放错误, 程序退出!', 0dh, 0ah, 0
szAbout db '============ MP3简易命令行播放器 ============', 0dh, 0ah,
' 示例: MP3Player D:\Music\NightWish\Nemo.mp3' , 0dh, 0ah,
' 说明: 单首MP3循环播放. < Ctrl+C > 退出播放.' , 0dh, 0ah,
'======== Aliwy ========', 0dh, 0ah, 0dh, 0ah, 0
.CODE
_main proc
LOCAL dwMsg: MSG
invoke GetCL, 1, addr szMp3
invoke wsprintf, addr szCommand, addr szFormat, addr szMp3
invoke mciSendString, addr szCommand, 0, 0, 0
.if eax == NULL
invoke ClearScreen
invoke StdOut, addr szAbout
invoke wsprintf, addr szSuccess, addr szFormat2, addr szMp3
invoke StdOut, addr szSuccess
.while TRUE
invoke GetMessage, addr dwMsg, NULL, 0, 0
.break .if eax == 0
invoke TranslateMessage, addr dwMsg
invoke DispatchMessage, addr dwMsg
.endw
.else
invoke ClearScreen
invoke StdOut, addr szAbout
invoke StdOut, addr szFalse
.endif
ret
_main endp
START:
call _main
invoke ExitProcess, 0
end START
//////////////////////////////////////////////////////