Erkennen wenn eine USB Platte angeschlossen wird



  • Hallo zusammen,
    ich möchte ein Programm schreiben, welches erkennt wenn eine USB Platte/Stick eingesteckt wird und dann dieses neue Laufwerk ansprechen. Bzw. den neuen Laufwerksbuchstaben herausfinden.

    Folgendes habe ich bis jetzt, aber woher erkenne ich welches Laufwerk jetzt wirklich angesteckt wurde?

    void TForm1::OnMyDeviceChange(TWMDevModeChange &Msg)
    {
        switch(Msg.Msg)
         {
            case WM_DEVICECHANGE:
             {
                switch(Msg.Unused)
                 {
                    case DBT_DEVICEARRIVAL:
                     {
                        ShowMessage(AnsiString(Msg.Device));
                     }
                 }
             }
         }
    }
    

    Allerdings steht in Msg.Device nichts, was bei mir das Licht aufgehen läßt. Kennt vielleicht jemand nährere Details über TWMDevModeChange?

    Danke im vorraus



  • Hallo,

    wenn nicht mehrere Fälle unterschieden werden sollen, arbeite doch lieber mit if:

    void TForm1::OnMyDeviceChange(TWMDevModeChange &Msg)
    {
        if((Msg.Msg == WM_DEVICECHANGE) && (Msg.Unused == DBT_DEVICEARRIVAL))
            ShowMessage(AnsiString(Msg.Device));
    }
    

    MfG



  • Danke für den Tipp, aber ich weiß noch nicht, ob ich mehrere Fälle unterscheiden will. Allerdings weiß ich leider immer noch nicht, wie ich herausfinde, welches Device/Laufwerk angesteckt wurde 😞



  • Hallo

    Das hat auch mit dem Builder nicht mehr viel zu tun, dafür brauchst du WinAPI-Funktionen.

    bis bald
    akari



  • Dieser Thread wurde von Moderator/in akari aus dem Forum VCL (C++ Builder) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten