Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Name des CD-ROM-Laufwerks (zB LITEON LTD163D) (https://www.delphipraxis.net/37722-name-des-cd-rom-laufwerks-zb-liteon-ltd163d.html)

Garfield 9. Jan 2005 13:14


Name des CD-ROM-Laufwerks (zB LITEON LTD163D)
 
Hallo,

über diesen Source
Delphi-Quellcode:
  ComboLW.Clear;
  for i := 0 to 25 do
    if GetLogicalDrives and (1 shl i) <> 0
    then
      if GetDriveType(PChar(Chr(i + Ord('A')) + ':\')) = DRIVE_CDROM
      then ComboLW.Items.Add(Chr(i + Ord('A')) + ':');
ermittle ich die vorhandenen CD-Rom-Laufwerke und trage sie in eine ComboBox ein.

In zahlreichen Beispielen wird gezeigt, wie man unter anderem die Bezeichnung der eingelegten CD/DVD ermitteln kann. Ich möchte jedoch, wie zum Beispiel bei Brennprogrammen üblich, die Typenbezeichnung des Laufwerks ermitteln. So das die Liste zum Beispiel so aussieht:

Code:
D: [LITEON DVD-ROM LTD163D]
E: [LITE-ON LTR-40125S]
F: [Generic DVD-ROM]
Unter Win98SE könnte man die Registry durchsuchen. Da stehen dann unter Arbeitsplatz\HKEY_LOCAL_MACHINE\Enum\SCSI\ unter anderem die CD-ROM-Laufwerke mit DeviceType, HardwareID, Manufakturer, ProductID, CurrentDriveLetter, ...

Bei WinXP sind in der Registry zum Beispiel unter Arbeitssplatz\HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMA P\Scsi die Laufwerke (Festplatte/CD/DVD-ROM) mit ihrer Bezeichnung aufgeführt. Ausführlicher stehen sie dann unter Arbeitssplatz\HKEY_LOCAL_MACHINE\SYSTEM\CONTROLSET 001\IDE und SCSI.

Gibt es Funktionen, mit welchen man sich die aufwändige Suche in der Registry ersparen kann?

OregonGhost 9. Jan 2005 13:23

Re: Name des CD-ROM-Laufwerks (zB LITEON LTD163D)
 
Ein Weg führt über die Windows Management Instrumentation (WMI), siehe dazu im PSDK. Da solltest du dir mal die Klasse Win32_LogicalDisk ansehen, die enthält glaube ich die Information, die du suchst.

Garfield 9. Jan 2005 15:46

Re: Name des CD-ROM-Laufwerks (zB LITEON LTD163D)
 
Vielen Dank für den Tipp. Über Win32_LogicalDisk bin ich zu win32_cdromdrive gekommen. Jetzt muss 'nur' noch sehen, wie ich das in D7PE reinbekomme. Die Source-Beispiele, welche Google bringt, sind fast ausschließlich in C.

Robert Marquardt 9. Jan 2005 16:54

Re: Name des CD-ROM-Laufwerks (zB LITEON LTD163D)
 
Der alternative Weg geht ueber das Config Manager API, aber ich habe noch keine Zeit gefunden die Delphi-Konversion davon freizugeben.
Das ist im Wesentlichen das API das vom Device Manager verwendet wird.

Garfield 9. Jan 2005 17:54

Re: Name des CD-ROM-Laufwerks (zB LITEON LTD163D)
 
Wenn Nero installiert ist, könnte man auch die Delphi Nero API benutzen. Oder alternativ nachsehen, was Nero in die Registry geschrieben hat. Nero habe ich allerdings nicht.

Kernel32.DLL 9. Jan 2005 20:02

Re: Name des CD-ROM-Laufwerks (zB LITEON LTD163D)
 
Zitat:

Zitat von Garfield
Vielen Dank für den Tipp. Über Win32_LogicalDisk bin ich zu win32_cdromdrive gekommen. Jetzt muss 'nur' noch sehen, wie ich das in D7PE reinbekomme. Die Source-Beispiele, welche Google bringt, sind fast ausschließlich in C.

Win32_CDRomDrive funzt aber nur unter WinXP und Server 2003.

Bei Win98 würd ich bei der Registry bleiben.

Garfield 9. Jan 2005 21:55

Re: Name des CD-ROM-Laufwerks (zB LITEON LTD163D)
 
Ganz unten steht:
Zitat:

Requirements

Client: Requires Windows XP, Windows 2000 Professional, or Windows NT Workstation 4.0 SP4 and later.
Somit könnte man eine Version für Win9x/ME und eine für Win2000/XP machen.

Kernel32.DLL 10. Jan 2005 20:08

Re: Name des CD-ROM-Laufwerks (zB LITEON LTD163D)
 
Oder man erstellt eine Abfrage, welches System gerade läuft

Garfield 10. Jan 2005 20:28

Re: Name des CD-ROM-Laufwerks (zB LITEON LTD163D)
 
Die Abfrage ist ja das einfachste an der Sache:
Delphi-Quellcode:
  //***********************************************************************//
 // Ist mindestens Windows 2000 installiert?                              //
//***********************************************************************//
function minWin2000: Boolean;
var
  os        : TOSVersionInfo;
begin
  os.dwOSVersionInfoSize := sizeof(os);
  GetVersionEx(os);
  if (os.dwPlatformId = VER_PLATFORM_WIN32_NT) and
     (os.dwMajorVersion >= 5)
  then minWin2000 := True
  else minWin2000 := False;
end;
NT 4.0 Workstation wird wohl kaum noch jemand installiert haben!?

fkerber 10. Jan 2005 20:29

Re: Name des CD-ROM-Laufwerks (zB LITEON LTD163D)
 
Hi!

*Meld*
Bei uns in der Schule z.B.!


Ciao Frederic


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:09 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz