60 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| library cdejecter;
 | |
| {$mode delphi}
 | |
| {$codepage UTF8}
 | |
| uses Classes, LazUTF8Classes, sysutils, cde_types, windows, mmsystem;
 | |
| {$R *.res}
 | |
| function GetCDDiscs: PWideChar;
 | |
| var i, j : Integer;
 | |
|     Buf : array [0..95] of Char;
 | |
|     SL: TStringListUTF8;
 | |
| begin
 | |
| GetLogicalDriveStrings(96, Buf);
 | |
| for j:=0 to 25 do
 | |
|  if Buf[j*4+2] <> #92 then
 | |
|   Break;
 | |
| SL:= TStringListUTF8.Create;
 | |
| for i:=0 to j-1 do
 | |
|  begin
 | |
|  if GetDriveType(@Buf[i*4])= DRIVE_CDROM then
 | |
|   SL.Add(AnsiLowerCase(String(Buf[i*4])) + ':\');
 | |
|  end;
 | |
| SL.Delimiter:= ';';
 | |
| Result:= PWideChar(SL.DelimitedText);
 | |
| SL.Clear;
 | |
| SL.Free;
 | |
| end;
 | |
| function GetVolumeInfo (const ADisc: WideChar): TDiscInfo;
 | |
| {$IFDEF WINDOWS}
 | |
| {$I wGetVolumeInfo_vars.inc}
 | |
| {$ENDIF}
 | |
| {$IFDEF UNIX}
 | |
| {$I lGetVolumeInfo_vars.inc}
 | |
| {$ENDIF}
 | |
| begin
 | |
| {$IFDEF WINDOWS}
 | |
| {$I wGetVolumeInfo_core.inc}
 | |
| {$ENDIF}
 | |
| {$IFDEF UNIX}
 | |
| {$I lGetVolumeInfo_core.inc}
 | |
| {$ENDIF}
 | |
| end;
 | |
| function EjectCD (const ADisc: WideChar): Boolean;
 | |
| {$IFDEF WINDOWS}
 | |
| {$I wEjectCD_vars.inc}
 | |
| {$ENDIF}
 | |
| {$IFDEF UNIX}
 | |
| {$I lEjectCD_vars.inc}
 | |
| {$ENDIF}
 | |
| begin
 | |
| {$IFDEF WINDOWS}
 | |
| {$I wEjectCD_core.inc}
 | |
| {$ENDIF}
 | |
| {$IFDEF UNIX}
 | |
| {$I lEjectCD_core.inc}
 | |
| {$ENDIF}
 | |
| end;
 | |
| exports GetCDDiscs, GetVolumeInfo, EjectCD;
 | |
| begin
 | |
| end.
 | |
| 
 |