| |
VB.NET - FortgeschritteneMeldung beim Schließen der CD-Schublade | | | Autor: Dikn | Datum: 22.07.21 09:38 |
| Hallo!
Mit folgender vereinfachten Message-Methode kann ich feststellen, ob ein Laufwerk hinzugefügt bzw. entfernt wurde.
Mein Problem:
Beim Schließen des CD-Laufwerks dauert es lange, bis die Meldung "Ein Datenträger wurde hinzugefügt" erscheint. Ich möchte schon beim Schließen der Schublade einen Hinweis ausgeben.
Public Class Form1
Private Const WM_DEVICECHANGE As Integer = &H219
Private Const DBT_DEVICEARRIVAL As Integer = &H8000
Private Const DBT_DEVICEREMOVECOMPLETE = &H8004
Protected Overloads Overrides Sub WndProc(ByRef msg As Message)
MyBase.WndProc(msg)
If msg.Msg = WM_DEVICECHANGE Then
If msg.WParam = CType(DBT_DEVICEARRIVAL, IntPtr) Then
TextBox1.Text += "Neuen Datenträger gefunden" & vbCrLf
End If
If msg.WParam = CType(DBT_DEVICEREMOVECOMPLETE, IntPtr) Then
TextBox1.Text += "Ein Datenträger wurde entfernt" & vbCrLf
End If
End If
End Sub
End Class | |
Re: Meldung beim Schließen der CD-Schublade | | | Autor: -Franky- | Datum: 22.07.21 11:13 |
| Hi
Das sind aber irgendwie 2 unterschiedliche paar Schuhe. Das eine ist das erkennen ob ein Gerät, zB ein CDROM Laufwerk, USB-Stick oder Netzwerklaufwerk (logische Laufwerke), zum System hinzugefügt bzw entfernt wurde und das andere ist ob ein Medium in einem Laufwerk eingelegt bzw. entfernt wurde. Üblicherweise wertet man noch, neben wParam, zusätzlich lParam aus. lParam -> Struktur DEV_BROADCAST_HDR. Dann zB. bei DBT_DEVICEARRIVAL prüft man DEV_BROADCAST_HDR.dbch_devicetype. Ist dieser DBT_DEVTYP_VOLUME dann lParam -> Struktur DEV_BROADCAST_VOLUME. Hier prüft man ob DEV_BROADCAST_VOLUME.dbcv_flags nicht die Flags DBTF_MEDIA und DBTF_NET enthält. Dann wurde ein logisches Laufwerk hinzugefügt. Enthält DEV_BROADCAST_VOLUME.dbcv_flags das Flag DBTF_MEDIA, dann wurde ein Medium, zB. eine CDROM in ein CDROM-Laufwerk eingelegt. Das ganze entsprechend auch für DBT_DEVICEREMOVECOMPLETE.
Das so ersteinmal ganz grob. Was Du aber nicht ermitteln kannst, ob gerade die CDROM Schublade per Hand geschlossen oder geöffnet wird. Außerdem braucht das System ein wenig Zeit um ein eingelegtes/ausgeworfenes Medium oder gerade angeschlossene/entfernte Gerät zu erkennen. Nicht mal Windows selber zeigt Dir sofort ein eingelegtes Medium an. Das was mir dazu höchstens einfällt wäre das CDROM-Laufwerk zu fragen ob die Schublade geöffnet oder geschlossen ist. Ob man auch abfragen kann ob die Schublade gerade am öffnen/schließen ist, ist mir nicht bekannt.
Mit freundlichen Grüßen
-Franky-
Beitrag wurde zuletzt am 22.07.21 um 11:37:56 editiert. | |
Re: Meldung beim Schließen der CD-Schublade | | | Autor: Dikn | Datum: 25.07.21 08:14 |
| Wenn auch verspätet (war unterwegs)…
Vielen Dank für Deine schnelle Antwort!!!
Das Erkennen ob ein Gerät (CDROM-Laufwerk, USB-Stick, usw.) hinzugefügt oder entfernt wurde funktioniert in meinem Programm einwandfrei.
Es werden Icons und Text der vorhandenen Laufwerke in einer Combobox angezeigt. Ist z.B. keine CD im Laufwerk wird NotReady hinzugefügt.
Mein Problem ist, dass beim Schließen der CD-Schublade es bei bestimmten CDs es extrem lange dauert bis der Vorgang abgeschlossen ist. In dieser Zeit würde ich gern einen Hinweis anzeigen.
Wie Du schreibst, wäre eine Abfrage ob die Schublade gerade am öffnen/schließen ist ideal. | |
Re: Meldung beim Schließen der CD-Schublade | | | Autor: -Franky- | Datum: 25.07.21 14:26 |
| Hi
Das das ganze etwas Zeit in Anspruch nimmt ist ja klar. SpinUp des CDROM Laufwerkes nach dem schließen der Schublade, erkennen um was für ein Medium es sich handelt usw usw. Da kommst mit der Broadcast-Message nicht allzuweit. Die wird ja erst ausgelöst wenn alles erkannt wurde.
Du könntest höchstens das CDROM Laufwerk direkt per API DeviceIoControl fragen ob die Schublade offen oder geschlossen ist. Ob es darüber auch sowas wie ein Status "wird gerade geöffnet/geschlossen" gibt, weiß ich gerade nicht. Zu DeviceIoControl und Status der CDROM-Schublade findest du einiges per Google.
Mit freundlichen Grüßen
-Franky- | |
Re: Meldung beim Schließen der CD-Schublade | | | Autor: Dikn | Datum: 26.07.21 12:55 |
| Hallo Franky!
Ich habe nichts gefunden. Ich geb's auf!
Trotzdem vielen vielen Dank für Deine Bemühungen | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevGraph (VB/VBA)
Grafische Auswertungen
Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|