begin process at 2010 02 10 11:05:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Système

 > 

Périphériques

 > 

Soucis avec l'USB


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Soucis avec l'USB

vendredi 23 mars 2007 à 12:34:44 | Soucis avec l'USB

Frenz

Bonjour, depuis plusieurs heure je cherche une solution a mon probleme et sur le net je ne trouve rien (ou j'ai mal cherché)

Depuis peu, je suis sur un projet en rapport avec l'ultilisation de l'USB.

Aucuns soucis mise à part que je n'arrive pas a ouvrir un dossier d'une clé dans l'explorateur windows que ce soit sur n'importe quel ordinateur (donc changement de Lettre de lecteur de l'USB et du disque dure de l'hote)

C:\windows\explorer.exe peut devenir E:\windows\explorer.exe
quand à L'usb peut etre G:\dossier\ ou f:\dossier... enfin vous voyez ?

J'ai essayé avec le composant "sysinfo" mais pas réussit...
Utilisation de shell avec app.path idem

Si quelqun d'entre vous pourrai m'eclaircir ca serai vraiment sympa.

(-:fr3nz:-)
vendredi 23 mars 2007 à 12:49:52 | Re : Soucis avec l'USB

Renfield

Administrateur CodeS-SourceS

WMI doit pouvoir t'aider

Renfield
Admin CodeS-SourceS- MVP Visual Basic
vendredi 23 mars 2007 à 13:06:31 | Re : Soucis avec l'USB

jmfmarques

Membre Club

Bonjour Frenz,

Il va te falloir être très précis :

Plusieurs "clés" USB peuvent être présentes au même moment sur un PC.

A quoi reconnais-tu la tienne, donc ?
Ta réponse précise emportera la mienne, également alors précise... sinon : impossible de voir où tu veux aller ainsi...

vendredi 23 mars 2007 à 13:50:15 | Re : Soucis avec l'USB

Frenz

Pour etre plus precis je peut dire que la clé USB ciblé contient un certain fichier (le fichier du programme) a la racine de celle ci.

comme par exemple a la racine :
\USBme.exe

Donc le lecteur ciblé contient USBme.exe, le programme doit trouver la clé contenant "USBme" pas bète merci. Mais je ne sais pas comment je pourrait mis prendre

(-:fr3nz:-)
vendredi 23 mars 2007 à 13:51:01 | Re : Soucis avec l'USB

Frenz

Mais ca peut aussi etre par rapport au nom de volume de la clé USB ? ca serait pe etre plus simple

(-:fr3nz:-)
vendredi 23 mars 2007 à 14:34:27 | Re : Soucis avec l'USB

jmfmarques

Membre Club

Moi, je bveux bien, Frenz, mais j'ai des principes bien ancrés, parmi lesquels ne jamais conduire l'autre sur un chemin s'il en ignore tout.

Je ne t'y conduis donc que si je suis sur que rien ne t'échappe :
Philosophie :

1) on regarde tous les lecteurs disponibles
2) pour chaque lecteur, on regarde son type
3) si le type correpond, on l'examine de plus près et on décide en connaissance de cause ...

Etape 1, donc : recensement des lecteurs présents :
Sur une Form un bouton de commande command1

Code

Const MAX_PATH = 260
Private Type MSGBOXPARAMS
    cbSize As Long
    hwndOwner As Long
    hInstance As Long
    lpszText As String
    lpszCaption As String
    dwStyle As Long
    lpszIcon As String
    dwContextHelpId As Long
    lpfnMsgBoxCallback As Long
    dwLanguageId As Long
End Type
Private Declare Function GetLogicalDrives Lib "kernel32" () As Long

Private Sub Command1_Click()
   Dim MBP As MSGBOXPARAMS, LDs As Long, Cnt As Long, sDrives As String
    disques = GetLogicalDrives
    For Cnt = 0 To 25
        If (disques And 2 ^ Cnt) <> 0 Then
          MsgBox Chr$(65 + Cnt)
        End If
    Next Cnt
End Sub

Vois ce que celà fait et analyse.
La suite viendra ensuite, en ne modifiant que command1, pas à pas...
Tu dis....

vendredi 23 mars 2007 à 14:46:23 | Re : Soucis avec l'USB

Frenz

Interessant mais j'avoue que là ce n'est pas le code mais toi qui me fascine car j'aime beaucoup ta façon de penser.

Bref.... Je regarde le code et te repond mais sache que je ne met rien dans mes programmes que je ne connaisse pas.

Donc je regarde

(-:fr3nz:-)
vendredi 23 mars 2007 à 15:06:04 | Re : Soucis avec l'USB

Frenz

Pour l'instant ca va, l'analyse est ok mais je peut bien lui faire analyser le nom du volume à cette étape non ?

(-:fr3nz:-)
vendredi 23 mars 2007 à 15:08:37 | Re : Soucis avec l'USB

jmfmarques

Membre Club

Non, pas encore v(étape par étape)

Etape 2 :

voilà le code (à lancer, regarder attentivement les messages reçus, un par un... tu vas voir les choses commencer à prendre raison...) :

Private Type MSGBOXPARAMS
    cbSize As Long
    hwndOwner As Long
    hInstance As Long
    lpszText As String
    lpszCaption As String
    dwStyle As Long
    lpszIcon As String
    dwContextHelpId As Long
    lpfnMsgBoxCallback As Long
    dwLanguageId As Long
End Type
Private Declare Function GetLogicalDrives Lib "kernel32" () As Long
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" ( _
       ByVal lpRootPathName As String, _
       ByVal lpVolumeNameBuffer As String, _
       ByVal nVolumeNameSize As Long, _
       lpVolumeSerialNumber As Long, _
       lpMaximumComponentLength As Long, _
       lpFileSystemFlags As Long, _
       ByVal lpFileSystemNameBuffer As String, _
       ByVal nFileSystemNameSize As Long) As Long
      
       Private typelecteur As String
Private Sub Command1_Click()
   Dim LDs As Long, Cnt As Long, disques As String
    disques = GetLogicalDrives
    For Cnt = 0 To 30
        If (disques And 2 ^ Cnt) <> 0 Then
          titi = Chr$(65 + Cnt)
          infoslecteur Trim(titi) & ":\", toto, nmserie, nomvolume
          If toto = "INSERABLE" And titi <> "A" Then
            toto = toto & vbCrLf & "il nous intéresse donc" & vbCrLf & "car peut-être notre clé USB"
          End If
          MsgBox titi & " est un lecteur " & toto
        End If
    Next Cnt
End Sub

Private Sub infoslecteur(lecteur, typelecteur, nmserie, nomvolume)
  Dim numserie As Long, Serie As String
  Dim retVal As Long
  Dim DriveType As String
  retVal = GetDriveType(lecteur)
  Select Case retVal
    Case 0
        typelecteur = "INDETERMINE"
    Case 1
        typelecteur = "NO ROOT"
    Case 2
        typelecteur = "INSERABLE"
    Case 3
        typelecteur = "DISQUE DUR"
    Case 4
        typelecteur = "DISTANT"
    Case 5
        typelecteur = "CD ROM"
    Case 6
        DriveType = "RAMDISK"
  End Select
  nomvolume = Space$(15)
  ResStr = Space$(32)
  retVal = GetVolumeInformation(lecteur, nomvolume, Len(nomvolume), _
                        numserie, dum, dum, ResStr, Len(ResStr))
  Serie = Right(String(8, "0") + Hex$(numserie), 8)
  nmserie = Left(Serie, 4) + "-" + Right$(Serie, 4)
  numvolume = Trim(nomvolume)
End Sub



 

vendredi 23 mars 2007 à 15:08:39 | Re : Soucis avec l'USB

jmfmarques

Membre Club

Non, pas encore v(étape par étape)

Etape 2 :

voilà le code (à lancer, regarder attentivement les messages reçus, un par un... tu vas voir les choses commencer à prendre raison...) :

Private Type MSGBOXPARAMS
    cbSize As Long
    hwndOwner As Long
    hInstance As Long
    lpszText As String
    lpszCaption As String
    dwStyle As Long
    lpszIcon As String
    dwContextHelpId As Long
    lpfnMsgBoxCallback As Long
    dwLanguageId As Long
End Type
Private Declare Function GetLogicalDrives Lib "kernel32" () As Long
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" ( _
       ByVal lpRootPathName As String, _
       ByVal lpVolumeNameBuffer As String, _
       ByVal nVolumeNameSize As Long, _
       lpVolumeSerialNumber As Long, _
       lpMaximumComponentLength As Long, _
       lpFileSystemFlags As Long, _
       ByVal lpFileSystemNameBuffer As String, _
       ByVal nFileSystemNameSize As Long) As Long
      
       Private typelecteur As String
Private Sub Command1_Click()
   Dim LDs As Long, Cnt As Long, disques As String
    disques = GetLogicalDrives
    For Cnt = 0 To 30
        If (disques And 2 ^ Cnt) <> 0 Then
          titi = Chr$(65 + Cnt)
          infoslecteur Trim(titi) & ":\", toto, nmserie, nomvolume
          If toto = "INSERABLE" And titi <> "A" Then
            toto = toto & vbCrLf & "il nous intéresse donc" & vbCrLf & "car peut-être notre clé USB"
          End If
          MsgBox titi & " est un lecteur " & toto
        End If
    Next Cnt
End Sub

Private Sub infoslecteur(lecteur, typelecteur, nmserie, nomvolume)
  Dim numserie As Long, Serie As String
  Dim retVal As Long
  Dim DriveType As String
  retVal = GetDriveType(lecteur)
  Select Case retVal
    Case 0
        typelecteur = "INDETERMINE"
    Case 1
        typelecteur = "NO ROOT"
    Case 2
        typelecteur = "INSERABLE"
    Case 3
        typelecteur = "DISQUE DUR"
    Case 4
        typelecteur = "DISTANT"
    Case 5
        typelecteur = "CD ROM"
    Case 6
        DriveType = "RAMDISK"
  End Select
  nomvolume = Space$(15)
  ResStr = Space$(32)
  retVal = GetVolumeInformation(lecteur, nomvolume, Len(nomvolume), _
                        numserie, dum, dum, ResStr, Len(ResStr))
  Serie = Right(String(8, "0") + Hex$(numserie), 8)
  nmserie = Left(Serie, 4) + "-" + Right$(Serie, 4)
  numvolume = Trim(nomvolume)
End Sub



 


1 2

Cette discussion est classée dans : explorer, windows, dossier, usb, soucis


Répondre à ce message

Sujets en rapport avec ce message

Explorateur windows [ par techouet ] Salut tout le monde!Je recherche un moyen pour sélectionner un dossier à l'aide d'un exploratuer du type windows.En effet la commande GetOpenFileName Recharger explorer.exe apres le demarrage de Windows [ par Jeremy Salmon ] Bonjour,Voila le probleme :Dans system.ini j'ai remplace le [shell]=explorer.exe (l'interface du bureau de Windows Standard) par une application bidon capter les evenements de l'explorer de windows [ par mathias31 ] bonjours a tous !De quelle maniere peut on intercepter l'evenement qui ce produit lorsque l'on clique sans relacher le boutton de droite o capter les evenements de l'explorer de windows [ par mathias31 ] bonjours a tous !De quelle maniere peut on intercepter l'evenement qui ce produit lorsque l'on clique sans relacher le boutton de droite ou de gauche Windows XP : mes documents!!! [ par GhnombX ] Hello!Je voudrais déclacer l'adresse du dossier ou sont stockés les trucs sur winXPC:\Documents and Settings\[utilisateur]\Mes documentspour une adres Comment visualiser un contenu d'un site FTP comme sous windows explorer et ci déplacer [ par Alf ] Bonjour,Y a t'il une ou des personnes qui sachent comment je peux visulaliser le contenu d'un site FTP comme avec windows Explorer, m'y deplacer et se Il est ou le dossier windows !!!!!!!!!!!!!!!!! [ par Booster ] Slt je voudrais ne pas ordonner un disque dur a mon programe je voudrais que mon programme cherche automatiquement le disque dur ou ce trouve windowsp dossier %System% [ par ironz ] salut,je voudrai savoir s'il existe un nom pour le dossier systeme.example: je veut ke le program ouvre le dossier systeme.je sais ke dans des setup c WTF??? Erreur avec dossier windows [ par ironz ] jai mit ca dans ma form:Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Lon mot de passe pour dossier windows [ par Pouvoir ] et bien ! j'ai un dossier précis ,et je veux limiter l'acces.par un mot de passe... mais Comment?


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,248 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales