Falko hat geschrieben:Hiermit müsste das gehen. Wenn jemand das von VB nach PB
Portieren könnte wäre sehr nett.[...]
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