Einlegen von CD erkennen
-
Hallo,
wie kann ich mein Programm feststellen lassen, dass eine neue CD eingelegt wurde und den zugehörigen Laufwerksbuchstaben erhalten?
-
Mit GetDriveType könntest du feststellen welche Laufwerksbuchstaben
zu CD-Laufwerken gehören.Dann startest du für jedes CD-Laufwerk eine eigen Thread,
und überwachst imt GetVolumeInformation ob eine CD eingelegt wurde.
-
Die Lösung sollte WM_DEVICECHANGE sein...
Ich poste ein Beispiel, sofern ich die Tage dazu komme!
-
Siehe:
How to receive notification of CD-ROM insertion or removal
http://support.microsoft.com/kb/163503/en-us
-
Kann mir jemand verraten welche Funktion diese Aufgabe in MFC
für den Dialog abhandelt? PreTranslate oder DefWindowProc?Also anstelle von
Main_OnDeviceChange (HWND hwnd, WPARAM wParam, LPARAM lParam)Ich tippe mal auf DefWindowProc, oder?
-
Es geht um die Nachricht WM_DEVICECHANGE, diese wird mit ON_MESSAGE in die Messagemap eingetragen.
-
Und wie geht es dann weiter?
ON_MESSAGE(WM_DEVICECHANGE,myfunc)In myfunc muss ich dann doch irgendwie darauf reagieren.
Ich dachte es geht dabei um eine bereits dafür vorgesehene
Funktion, die man dahingehend überschreibt?Wie würde ich dann myfunc anlegen? Doch so:
LRESULT TesterDlg::myfunc(WPARAM wParam, LPARAM lParam);Die Funktion myfunc wird aber scheinbar nie gerufen?!
Die MessageBox darin wird nie angezeigt.
-
Dann kommt WM_DEVICECHANGE nicht an.
Ist das ein Top-Level Fenster?
Hast Du mal mit Spy++ kontrolliert ob diese nachricht überhaupt irgendwo ankommt?