Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Detectar memoria USB (https://www.clubdelphi.com/foros/showthread.php?t=69579)

LuisAlf:: 26-08-2010 17:03:36

Detectar memoria USB
 
Hola a todos por aquí...

He estado trabajando con una aplicación sencilla, tipo gadget
Y ultimamente decidi que mi aplicación pudiera detectar, cuando una memoria se conectara a la pc...
Estuve experimentando un poco y pues si logre obtenerlo gracias a la validación de la función disksize en un timer de mi programilla...

Pero no me convenció mi método del todo y supongo que habra alguna solución más optima de detectar la unidad nueva que se conecto...

Espero que alguien me pueda ayudar en esto...

Sin más gracias por leer este post...

ecfisa 26-08-2010 19:17:04

Hola LuisAlf.

Revisá este Link


Saludos.

LuisAlf:: 26-08-2010 20:05:04

Interesante....

Creo que mejor me quedo con mi codigo...

jejeje!!!

De todas formas se agradece tu aporte, voy a ver que le puedo entender...

kurono 28-08-2010 00:33:13

yo utilizo este codigo para tales fines solo debes ajustarlo a tus necesidades

Código Delphi [-]
var

  Letra: Char;

begin

  for Letra:= 'C' to 'Z' do

    if GetDriveType(Pchar(Letra+':\')) = DRIVE_REMOVABLE then

    begin

      
      ShowMessage('Esto es una memoria usb '+Letra+':\');
    

end;

end;

ecfisa 28-08-2010 01:18:24

Hola kurono.

Muy bueno el código... simple y funcional.

Seguro que le servirá a más de uno, empezando por el que escribe... :)

Saludos.

kurono 28-08-2010 01:27:31

ojala que le sirva tambien a nuestro amigo LuisAlf

LuisAlf:: 29-08-2010 00:27:25

Supongo que si me servira !:P

Gracias... Kurono...

De repente se me vino a la mente uno de tus post donde te da una santa regañada el maestro Delphius (I.A)...

jejeje..

Aqui les dejo la forma en que yo lo hagó dentro de mi aplicación...

Código Delphi [-]
 
procedure TForm1.TimerDetenerTimer(Sender: TObject);
var
  tam1:int64;
  tam2:int64;
begin
  //////////////////////
   if abiertos then begin
    tam1:=disksize(6);//f:\
    tam2:=disksize(5);//e:\

    if tam1<>-1 then
      ShellExecute(0, 'open', nil, nil, PAnsiChar('f:\'), SW_SHOW);
    if(tam2<>-1)and(tam1=-1) then
      ShellExecute(0, 'open', nil, nil, PAnsiChar('e:\'), SW_SHOW);
      abiertos:=false;
   end;
...
................

Algo asi... aunque aqui esta muy especifico el codigo..y eso es lo que no me gustaba...

Gracias de Nuevo..

kurono 29-08-2010 20:14:54

ahhh jaja ya se me olvidaba esa regañada que delphius me dio y no solamente fue una sino varias cuando eso no tenia tanto tiempo libre como para pensar bien como crear los codigos fuente de mis aplicacion de modo que recurria aqui para resolverlo de rapido y por eso delphius me regañaba de ves en cuando .bueno en cuanto a tu codigo si bien como dices es algo especifico siempre es bueno saber hacer las cosa de varias manera para asi deservolvernos en situaciones diferentes que se nos presentan

Delphius 01-09-2010 04:01:48

Cita:

Empezado por LuisAlf:: (Mensaje 374863)
Supongo que si me servira !:P

Gracias... Kurono...

De repente se me vino a la mente uno de tus post donde te da una santa regañada el maestro Delphius (I.A)...

jejeje..

¿Te refieres a éste? ;)

Cita:

Empezado por kurono (Mensaje 374910)
ahhh jaja ya se me olvidaba esa regañada que delphius me dio y no solamente fue una sino varias cuando eso no tenia tanto tiempo libre como para pensar bien como crear los codigos fuente de mis aplicacion de modo que recurria aqui para resolverlo de rapido y por eso delphius me regañaba de ves en cuando .

¡Te deschabaste! :D Si yo ya sabía que aquí vienen estudiantes bien flojos que prefieren la salida fácil antes que intentarlo y/o sentar el trasero en el asiento y estudiarlo.

Ya ves... otro regaño :p:D.
La cosa es que se intuye cuando un estudiante viene con ganas de aprender y cuando a pedir la tarea. Con el paso del tiempo uno ya los "huele".
Espero que esas reprimendas sirvan de algo kurono.

Esto me confirma que si fuera profesor sería muy insoportable y el más odiado... ¡Tendría bien cortitos y derechitos a mis víctimas... digo estudiantes! :D Lo peor de todo es que muchos me dicen que debería estar en la docencia. :rolleyes:

Saludos,

kurono 01-09-2010 04:14:07

hola amigo delphius si bien los estudiante o mejor dicho a cualquier persona no le gusta que lo regañen en eso regaño es que estan las enseñanza en mi caso esos regaño me sirvieron de mucho ya que me ayudo a tener mas logica a la hora de programar y me imagino que a muchos miembros de aqui le a pasado lo mismo

LuisAlf:: 01-09-2010 17:52:54

jajaja!

Que feo cuando uno se siente presionado...yo tambien he pasado por esos momentos..gracias a la Escuela...:mad:

santiago14 23-05-2011 14:17:49

Cita:

Empezado por kurono (Mensaje 374788)
yo utilizo este codigo para tales fines solo debes ajustarlo a tus necesidades

Código Delphi [-]
var
  Letra: Char;
begin
  for Letra:= 'C' to 'Z' do
    if GetDriveType(Pchar(Letra+':\')) = DRIVE_REMOVABLE then
    begin   
      ShowMessage('Esto es una memoria usb '+Letra+':\');
    end;
end;

Que mas puedo decir, este pedacito de código es una maravilla... mis felicitaciones a su creador; o por lo menos al que lo difundió por la comunidad.
Ahora conecto y desconecto mis dispositivo USB y automáticamente puedo detectar a que unidad fueron asignados... jejeje.

Saludos.

LuisAlf:: 23-05-2011 17:29:53

Cita:

Empezado por santiago14 (Mensaje 400949)
Ahora conecto y desconecto mis dispositivo USB...

Hola Santiago14...

A mi también me funcionó de maravilla el código...
Aunque me intrigaron tus palabras..heehe.. como es que puedes desconectar los dispositivos USB por medio de código..

Si sabes la respuesta me encantaria saberla.. :D

ecfisa 23-05-2011 21:28:11

Hola LuisAlf::

En este enlace está como activar/desactivar los puertos USB.

Saludos.

darkmir 30-04-2013 01:30:56

Misma funcion pero en builder c++?
 
var Letra: Char;
begin
for Letra:= 'C' to 'Z' do
if GetDriveType(Pchar(Letra+':\')) = DRIVE_REMOVABLE then
begin
ShowMessage('Esto es una memoria usb '+Letra+':\');
end;
end;
//

como seria en builder c++?

ecfisa 30-04-2013 04:16:46

Hola darkmir.

Por favor cuando incluyas código en tus mensaje utiliza TAG's para darle más legibilidad:



Código:

void Show_Usb(TStrings *TS)
{
  for(char i = 'A'; i <= 'Z'; i++)
  if(GetDriveType(AnsiString((AnsiString)i + ":\\").c_str()) == DRIVE_REMOVABLE)
    TS->Add((AnsiString)i + ":\\" + "  Es una memoria USB");
}

Llamada ejemplo:
Código:

Show_Usb(ListBox1->Items);
Saludos. :)


La franja horaria es GMT +2. Ahora son las 10:13:09.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi