OVH Cloud OVH Cloud

USB : disque installe

14 réponses
Avatar
mg
Salut,

je suis en train d'ecrire un pgm qui permet de faire une copie d'un dd ver
une autre dd externe connecter en usb ( je parametre la copie disant dd =
f:\).
mon probleme consite a detecter si le dd externe est bien conecter au pc et
quelle lettre lui est attribué. dasn le cas ou je met un autre cle usb ou
cam.

merci davance

10 réponses

1 2
Avatar
Jacques93
Bonjour mg,
mg a écrit :
Salut,

je suis en train d'ecrire un pgm qui permet de faire une copie d'un dd ver
une autre dd externe connecter en usb ( je parametre la copie disant dd > f:).
mon probleme consite a detecter si le dd externe est bien conecter au pc et
quelle lettre lui est attribué. dasn le cas ou je met un autre cle usb ou
cam.




Tu peux essayer ceci :

http://www.vbfrance.com/codes/USB-DETECTER-CONNEC-DECONNECTION-DUN-PERIPHERIQUE-STOCKAGE_29076.aspx

Ne fonctionne qu'avec les périphériques de stockage de masse. Cela donne
ceci :

http://cjoint.com/?ewt3sxx3tN

Utilise le composant Microsoft Sysinfo Conrtol 6.0 et les événements :

SysInfo1_DeviceArrival (ByVal devicetype As Long, _
ByVal deviceid As Long, _
ByVal devicename As String, _
ByVal devicedata As Long)

et

SysInfo1_DeviceRemoveComplete(ByVal devicetype As Long, _
ByVal deviceid As Long, _
ByVal devicename As String, _
ByVal devicedata As Long)


--
Cordialement,

Jacques.
Avatar
mg
c bien ce code sauf que la je doit connecter/deconnecter le dd pour savoir
sur kel lettre il se trouve.

moi je veux savoir sans pour autant declencher ces evenements.

merci.
"Jacques93" a écrit dans le message de news:
#
Bonjour mg,
mg a écrit :
> Salut,
>
> je suis en train d'ecrire un pgm qui permet de faire une copie d'un dd


ver
> une autre dd externe connecter en usb ( je parametre la copie disant dd


> > f:).
> mon probleme consite a detecter si le dd externe est bien conecter au pc


et
> quelle lettre lui est attribué. dasn le cas ou je met un autre cle usb


ou
> cam.
>

Tu peux essayer ceci :




http://www.vbfrance.com/codes/USB-DETECTER-CONNEC-DECONNECTION-DUN-PERIPHERI
QUE-STOCKAGE_29076.aspx

Ne fonctionne qu'avec les périphériques de stockage de masse. Cela donne
ceci :

http://cjoint.com/?ewt3sxx3tN

Utilise le composant Microsoft Sysinfo Conrtol 6.0 et les événements :

SysInfo1_DeviceArrival (ByVal devicetype As Long, _
ByVal deviceid As Long, _
ByVal devicename As String, _
ByVal devicedata As Long)

et

SysInfo1_DeviceRemoveComplete(ByVal devicetype As Long, _
ByVal deviceid As Long, _
ByVal devicename As String, _
ByVal devicedata As Long)


--
Cordialement,

Jacques.


Avatar
Picalausa François
Hello,

Le code suivant pourra peut-être te fournir les informations utiles pour
reconnaitre un disque, ou du moins trouver un disque approprié:

'Une form, Form1 avec deux listbox, List1 et List2
Option Explicit

'Windows XP, Windows 2000 Professional,
'Windows NT Workstation, Windows Me, Windows 9x,
'Windows Server 2003, Windows 2000 Server, Windows NT Server

'The GetVolumeInformation function retrieves information about a
'file system and volume whose root directory is specified.

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

'The GetLogicalDriveStrings function fills a buffer with strings
'that specify valid drives in the system.
Private Declare Function GetLogicalDriveStrings _
Lib "kernel32" _
Alias "GetLogicalDriveStringsA" _
( _
ByVal nBufferLength As Long, _
ByVal lpBuffer As String _
) _
As Long

'The GetDriveType function determines whether a disk drive
'is a removable, fixed, CD-ROM, RAM disk, or network drive.
Private Declare Function GetDriveType _
Lib "kernel32" _
Alias "GetDriveTypeA" _
( _
ByVal lpRootPathName As String _
) _
As Long

'The GetDiskFreeSpace function retrieves information about
'the specified disk, including the amount of free space on the disk.
Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" _
Alias "GetDiskFreeSpaceExA" _
(ByVal lpRootPathName As String, _
lpFreeBytesAvailableToCaller As Currency, _
lpTotalNumberOfBytes As Currency, _
lpTotalNumberOfFreeBytes As Currency) As Long

Private Enum DRIVE
DRIVE_UNKNOWN = 0
DRIVE_NO_ROOT_DIR = 1
DRIVE_REMOVABLE = 2
DRIVE_FIXED = 3
DRIVE_REMOTE = 4
DRIVE_CDROM = 5
DRIVE_RAMDISK = 6
End Enum

Const MAX_PATH = 260
Const ERROR_NOT_READY = 21

Private Sub Form_Load()
'Enumère les dossiers présents
Dim tlngBufferLength As Long
Dim tstrBuffer As String
Dim tastrDrives() As String
Dim i As Long


'Retrouve la taille du buffer requise
'pour connaitre la lettre de tous les volumes
tlngBufferLength = 0
tstrBuffer = ""
tlngBufferLength = GetLogicalDriveStrings(tlngBufferLength, tstrBuffer)

'Retrouve les noms de volumes
tstrBuffer = String$(tlngBufferLength, vbNullChar)
tlngBufferLength = GetLogicalDriveStrings(tlngBufferLength, tstrBuffer)

'Sépare chaque nom de volume
tastrDrives = Split(tstrBuffer, vbNullChar)

'Ajoute les volumes à la liste
For i = LBound(tastrDrives) To UBound(tastrDrives)
List1.AddItem tastrDrives(i)
Next i

List2.FontName = "Courier New"
List2.FontSize = 10
End Sub

Private Function Align(strText As String, lngLength As Long) As String
If Len(strText) >= lngLength Then
Align = strText
Else
Align = strText & String$(lngLength - Len(strText), ".")
End If
End Function

Private Function GetTextLine(strProp As String, strValue As String) As
String
GetTextLine = Align(strProp, 20) & strValue
End Function

Private Function SizeToHumanReadableSize(Size As Variant) As String
Const MaxName As Long = 8
Dim i As Long
Dim SizeName(MaxName - 1) As String

SizeName(0) = "bytes"
SizeName(1) = "kb"
SizeName(2) = "Mb"
SizeName(3) = "Gb"
SizeName(4) = "Tb"
SizeName(5) = "Pb"
SizeName(6) = "Eb"
SizeName(7) = "Zb"

SizeToHumanReadableSize = Size
i = 0
While (SizeToHumanReadableSize > 1024 And i < MaxName)
SizeToHumanReadableSize = SizeToHumanReadableSize / 1024
i = i + 1
Wend

SizeToHumanReadableSize = Round(SizeToHumanReadableSize, 2) & " " &
SizeName(i)
End Function

Private Sub List1_Click()
Dim tstrVolName As String, tlngVolNameSize As Long
Dim tlngSerialNumber As Long, tlngMaxComponents As Long
Dim tlngFileSysFlags As Long, tlngDriveType As Long
Dim tlngReturnCode As Long
Dim tcurUserFree As Currency, tcurTotal As Currency
Dim tcurTotalFree As Currency
'Supprime les infos précédement contenues
List2.Clear

tlngVolNameSize = MAX_PATH
tstrVolName = String$(tlngVolNameSize, vbNullChar)

tlngReturnCode = GetVolumeInformation(List1.Text, _
tstrVolName, tlngVolNameSize, _
tlngSerialNumber, tlngMaxComponents, _
tlngFileSysFlags, vbNullString, 0)

If tlngReturnCode Then

tlngDriveType = GetDriveType(List1.Text)

'Retrouve diverses infos concernant le disque
If (InStr(1, tstrVolName, vbNullChar)) > 1 Then
List2.AddItem GetTextLine("Volume Name", _
Left$(tstrVolName, InStr(1, tstrVolName, vbNullChar)))
Else
List2.AddItem GetTextLine("Volume Name", "n/a")
End If

List2.AddItem GetTextLine("Serial", _
Format(Hex(tlngSerialNumber), "00000000")) 'identificateur du
disque
List2.AddItem GetTextLine("Drive type", Switch( _
tlngDriveType = DRIVE.DRIVE_UNKNOWN, "DRIVE_UNKNOWN", _
tlngDriveType = DRIVE.DRIVE_NO_ROOT_DIR, "DRIVE_NO_ROOT_DIR", _
tlngDriveType = DRIVE.DRIVE_REMOVABLE, "DRIVE_REMOVABLE", _
tlngDriveType = DRIVE.DRIVE_FIXED, "DRIVE_FIXED", _
tlngDriveType = DRIVE.DRIVE_REMOTE, "DRIVE_REMOTE", _
tlngDriveType = DRIVE.DRIVE_REMOTE, "DRIVE_REMOTE", _
tlngDriveType = DRIVE.DRIVE_CDROM, "DRIVE_CDROM", _
tlngDriveType = DRIVE.DRIVE_RAMDISK, "DRIVE_RAMDISK"))

'S'il s'agit de faire du backup, on pourrait simplement se
'poser la question de savoir si la taille est suffisante en plus du
drive type
If GetDiskFreeSpaceEx(List1.Text, tcurUserFree, _
tcurTotal, tcurTotalFree) Then
List2.AddItem GetTextLine("Free space (user)", _
SizeToHumanReadableSize(CVar(tcurUserFree) * 10000))
List2.AddItem GetTextLine("Total space", _
SizeToHumanReadableSize(CVar(tcurTotal) * 10000))
List2.AddItem GetTextLine("Free space (total)", _
SizeToHumanReadableSize(CVar(tcurTotalFree) * 10000))
End If

ElseIf Err.LastDllError = ERROR_NOT_READY Then
List2.AddItem GetTextLine("Device status", "ERROR_NOT_READY")
End If

End Sub

--
Picalausa François

"mg" a écrit dans le message de news:
%
Salut,

je suis en train d'ecrire un pgm qui permet de faire une copie d'un dd ver
une autre dd externe connecter en usb ( je parametre la copie disant dd > f:).
mon probleme consite a detecter si le dd externe est bien conecter au pc
et
quelle lettre lui est attribué. dasn le cas ou je met un autre cle usb ou
cam.

merci davance




Avatar
Jean-Marc
"Picalausa François" a écrit dans le message de
news:
Hello,



Private Function SizeToHumanReadableSize(Size As Variant) As String
Const MaxName As Long = 8
Dim i As Long
Dim SizeName(MaxName - 1) As String

SizeName(0) = "bytes"
SizeName(1) = "kb"
SizeName(2) = "Mb"
SizeName(3) = "Gb"
SizeName(4) = "Tb"
SizeName(5) = "Pb"
SizeName(6) = "Eb"
SizeName(7) = "Zb"

SizeToHumanReadableSize = Size
i = 0
While (SizeToHumanReadableSize > 1024 And i < MaxName)
SizeToHumanReadableSize = SizeToHumanReadableSize / 1024
i = i + 1
Wend

SizeToHumanReadableSize = Round(SizeToHumanReadableSize, 2) & " "


&
SizeName(i)
End Function



Hello,

J'adore la fonction SizeToHumanReadableSize() !

Je n'ai jamais expérimenté les valeurs de i=5, 6 et 7 ...

Peut être sur mon prochain PC ?

Quand même, 1,099,511,627,776 Giga (1 zetabyte),
ça commence à causer sérieusement :-))

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Avatar
Gloops
Salut,

Jean-Marc a écrit :
Quand même, 1,099,511,627,776 Giga (1 zetabyte),
ça commence à causer sérieusement :-))




C'est vrai que ça commence à faire crédible.

Je me rappelle avoir fait mon stage d'application sur un disque dur de
20 Mo.

Là-dessus, il y avait le système, l'interface graphique, l'application
de bases de données, le traitement de textes pour mettre en forme les
documents, la base que je développais, et encore un peu de place de libre.

ça fait quinze ans de ça, aussi. On n'écrivait rien en diagonale dans
les traitements de textes, et si on voulait que l'utilisateur puisse
lancer quelque chose autrement qu'en tapant une ligne de commandes il
fallait le programmer.

Quelques machines se distinguaient en portant un anti-virus, et parmi
celles-ci, quelques rares effectuaient de temps à autre une mise à jour.
Si on contaminait une machine, c'était par l'intermédiaire d'une
disquette (en général de 720 Ko).
Avatar
Patrice Henrio
tant qu'on en est aux souvenirs ... qui se souvient avoir débuté avec un
lecteur de cassette. Pour ce qui est des premiers disques durs, je crois me
souvenir d'en avoir utilisé un de 2MO mais je en suis plus très sûr.

Mes premières disquettes faisaient 180 KO, puis 360, 720 et enfin le
standard actuel 1,44 MO (enfin si on peut parler de standard pour un média
qui disparaît).

Ceci étant le changement d'échelle de taille de disques durs est un vrai
problème car il faut souvent ré-écrire le système d'exploitation
correspondant, la taille prévue pour stocker l'adresse d'un bloc étant trop
petite pour contenir d'aussi grands nombres. Je me souviens d'avoir eu à
travailler il y a quelques années à la création d'un DIR pour des CD car
cela n'existait pas tout au début.

Souvenirs, souvenirs.




"Gloops" a écrit dans le message de news:

Salut,

Jean-Marc a écrit :
Quand même, 1,099,511,627,776 Giga (1 zetabyte),
ça commence à causer sérieusement :-))




C'est vrai que ça commence à faire crédible.

Je me rappelle avoir fait mon stage d'application sur un disque dur de 20
Mo.

Là-dessus, il y avait le système, l'interface graphique, l'application de
bases de données, le traitement de textes pour mettre en forme les
documents, la base que je développais, et encore un peu de place de libre.

ça fait quinze ans de ça, aussi. On n'écrivait rien en diagonale dans les
traitements de textes, et si on voulait que l'utilisateur puisse lancer
quelque chose autrement qu'en tapant une ligne de commandes il fallait le
programmer.

Quelques machines se distinguaient en portant un anti-virus, et parmi
celles-ci, quelques rares effectuaient de temps à autre une mise à jour.
Si on contaminait une machine, c'était par l'intermédiaire d'une disquette
(en général de 720 Ko).


Avatar
Gloops
Patrice Henrio a écrit :
tant qu'on en est aux souvenirs ... qui se souvient avoir débuté avec un
lecteur de cassette. Pour ce qui est des premiers disques durs, je crois me
souvenir d'en avoir utilisé un de 2MO mais je en suis plus très sûr.




Oui, moi.
Y compris avoir passé la nuit sur un développement, sans penser
forcément à aller prévenir le gardien, tout-à-coup hop, plus de courant.
Avec un lecteur de cassettes, c'est clair qu'on ne fait pas une
sauvegarde chaque demi-heure.


Mes premières disquettes faisaient 180 KO, puis 360, 720 et enfin le
standard actuel 1,44 MO (enfin si on peut parler de standard pour un média
qui disparaît).



Ah, là, je suis battu : je suis passé "directement" de la cassette à la
disquette 720 Ko. Il est vrai que je suis resté quelques années sans
m'occuper d'informatique.


Ceci étant le changement d'échelle de taille de disques durs est un vrai
problème car il faut souvent ré-écrire le système d'exploitation
correspondant, la taille prévue pour stocker l'adresse d'un bloc étant trop
petite pour contenir d'aussi grands nombres.



Eh oui. Enfin avec le zetaoctet on devrait être tranquilles la semaine
prochaine :)

Je me souviens d'avoir eu à
travailler il y a quelques années à la création d'un DIR pour des CD car
cela n'existait pas tout au début.



Ah, carrément ?
La liste des tables avec les champs dans Access je savais, mais le DIR
je n'y aurais pas pensé. Enfin il est vrai qu'avec tout ce que je me
suis paluché comme filtres pour DOS ...



Souvenirs, souvenirs.



C'est Adamo, qui a chanté ça, non ?
Je peux dire qu'une famille de Français en vacances en Allemagne l'année
où c'est sorti y avait droit plus d'une fois.
Alors pour le coup c'est vrai que ça ne nous rajeunit pas.
Avatar
Patrice Henrio
>> Souvenirs, souvenirs.



C'est Adamo, qui a chanté ça, non ?
Je peux dire qu'une famille de Français en vacances en Allemagne l'année
où c'est sorti y avait droit plus d'une fois.
Alors pour le coup c'est vrai que ça ne nous rajeunit pas.




euh ...
souvenirs, souvenirs ... ça serait pas plutôt Johnny, non ?



"Gloops" a écrit dans le message de news:

Patrice Henrio a écrit :
tant qu'on en est aux souvenirs ... qui se souvient avoir débuté avec un
lecteur de cassette. Pour ce qui est des premiers disques durs, je crois
me souvenir d'en avoir utilisé un de 2MO mais je en suis plus très sûr.




Oui, moi.
Y compris avoir passé la nuit sur un développement, sans penser forcément
à aller prévenir le gardien, tout-à-coup hop, plus de courant. Avec un
lecteur de cassettes, c'est clair qu'on ne fait pas une sauvegarde chaque
demi-heure.


Mes premières disquettes faisaient 180 KO, puis 360, 720 et enfin le
standard actuel 1,44 MO (enfin si on peut parler de standard pour un
média qui disparaît).



Ah, là, je suis battu : je suis passé "directement" de la cassette à la
disquette 720 Ko. Il est vrai que je suis resté quelques années sans
m'occuper d'informatique.


Ceci étant le changement d'échelle de taille de disques durs est un vrai
problème car il faut souvent ré-écrire le système d'exploitation
correspondant, la taille prévue pour stocker l'adresse d'un bloc étant
trop petite pour contenir d'aussi grands nombres.



Eh oui. Enfin avec le zetaoctet on devrait être tranquilles la semaine
prochaine :)

Je me souviens d'avoir eu à travailler il y a quelques années à la
création d'un DIR pour des CD car cela n'existait pas tout au début.



Ah, carrément ?
La liste des tables avec les champs dans Access je savais, mais le DIR je
n'y aurais pas pensé. Enfin il est vrai qu'avec tout ce que je me suis
paluché comme filtres pour DOS ...



Souvenirs, souvenirs.



C'est Adamo, qui a chanté ça, non ?
Je peux dire qu'une famille de Français en vacances en Allemagne l'année
où c'est sorti y avait droit plus d'une fois.
Alors pour le coup c'est vrai que ça ne nous rajeunit pas.



Avatar
Gloops
>
euh ...
souvenirs, souvenirs ... ça serait pas plutôt Johnny, non ?



Hum, peut-être des souvenirs pas très frais pour ce qui me concerne,
finalement.
Je devais mesurer quelque chose comme trois pommes.
Avatar
Clive Lumb
"mg" a écrit dans le message de
news:%
Salut,

je suis en train d'ecrire un pgm qui permet de faire une copie d'un dd ver
une autre dd externe connecter en usb ( je parametre la copie disant dd > f:).
mon probleme consite a detecter si le dd externe est bien conecter au pc


et
quelle lettre lui est attribué. dasn le cas ou je met un autre cle usb ou
cam.

merci davance




Pour info (et rien à voir avec vb), dans un fichier bat ou cmd on peut
récuperer la lettre du disque (du bat) avec
Set DriveLet=%~d0
Je l'utilise souvent dans des petits scripts de sauvegarde sur dd externe.
Clive
1 2