Delphi Tips & Tricks softsale > Delphi Tips & Tricks      

następna rada >
< poprzednia rada

Jak stwierdzić czy zmieniono CD w drajwie?

Prostą metodą którą można zastosować do stwierdzenia czy zmieniony został CD w napędzie jest zbadanie jego "volume serial number". Realizuje to funkcja GetDiskVolSerialID (nazwa_drajwu). Porównanie zapamiętanej wartości z wartością otrzymaną przy następnym wywołaniu funkcji pozwala na określenie czy CD został zmieniony w napędzie.


function GetDiskVolSerialID(cDriveName : string ) : DWord;
var  dwTemp1 : DWord;
begin
  GetVolumeInformation(PChar(cDriveName + ':\' ),Nil,0,@Result,dwTemp1,dwTemp1,Nil,0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
//litera drajwu
for a := 'A' to 'Z' do
 if GetDriveType(pChar(a + ':\')) = DRIVE_CDROM then
 nazwa_drajwu:=a;
 panel2.caption:='Nazwa drajwu: '+nazwa_drajwu;
//serial number drajwu
 panel1.caption:='';
 GetDiskVolSerialID(nazwa_drajwu);
 serial_nowy:=Format('%X',[GetDiskVolSerialID(nazwa_drajwu)]);
 if (serial_nowy=serial_stary) then
     panel1.caption:= 'Nie zmieniono CD'+'   '+ serial_stary
       else panel1.caption:='Zmieniono CD'+'   '+serial_nowy;
 serial_stary:=serial_nowy;
end;

Ilustruje to przykład tip34.zip . Przykład ten ilustruje jednocześnie jak określić literę napędu CD_ROM ( jeśli jest kilka, zwracana jest ostatnia ).


SOFTSALE - Oprogramowanie i Szkolenia
softsale@softsale.com.pl

03-565 Warszawa , ul. Borzymowska 43 lok. 301C
tel/fax:4084840,0607612428