FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Excepcion incontrolable al detectar medios extraibles
Buenos días ante todo. Tengo una consulta para los más manitas de por aquí.
Estoy tratando de hacer que mi aplicación detecte cuando se conecta al pc un teléfono Android para sincronizar varios datos de la tarjeta SD, para eso he utilizado algunos ejemplos que he encontré por el foro.
Este ejemplo es fantástico para unidades de USB comunes, pero con las tarjetas SD o teléfonos (En solo cargar) tengo un problema, el sistema asigna la letra de la unidad aunque no este montada o no tenga medio insertado, así que cuando hago el FileExists o cualquier otro intento de acceder al contenido para ver si la tarjeta está presente, salta una excepción del sistema que no puedo controlar con Try-Except diciendo que (Inserte un disco en la unidad X: ). La pregunta, ¿Existe alguna forma de verificar si el medio está insertado y montado antes de acceder a el para que no salte la excepción? o bien ¿Puedo controlar de alguna forma esa dichosa excepción? |
#2
|
||||
|
||||
Ya probé tambien a comprobar con un...
Y sí, me devuelve un -1 cuando el medio no está presente, pero esta acción tambien provoca que salte la maldita excepción. Última edición por champy fecha: 09-12-2012 a las 08:26:02. Razón: Me confundí |
#3
|
||||
|
||||
Hola,
Tal vez debería usarse algo distinto a "FileExists", pero, yo miraría a ver en el sentido de tratar de ser avisado cuando una nueva unidad se conecta. Encontrarás varias formas de hacerlo, por ejemplo, en el paquete TurboPower ShellShock cuentas con un componente que te avisará cuando una unidad sea añadida y/o quitada del sistema. De esta forma igual hasta el "FileExists" podría servirnos... puesto que al menos la unidad en cuestión existiría... Aunque tal vez podríamos usar un "DirectoryExists" contra la propia unidad para evitar la "excepción" que te estás encontrando. |
#4
|
||||
|
||||
Hola de nuevo,
Estoy pensando que acaso con "DirectoryExists" pase lo mismo que con "FileExists". Existe la posibilidad de obtener todas las unidades disponibles en un momento dado, de manera que, primero de todo, veamos si la letra de la unidad que nos interesa está en la listad de unidades disponibles o no. Echa un vistazo a este hilo, por ejemplo. De todas formas sigo pensando que un "avisador" de que se añade o quita una unidad podría ser útil para el programa... |
#5
|
||||
|
||||
La función GetDriveType me retorna DRIVE_REMOVABLE tanto si la tarjeta está montada como si no.
De hecho si miras el ejemplo que puse al iniciar el hilo verás que eso es exactamente lo que estoy comprobando para distingir la tarjeta del resto de unidades.
Por cierto, he probado y sí, DirectoryExists tambien hace saltar la puñetera excepción de "Inserte un disco" De todas formas se agradece la ayuda DEC. Quizás la solución pase por el componente que posteaste hace un rato y que me notifique la inserción de la tarjeta pero me estoy debanando los sesos para tratar de compilar el Package por que me da un error de una clase no definida. |
#6
|
||||
|
||||
De todas formas, es que estoy seguro que debe haber alguna función en el API de windows que me diga si la unidad extraible tiene un medio insertado o no. Pero por más que busco no encuentro nada.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
como detecto unidades extraibles | desi | Internet | 2 | 12-12-2007 15:57:41 |
De los reproductores de medios | AzidRain | La Taberna | 1 | 02-08-2007 18:16:55 |
Detectar Excepcion EconvertError | MasterXP | Conexión con bases de datos | 6 | 30-03-2005 06:42:55 |
Toshiba pela al jugador de medios de Windows | roman | Humor | 1 | 28-03-2005 22:22:02 |
No puedo detectar la excepción "EDatabaseError" | Adan | Conexión con bases de datos | 8 | 21-03-2005 20:07:24 |
|