xenos01
Messages postés5Date d'inscriptionvendredi 4 juillet 2003StatutMembreDernière intervention19 décembre 2006
-
17 déc. 2006 à 01:47
cs_couf
Messages postés213Date d'inscriptiondimanche 5 janvier 2003StatutMembreDernière intervention 6 janvier 2011
-
19 déc. 2006 à 23:53
Salut tt le monde:
je cherche comment lister tt les lecteur logique (Hdd/partition, CD-Rom, Lecteur amovible, lecteur disquette) d'un ordinateur,
merci pour votre aide et bonne chance
xenos01
Messages postés5Date d'inscriptionvendredi 4 juillet 2003StatutMembreDernière intervention19 décembre 2006 18 déc. 2006 à 13:47
Merci a vous ts pour votre aide ... c trés sympa...
voilà une procedure et une fonctin que j'ai recupérer depuis un site et que j'ai modifier
//cette Procedure affiche les noms des lecteurs logique ...
Procedure LogicalDrives();
var DriveBits: set of 0..25;
Drives, DriveNum: Integer;
DriveLetter: String;
ListDrive: String;
begin
Drives := GetLogicalDrives();
if Drives <> 0 then
begin
Integer(DriveBits) := Drives;
for DriveNum := 0 to 25 do
begin
if (DriveNum in DriveBits) then
begin
DriveLetter := Char(DriveNum+Ord('A'))+':';
WriteLn('Lecteur : ', DriveLetter);;
end;
end;
end;
end;
//cette fonction renvoi une liste des lecteurs logique sous la forme ACDEF , A= le 1er lecteur, B= Le 2eme ... etc...
Function LogicalDrives(): String;
var DriveBits: set of 0..25;
Drives, DriveNum: Integer;
DriveLetter: String;
ListDrive: String;
begin
try
Drives := GetLogicalDrives();
if Drives <> 0 then
begin
Integer(DriveBits) := Drives;
for DriveNum := 0 to 25 do
begin
if (DriveNum in DriveBits) then
begin
DriveLetter := Char(DriveNum+Ord('A'));
ListDrive := ListDrive+DriveLetter;
end;
end;
end
else
ListDrive := '';
finally
Result := ListDrive;
end;
end;
cs_couf
Messages postés213Date d'inscriptiondimanche 5 janvier 2003StatutMembreDernière intervention 6 janvier 20111 17 déc. 2006 à 22:08
Salut,
Je ne sais pas si cela peux aider mais je suis entrain de travailler en ce moment sur un travail similaire.(voir ejecter un lecteur usb)
Donc moi je vais chercher ici sur la base de registre
HKLM\system\MountedDevices
tu as ce qui est connecté et ce qui a été connecté.
Après si tu sais lire la base de registre c'est un jeu d'enfant.
@Couf : Oui peut etre mais la base de registre dépend de ton OS ce qui est une sacré limitation. A mon avis, les solutions de ThWilliam et Japee sont plus flexibles.
cs_couf
Messages postés213Date d'inscriptiondimanche 5 janvier 2003StatutMembreDernière intervention 6 janvier 20111 19 déc. 2006 à 19:02
Salut,
Je sais bien que tu as trouvé une solution en revanche, je me suis amusé
à refaire un code si cela interesse certains avec la base de registre et 2 Listbox
Un pour les lecteurs , et l'autre pour avoir les valeurs des clés cela te permet de savoir le type de lecteur USB , ide, réseaux ....
cela donne à peuprès ce petit bout de code
***********************************************************
***********************************************************
procedure TForm1.Button1Click(Sender: TObject);
var reg :tregistry; {ne pas oublier uses registry} compt, i: integer;
s_Ch1, s_Ch, ch :string;
ListBox:TListBox;
begin
reg:= tregistry.Create;
//valeur racine
reg.RootKey:= HKEY_LOCAL_MACHINE;
//clé et sous clé
reg.OpenKey('\SYSTEM\MountedDevices',false);
//ici on met les valeurs des clés dans le list box
Reg.GetValueNames(listbox1.Items);
compt:= listbox1.Count -1;
For i:= 0 to compt -1 do
begin
//procédure pour récupérer les lettres des lecteurs
ch := listbox1.Items.Strings[i];
s_Ch:=copy(ch,1,12);
if s_Ch='\DosDevices\'
then
begin
s_ch1:= copy(ch,13,2) ;
listbox2.Items.Add(s_CH1)
end;
end;
reg.CloseKey;
reg.Free;
end;
end.
****************************************************************
****************************************************************
Voila le code n'est pas très estéthique, mais cela donne une autre façon de faire.
Et surtout permet de savoir ce qui s'est connecté sur le poste.
On peut pousser plus loin avec ce type de code, pour savoir qui s'est connecté sur un serveur, et comment.....