⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 CD刻录的源代码, 包含相关库及文档, 使用delphi工具
💻 PAS
字号:
{-----------------------------------------------------------------------------
 Unit Name: Unit1
 Author:    Dancemammal
 Purpose:   Test Application to test functions
 History:   First Code Release
-----------------------------------------------------------------------------}


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,CDBurners,SCSITypes,CovertFuncs, StdCtrls, ComCtrls, CDSizer,
  Menus, ExtCtrls, ToolWin,scsidefs,BurnUnit, ImgList;

type
  TForm1 = class(TForm)
    Button1: TButton;
    PageControl1: TPageControl;
    TabSheet6: TTabSheet;
    ReadTocListView: TListView;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    Panel1: TPanel;
    CDSize1: TCDSize;
    MainMenu1: TMainMenu;
    File1: TMenuItem;
    Options1: TMenuItem;
    Functions1: TMenuItem;
    CDCapabilities1: TMenuItem;
    ShowWriterParameters1: TMenuItem;
    SaveCDToISOImage1: TMenuItem;
    N1: TMenuItem;
    BurnISOToCD1: TMenuItem;
    BurnWaveFileToCD1: TMenuItem;
    N2: TMenuItem;
    FormatCD1: TMenuItem;
    BlankCD1: TMenuItem;
    StatusBar2: TStatusBar;
    SaveDialog1: TSaveDialog;
    OpenDialog1: TOpenDialog;
    ViewTOC1: TMenuItem;
    N3: TMenuItem;
    SetWriteModetoCDDA1: TMenuItem;
    ImageList1: TImageList;
    ToolButton7: TToolButton;
    ISOFunctions1: TMenuItem;
    CreateISO9660File1: TMenuItem;
    ShowReadWriteSpeeds1: TMenuItem;
    GetCDDVDStructure1: TMenuItem;
    GetBufferBits1: TMenuItem;
    SetWriteModetoDataWrite1: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    ToolButton8: TToolButton;
    ToolBar2: TToolBar;
    DriveCombo: TComboBox;
    Label1: TLabel;
    ToolButton9: TToolButton;
    AddTrackToTrackList1: TMenuItem;
    ToolButton6: TToolButton;
    TabSheet1: TTabSheet;
    TrackListBox: TListBox;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure CDCapabilities1Click(Sender: TObject);
    procedure ShowWriterParameters1Click(Sender: TObject);
    procedure SaveCDToISOImage1Click(Sender: TObject);
    procedure ViewTOC1Click(Sender: TObject);
    procedure SetWriteModetoCDDA1Click(Sender: TObject);
    procedure BurnWaveFileToCD1Click(Sender: TObject);
    procedure BurnISOToCD1Click(Sender: TObject);
    procedure CDSize1OverBurn(Sender: TObject);
    procedure BlankCD1Click(Sender: TObject);
    procedure ShowReadWriteSpeeds1Click(Sender: TObject);
    procedure GetCDDVDStructure1Click(Sender: TObject);
    procedure GetBufferBits1Click(Sender: TObject);
    procedure SetWriteModetoDataWrite1Click(Sender: TObject);
    procedure AddTrackToTrackList1Click(Sender: TObject);
  private
    { Private declarations }
    Procedure ShowLastError;
    Procedure RefreshTrackList;
  public
    { Public declarations }
    CDBurnerList : TCDBurnerList;
    CurrentISOFilename :String;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.FormCreate(Sender: TObject);
var
     Index : Integer;
begin
    CDBurnerList := TCDBurnerList.create;
   for Index := 0 to CDBurnerList.Count -1 do
   begin
       DriveCombo.Items.Add(CDBurnerList.Burner[Index].BurnerInfo.VendorName);
   end;
   DriveCombo.ItemIndex := 0;
end;



procedure TForm1.FormDestroy(Sender: TObject);
begin
   CDBurnerList.Free;
end;



procedure TForm1.CDCapabilities1Click(Sender: TObject);
var
    CapString : String;
begin
    CapString := CDBurnerList.Burner[DriveCombo.ItemIndex].GetCapabilityText.Text;
    Showmessage(CapString);
end;



procedure TForm1.ShowWriterParameters1Click(Sender: TObject);
Var
   TestString : String;
begin
  TestString := CDBurnerList.Burner[DriveCombo.ItemIndex].GetWriteParameters;
  Showmessage(TestString);
  ShowLastError;
end;



Procedure TForm1.ShowLastError;
Begin
      Statusbar2.Panels[0].Text := ScsiErrToString(CDBurnerList.Burner[DriveCombo.ItemIndex].LastError);
      Statusbar2.Refresh;
End;



procedure TForm1.SaveCDToISOImage1Click(Sender: TObject);
Var
   Filename: String;
Begin
   If Savedialog1.Execute Then
   Begin
      Filename := Savedialog1.FileName;
      BurnForm.CDBurner := CDBurnerList.Burner[DriveCombo.ItemIndex];
      BurnForm.Show;
      BurnForm.DumpISOFile(FileName);
   end;
   ShowLastError;
End;



procedure TForm1.ViewTOC1Click(Sender: TObject);

Var TOC: TScsiTOC;
   i: integer;
   FirstBlock ,LastBlock : Integer;
Begin
   TOC :=  CDBurnerList.Burner[DriveCombo.ItemIndex].TOC;
   ReadTocListView.Items.Clear;
   FirstBlock := 0;
   LastBlock := TOC.Tracks[TOC.TrackCount - 1].AbsAddress;
   For i := 0 To TOC.TrackCount - 1 Do
      With ReadTocListView.Items.Add Do
      Begin
         Caption := IntToStr(i);
         Subitems.Add(IntToStr(TOC.Tracks[i].TrackNumber));
         Subitems.Add(IntToStr(TOC.Tracks[i].AbsAddress));
         Subitems.Add(SetToStr(TypeInfo(TScsiSubQinfoFlags), TOC.Tracks[i].Flags));
      End;
End;


procedure TForm1.SetWriteModetoCDDA1Click(Sender: TObject);
begin
  CDBurnerList.Burner[DriveCombo.ItemIndex].SetWriteMode(TRACK_AT_ONCE,RAW_DATA_BLOCK,16,CDROM_CDDA,0,150,False,True);
  ShowLastError;
end;


procedure TForm1.BurnWaveFileToCD1Click(Sender: TObject);
Var
  TrackCount,Index : integer;
  AudioCDSize : integer;
begin
    TrackCount := 0;
    AudioCDSize := 0;
    
    TrackCount := CDBurnerList.Burner[DriveCombo.ItemIndex].CDTracks.Count;
    for index := 0 to TrackCount -1 do
        AudioCDSize := AudioCDSize + (CDBurnerList.Burner[DriveCombo.ItemIndex].CDTracks.Tracks[index].CDTrack.DataSize div (1024*1024));
    CDSize1.MemShaded := AudioCDSize;

    BurnForm.CDBurner := CDBurnerList.Burner[DriveCombo.ItemIndex];
    BurnForm.Show;

    if TrackCount > 0 then
         BurnForm.StartAudioWrite(TrackCount);
end;



procedure TForm1.BurnISOToCD1Click(Sender: TObject);
Var
   filesize :integer;
begin
 if opendialog1.Execute then
 begin
    CurrentISOFilename := opendialog1.filename;
    filesize := (GetFileSize(CurrentISOFilename) div (1024*1024));
    CDSize1.MemShaded := filesize;
    BurnForm.CDBurner := CDBurnerList.Burner[DriveCombo.ItemIndex];
    BurnForm.Show;
    BurnForm.StartDataWrite(CurrentISOFilename);
 end;
end;


procedure TForm1.CDSize1OverBurn(Sender: TObject);
begin
   showmessage('Size of data is too big!');
end;


procedure TForm1.BlankCD1Click(Sender: TObject);
begin
    BurnForm.CDBurner := CDBurnerList.Burner[DriveCombo.ItemIndex];
    BurnForm.Show;
    BurnForm.BlankThisCD;
end;

procedure TForm1.ShowReadWriteSpeeds1Click(Sender: TObject);
var
    CapString : String;
begin
    CapString := CDBurnerList.Burner[DriveCombo.ItemIndex].GetCDSpeedsText.Text;
    Showmessage(CapString);
end;

procedure TForm1.GetCDDVDStructure1Click(Sender: TObject);
var
    Desc : TScsiDVDLayerDescriptorInfo;
    CapString : String;
begin
    Desc := CDBurnerList.Burner[DriveCombo.ItemIndex].DVDescriptor;
    CapString := 'Book Type     : '+Desc.BookType + #10#13;
    CapString := CapString + 'Track Density : '+Desc.TrackDensity + #10#13;
    CapString := CapString + 'Disc Size     : '+Desc.DiscSize + #10#13;
    CapString := CapString + 'Maximum Rate  : '+Desc.MaximumRate + #10#13;
    CapString := CapString + 'Linear Density: '+Desc.LinearDensity + #10#13;
    CapString := CapString + 'Layer Type    : '+Desc.LayerType + #10#13;
    Showmessage(CapString);
end;


procedure TForm1.GetBufferBits1Click(Sender: TObject);
begin
  CDBurnerList.Burner[DriveCombo.ItemIndex].CDBufferCapacity;
end;

procedure TForm1.SetWriteModetoDataWrite1Click(Sender: TObject);
begin
  CDBurnerList.Burner[DriveCombo.ItemIndex].SetWriteMode(TRACK_AT_ONCE,MODE_1,CDR_MODE_DATA,CDROM_CDDA,0,150,False,True);
  ShowLastError;
end;


Procedure TForm1.RefreshTrackList;
Var
 Index : Integer;
 name,Disp : String;
begin
  TrackListBox.Items.Clear;
  For Index := 0 to CDBurnerList.Burner[DriveCombo.ItemIndex].CDTracks.Count -1 do
  begin
    name :=  CDBurnerList.Burner[DriveCombo.ItemIndex].CDTracks.Tracks[index].CDTrack.TrackName;
    Disp :=  CDBurnerList.Burner[DriveCombo.ItemIndex].CDTracks.Tracks[index].DisplayName;
    TrackListBox.Items.Add(name + ' : '+ Disp);
  end;
end;


procedure TForm1.AddTrackToTrackList1Click(Sender: TObject);
begin
   if Opendialog1.Execute then
   begin
     CDBurnerList.Burner[DriveCombo.ItemIndex].AddAudioTrack(OpenDialog1.FileName);
     RefreshTrackList;
   end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -