谁会编写一个录音程序?~ 
     可以用麦克风录音!~

解决方案 »

  1.   

    Multimedia MCI 控件
                Multimedia MCI 控件管理媒体控制接口 (MCI) 设备上的多媒体文件的记录与回放。从概念上说,这种控件就是一组按钮,它被用来向诸如声卡、MIDI 序列发生器、CD-ROM 驱动器、视频 CD 播放器和视频磁带记录器及播放器等设备发出 MCI 命令。MCI 控件还支持 Windows (*.avi) 视频文件的回放。在设计时,将 Multimedia MCI 控件加到一个窗体上,它在窗体中的外观如下图所示:按钮被分别定义为 Prev、 Next、 Play、 Pause、 Back、 Step、 Stop、 Record 和 Eject。说明在允许用户从 Multimedia MCI 控件选取按钮之前,应用程序必须先将 MCI 设备打开,并在 Multimedia MCI 控件上启用适当的按钮。在 Visual Basic 中,应将 MCI Open 命令放到 Form_Load 事件中。在使用 Multimedia MCI 控件记录音频信号之前,应打开一个新的文件。这样就可以保证记录声音的数据文件格式与系统记录格式完全兼容。在关闭 MCI 设备之前,还应该发出 MCI Save 命令,把记录的数据保存到文件中去。Multimedia MCI 控件可以通过多种方法编程: 在运行时,控件可以是可见的或不可见的。
    可以增加或完全重新定义控件中按钮的功能。
    可以在一个窗体中控制多台设备。 
    如果想使用 Multimedia MCI 控件中的按钮,要将 Visible 和 Enabled 属性设置为 True。如果不想使用控件中的按钮,而只是想用 Multimedia MCI 控件的多媒体功能,可将 Visible 和 Enabled 属性设置为 False。无论有没有用户交互,应用程序均可控制 MCI 设备。Multimedia MCI 控件的事件(按钮定义)是可编程的。通过开发按钮事件代码,可以增加甚至完全重新定义按钮的功能。MCI 能在单个窗体中支持多个 Multimedia MCI 控件实例,这样就可以同时控制多台 MCI 设备。每台设备需要一个控件。发行注意 在创建和发布使用 Multimedia MCI 控件的应用程序时,应该在用户的 Microsoft Windows System 或 System32 目录中安装并注册相应的文件。Visual Basic 的Package and Deployment向导提供了一些工具,可以帮您编写安装程序,以正确安装。
      

  2.   

    更底层的看这个
    http://vip.6to23.com/NowCan1/code/record.zip
    当然,不完美,但原理差不多了,纯粹VB代码。
      

  3.   

    对,用Multimedia MCI 控件就可以了
      

  4.   

    请教  下  这  是什么语言?
    function f_AutoReName1()
    {
    if (nReName1.value != "停止") {return;}
    mUserName = ID2Name(mUserID);
    if (mUserName != "")
    {
    IMC.ChangeNick(mUserName);
    setTimeout("IMC.QuitRoom(tmsg.value)", 100);
    //setTimeout("IMC.EnterRoom(mRoomID, ulevel, selfnick)", 100);
    setTimeout("IMC.EnterRoom(mRoomID, ulevel, mUserName)", 100);
    }
    mT=setTimeout("f_AutoReName1()", 2000);
    }
      

  5.   

    相关文章,但愿对你有帮助:http://www.yesky.com/20011222/211169.shtmlhttp://expert.csdn.net/Expert/topic/1601/1601749.xml?temp=.7656366http://expert.csdn.net/Expert/topic/1494/1494837.xml?temp=.2378046http://expert.csdn.net/Expert/topic/1489/1489277.xml?temp=.8521845http://expert.csdn.net/Expert/topic/1671/1671411.xml?temp=2.701968E-02http://expert.csdn.net/Expert/topic/1821/1821309.xml?temp=.3198358http://expert.csdn.net/Expert/topic/1683/1683789.xml?temp=.7732355http://expert.csdn.net/Expert/topic/1681/1681224.xml?temp=.3458063http://expert.csdn.net/Expert/topic/1671/1671417.xml?temp=.5001337http://expert.csdn.net/Expert/topic/1690/1690679.xml?temp=.7765619http://expert.csdn.net/Expert/topic/1844/1844862.xml?temp=2.582949E-02http://expert.csdn.net/Expert/topic/1845/1845323.xml?temp=.1655084http://expert.csdn.net/Expert/topic/1841/1841248.xml?temp=2.329654E-02http://expert.csdn.net/Expert/topic/1835/1835231.xml?temp=.8389093http://expert.csdn.net/Expert/topic/1906/1906002.xml?temp=.622265http://expert.csdn.net/Expert/topic/1898/1898040.xml?temp=4.969424E-02http://expert.csdn.net/Expert/topic/1688/1688520.xml?temp=.4859125http://expert.csdn.net/Expert/topic/1987/1987118.xml?temp=.3315851http://expert.csdn.net/Expert/topic/1984/1984984.xml?temp=.465008http://expert.csdn.net/Expert/topic/1358/1358689.xml?temp=.1235468
    一段示例代码:Public Sub RecordWave(TrackNum As Integer, Filename As String)
    ' Tracknum: track to record
    ' Filename: file to save wave asOn Local Error Resume Next
    Dim i As Long, RS As String, cb As Long, t#
    RS = Space$(128)i = mciSendString("stop cdaudio", RS, 128, cb)
    i = mciSendString("close cdaudio", RS, 128, cb)Kill filenameRS = Space$(128)
    i = mciSendString("status cdaudio position track " & TrackNum, RS, 128, cb)
    i = mciSendString("open cdaudio", RS, 128, cb)
    i = mciSendString("set cdaudio time format milliseconds", RS, 128, cb)
    i = mciSendString("play cdaudio", RS, 128, cb)
    i = mciSendString("open new type waveaudio alias capture", RS, 128, cb)
    i = mciSendString("record capture", RS, 128, cb)t# = Timer + 1: Do Until Timer > t#: DoEvents: Loopi = mciSendString("save capture " & filename, RS, 128, cb)
    i = mciSendString("stop cdaudio", RS, 128, cb)
    i = mciSendString("close cdaudio", RS, 128, cb)End Sub
      

  6.   


    这些问题解决的关键是:了解wav的文件格式,可参考:
    Windows声音文件.WAV文件格式:
    http://www.csdn.net/Dev/Format/sound/wave.htm
    WAVE文件格式及压缩方法:
    http://www.csdn.net/Dev/Format/windows/wavec.htm
    转贴:
    ===================================
    VB制作不受限制的录音机
    郭东毅
    说起录音机程序,大家都会想起Windows自带的那个,但是它有一个非常明显的缺点──有时间限制,录制最长时间不超过60秒,否则就会停下,必须自己按下“录音”键才可以继续录音。
    其实,我们可以用VB来自己编一个不受时间限制的录音机,甚至连Windows API都可以不用就能够实现。下面笔者向大家介绍具体的实现方法:
    1.首先新建一个标准的EXE工程。我们需要两个Label控件,一个MMContrl控件,一个CommonDialog控件,一个Slider控件。两个Label控件分别用来显示录音的总时间和当前的录音时间。MMContrl控件用来支持录音和播放,CommonDialog控件用来打开和保存声音文件,Slider控件是用来直观地显示录音机的状态。
    注:MMContrl控件、CommonDialog控件和Slider控件都不是默认的内部控件,需要添加(在控件工具箱上用右键,选“部件”,在控件列中复选Microsoft Common Dialog Control 6.0(SP3)、Microsoft Multimedia Control 6.0 (SP3)、Microsoft Windows Common Controls 6.0)。
    2.主表单命名为frmMain;把Label控件命名为lblNow和lblTotal,Caption命名为“现在时间”和“总共时间”;把MMContrl控件命名为mci,DeviceType设置为WAVEAudio,FileName设置为c:\windows\temp\~temp.wav(在Windows的临时文件夹中生成临时录音文件,该文件实际上并不存在);把CommonDialog控件命名为cdlg,Filter设置为 声音(波形)文件|*.wav;Slider控件命名为sld,Enable设置为False。
    3.用菜单编辑器给主表单添加菜单,主菜单项只有一个“文件(mnuFile)”,次级菜单有“新建(mnuFileNew)”、“打开(mnuFileOpen)”、“另存为(mnuFileSaveAs)”,“退出(mnuFileExit)”。
    4.一切准备就绪的话,就可以开始了,程序源代码如下:
    Option Explicit
    Dim blnDirty As Boolean
    Dim intResult As Integer
    Private Sub Form_Load()
    mci.Command = "Open" '打开准备好的文件
    mci.TimeFormat = 1 '时间格式设置为秒
    blnDirty = False '预先把文件更改设置为否
    End Sub
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    If blnDirty = True Then
    intResult = MsgBox("需要保存吗?", vbYesNoCancel + vbQuestion, "已经有更改!")
    Select Case intResult
    Case vbYes
    cdlg.CancelError= True ’把取消错误打开
    On Error GoTo ccancel ’设置错误拦截
    cdlg.ShowSave
    mci.FileName=cdlg.FileName
    mci.Command="Save"
    frmMain.MousePointer=11
    mci.Command="close"
    blnDirty=False
    Case vbNo
    mci.Command="close"
    blnDirty=False
    Case vbCancel
    ccancel:
    Cancel=1
    End Select
    frmMain.mousepointer=0
    End If
    End Sub
    Private Sub mci_RecordClick(Cancel As Integer)
    blnDirty = True
    End Sub
    Private Sub mci_StatusUpdate()
    lblNow.Caption = "现在时间: " & mci.Position / 1000 & " 秒" '现在时间显示
    lblTotal.Caption = "总时间: " & mci.Length / 1000 & " 秒" '总共时间显示
    sld.Value = mci.Position / 1000 '滑动条的位置显示
    If mci.Mode = mciModeRecord Then
    If sld.Value = sld.Max Then '自动加时间
    sld.Max=sld.Max + 10
    End If
    End If
    End Sub
    Private Sub mci_StopClick(Cancel As Integer)
    If mci.Mode = mciModeRecord Then
    If sld.Value > 0 Then'期间如果按下了stop键,那么去掉Slider多余的部分
    sld.Max = sld.Value
    End If
    End If
    End Sub
    Private Sub mnuFileExit_Click()
    Unload Me
    End Sub
    Private Sub mnuFileNew_Click()
    If blnDirty = True Then ’如果正在录音的话
    intResult = MsgBox("需要保存吗?", vbYesNo + vbQuestion, "已经有了修改!")
    Select Case intResult
    Case vbYes
    cdlg.CancelError = True
    On Error GoTo ccancel
    cdlg.ShowSave
    mci.FileName = cdlg.FileName
    mci.Command = "Save"
    frmMain.MousePointer = 11
    GoTo ExitFileNew
    Case vbNo
    GoTo ExitFileNew
    End Select
    ccancel:
    Exit Sub
    End If
    ExitFileNew:
    frmMain.MousePointer = 0
    mci.Command = "close"
    mci.Command = "open"
    blnDirty = False
    End Sub
    Private Sub mnuFileOpen_Click()
    cdlg.CancelError = True
    On Error GoTo CancelOpen
    cdlg.ShowOpen
    mci.Command = "close" ’打开新的文件之前先要关闭已经打开的播放/录音
    mci.FileName = cdlg.FileName
    frmMain.MousePointer = 11
    mci.Command = "open"
    blnDirty = False
    frmMain.MousePointer = 0
    CancelOpen:
    Exit Sub
    End Sub
    Private Sub mnuFileSaveAs_Click()
    cdlg.Flags=cdlOFNOverwritePrompt+cdlOFNNoChangeDir+cdlOFNHideReadOnly’确认保存是否覆盖原来的文件以及保存的位置是打开的位置、不显示“只读”复选
    cdlg.ShowSave
    mci.FileName = cdlg.FileName
    frmMain.MousePointer = 11
    blnDirty = False
    frmMain.MousePointer = 0
    End Sub
    这样,我们的录音机程序就编写完了。大家还可以在这个基础上按照自己的喜好来做进一步的修改,这个录音机程序不仅可以录音,也可以播放,它是没有录音时间限制的。至于它究竟可以录多久,笔者尝试用它录制了一个长达3个小时的文件,是完全没有问题的。在你的程序里调用录音机Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPrivate Sub Form_Load()ShellExecute Me.hwnd, "open", "C:\WINDOWS\system32\sndrec32.exe", vbNullString, vbNullString, SW_SHOWEnd Sub