Seite 3 von 4

Verfasst: 15.09.2006 04:59
von edel
Falko hat geschrieben:Hiermit müsste das gehen. Wenn jemand das von VB nach PB
Portieren könnte wäre sehr nett. :shock: [...]

Code: Alles auswählen

#DBT_DEVICEARRIVAL        = $8000
#DBT_DEVICEREMOVECOMPLETE = $8004
#DBT_DEVTYP_VOLUME        = $0002

Procedure.s GetDevice(Bits) 
  For i = 'A' To 'Z' 
    If Bits & 1 = 1
      Laufwerk.s = Chr(i)
    EndIf
    Bits = Bits >> 1 
  Next
  ProcedureReturn Laufwerk
EndProcedure

Procedure CB(hwnd,msg,wParam,lParam)
  
  Protected *db.DEV_BROADCAST_HDR
  Protected *dbv.DEV_BROADCAST_VOLUME
  
  If msg = #WM_DEVICECHANGE
    Select wParam 
      Case #DBT_DEVICEARRIVAL        
        
        *db = lParam 
        
        If *db\dbch_devicetype = #DBT_DEVTYP_VOLUME 
          *dbv = *db 
          Laufwerk.s = GetDevice(*dbv\dbcv_unitmask) + ":" 
          Debug Laufwerk  + " = insert Media"
        EndIf
        
      Case #DBT_DEVICEREMOVECOMPLETE
        
        *db = lParam 
        
        If *db\dbch_devicetype = #DBT_DEVTYP_VOLUME
          *dbv = *db 
          Laufwerk.s = GetDevice(*dbv\dbcv_unitmask) + ":" 
          Debug Laufwerk + " = remove Media"
        EndIf 
        
    EndSelect
    ProcedureReturn 1
  EndIf
  
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

hwnd = OpenWindow(0,#PB_Ignore,#PB_Ignore,200,200,"")

SetWindowCallback(@CB(),0)

Repeat : Until WaitWindowEvent() = #WM_CLOSE


Verfasst: 15.09.2006 10:26
von Falko
@edel,
danke für die Portierung :allright: . Mein USB-Stick wird damit sofort erkannt.
Meine CD-ROM-Laufwerke nicht, dal die Autofunktion bei mir durch XP-Antispy ausgeschaltet ist.

Grüße ...Falko