Page 1 sur 2

KeyUsb Detector

Publié : lun. 28/nov./2005 13:00
par lionel_om
Bonjour à tous.
Voici un ptt programme bien pratique.
Il permet d'afficher un message d'alerte lors de la fermeture d'une session Windows si une clé USB est branchée.

Ca évite ainsi d'oublier sa clé USB sur un ordi public (à la FAC, l'IUT, chez un pote ou autre...)

Voici le lien : KeyUSB Detector
Si vous rencontrez des problèmes / bugs n'hésitez pas à m'en faire part.
Je mettrai bientôt la source on-lone (je l'ai oublié chez moi :? )

Merci d'avance
Lionel

Publié : lun. 28/nov./2005 14:56
par Droopy
très bonne idée, il manque juste une icone dans le Systray

Publié : lun. 28/nov./2005 16:07
par Chris
Ca existe pas déjà, sur windows, ce systeme?

Publié : lun. 28/nov./2005 16:16
par lionel_om
Bah je sais pas. C'est possible (ca devrait exister car c'est limite indispensable...), mais je sais pas comment faire ...

Publié : lun. 28/nov./2005 17:01
par Chris
Ben en fait, ça ne m'est jamais venu à l'idée de regarder si ça existait, étant donné que je suis le seul à me servir de mon PC, je ne ferme jamais la session.

Publié : lun. 28/nov./2005 22:19
par Droopy
Pour la détection de la clé tu as utilisé un code comme ça ? :

Code : Tout sélectionner

Procedure DetectUSBKey()
  For n=2 To 26
    If Realdrivetype_(n,0)=  #DRIVE_REMOVABLE
      ProcedureReturn 1
    EndIf
  Next
EndProcedure

;/ Test
If DetectUSBKey()
  MessageRequester("Disque Amovible","Présent",#MB_ICONINFORMATION)
Else
  MessageRequester("Disque Amovible","Absent",#MB_ICONERROR )
EndIf

Publié : lun. 28/nov./2005 22:37
par Backup
Droopy a écrit :Pour la détection de la clé tu as utilisé un code comme ça ? :

Code : Tout sélectionner

Procedure DetectUSBKey()
  For n=2 To 26
    If Realdrivetype_(n,0)=  #DRIVE_REMOVABLE
      ProcedureReturn 1
    EndIf
  Next
EndProcedure

;/ Test
If DetectUSBKey()
  MessageRequester("Disque Amovible","Présent",#MB_ICONINFORMATION)
Else
  MessageRequester("Disque Amovible","Absent",#MB_ICONERROR )
EndIf

ce code genere une erreur sous XP pro (pourtant avec 2 clef USB)




Image

Publié : lun. 28/nov./2005 22:43
par Oliv
J'ai posté le code de mon autorun sur clef usb si ça peut vous aider

Publié : lun. 28/nov./2005 23:20
par Droopy
@dobro

Je ne comprend pas pourquoi :?:

Publié : lun. 28/nov./2005 23:28
par Backup
pourtant , je t'assure que chez moi ça plante !
quelqu'un d'autre pour essayer ? :)

Publié : mar. 29/nov./2005 9:05
par Droopy
@Oliv : j'ai pas trouvé où tu a posté le code source

Publié : mar. 29/nov./2005 10:06
par lionel_om
Droopy a écrit :Pour la détection de la clé tu as utilisé un code comme ça ? :

Code : Tout sélectionner

Procedure DetectUSBKey()
  For n=2 To 26
    If Realdrivetype_(n,0)=  #DRIVE_REMOVABLE
      ProcedureReturn 1
    EndIf
  Next
EndProcedure

;/ Test
If DetectUSBKey()
  MessageRequester("Disque Amovible","Présent",#MB_ICONINFORMATION)
Else
  MessageRequester("Disque Amovible","Absent",#MB_ICONERROR )
EndIf
Non j'ai utilisé un code qui ressemble à celui de ce topic
Il était légèrement différent. Mais j'ai virai tout ce qui n'était pas utile te je commence à la lettre C.

Publié : mar. 29/nov./2005 12:22
par Backup
le code du Soldat inconu marche niquel lui !! :D
(a lancer sous debug !! )


Structure DriveInfos
  DriveLetter.s
  DriveType.l
  DriveTypeString.s
  NameOfVolume.s
EndStructure
NewList DriveList.DriveInfos()

Procedure GetDrive(ListDriveType.l)
  Protected Drive.s, DriveLetter.s, DriveType.l, Start.l, LengthDrive.l, DriveTypeString.s
   #REMOVABLE_DRIVE = 1
   #FIXED_DRIVE = 2
   #REMOTE_DRIVE = 4
   #CDROM_DRIVE = 8
   #RAMDISK_DRIVE = 16
   #UNKNOWN_DRIVE = 32
   #ALL_DRIVE = 63
  
   ; On vide la liste
   ClearList (DriveList())
  
   ; On récupère la lettre des différents lecteurs présent sur l'ordinateur
  Drive = Space (255)
  LengthDrive = GetLogicalDriveStrings_ (255, @Drive)
  
   For Start = 0 To LengthDrive - 4 Step 4
    
    DriveLetter.s = PeekS (@Drive + Start, 3) ; on récupère une lettre
    
    DriveType.l = GetDriveType_ (@DriveLetter) ; on récupère le type du lecteur
    
     Select DriveType ; On donne un nom au type de lecteur
       Case #DRIVE_REMOVABLE : DriveType = #REMOVABLE_DRIVE : DriveTypeString.s = "Disquette"
       Case #DRIVE_FIXED : DriveType = #FIXED_DRIVE : DriveTypeString.s = "Disque dur"
       Case #DRIVE_REMOTE : DriveType = #REMOTE_DRIVE : DriveTypeString.s = "Lecteur réseau"
       Case #DRIVE_CDROM : DriveType = #CDROM_DRIVE : DriveTypeString.s = "CD-ROM"
       Case #DRIVE_RAMDISK : DriveType = #RAMDISK_DRIVE : DriveTypeString.s = "RamDisk"
       Case #DRIVE_UNKNOWN : DriveType = #UNKNOWN_DRIVE : DriveTypeString.s = ""
     EndSelect
    
     If DriveType & ListDriveType ; on regarde si le type du lecteur correspond à ceux demandés
       AddElement (DriveList())
      DriveList()\DriveLetter = RemoveString (DriveLetter, "\" )
      DriveList()\DriveType = DriveType
      DriveList()\DriveTypeString = DriveTypeString
      
       If DriveLetter <> "A:\" And DriveLetter <> "B:\"
        DriveList()\NameOfVolume = Space (255)
         GetVolumeInformation_ (@DriveLetter, @DriveList()\NameOfVolume, 255, 0, 0, 0, 0, 0)
        DriveList()\NameOfVolume = Trim (DriveList()\NameOfVolume)
       Else
        DriveList()\NameOfVolume = ""
       EndIf
      
     EndIf
    
   Next
EndProcedure




;- Debut du test

GetDrive( #REMOVABLE_DRIVE | #CDROM_DRIVE | #FIXED_DRIVE )

ResetList (DriveList())
While NextElement (DriveList())
   Debug DriveList()\DriveLetter + " " + DriveList()\DriveTypeString + " " + DriveList()\NameOfVolume
Wend

Publié : mar. 29/nov./2005 12:52
par lionel_om
Oui c'est ce de code que je me suis inspirer...

Publié : mar. 29/nov./2005 18:10
par Oliv
Moi aussi, donc ne cherche pas mon code §Droopy c'est pas la peine, bien que je me souvienne avoir modifié 2-3 choses pour WIN98, dès que j'ai le temps je regarde