PDA

Ver la Versión Completa : capturar letra de unidad de PEN DRIVE


emeceuy
03-10-2007, 05:38:58
hola... bueno tengo una consulta un tanto rebuscada, pero veré si me puedo explicar bien...

necesitaría detectar si una memoria pen drive se conecta a mi sistema y capturar la letra de la unidad de la misma para así poder leer o escribir en él... supongamos además que se el nombre de ese pen drive, el que muestra windows (por ejemplo, "PenDrive3")

lo optimo sería que al conectarla mi aplicación lo detectara (que no sabría en que evento tendría que poner la busqueda), pero tambien me conformaría utilizando un timer que chequee a cada rato si existe una unidad llamada "PenDrive3" o no... y en cualquiera de los dos casos extraer su letra de la unidad, para despues poder operar en el, etc...

de yapa, me gustaría saber como puedo hacer para obtener la fecha de modificado de un archivo...

bueno, muchas gracias !!!

dec
03-10-2007, 06:14:29
Hola,

Definitivamente hay que usar más el buscador de los foros (http://www.clubdelphi.com/foros/showthread.php?t=34381). :rolleyes:

emeceuy
03-10-2007, 23:16:05
si, error mío :( busque "pendrive" y debería haberlo hecho en forma separada... de cualquier manera muchas gracias por el link !! fue de gran ayura...

ya puedo detectar si está conectado o no el pen, y salta el evento cuando lo conecto, pero tengo la siguiente duda de ese link y la pagina de roman: se habla de la unidad, pero no tengo claro como hacer para capturar que letra de unidad tiene asignado ese pen, y tambien se habla de la funcion getdrivename, que necesitaría para chequear si el pen que se conectó es el que tiene el nombre que yo quiero, y no se como hacer para poder obtener esas dos cosas, la letra de unidad y el nombre de la unidad...

muchas gracias como siempre !!! salu2

emeceuy
03-10-2007, 23:38:22
encontre este codigo en el foro, creo que es la solucion...

procedure ObtenerInfo;
var
drive : char;
pVolName : PChar;
pFSBuf : PChar;
SectPerCls,
BytesPerCls,
FreeCls,
TotCls : DWord;

begin
for drive := 'A' to 'Z' do
begin
if GetDriveType(PChar(drive + ':\')) in [DRIVE_CDROM] then
begin
GetMem(pVolName, MAX_PATH);
GetMem(pFSBuf, MAX_PATH);
GetVolumeInformation(PChar(drive + ':\'), pVolName, MAX_PATH, nil,
SectPerCls, BytesPerCls, pFSBuf, MAX_PATH);
GetDiskFreeSpace(PChar(drive + ':\'), SectPerCls, BytesPerCls, FreeCls, TotCls);
if FormatFloat('0.00', (SectPerCls * BytesPerCls * TotCls / 1000000)) = '0.00' then
Form1.ComboBox1.Items.Add('No hay CD o DVD en [' + drive + ':\]')
else
Form1.ComboBox1.Items.Add(PChar(pVolName) + ' - [' + drive + ':\]');

FreeMem(pVolName, MAX_PATH);
FreeMem(pFSBuf, MAX_PATH);
end;
end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
ComboBox1.Clear;
ObtenerInfo;
ComboBox1.DroppedDown := TRUE;
end;

yo pondría [DRIVE_REMOVABLE] en lugar de CDROM y pondría que comienze en B o C, para que no busque en la disquetera (la A)...

todavía no encontré como hacer para detectar la fecha de modificacion de un archivo, voy a seguir buscando... si alguien la tiene clara, que me cuente ;)

muchas gracias !!!

cHackAll
04-10-2007, 23:29:24
...todavía no encontré como hacer para detectar la fecha de modificacion de un archivo, voy a seguir buscando...

GetFileTime