Resultados 1 al 7 de 7

Detectar dispositivos USB

  1. #1 Detectar dispositivos USB 
    Moderador Global Avatar de hystd
    Fecha de ingreso
    Jul 2005
    Ubicación
    1, 11, 21, 1211...
    Mensajes
    1.596
    Descargas
    58
    Uploads
    0
    Buenas! como comenté en respuesta a otro hilo en el foro de intrusión, me surgió la idea de cómo hacer una aplicación de este tipo.

    Bien comentar que no he investigado sobre el tema, pero básicamente se puede realizar utilizando los notificadores de eventos de Windows. Pero dado que aun no he tenido tiempo, os dejo un método muy sencillo y eficaz, además de no consumir muchos recursos.

    El método sirve para detectar un dispositivo de almacenamiento (pen drive) en un sistema, claro que ésto es extensible a cualquier dispositivo USB.

    1er paso: Detectar unidades activas
    2º paso: Guardarlas en una array
    3er paso: Cada intervalo de tiempo, comprobar si las unidades activas en el instante actual han cambiado (se han añadido o quitado unidades extraibles)

    Esto se puede llevar a cabo mediante la API: GetDriveType(Raiz: PChar), que devuelve uno de los siguientes valores:

    DRIVE_UNKNOWN = 0;
    DRIVE_NO_ROOT_DIR = 1;
    DRIVE_REMOVABLE = 2; // este es el nuestro, para los dispositivos de almacenamiento
    DRIVE_FIXED = 3;
    DRIVE_REMOTE = 4;
    DRIVE_CDROM = 5;
    DRIVE_RAMDISK = 6;

    Entonces, el algoritmo sería algo así como:

    for LetraUnidad:='A' to 'Z' do
    if GetDriveType(PChar(LetraUnidad+':\'))=DRIVE_REMOVA BLE then
    ShowMessage('Hola desde '+LetraUnidad+':\');
    end;
    end;

    El algoritmo está implementado en delphi. La idea se entiende.

    Evidentemente, habria que realizar esta tarea al principio de la ejecución del programa, guardarla en un array, y cada intervalo de tiempo volver a capturar dichas unidades, si el número de unidades detectadas es menor que el que tenemos en el array, entonces actualizamos el array.

    Para que en vez de mostrar un mensajito de saludo, se realice una acción simplemente habrá que programar dicha acción dentro de nuestra aplicación.

    Dadme 30 minutos y os subo un programa de ejemplo

    Un saludo
    El optimista tiene ideas, el pesimista... excusas

     

  2. #2  
    Moderador Global Avatar de hystd
    Fecha de ingreso
    Jul 2005
    Ubicación
    1, 11, 21, 1211...
    Mensajes
    1.596
    Descargas
    58
    Uploads
    0
    Bueno... aquí está un pequeño programita, para que veais un ejemplo.

    http://www.terra.es/personal7/crazypaddr/PDFetch.rar

    Es simple, lanzais el programa, pulsad el botón para activar el monitor y ya está... cuando insertes un pen drive en el sistema, saltará la opción que hayais elegido. Sólo he puesto esas 3 para mostrar un ejemplo de opciones distintas. Esto se puede ampliar a muchos mas conceptos (cerrar aplicaciones, abrir la bandeja del cd, apagar el sistema, desactivar el audio, etc...)

    Es lo que me ha dado tiempo de hacer en un rato, y paso de seguir porque es tarde y me voy a dormir...

    Un saludo y buenas noches
    Última edición por hystd; 06-02-2008 a las 02:56
    El optimista tiene ideas, el pesimista... excusas

     

  3. #3  
    Medio
    Fecha de ingreso
    May 2002
    Ubicación
    Buenos Aires, Argent
    Mensajes
    95
    Descargas
    0
    Uploads
    0
    hola, yo estoy buscando ya hace rato sin conseguir un codigo simple de como manejar el puerto USB pero programando desde Visual Basic 6.0 ... me sirviria de mucho si tienes algo para este lenguaje...

    Saludos.-
    ŞαדαתђэớЪα
    ψ Hεll ψ Ω Heaven Ω
     

  4. #4  
    Moderador HH
    Fecha de ingreso
    Mar 2003
    Ubicación
    Galiza
    Mensajes
    3.919
    Descargas
    8
    Uploads
    1
    El API lo puedes llamar también desde Visual Basic, no depende del lenguaje, del lenguaje solo depende como llamarla.

    Un Saludo
    He conocido muchos dioses. Quien niegue su existencia está tan ciego como el que confía en ellos con una fe desmesurada. Robert E. Howard
    La suerte ayuda a la mente preparada.
     

  5. #5  
    Moderador Global Avatar de hystd
    Fecha de ingreso
    Jul 2005
    Ubicación
    1, 11, 21, 1211...
    Mensajes
    1.596
    Descargas
    58
    Uploads
    0
    Buenas!

    hola, yo estoy buscando ya hace rato sin conseguir un codigo simple de como manejar el puerto USB pero programando desde Visual Basic 6.0 ... me sirviria de mucho si tienes algo para este lenguaje...
    Bueno lo primero que debes preguntarte es sobre qué dispositivo USB vas a trabajar, ya que no es lo mismo tratar por ejemplo un Pen Drive que una Web cam, un teclado o una impresora...

    Existen dos tipos de dispositivos USB: Dispositivos de Interfaz Humano (HID) y Dispositivos de almacenamiento masivo, asi que dependiendo de lo que quieras hacer, se tratará de una manera o de otra, se creará un driver específico para el dispositivo en el puerto usb o se tratará directamente con la API de Windows.

    He supuesto que estamos hablando de hacerlo bajo Windows y una versión posterior al 95/98, ya que aunque ésto también vale para SO anteriores a éstos, en ellos sería posible acceder mediantes instrucciones "in" y "out" al mapa de E/S independiente, típico de arquitecturas x86, sin ningún tipo de problemas de "Instruccion privilegiada".

    Un saludo
    El optimista tiene ideas, el pesimista... excusas

     

  6. #6  
    Medio
    Fecha de ingreso
    Jul 2003
    Mensajes
    59
    Descargas
    0
    Uploads
    0
    hola,
    me interesa bastante puesto que estoy intentando realizar un tema con detección de dispositivos usb.
    Una pregunta, si antes de iniciar el pc conectas el pen usb, se detectaría o como ya estaba conectado y al iniciarse el sistema ya está instalada no la detectaría??puesto que antes has comentado que chekea las unidades para ver si aumenta y/o disminulle, pero si ya estaba??muchísimas gracias

    sl2
    Todo hombre es tonto al menos cinco minutos al día. La sabiduría consiste en no rebasar ese límite
     

  7. #7  
    Moderador Global
    Fecha de ingreso
    Aug 2005
    Mensajes
    6.279
    Descargas
    7
    Uploads
    0
    Chequea el sistema para ver lo que hay, y luego lo compara con lo que tienes para ver si aumenta o disminuye para saber si tienes que actualizar lo que ya tienes
    Cita Iniciado por hystd
    Esto se puede llevar a cabo mediante la API: GetDriveType(Raiz: PChar), que devuelve uno de los siguientes valores:

    DRIVE_UNKNOWN = 0;
    DRIVE_NO_ROOT_DIR = 1;
    DRIVE_REMOVABLE = 2; // este es el nuestro, para los dispositivos de almacenamiento
    DRIVE_FIXED = 3;
    DRIVE_REMOTE = 4;
    DRIVE_CDROM = 5;
    DRIVE_RAMDISK = 6;
    Salu2


    Keep on Rollin'

    . . . . . . . . . . . . . . . . . . . .
    [[ NORMAS DEL FORO ]]
    . . . . . . . . . . . . . . . . . . . .
    __________
     

Temas similares

  1. Detectar navegación anónima
    Por itzamna en el foro GENERAL
    Respuestas: 2
    Último mensaje: 10-06-2012, 13:14
  2. Detectar nºs de Celulares a distancia?
    Por Bruno2332 en el foro EMULADORES TELEFONICOS
    Respuestas: 8
    Último mensaje: 31-07-2007, 00:09
  3. Como detectar el ARP
    Por juanma.m.d en el foro GENERAL
    Respuestas: 3
    Último mensaje: 01-05-2005, 08:31
  4. dispositivos de red
    Por fedderico10 en el foro HARDWARE
    Respuestas: 1
    Último mensaje: 26-02-2005, 23:41
  5. detectar una red
    Por twilight en el foro HARDWARE
    Respuestas: 7
    Último mensaje: 25-09-2004, 03:10

Marcadores

Marcadores