| [Résolu][Delphi]Numéro d'un Drive | |
|
|
Auteur | Message |
---|
ScOrPiOn Mister Forum 2006
Nombre de messages : 3090 Age : 44 Date d'inscription : 11/08/2004
| Sujet: [Résolu][Delphi]Numéro d'un Drive Mar 27 Déc - 12:22 | |
| Salam j'ai installé le composant Tdiskeject, qui sert à ejecter des composants materiels comme clé usb par exemple! mais comme il ne contient que 4 propriétés, et la seul que je peux manipuler c'est le numéro du Drive par défaut y'a #0 ! je voudrai ssavoir comment je peux obtenir les numéro des drives, sachant que ces numéros changent d'un pc à un autre tout ça est sous windows ! merci d'avances
Dernière édition par le Mer 28 Déc - 17:14, édité 1 fois | |
|
| |
ScOrPiOn Mister Forum 2006
Nombre de messages : 3090 Age : 44 Date d'inscription : 11/08/2004
| Sujet: Re: [Résolu][Delphi]Numéro d'un Drive Mar 27 Déc - 15:25 | |
| j'ai pu résoudre ce probleme en utilisant un TDrivecombobox, et en affectant la valeur du lecteur sélectionné au TDiskEject comme suit : - Code:
-
Diskeject.drive:=Drivecombobox.drive;
mais lorsque je mets Diskeject.eject pour ejecter le drive sélectionné, rien ne se passe (pour un flashdisk) et le cd n'apparait pas malgré qu'il est activé! et si je veux ejecter une partition c: ou d:, il affiche une erreur (c normal) mais pourquoi il n'ejecte pas le flash disk? | |
|
| |
ScOrPiOn Mister Forum 2006
Nombre de messages : 3090 Age : 44 Date d'inscription : 11/08/2004
| Sujet: Re: [Résolu][Delphi]Numéro d'un Drive Mar 27 Déc - 18:09 | |
| avec le lecteur Cd ça marche bien (il l'ejecte) mais avec le flash disk il ne fat rien et sait bient que le flashdisk n'est pas ejecté avec : - Code:
-
if dd.ejected=false then showmessage('Vous pouvez retirer votre materiel') else showmessage('materiel non éjécté'); est-ce que je dois aller un peu plus profondément dans ma programmation pour deconnecter un flashdisk? | |
|
| |
zs_said Membre Eclairé
Nombre de messages : 285 Date d'inscription : 10/08/2004
| Sujet: Re: [Résolu][Delphi]Numéro d'un Drive Mar 27 Déc - 18:12 | |
| dis moi, tu fais un monologue ???? (je plaisente, je voulais pas te laisser poster tt seul ds ce topic) | |
|
| |
ScOrPiOn Mister Forum 2006
Nombre de messages : 3090 Age : 44 Date d'inscription : 11/08/2004
| Sujet: Re: [Résolu][Delphi]Numéro d'un Drive Mar 27 Déc - 18:15 | |
| - zs_said a écrit:
- dis moi, tu fais un monologue ????
(je plaisente, je voulais pas te laisser poster tt seul ds ce topic) merci said pour cette intrusion, c'est mon lot quotidien de réponse par ls fantomes de ce forum (hacha jojo) ! comme s'ils n'ont jamais touché à delphi | |
|
| |
zs_said Membre Eclairé
Nombre de messages : 285 Date d'inscription : 10/08/2004
| Sujet: Re: [Résolu][Delphi]Numéro d'un Drive Mar 27 Déc - 18:17 | |
| faudra peut etre changer de langage de programmation (avec du JAVA erih ma yekisakch m3a ranou) | |
|
| |
jojo Membre Inestimable
Nombre de messages : 305 Age : 74 Emploi : Ingenieur Date d'inscription : 29/08/2004
| Sujet: Re: [Résolu][Delphi]Numéro d'un Drive Mar 27 Déc - 21:47 | |
| Salam
Scorp, pourquoi ne pas chercher une API de windows pour faire cela. Tu n'aura pas a gerer le probleme menuellement --> moins de complications dans ton programme. Tu n'aura qu'a utiliser cette API et Windows se charge du reste
PS : Par curiosite (c'est un vilain defaut), Tu developpe quoi au juste ???? | |
|
| |
ScOrPiOn Mister Forum 2006
Nombre de messages : 3090 Age : 44 Date d'inscription : 11/08/2004
| Sujet: Re: [Résolu][Delphi]Numéro d'un Drive Mar 27 Déc - 21:57 | |
| bon jojo c'est pas grave, t'es curieux dans le bon sens ! bein nous sommes en train de développer un module qu'on integreras dans nos applications, ce module sert à sauvegarder la base de données dans un autre support, avant nous utilisions l'outils de sauvegarde et restauration de windows,serte il est bien mais il estcompliqué pour un non-informaticien donc on a développé un module, qui fait la copie et on veut simplifier ça pou rl'utilisateur et on lui rajoute meme un bouton pour ejecter le support qu'il a séléctionné! pour le cd rom ça marche, mais pas pour le flash disk j'ai pensé au Api de windows, mais je ne les connais pas! | |
|
| |
jojo Membre Inestimable
Nombre de messages : 305 Age : 74 Emploi : Ingenieur Date d'inscription : 29/08/2004
| Sujet: Re: [Résolu][Delphi]Numéro d'un Drive Mar 27 Déc - 22:36 | |
| Salam Scorp, j'ai trouve des trucs interessants dans www.delphifr.comFais une recherche "Ejecter usb" et tu trouvera normalement la solution. Bon dev | |
|
| |
ScOrPiOn Mister Forum 2006
Nombre de messages : 3090 Age : 44 Date d'inscription : 11/08/2004
| Sujet: Re: [Résolu][Delphi]Numéro d'un Drive Mar 27 Déc - 22:43 | |
| merci jojo t'es un amouuuuuuur | |
|
| |
ScOrPiOn Mister Forum 2006
Nombre de messages : 3090 Age : 44 Date d'inscription : 11/08/2004
| Sujet: Re: [Résolu][Delphi]Numéro d'un Drive Mer 28 Déc - 16:42 | |
| Je n'ai trouvé dan sce site que comment détecter un usb ou autre périphérique, mais pas comment l'ejecter! mais c'est déja ça! pour le composant TDiskeject, en lisant bien son Read-me, j'ai su qu'il n'ejecte pas les usb! donc ce topic n'avais pas raison d'etre mais j'ai apris des choses! merci | |
|
| |
ScOrPiOn Mister Forum 2006
Nombre de messages : 3090 Age : 44 Date d'inscription : 11/08/2004
| Sujet: Re: [Résolu][Delphi]Numéro d'un Drive Mer 28 Déc - 17:12 | |
| au cas où ça interesse quelqu'un : detection et obtention des informations sur un périphérique USB - Code:
-
unit USB_D;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
PDEV_BROADCAST_HDR = ^TDEV_BROADCAST_HDR; TDEV_BROADCAST_HDR = packed record dbch_size : DWORD; dbch_devicetype : DWORD; dbch_reserved : DWORD; end;
PDEV_BROADCAST_VOLUME = ^TDEV_BROADCAST_VOLUME; TDEV_BROADCAST_VOLUME = packed record dbcv_size : DWORD; dbcv_devicetype : DWORD; dbcv_reserved : DWORD; dbcv_unitmask : DWORD; dbcv_flags : WORD; end;
type TForm1 = class(TForm)
private { Déclarations privées } procedure WMDeviceChange(var Msg: TMessage); message WM_DEVICECHANGE; public { Déclarations publiques } end;
var Form1: TForm1; GetLettre : string; implementation
uses Sauvegarde_Delphi;
{$R *.dfm}
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ // Capture Evenement windows "WMDeviceChange" procedure TForm1.WMDeviceChange(var Msg: TMessage); var VolName, FileSysName : Array[0..Max_Path]Of Char; VolSerial, FileMaxLen, FileFlags : DWord; S : string; begin //\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ // TESTER si DBT_DEVICEARRIVAL = $8000 // si oui, ne traiter que les périphériques de stockage de type 0=DeviceTypeOEM //\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ if Msg.wParam =$8000 then begin if PDEV_BROADCAST_HDR( Msg.LParam )^.dbch_devicetype <>2 then exit; if PDEV_BROADCAST_VOLUME( Msg.LParam )^.dbcv_flags <>0 then exit;
// A partir d'ici vous pouvez mettre votre code a executer en cas // de connection d'un peripherique de stockage USB. // Vous pouvez aussi par exemple comparer le "Non de volume" // de ce péripphérique pour affiner le declenchement.
//Affiche dans le textbox les infos du periphérique connécté (pour l'exemple) S := 'Connection du périphérique !' +#13+#10+#13+#10; // Sa lettre "DeviceID" str(ln(PDEV_BROADCAST_VOLUME( Msg.LParam )^.dbcv_unitmask)/ln(2)+Ord('A'):2:0,GetLettre); S := S + 'DeviceID :'+#9+#9+ char(strtoint(GetLettre)) + ':\' + #13+#10; // NomVolume + SySfichier + N° serie du periphérique If GetVolumeInformation(pchar(char(strtoint(GetLettre))+':\'),VolName,Max_Path,@VolSerial, FileMaxLen, FileFlags,FileSysName,Max_Path) Then S := S +'Nom du Volume :' +#9+#9+ VolName +#13+#10; // Taille et free espace du periphérique S := S + 'Taille totale :' +#9+#9+ FloatToStrF(DiskSize(strtoint(GetLettre)-64)div 1024, ffNumber, 18, 0) + ' Kilo-octets' + #13+#10; S := S + 'Disponible :' +#9+#9+ FloatToStrF(DiskFree(strtoint(GetLettre)-64) div 1024, ffNumber, 18, 0) + ' Kilo-octets'; Fc_Sauvegarde_Delphi.memo3.text:=S; Fc_Sauvegarde_Delphi.edit1.text:=char(strtoint(GetLettre)); beep; // Envoi un beep sonore a la connection end; // Fin de traitement "connection periphérique"
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ // TESTER si DBT_DEVICEREMOVECOMPLETE = $8004 // si oui, ne traiter que les périphériques de stockage de type 0=DeviceTypeOEM //\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ if Msg.wParam =$8004 then begin if PDEV_BROADCAST_HDR( Msg.LParam )^.dbch_devicetype <>2 then exit; if PDEV_BROADCAST_VOLUME( Msg.LParam )^.dbcv_flags <>0 then exit;
// A partir d'ici vous pouvez mettre votre code a executer en cas // de déconnection d'un peripherique de stockage USB. // Affiche dans le textbox le periphérique déconnécté (pour l'exemple) S := 'Déconnection du périphérique !' +#13+#10+#13+#10; // Sa lettre "DeviceID" str(ln(PDEV_BROADCAST_VOLUME( Msg.LParam )^.dbcv_unitmask)/ln(2)+Ord('A'):2:0,GetLettre); S := S + 'DeviceID :' +#9+#9+ char(strtoint(GetLettre)) + ':\' + #13+#10; Fc_Sauvegarde_Delphi.memo3.text:=S; beep; // Envoi un beep sonore a la déconnection end; // Fin de traitement "déconnection periphérique" close; Fc_Sauvegarde_Delphi.setfocus;
end;
end. | |
|
| |
Contenu sponsorisé
| Sujet: Re: [Résolu][Delphi]Numéro d'un Drive | |
| |
|
| |
| [Résolu][Delphi]Numéro d'un Drive | |
|