www.pudn.com > AudioCDWriter.rar > Form1.frm


VERSION 5.00 
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "mscomctl.ocx" 
Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "Comdlg32.ocx" 
Begin VB.Form frmMain  
   BorderStyle     =   1  'Fixed Single 
   Caption         =   "音频CD刻录" 
   ClientHeight    =   6060 
   ClientLeft      =   45 
   ClientTop       =   330 
   ClientWidth     =   7950 
   Icon            =   "Form1.frx":0000 
   LinkTopic       =   "Form1" 
   MaxButton       =   0   'False 
   MinButton       =   0   'False 
   ScaleHeight     =   404 
   ScaleMode       =   3  'Pixel 
   ScaleWidth      =   530 
   StartUpPosition =   2  '屏幕中心 
   Begin MSComDlg.CommonDialog dlgOpen  
      Left            =   4500 
      Top             =   3870 
      _ExtentX        =   847 
      _ExtentY        =   847 
      _Version        =   393216 
      Filter          =   "WAV, MP3 (*.wav; *.mp3)|*.wav;*.mp3|WAVs (*.wav)|*.wav|MP3s (*.mp3)|*.mp3" 
   End 
   Begin VB.CommandButton cmdRem  
      Caption         =   "-" 
      Height          =   285 
      Left            =   540 
      TabIndex        =   27 
      Top             =   5460 
      Width           =   375 
   End 
   Begin VB.CommandButton cmdAdd  
      Caption         =   "+" 
      Height          =   285 
      Left            =   75 
      TabIndex        =   26 
      Top             =   5460 
      Width           =   375 
   End 
   Begin MSComctlLib.StatusBar StatusBar1  
      Align           =   2  'Align Bottom 
      Height          =   285 
      Left            =   0 
      TabIndex        =   25 
      Top             =   5775 
      Width           =   7950 
      _ExtentX        =   14023 
      _ExtentY        =   503 
      Style           =   1 
      SimpleText      =   "完毕" 
      _Version        =   393216 
      BeginProperty Panels {8E3867A5-8586-11D1-B16A-00C0F0283628}  
         NumPanels       =   1 
         BeginProperty Panel1 {8E3867AB-8586-11D1-B16A-00C0F0283628}  
         EndProperty 
      EndProperty 
   End 
   Begin VB.Frame frmDrvInfo  
      Caption         =   "设备信息" 
      Height          =   1290 
      Left            =   2610 
      TabIndex        =   22 
      Top             =   1980 
      Width           =   2445 
      Begin VB.ListBox lstLWNfo  
         Height          =   1020 
         IntegralHeight  =   0   'False 
         Left            =   90 
         TabIndex        =   23 
         Top             =   180 
         Width           =   2265 
      End 
   End 
   Begin VB.Frame frmCDInfo  
      Caption         =   "CD 信息" 
      Height          =   1290 
      Left            =   90 
      TabIndex        =   20 
      Top             =   1965 
      Width           =   2445 
      Begin VB.ListBox lstCDNfo  
         Height          =   1035 
         IntegralHeight  =   0   'False 
         Left            =   90 
         TabIndex        =   21 
         Top             =   180 
         Width           =   2265 
      End 
   End 
   Begin VB.Frame frmWritespeed  
      Caption         =   "刻录速度" 
      Height          =   1380 
      Left            =   2610 
      TabIndex        =   17 
      Top             =   540 
      Width           =   2445 
      Begin VB.PictureBox picXPWritespeed  
         BorderStyle     =   0  'None 
         Height          =   375 
         Left            =   90 
         ScaleHeight     =   375 
         ScaleWidth      =   2265 
         TabIndex        =   18 
         Top             =   270 
         Width           =   2265 
         Begin VB.ComboBox cboWritespeed  
            Height          =   315 
            ItemData        =   "Form1.frx":038A 
            Left            =   0 
            List            =   "Form1.frx":038C 
            Style           =   2  'Dropdown List 
            TabIndex        =   19 
            Top             =   0 
            Width           =   2175 
         End 
      End 
   End 
   Begin VB.Frame frmWritefeatures  
      Caption         =   "刻录支持" 
      Height          =   1410 
      Left            =   90 
      TabIndex        =   15 
      Top             =   540 
      Width           =   2445 
      Begin VB.ListBox lstWriteFeatures  
         Height          =   1125 
         IntegralHeight  =   0   'False 
         Left            =   90 
         TabIndex        =   16 
         Top             =   180 
         Width           =   2265 
      End 
   End 
   Begin VB.CommandButton cmdCancel  
      Caption         =   "取消" 
      Enabled         =   0   'False 
      Height          =   240 
      Left            =   5130 
      TabIndex        =   14 
      Top             =   3810 
      Width           =   2625 
   End 
   Begin VB.CommandButton cmdStart  
      Caption         =   "开始刻录" 
      Height          =   270 
      Left            =   5130 
      TabIndex        =   13 
      Top             =   3450 
      Width           =   2625 
   End 
   Begin MSComctlLib.ProgressBar prg  
      Height          =   285 
      Left            =   5130 
      TabIndex        =   12 
      Top             =   4440 
      Width           =   2625 
      _ExtentX        =   4630 
      _ExtentY        =   503 
      _Version        =   393216 
      Appearance      =   1 
      Scrolling       =   1 
   End 
   Begin VB.Frame frmWriteOptions  
      Caption         =   "刻录选项" 
      Height          =   1725 
      Left            =   5190 
      TabIndex        =   5 
      Top             =   1395 
      Width           =   2625 
      Begin VB.CheckBox chkTestMode  
         Caption         =   "测试模式" 
         Height          =   195 
         Left            =   90 
         TabIndex        =   29 
         Top             =   1170 
         Width           =   2265 
      End 
      Begin VB.PictureBox picXPWriteOptions  
         BorderStyle     =   0  'None 
         Height          =   915 
         Left            =   90 
         ScaleHeight     =   915 
         ScaleWidth      =   2445 
         TabIndex        =   6 
         Top             =   180 
         Width           =   2445 
         Begin VB.CheckBox chkDiscEject  
            Caption         =   "刻录完后自动弹出光驱" 
            Height          =   195 
            Left            =   0 
            TabIndex        =   11 
            Top             =   720 
            Value           =   1  'Checked 
            Width           =   2130 
         End 
         Begin VB.CheckBox chkCloseDisc  
            Caption         =   "允许多次刻录" 
            Height          =   195 
            Left            =   0 
            TabIndex        =   10 
            Top             =   450 
            Width           =   2355 
         End 
         Begin VB.TextBox txtPregap  
            Height          =   285 
            Left            =   720 
            TabIndex        =   8 
            Text            =   "2" 
            Top             =   75 
            Width           =   465 
         End 
         Begin VB.Label lblSeconds  
            AutoSize        =   -1  'True 
            Caption         =   "秒" 
            Height          =   180 
            Left            =   1260 
            TabIndex        =   9 
            Top             =   90 
            Width           =   180 
         End 
         Begin VB.Label lblPregap  
            Caption         =   "间隙:" 
            Height          =   195 
            Left            =   0 
            TabIndex        =   7 
            Top             =   90 
            Width           =   645 
         End 
      End 
   End 
   Begin MSComctlLib.ListView lvwTrks  
      Height          =   2085 
      Left            =   105 
      TabIndex        =   4 
      Top             =   3330 
      Width           =   4965 
      _ExtentX        =   8758 
      _ExtentY        =   3678 
      View            =   3 
      LabelEdit       =   1 
      MultiSelect     =   -1  'True 
      LabelWrap       =   -1  'True 
      HideSelection   =   -1  'True 
      OLEDropMode     =   1 
      FullRowSelect   =   -1  'True 
      _Version        =   393217 
      ForeColor       =   -2147483640 
      BackColor       =   -2147483643 
      BorderStyle     =   1 
      Appearance      =   1 
      OLEDropMode     =   1 
      NumItems        =   2 
      BeginProperty ColumnHeader(1) {BDD1F052-858B-11D1-B16A-00C0F0283628}  
         Text            =   "文件" 
         Object.Width           =   4499 
      EndProperty 
      BeginProperty ColumnHeader(2) {BDD1F052-858B-11D1-B16A-00C0F0283628}  
         SubItemIndex    =   1 
         Text            =   "轨道长度" 
         Object.Width           =   2381 
      EndProperty 
   End 
   Begin VB.CommandButton cmdLoad  
      Caption         =   "关闭光驱" 
      Height          =   405 
      Left            =   6735 
      TabIndex        =   3 
      ToolTipText     =   "关上光驱" 
      Top             =   675 
      Width           =   960 
   End 
   Begin VB.CommandButton cmdEject  
      Caption         =   "弹开光驱" 
      Height          =   420 
      Left            =   5400 
      TabIndex        =   2 
      ToolTipText     =   "弹开光驱" 
      Top             =   690 
      Width           =   1050 
   End 
   Begin VB.ComboBox cboDrives  
      BeginProperty Font  
         Name            =   "Courier New" 
         Size            =   8.25 
         Charset         =   0 
         Weight          =   400 
         Underline       =   0   'False 
         Italic          =   0   'False 
         Strikethrough   =   0   'False 
      EndProperty 
      Height          =   330 
      Left            =   990 
      Style           =   2  'Dropdown List 
      TabIndex        =   1 
      Top             =   135 
      Width           =   6900 
   End 
   Begin MSComctlLib.ProgressBar prg2  
      Height          =   285 
      Left            =   5130 
      TabIndex        =   31 
      Top             =   5070 
      Width           =   2625 
      _ExtentX        =   4630 
      _ExtentY        =   503 
      _Version        =   393216 
      Appearance      =   1 
      Scrolling       =   1 
   End 
   Begin VB.Label lblConvTrack  
      Alignment       =   1  'Right Justify 
      AutoSize        =   -1  'True 
      Height          =   195 
      Left            =   7650 
      TabIndex        =   34 
      Top             =   3780 
      Width           =   45 
   End 
   Begin VB.Label lblWriteTrack  
      Alignment       =   1  'Right Justify 
      AutoSize        =   -1  'True 
      Height          =   195 
      Left            =   7650 
      TabIndex        =   33 
      Top             =   3150 
      Width           =   45 
   End 
   Begin VB.Label Label3  
      AutoSize        =   -1  'True 
      Caption         =   "转换进程:" 
      Height          =   180 
      Left            =   5130 
      TabIndex        =   32 
      Top             =   4800 
      Width           =   810 
   End 
   Begin VB.Label Label2  
      AutoSize        =   -1  'True 
      Caption         =   "刻录进程:" 
      Height          =   180 
      Left            =   5130 
      TabIndex        =   30 
      Top             =   4170 
      Width           =   810 
   End 
   Begin VB.Line Line4  
      BorderColor     =   &H00FFFFFF& 
      X1              =   342 
      X2              =   516 
      Y1              =   295 
      Y2              =   295 
   End 
   Begin VB.Line Line3  
      BorderColor     =   &H00808080& 
      X1              =   342 
      X2              =   516 
      Y1              =   359 
      Y2              =   359 
   End 
   Begin VB.Line Line2  
      BorderColor     =   &H00FFFFFF& 
      X1              =   342 
      X2              =   516 
      Y1              =   222 
      Y2              =   222 
   End 
   Begin VB.Line Line1  
      BorderColor     =   &H00808080& 
      X1              =   342 
      X2              =   516 
      Y1              =   221 
      Y2              =   221 
   End 
   Begin VB.Label Label1  
      Caption         =   "axCDDAWriter by [rm_code] 2005" 
      Height          =   195 
      Left            =   5220 
      TabIndex        =   28 
      Top             =   5505 
      Width           =   2535 
   End 
   Begin VB.Label lblDiscSize  
      AutoSize        =   -1  'True 
      Height          =   180 
      Left            =   1155 
      TabIndex        =   24 
      Top             =   5520 
      Width           =   255 
   End 
   Begin VB.Label lblDrives  
      Alignment       =   1  'Right Justify 
      AutoSize        =   -1  'True 
      Caption         =   "设备:" 
      Height          =   180 
      Left            =   255 
      TabIndex        =   0 
      Top             =   180 
      Width           =   405 
   End 
End 
Attribute VB_Name = "frmMain" 
Attribute VB_GlobalNameSpace = False 
Attribute VB_Creatable = False 
Attribute VB_PredeclaredId = True 
Attribute VB_Exposed = False 
'**************************************************************************** 
'人人为我,我为人人 
'枕善居汉化收藏整理 
'发布日期:05/06/17 
'描  述:音频CD刻录 
'网  站:http://www.mndsoft.com/ 
'e-mail:mnd@mndsoft.com 
'OICQ  : 88382850 
'**************************************************************************** 
 
Option Explicit 
 
'       CDDAWriter 类 
Private WithEvents cdwrt    As CDDAWriter 
Attribute cdwrt.VB_VarHelpID = -1 
'       取消标志 
Private blnCancel           As Boolean 
 
'秒到分转换 
Private Function FormatTime(ByVal lngSeconds As Long) As String 
 
    Dim lngMinutes As Long 
 
    lngMinutes = Fix(lngSeconds / 60) 
    lngSeconds = lngSeconds - lngMinutes * 60 
 
    FormatTime = Format$(CStr(lngMinutes), "00") & ":" & _ 
                 Format$(CStr(lngSeconds), "00") 
End Function 
 
Private Sub CalcDiscSpace() 
 
    On Error Resume Next 
 
    Dim lngTrackLen As Long 
    Dim lngSize     As Long 
    Dim i           As Integer 
 
    '计算全部文件合计大小 
    For i = 1 To lvwTrks.ListItems.Count 
 
        'AudioLengt()函数 返回音频文件的长度 
        lngTrackLen = cdwrt.AudioLength(lvwTrks.ListItems(i).Text) 
 
        '显示时间 
        lvwTrks.ListItems(i).SubItems(1) = FormatTime(lngTrackLen) & " min" 
 
        '1秒的CDDA音频等于176400字节 
        lngSize = lngSize + lngTrackLen * 176400 
 
    Next 
 
    '显示 
    lblDiscSize = "已用" & (lngSize \ 1024 ^ 2) & " 光盘容量: " & _ 
                  (cdwrt.CDCapacity \ 1024 ^ 2) & " MB" 
 
End Sub 
 
Private Sub cboDrives_Click() 
 
    '选择新的设备 
    cdwrt.SelectCDROM Left$(cboDrives.List(cboDrives.ListIndex), 1) 
 
    '显示 CD 信息 
    With lstCDNfo 
 
        .Clear 
 
        If Not cdwrt.DiscPresent Then 
 
            .AddItem "无磁盘" 
 
        Else 
 
            .AddItem "容量: " & (cdwrt.CDCapacity \ 1024 ^ 2) & " MB" 
 
            Select Case cdwrt.CDStatus 
                Case DS_COMPLETE:       .AddItem "CD 状态: 完毕" 
                Case DS_EMPTY:          .AddItem "CD 状态: 空" 
                Case DS_INCOMPLETE:     .AddItem "CD 状态: unvollstdig" 
                Case DS_UNKNWN:         .AddItem "CD 状态: unbekannt" 
            End Select 
 
            Select Case cdwrt.CDType 
                Case CD_CDR:            .AddItem "CD 类型: CD-R" 
                Case CD_CDROM:          .AddItem "CD 类型: CD-ROM" 
                Case CD_CDRW:           .AddItem "CD 类型: CD-RW" 
                Case CD_DVD:            .AddItem "CD 类型: DVD" 
            End Select 
 
        End If 
 
    End With 
 
    '刻录机信息 
    With lstLWNfo 
 
        .Clear 
 
        .AddItem "完毕: " & cdwrt.DriveReady 
        .AddItem "缓存大小: " & cdwrt.DriveBufferSize & " KB" 
        .AddItem "最大刻录速度: " & (cdwrt.DriveMaxWriteSpeed \ 176) & "x" 
 
    End With 
 
    '支持的盘片格式 
    With lstWriteFeatures 
 
        .Clear 
 
        .AddItem "CD-R: " & _ 
                    CBool(cdwrt.DriveWriteFeatures And WRT_CDR) 
        .AddItem "CD-RW: " & _ 
                    CBool(cdwrt.DriveWriteFeatures And WRT_CDRW) 
        .AddItem "Test Mode: " & _ 
                    CBool(cdwrt.DriveWriteFeatures And WRT_TESTMODE) 
 
        chkTestMode.Enabled = CBool(cdwrt.DriveWriteFeatures And WRT_TESTMODE) 
 
    End With 
 
    CalcDiscSpace 
 
End Sub 
 
Private Sub cboWritespeed_Click() 
 
    '新的刻录速度 
    cdwrt.WriteSpeed = cboWritespeed.ItemData(cboWritespeed.ListIndex) 
 
End Sub 
 
'转换进度 
Private Sub cdwrt_ConvProgress(ByVal percent As Integer, ByVal track As Integer) 
 
    lblConvTrack = Format$(track, "00") 
    prg2.Value = percent 
 
End Sub 
 
'刻录进度 
Private Sub cdwrt_WriteProgress(ByVal percent As Integer, ByVal track As Integer) 
 
    lblWriteTrack = Format$(track, "00") 
    prg.Value = percent 
 
End Sub 
 
Private Sub cmdAdd_Click() 
 
    Dim files() As String 
    Dim i       As Integer 
 
    '不能超出99个轨道 
    If lvwTrks.ListItems.Count = 99 Then Exit Sub 
 
    '显示对话框 
    With dlgOpen 
        .FileName = vbNullString 
        .Flags = cdlOFNAllowMultiselect Or cdlOFNLongNames Or cdlOFNExplorer 
        .ShowOpen 
        If .FileName = vbNullString Then Exit Sub 
    End With 
 
    If InStr(dlgOpen.FileName, Chr$(0)) <= 0 Then 
 
        '添加 
        lvwTrks.ListItems.Add Text:=dlgOpen.FileName 
 
    '更多文件选择 
    Else 
 
        'Chr(0) 
        files = Split(dlgOpen.FileName, Chr$(0)) 
        If Not Right$(files(0), 1) = "\" Then files(0) = files(0) & "\" 
 
        '添加文件 
        For i = 1 To UBound(files) 
 
            '不能超出99个轨道 
            If lvwTrks.ListItems.Count = 99 Then Exit Sub 
 
            lvwTrks.ListItems.Add Text:=files(0) & files(i) 
 
        Next 
 
    End If 
 
    CalcDiscSpace 
 
End Sub 
 
Private Sub cmdCancel_Click() 
 
    'cancel writing 
    blnCancel = True 
 
End Sub 
 
'弹出磁盘 
Private Sub cmdEject_Click() 
 
    If Not cdwrt.DiscEject Then _ 
        MsgBox "无法弹出磁盘!", vbExclamation, "错误" 
 
End Sub 
 
'载入磁盘 
Private Sub cmdLoad_Click() 
 
    If Not cdwrt.DiscLoad Then _ 
        MsgBox "无法载入磁盘!", vbExclamation, "错误" 
 
End Sub 
 
'删除轨道 
Private Sub cmdRem_Click() 
 
    Dim i   As Integer 
 
Start: 
    For i = 1 To lvwTrks.ListItems.Count 
 
        If lvwTrks.ListItems(i).Selected Then 
 
            lvwTrks.ListItems.Remove i 
            GoTo Start 
 
        End If 
 
    Next 
 
    CalcDiscSpace 
 
End Sub 
 
Private Sub cmdStart_Click() 
 
    Dim files() As String 
    Dim i       As Integer 
 
    '建立文件数组 
    With lvwTrks.ListItems 
 
        If .Count = 0 Then 
            MsgBox "没有文件!", vbExclamation, "错误" 
            Exit Sub 
        End If 
 
        ReDim files(.Count - 1) As String 
 
        For i = 1 To .Count 
 
            files(i - 1) = .Item(i).Text 
 
        Next 
 
    End With 
 
    cmdStart.Enabled = Not cmdStart.Enabled 
    cmdCancel.Enabled = Not cmdCancel.Enabled 
 
    '设置 
    cdwrt.DiscAllowMultiSession = chkCloseDisc 
    cdwrt.DiscEjectAfterWrite = chkDiscEject 
    cdwrt.PreGapLength = val(txtPregap) 
    cdwrt.TestMode = chkTestMode 
 
    '开始刻录 
    Select Case cdwrt.BurnDisc(files(), blnCancel) 
        Case ERR_CAPACITY:              MsgBox "数据无法写入" 
        Case ERR_CLOSE_DISC:            MsgBox "Couldn't close the session" 
        Case ERR_CLOSE_TRACK:           MsgBox "无法关闭轨道" 
        Case ERR_DISC_MISSING:          MsgBox "不是一个磁盘" 
        Case ERR_DISC_NOT_EMPTY:        MsgBox "不是空白光盘" 
        Case ERR_DISC_NOT_SUPPORTED:    MsgBox "光盘类型不支持" 
        Case ERR_TOO_MANY_TRACKS:       MsgBox "最大只能允许99个轨道" 
        Case ERR_WRITE_CANCEL:          MsgBox "刻录取消" 
        Case ERR_WRITE_ERROR:           MsgBox "刻录错误" 
        Case ERR_NO_CDWRITER:           MsgBox "当前设备不是刻录设备" 
        Case ERR_WRITESPEED:            MsgBox "无法设置新的刻录速度" 
        Case ERR_NEXT_ADDR:             MsgBox "无法读取下一个地址" 
        Case ERR_TESTMODE:              MsgBox "测试模式不支持" 
        Case ERR_DRIVEID:               MsgBox "没有设备编号" 
        Case ERR_WPP:                   MsgBox "无法设置新的刻录参数页" 
        Case ERR_OK:                    MsgBox "刻录完成" 
 
    End Select 
 
    cmdStart.Enabled = Not cmdStart.Enabled 
    cmdCancel.Enabled = Not cmdCancel.Enabled 
 
End Sub 
 
Private Sub Form_Load() 
 
    '   计数 
    Dim i       As Integer 
    '   设备 
    Dim strDrv  As String 
 
    '   新CDDAWriter类 
    Set cdwrt = New CDDAWriter 
 
    '获取驱动器 
    For i = 1 To 26 
         
        strDrv = Chr$(i + 64) 
 
        With cdwrt 
 
            'CD/DVD-ROM 
            If .IsCDROM(strDrv) Then 
 
                '选择当前设备 
                .SelectCDROM strDrv 
 
                '添加设备到列表 
                cboDrives.AddItem strDrv & ":  (HA: " & _ 
                                  .DriveHA & ", ID: " & _ 
                                  .DriveTarget & ")  " & _ 
                                  .DriveName 
 
            End If 
 
        End With 
 
    Next 
 
    '默认第一个 
    cboDrives.ListIndex = 0 
 
    '刻录速度 
    AddWriteSpeed 4 
    AddWriteSpeed 8 
    AddWriteSpeed 10 
    AddWriteSpeed 12 
    AddWriteSpeed 16 
    AddWriteSpeed 20 
 
    '默认速度 
    cboWritespeed.ListIndex = 0 
 
End Sub 
 
Private Sub AddWriteSpeed(ByVal val As Integer) 
 
    cboWritespeed.AddItem val & "x", 0 
    cboWritespeed.ItemData(0) = val * 176 
 
End Sub