apres quelques recherches , voici ou j'en suis
ce Code detecte si on branche un lecteur ou une carte SD
puis affiche la liste complete des Peripheriques USB et CDROM Disques Dur
sous la forme "
[13 :06 :22] *********** La Liste ************
[13 :06 :22] Drive :-->C:\ de Type :-->Fixed_disk_drive avec le Label :-->OS_Install
[13 :06 :22] Drive :-->D:\ de Type :-->CDROM_drive avec le Label :-->
[13 :06 :22] Drive :-->E:\ de Type :-->Fixed_disk_drive avec le Label :-->Dobro
[13 :06 :22] Drive :-->F:\ de Type :-->CDROM_drive avec le Label :-->XPLANE10
[13 :06 :22] Drive :-->G:\ de Type :-->CDROM_drive avec le Label :-->
[13 :06 :22] Drive :-->H:\ de Type :-->Removable_media_drive avec le Label :-->
[13 :06 :22] Drive :-->I:\ de Type :-->Fixed_disk_drive avec le Label :-->My
[13 :06 :22] *******************************
"
ce qui du coup nous renvoi les lettres de lecteurs , le Type de lecteur , et son Label !
le tout etant présent dans une List() , il est facile de voir le nouvel Arrivant, et donc de ressortir
soit sa lettre, soit son label ; .. voir les 2 .. ce qui permettrai d'explorer par la suite
voici le Code :
Code : Tout sélectionner
Declare WindowCallback(WindowID,message,wParam,lParam)
Declare.s list()
Global NewList Drive.s()
Openwindow(1,10,10,320,200,"Test Usb",#PB_Window_SystemMenu )
SetWindowCallback(@WindowCallback())
Repeat
Event=WaitWindowEvent(1)
until Event=#PB_Event_CloseWindow
End
;-Procedures Zone
; *****************************************************************************************
; *****************************************************************************************
Procedure WindowCallback(WindowID,message,wParam,lParam)
; By Dobro (Apres moultes recheches, et recuperation de portion de codes Par-ci Par-là ;)
; Detection Periph
res=#PB_ProcessPureBasicEvents
Select message
Case #WM_DEVICECHANGE
Select wParam
Case #DBT_DEVNODES_CHANGED ;A device has been added to or removed from the system.
debug "modification Periph "
Case #DBT_DEVICEREMOVECOMPLETE
debug " Periph Retiré"
Case #DBT_DEVICEARRIVAL
Debug "Nouveau Periph Actif !! "
Debug "*********** La Liste ************ "
list()
Foreach Drive.s()
Debug "Drive :-->"+stringfield( Drive.s(),1," " )+" de Type :-->"+stringfield( Drive.s(),3," " )+" avec le Label :-->"+stringfield( Drive.s(),2," **" )
Next
Debug "******************************* "
EndSelect
EndSelect
ProcedureReturn res
EndProcedure
Procedure.s list()
; By Ejan , modified By Dobro
#DRIVE_UNKNOWN = 0
#DRIVE_NO_ROOT_DIR = 1
#DRIVE_REMOVABLE = 2
#DRIVE_FIXED = 3
#DRIVE_REMOTE = 4
#DRIVE_CDROM = 5
#DRIVE_RAMDISK = 6
bits32.l = GetLogicalDrives_()
on.l = 1
drive$ = ""
For ckBit = 0 To 31
drive$ = ""
If bits32 & on << ckBit
drive$ = Chr(65 + ckBit) + ":\"
driveType = GetDriveType_(@drive$)
CDP$=drive$
Select driveType
Case #DRIVE_UNKNOWN
VolumeName$=Space(15):Str$ = Space(32)
GetVolumeInformation_(CDP$,@VolumeName$,Len(VolumeName$),0,0,0,@Str$,Len(Str$))
AddElement(Drive.s())
Drive.s()=drive$ + " Unknown_drive_type"+" **"+VolumeName$
Case #DRIVE_NO_ROOT_DIR
VolumeName$=Space(15):Str$ = Space(32)
GetVolumeInformation_(CDP$,@VolumeName$,Len(VolumeName$),0,0,0,@Str$,Len(Str$))
AddElement(Drive.s())
Drive.s()=drive$ + " Drive_has_no_root_dir"+" **"+VolumeName$
Case #DRIVE_REMOVABLE
VolumeName$=Space(15):Str$ = Space(32)
GetVolumeInformation_(CDP$,@VolumeName$,Len(VolumeName$),0,0,0,@Str$,Len(Str$))
AddElement(Drive.s())
Drive.s()=drive$ + " Removable_media_drive"+" **"+VolumeName$
Case #DRIVE_FIXED
VolumeName$=Space(15):Str$ = Space(32)
GetVolumeInformation_(CDP$,@VolumeName$,Len(VolumeName$),0,0,0,@Str$,Len(Str$))
AddElement(Drive.s())
Drive.s()=drive$ + " Fixed_disk_drive"+" **"+VolumeName$
Case #DRIVE_REMOTE
VolumeName$=Space(15):Str$ = Space(32)
GetVolumeInformation_(CDP$,@VolumeName$,Len(VolumeName$),0,0,0,@Str$,Len(Str$))
AddElement(Drive.s())
Drive.s()=drive$ + " Remote_drive"+" **"+VolumeName$
Case #DRIVE_CDROM
VolumeName$=Space(15):Str$ = Space(32)
GetVolumeInformation_(CDP$,@VolumeName$,Len(VolumeName$),0,0,0,@Str$,Len(Str$))
AddElement(Drive.s())
Drive.s()=drive$ + " CDROM_drive"+" **"+VolumeName$
Case #DRIVE_RAMDISK
VolumeName$=Space(15):Str$ = Space(32)
GetVolumeInformation_(CDP$,@VolumeName$,Len(VolumeName$),0,0,0,@Str$,Len(Str$))
AddElement(Drive.s())
Drive.s()=drive$ + " Ramdisk"+" **"+VolumeName$
EndSelect
EndIf
Next
VolumeName$="";
EndProcedure
; Epb