易码技术论坛

 找回密码
 加入易码
搜索
查看: 250463|回复: 11

[灌水]超小的MP3播放器(不到7K)

[复制链接]
发表于 2005-3-12 13:53:00 | 显示全部楼层
我见过的最小的是STP MP3 player加壳后大概有120k,很实用的。
发表于 2005-3-13 11:02:00 | 显示全部楼层
果然很小呵~~~
发表于 2005-3-13 23:11:00 | 显示全部楼层
哇,好好用哦:)
只是不怎么好看,也难怪。
[em01]
发表于 2005-3-13 23:17:00 | 显示全部楼层
这个的确很好用,很方便啊~罗云彬,好像很熟悉的名字。
发表于 2005-3-15 23:26:00 | 显示全部楼层
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 是否包括调试代码
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
DEBUG  = 0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Programmed by 罗云彬, bigluo@telekbird.com.cn
; Website: http://asm.yeah.net
; LuoYunBin's Win32 ASM page (罗云彬的编程乐园)
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 版本信息
; Mp3 播放测试程序 Ver 1.0 - 2000/06/08
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .386
  .model flat, stdcall
  option casemap :none   ; case sensitive
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 数据
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include  windows.inc
include  user32.inc
include  kernel32.inc
include  comctl32.inc
include  comdlg32.inc
include  winmm.inc
includelib user32.lib
includelib kernel32.lib
includelib comctl32.lib
includelib comdlg32.lib
includelib winmm.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 数据
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
DLG_MAIN equ  1000
ID_BROWSE equ  1001
ID_FILE  equ  1002
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .data?
dwFlag  dd ?
hWinMain dd ?
hInstance dd ?
hDevice  dd ?
szBuffer db 256 dup (?)
stOpenFileName OPENFILENAME <?>
  .data
szCaption db "Error...",0
szError  db "Error to play MP3 file!",0
szPlay  db "&Play",0
szStop  db "&Stop",0
szDevice db "MPEGVideo",0
szTitleSave db "Open MP3 file...",0
szExt  db '*.mp3',0
szFilter db 'MP3 Files(*.mp3)',0,'*.mp3',0,'All Files(*.*)',0,'*.*',0,0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 子程序声明
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcDlgMain PROTO WORD,WORD,WORD,:DWORD
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .code
if  DEBUG
include  Debug.asm
endif
include  Win.asm
;********************************************************************
_GetFileName proc
  mov stOpenFileName.Flags,OFN_PATHMUSTEXIST or OFN_FILEMUSTEXIST
  mov stOpenFileName.lStructSize,SIZEOF stOpenFileName
  mov eax,hWinMain
  mov stOpenFileName.hWndOwner,eax
  mov stOpenFileName.lpstrFilter,offset szFilter ;扩展名
  mov stOpenFileName.lpstrFile,offset szBuffer ;文件名缓冲
  mov stOpenFileName.nMaxFile,255   ;文件名缓冲长度
  mov stOpenFileName.lpstrInitialDir,0
  mov stOpenFileName.lpstrTitle,offset szTitleSave
  mov stOpenFileName.lpstrDefExt,offset szExt
  invoke GetOpenFileName,offset stOpenFileName
  .if eax == FALSE
   ret
  .endif
  invoke SetDlgItemText,hWinMain,ID_FILE,addr szBuffer
  call _StopPlayMP3
  ret
_GetFileName endp
;********************************************************************
_PlayMP3 proc
  local @stMCIOpen:MCI_OPEN_PARMS
  local @stMCIPlay:MCI_PLAY_PARMS
  mov @stMCIOpen.lpstrDeviceType,offset szDevice
  mov @stMCIOpen.lpstrElementName,offset szBuffer
  invoke mciSendCommand,0,MCI_OPEN,MCI_OPEN_TYPE or MCI_OPEN_ELEMENT,addr @stMCIOpen
  mov eax,@stMCIOpen.wDeviceID
  mov hDevice,eax
  mov eax,hWinMain
  mov @stMCIPlay.dwCallback,eax
  invoke mciSendCommand,hDevice,MCI_PLAY,MCI_NOTIFY,addr @stMCIPlay
  .if eax == 0
   invoke SetDlgItemText,hWinMain,IDOK,offset szStop
   mov dwFlag,1
  .else
   invoke MessageBox,hWinMain,addr szError,addr szCaption,MB_OK
  .endif
  ret
        
_PlayMP3 endp
;********************************************************************
_StopPlayMP3 proc
  local @stMCIStop:MCI_GENERIC_PARMS
  
  mov eax,hWinMain
  mov @stMCIStop.dwCallback,eax
  invoke mciSendCommand,hDevice,MCI_STOP,MCI_NOTIFY,addr @stMCIStop
  invoke mciSendCommand,hDevice,MCI_CLOSE,MCI_NOTIFY,addr @stMCIStop
  invoke SetDlgItemText,hWinMain,IDOK,offset szPlay
  mov dwFlag,0
  ret
_StopPlayMP3 endp
;********************************************************************
_ProcDlgMain proc uses ebx edi esi, \
  hWnd:DWORD,wMsg:DWORD,wParam:DWORD,lParam:DWORD
  mov eax,wMsg
  .if eax == WM_CLOSE
   invoke EndDialog,hWnd,NULL
  .elseif eax == WM_INITDIALOG
   mov eax,hWnd
   mov hWinMain,eax
   invoke _CenterWindow,eax
   invoke SendDlgItemMessage,hWinMain,ID_FILE,EM_SETREADONLY,TRUE,NULL
  .elseif eax == WM_COMMAND
   mov eax,wParam
   .if eax == ID_BROWSE
    call _GetFileName
   .elseif eax == IDOK
    .if dwFlag == 0
     call _PlayMP3
    .else
     call _StopPlayMP3
    .endif
   .endif
  .else
;********************************************************************
; 注意:对话框的消息处理后,要返回 TRUE,对没有处理的消息
; 要返回 FALSE
;********************************************************************
   mov eax,FALSE
   ret
  .endif     
  mov eax,TRUE
  ret
  
_ProcDlgMain endp
;********************************************************************
start:
  invoke InitCommonControls
  invoke GetModuleHandle,NULL
  mov hInstance,eax
  invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,0
  invoke ExitProcess,NULL
  end start
发表于 2005-3-16 00:05:00 | 显示全部楼层
楼上的厉害,把汇编的代码都拆开了。
发表于 2005-3-16 10:14:00 | 显示全部楼层
汗~楼上的你想错了吧~反汇编不会有那么好的效果的,应该是原作者公开的源代码吧
发表于 2005-3-17 18:11:00 | 显示全部楼层
这个是罗云彬网站上的源码,他出过一本win32汇编的书
反汇编怎么会有作者的注释?
 楼主| 发表于 2005-3-18 10:22:00 | 显示全部楼层
以下是引用jason在2005-3-12 13:53:52的发言:
我见过的最小的是STP MP3 player加壳后大概有120k,很实用的。


这个cocoplayer才20K,已经非常好用了:

**************************************************************************************************

                         CoCoPlayer自述文件
                   ================================
  我很喜欢听歌,经常用WinAMP播放mp3,可是,WinAMP占系统资源太多了,单单启动就用掉了10M,让人无法忍受,Windows Media Player虽然快,可是没有播放列表管理,现在7.0以上的WMPlayer占用资源与速度比起WinAMP更是变本加厉,无奈之下就想自己写一个,在写之前我上网逛了一下,到各大站点下载了几乎所有的Mp3播放器,想想如果找到好的就将就一下算了。找来找去都没有找到合我心意的播放器,倒是发现了一件怪事:这些mp3器中最烂的都有,烂到一个什么程度?我简直无法形容,尤其是有很多国人(几乎都成立了某某工作室)用VB开发的Mp3播放器,让我一看到就想吐:奇丑的界面,超烂的操作性,超慢的速度,超大的尺寸,这些还算了,"它"竟然还要钱,如此烂的东西还想要钱?我靠!我真是为这些人感到丢脸!如果"它"不要钱我还可以理解为"它"是在做着玩(可是竟然上了各大下载站点),想来想去只有一个理由可以让我理解开发这些烂软件的人:算了,它们都是小学生写的。
  我制作本播放器的最初目的是自己用,所以完全按照我自己心里设计的思路写了下来:速度快,占用资源少,操作方便,能编辑、显示歌词。写好之后感觉还不错,就发给了几个网友测试,大家都很喜爱,我便把它发布出来,让其它的朋友使用,希望大家喜欢。

***************************************************************************************************


发表于 2005-3-18 11:42:00 | 显示全部楼层
呵呵~支持国产,只是这个软件还有待发展啊,功能方面。顺便上传STP MP3 Player

是俄国人做的,比较早了,2001年的作品,以前用过水手汉化的版本后来找不到就自己汉化了。

其实我感觉用Foobar就可以了,功能很全而且占内存也很小,不过尺寸肯定不可能是几十K了,呵呵~现在硬盘很便宜嘛~
发表于 2005-4-17 13:14:00 | 显示全部楼层
解码器是程序自带的吗?加个外壳罢了。
 楼主| 发表于 2005-3-12 10:34:12 | 显示全部楼层 |阅读模式



偶见过的最小的MP3播放器,功能也很简单,用Win32 汇编写的.

您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-19 22:41 , Processed in 0.010392 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表