Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Feststellen, ob CD oder DVD-Laufwerk (https://www.delphipraxis.net/165156-feststellen-ob-cd-oder-dvd-laufwerk.html)

hoika 16. Dez 2011 11:58

Feststellen, ob CD oder DVD-Laufwerk
 
Hallo #,

mit SHGetFileInfo kann ich den Displaynamen (wird im Explorer angezeigt) und den TypeNamen
eines CD- bzw. DVD-Laufwerkes ermitteln.
Dummerweise liefert mir szTypeName immer "CD-Laufwerk" und szDisplayName
zwar DVD-RAM-Laufwerk, wenn keine DVD im DVD-Laufwerk liegt,
liegt aber eine DVD drin wird der Volumen-Name der DVD zurückgegeben.

Wie bekomme ich also raus, ob es ein CD oder DVD-Laufwerk ist ?

Danke



Heiko

Bernhard Geyer 16. Dez 2011 12:27

AW: Feststellen, ob CD oder DVD-Laufwerk
 
Ich würde sagen: WMI ist dein Freund

hoika 16. Dez 2011 12:40

AW: Feststellen, ob CD oder DVD-Laufwerk
 
Hallo,

nicht schon wieder ;( ;)
Lese ich aber ein paar Threads darüber,
hat es mit WMI auch noch keiner geschafft.


#Update:#
Ich checke jetzt, ob im szDiplayName der String DVD steht,
nicht 100% zuverlässig, aber mir reichts ;)


Heiko

CCRDude 16. Dez 2011 14:26

AW: Feststellen, ob CD oder DVD-Laufwerk
 
Man muss doch nicht für alles mit WMI-Kanonen auf Spatzen schießen!

Warum nicht
Delphi-Quellcode:
if GetDriveType('C:\')=DRIVE_CDROM then
...

(siehe MSDN-Library durchsuchenGetDriveType)

Oder geht es darum, zwischen CD und DVD zu unterscheiden?

DeddyH 16. Dez 2011 14:33

AW: Feststellen, ob CD oder DVD-Laufwerk
 
Sieht wohl so aus:
Zitat:

Wie bekomme ich also raus, ob es ein CD oder DVD-Laufwerk ist ?

Bummi 16. Dez 2011 14:50

AW: Feststellen, ob CD oder DVD-Laufwerk
 
hat zwar nicht direkt etwas damit zu tun, vielleicht bisweilen doch als Krücke zu missbrauchen
Delphi-Quellcode:
DiskSize(Ord('E') - 64) div 1024 div 1024

DeddyH 16. Dez 2011 14:58

AW: Feststellen, ob CD oder DVD-Laufwerk
 
Und wenn kein Datenträger eingelegt ist?

Bummi 16. Dez 2011 15:55

AW: Feststellen, ob CD oder DVD-Laufwerk
 
@DeddyH siehe #1

DeddyH 16. Dez 2011 15:59

AW: Feststellen, ob CD oder DVD-Laufwerk
 
Naja, schön ist aber was anderes. Irgendwie muss es aber möglich sein, diese Info halbwegs zuverlässig zu erhalten, Brennprogramme kriegen das ja auch hin (vermutlich über den Treiber).

Bummi 16. Dez 2011 16:00

AW: Feststellen, ob CD oder DVD-Laufwerk
 
geht sicher, aber wie weiß ich auch nicht ....

Mithrandir 16. Dez 2011 16:33

AW: Feststellen, ob CD oder DVD-Laufwerk
 
Zitat:

Zitat von DeddyH (Beitrag 1141805)
Naja, schön ist aber was anderes. Irgendwie muss es aber möglich sein, diese Info halbwegs zuverlässig zu erhalten, Brennprogramme kriegen das ja auch hin (vermutlich über den Treiber).

Klar.

DeviceIOControl und SCSI_PASSTHROUGH_INTERFACE ist hier das Zauberwort, wobei letzteres vielleicht gar nicht gebraucht wird.

Schlachte doch mal diese Bibliothek aus, vielleicht hilfts. :)

ASM 17. Dez 2011 22:16

AW: Feststellen, ob CD oder DVD-Laufwerk
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von hoika (Beitrag 1141758)
Wie bekomme ich also raus, ob es ein CD oder DVD-Laufwerk ist ?

Dies und weit mehr geht hervorragend mit der TIsoLib, die komplett im Quellcode vorliegt.
Letzte Version ist v0.03a und stammt zwar schon aus 2004, funktioniert aber unter WinXP und zumindestens mit D7 bei mir problemlos (siehe beigefügte, von mir erweiterte Exe-Demo, getestet auf 4 verschiedenen Rechnern).

Allerdings bestehen systembedingt folgende zwei Voraussetzungen, um diese CD/DVD-Drive Infos tief aus dem System heraus auslesen zu können:
(1) man muss mit Administratorrechten eingeloggt sein
(2) es muss eine Disk (CD oder DVD im Laufwerk liegen)

Luckie 18. Dez 2011 05:17

AW: Feststellen, ob CD oder DVD-Laufwerk
 
Ich hätte jetzt noch die SetupAPI vorgeschlagen.

Mithrandir 18. Dez 2011 09:18

AW: Feststellen, ob CD oder DVD-Laufwerk
 
Zitat:

Zitat von ASM (Beitrag 1141957)
(1) man muss mit Administratorrechten eingeloggt sein

Kann man sowas nicht über die Rechteverwaltung steuern? Ich meine, da war was...

ASM 18. Dez 2011 21:11

AW: Feststellen, ob CD oder DVD-Laufwerk
 
Zitat:

Zitat von Luckie (Beitrag 1141973)
Ich hätte jetzt noch die SetupAPI vorgeschlagen.

Mit der SetAPI, jedenfalls der zu Jedi gehörigen, lassen sich - soweit ich erkennen kann - nur die im System installierten Treiber anzeigen. Und zwar dabei kollektiv subsummiert als "DVD/CD-ROM Laufwerke".
Eine Differenzierung, welches Laufwerk nun ein CDROM ist und welches ein DVD-Lw,, scheint aber damit nicht zu gehen. Ebenso nicht wie weitergehende Abfragen, ob es sich dabei um ein CD bzw. DVD-Lw mit nur READ- oder um eines mit READ/WRITE-Option (also um einen Brenner) handelt, usw. Die von mir genannte TIsoLib kann das aber alles.

Jetzt habe ich die TIsoLib ergänzend auch einmal in Delphi XE eingesetzt (bisher hatte ich sie immer nur in D7 verwendet): nach nur geringfügigen Korrekturen im Quelltext der Library funktioniert diese ebenso im XE einwandfrei (unter WinXP getestet) und mit dem exakt gleichen Ergebnis wie zuvor bei ihrer Verwendung in D7. Zwingend notwendig zum Einsatz mit XE sind nur einige Korrekturen in der Library hinsichtlich der Deklaration von String (AnsiString vs. Widestring) und PChar (PAnsiChar vs. PWideChar).

CCRDude 21. Dez 2011 21:42

AW: Feststellen, ob CD oder DVD-Laufwerk
 
Zitat:

Zitat von DeddyH (Beitrag 1141787)
Sieht wohl so aus:
Zitat:

Wie bekomme ich also raus, ob es ein CD oder DVD-Laufwerk ist ?

Hmm... warum zitierst Du ausgerechnet das? Das war der Grund, warum ich überhaupt auf die Frage kam, weil da nicht klar hervorgeht, ob es ein exlusives "oder" ist.

Wenn ich mir jetzt aber alles durchlese - im Kontext betrachtet dürftest Du recht haben :)

hathor 22. Dez 2011 00:56

AW: Feststellen, ob CD oder DVD-Laufwerk
 
Size in
Win32_CDROMDrive class
http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

MaxMediaSize in
CIM_CDROMDrive class
http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx

Ausgabe:

__GENUS : 2
__CLASS : Win32_CDROMDrive
__SUPERCLASS : CIM_CDROMDrive
__DYNASTY : CIM_ManagedSystemElement
__RELPATH : Win32_CDROMDrive.DeviceID="IDE\\CDROMSLIMTYPE_BD_
_E__DS4E1S__________________EA17____\\4&6F0BE0C&0& 0.2.0"
__PROPERTY_COUNT : 49
__DERIVATION : {CIM_CDROMDrive, CIM_MediaAccessDevice, CIM_LogicalDevice, CIM_LogicalElement...}
__SERVER : QUAD
__NAMESPACE : root\CIMV2
__PATH : \\QUAD\root\CIMV2:Win32_CDROMDrive.DeviceID="IDE\
\CDROMSLIMTYPE_BD__E__DS4E1S__________________EA17 ____\\4&6F0BE0C&0&0.2.0"
Availability : 3
Capabilities : {3, 4, 7}
CapabilityDescriptions : {Random Access, Supports writing, Supports Removable Media}
Caption : Slimtype BD E DS4E1S
CompressionMethod : Unknown
ConfigManagerErrorCode : 0
ConfigManagerUserConfig : False
CreationClassName : Win32_CDROMDrive
DefaultBlockSize :
Description : CD-ROM-Laufwerk
DeviceID : IDE\CDROMSLIMTYPE_BD__E__DS4E1S__________________E A17____\4&6F0BE0C&0&0.2.0
Drive : D:
DriveIntegrity :
ErrorCleared :
ErrorDescription :
ErrorMethodology :
FileSystemFlags :
FileSystemFlagsEx :
Id : D:
InstallDate :
LastErrorCode :
Manufacturer : (Standard-CD-ROM-Laufwerke)
MaxBlockSize :
MaximumComponentLength :
MaxMediaSize :
MediaLoaded : False
MediaType : DVD Writer
MfrAssignedRevisionLevel : EA17
MinBlockSize :
Name : Slimtype BD E DS4E1S
NeedsCleaning :
NumberOfMediaSupported :
PNPDeviceID : IDE\CDROMSLIMTYPE_BD__E__DS4E1S__________________E A17____\4&6F0BE0C&0&0.2.0
PowerManagementCapabilities :
PowerManagementSupported :
RevisionLevel :
SCSIBus : 0
SCSILogicalUnit : 0
SCSIPort : 0
SCSITargetId : 2
SerialNumber : 09270000xxxx
Size :
Status : OK
StatusInfo :
SystemCreationClassName : Win32_ComputerSystem
SystemName : QUAD
TransferRate : -1
VolumeName :
VolumeSerialNumber :

PS C:\Program Files (x86)\MrEdSoftware\PowerShellScriptOMatic v.1.0>

http://www.it-visions.de/Scripting/W...n32_CDROMDrive

Garfield 4. Jan 2012 14:57

AW: Feststellen, ob CD oder DVD-Laufwerk
 
Zitat:

Zitat von ASM (Beitrag 1141957)
Allerdings bestehen systembedingt folgende zwei Voraussetzungen, um diese CD/DVD-Drive Infos tief aus dem System heraus auslesen zu können:
(1) man muss mit Administratorrechten eingeloggt sein
(2) es muss eine Disk (CD oder DVD im Laufwerk liegen)

Aber nur für Dein Tool.

Es sind lediglich Brennrechte erforderlich und die Capabilities (Operation Code $5A, PageCode $2A) kann man auch ohne eingelegtes Medium auslesen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:01 Uhr.

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