Wie erkenne ich anstecken eines USB-Sticks?



  • Welche Zahl hinter Status? hinter "Status: " kommt der String status, welcher "Port belegt" enthält.



  • Aber lesen und Smaples abschreiben kannst Du?
    http://msdn.microsoft.com/en-us/library/aa363215(VS.85).aspx



  • Deine Hilfe ist immer die Beste ^^

    Also den Link habe ich mir schon durchgelesen, den hat kpeter ja schon geschrieben 😉

    Leider haut das ja nicht so hin mit dem FirstDriveFromMask ...

    Ich bekomme dann diesen schicken Fehler :

    [ILINK32 Fehler] Error: Nicht auflösbares externes 'TCheckInOutForm::FirstDriveFromMask(unsigned long)' referenziert von C:\USERS\MICHEL\DOCUMENTS\RAD STUDIO\PROJEKTE\DEBUG\CHECKINOUTFRM.OBJ

    Hier mal mein Code :

    // in der .h-Datei :
    
    #include <dbt.h>
    
    class TCheckInOutForm : public TForm
    {
    __published:	// IDE-verwaltete Komponenten
    	TLabel *Label1;
    	TADOQuery *qry_neues_training;
    	TDataSource *src_neues_training;
    
    private:	// Benutzer-Deklarationen
    public:		// Benutzer-Deklarationen
    	__fastcall TCheckInOutForm(TComponent* Owner);
    	char FirstDriveFromMask (ULONG unitmask);  //prototype
    protected:
    	void __fastcall WndProc(Messages::TMessage &Message);
    };
    
    //---------------------------------------------------------------------------
    extern PACKAGE TCheckInOutForm *CheckInOutForm;
    //---------------------------------------------------------------------------
    #endif
    /*------------------------------------------------------------------
       FirstDriveFromMask (unitmask)
    
       Description
         Finds the first valid drive letter from a mask of drive letters.
         The mask must be in the format bit 0 = A, bit 1 = B, bit 2 = C,
         etc. A valid drive letter is defined when the corresponding bit
         is set to 1.
    
       Returns the first drive letter that was found.
    --------------------------------------------------------------------*/
    char FirstDriveFromMask (ULONG unitmask)
    {
       char i;
    
       for (i = 0; i < 26; ++i)
       {
    	  if (unitmask & 0x1)
    		 break;
    	  unitmask = unitmask >> 1;
       }
    
       return (i + 'A');
    }
    
    // in der .cpp-Datei :
    
    void __fastcall TCheckInOutForm::WndProc(Messages::TMessage &Message)
    {
    // Erkennen des USB-Sticks
    	switch (Message.Msg) {
    		case WM_DEVICECHANGE: {
    			unsigned int Event = Message.WParam ;
    			DWORD dwData	   = Message.LParam ;
    
    			PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)Message.LParam;
    			switch (Event) {
    				case DBT_DEVICEARRIVAL :  {
    					ShowMessage("Ihr USB-Stick wurde erkannt!") ;
    					CheckInOutForm->Label1->Visible = false ;
    					PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb;
    					FirstDriveFromMask(lpdbv->dbcv_unitmask);
    				}
    			}
    			break ;
    		}
    	default:
    		;
    	}
    	TForm::WndProc(Message) ;
    }
    


  • MichelM schrieb:

    Ich bekomme dann diesen schicken Fehler :

    Schicker Fehler für schicken Code 😃

    den Code für die Funktion FirstDriveFromMask nimmmal in die *.cpp rein und setze dann

    TCheckInOutForm::FirstDriveFromMask


Anmelden zum Antworten