Título: [Duda]¿Como detectar los usb con vb 2013? Publicado por: josiko12 en 28 Enero 2014, 20:37 pm Queria saber como puedo hacer que un programa me detecte los puertos usb del pc vereis estoy haciendo un proyecto llamado proyecto porque no esta terminado bueno el caso esque lo que tengo es:
Bastantes CheckBoxes:Lo tengo para que al ser marcados sean copiados los archivos al USB con la instruccion "Filecopy" de vb mas o menos el codigo yo creo que seria: Código Label:Que tengo escrito "Seleccione su Unidad USB" Button:Que lo tengo para formatear el USB con el comando "Format" del vb el codigo creo que seria: Código No se si estaria bien ya que yo soy un iniciado empece hace poco en vb ComboBox:Con todas las posibles letras de un USB o memoria extraible y yo lo que quiero hacer es que detecte su USB y que al pulsar el Button se formatee en fat32(Aqui el codigo no lo puedo mostrar porque os lo estoy preguntando a vosotros) P.D Si hiciese falta un .dll me gustaria que me ayudarais ;D ;D ;D ;D GRACIAS Título: Re: [Duda]¿Como detectar los usb con vb 2013? Publicado por: Car0nte en 16 Febrero 2014, 14:32 pm Buenas,
Creo que para eso tan concreto deberías utilizar el shell de Windows y de ahí a DISKPART. El usuario debería escoger la letra correspondiente al dispositivo USB y a partir de ahí ponerte a trabajar. Si no te suena nada de esto "empóllate" Process (hay un montón de información sobre el tema). Podías redireccionar los datos de la shell para recogerlos en tu aplicación, empezando por ej .. Código: Dim MiProceso as Process No es una respuesta exacta pero para lo que tú buscas puede servir y es un lugar por donde empezar Saludos Editado: Para listar, aunque requiere permisos administrativos, existe otra forma: Código: Fsutil fsinfo drives Ah! antes se me olvido que la función Format no sirve para formatear unidades. Es para dar formato a ciertos tipos de datos (por ejemplo para dar un determinado formato fechas, números, etc) Para lo que quieres tú, la manera más sencilla es utiliza la shell de Windows.. es decir, si lo puedes hacer desde la cmd lo podrás hacer desde tu aplicación con todas las ventajas que conlleva Título: Re: [Duda]¿Como detectar los usb con vb 2013? Publicado por: Eleкtro en 17 Febrero 2014, 21:53 pm Hola
Citar Código: ...FileCopy... Sé que lo más facil cuando uno se introduce a un lenguaje nuevo es copiar códigos de Internet, pero es que es lo peor que puedes hacer, porque el 90% de lo que vas a encontrar es morralla de VB6. Podrías dejar de utilizar métodos poco eficientes de VB6 (técnicas de programación de hace una década), pues estamos en VB.NET. Infórmate sobre los métodos de la Class System.IO.File (http://msdn.microsoft.com/en-us/library/system.io.file_methods%28v=vs.110%29.aspx), tiene todo lo que necesitas para esa y las demás tareas que precisas :P. Citar Código: ...Format(IO.DriveInfo.GetDrives)... Acostúmbrate a usar MSDN para buscar información sencilla o como mínimo haz uso de la característica Intellisense en VisualStudio... y así verías (como ya te han dicho) que el método format es para formatear un string (http://msdn.microsoft.com/en-us/library/59bz1f0h%28v=vs.90%29.aspx). Citar ComboBox:Con todas las posibles letras de un USB o memoria extraible 3er consejo: Intenta hacer soluciones eficientes, no sencillas. Por ejemplo: ¿Porque mostrar todas las letras de unidades si solo habrá 3 o 4 ocupadas, y solo 1 o 2 de ellas serán USB? ...pues entonces muestra sólamente las letras ocupadas por dispositivos extraibles. Citar Para lo que quieres tú, la manera más sencilla es utiliza la shell de Windows.. es decir, si lo puedes hacer desde la cmd lo podrás hacer desde tu aplicación con todas las ventajas que conlleva Car0nte, me parece una pena esa forma de pensar. Si ustedes quieren usar la CMD para las tareas, ¿porque no están programando sus aplicaicones en Batch? :P ¿Como obtener los dispositivos extraibles que están conectados al sistema?: Código
EDITO: Código de regalo para que optimices ese combobox :)... Código
¿Como formatear una unidad?: Puedes hacerlo con la WinAPI, el método SHFormatDrive (http://msdn.microsoft.com/en-us/library/bb762169%28VS.85%29.aspx), o bien puedes recurrir al comando Format de la CMD..., o puedes usar WMI para invocar el método Format (http://msdn.microsoft.com/en-us/library/aa390432%28v=vs.85%29.aspx) de la Class Win32_Volume (http://msdn.microsoft.com/en-us/library/gg196703%28v=vs.85%29.aspx) Yo he preferido hacer el siguiente código utilizando WMI en lugar de P/Invokear, por estas razones: 1. Permite especificar el tamaño del cluster. 2. Permite especificar la nueva etiqueta del disco formateado. 3. El método retorna mayor información de errores. ( Pero lo cierto es que no he testeado mi código en profundidad para formatear, solo en una VM, por eso no puedo asegurar que funcione corréctamente ) Código
Título: Re: [Duda]¿Como detectar los usb con vb 2013? Publicado por: Eleкtro en 17 Febrero 2014, 21:55 pm ( Escribo este doble post justificado porque no cabía el siguiente código, maldito límite de caracteres :rolleyes: )
¿Como monitorizar la inserción/extracción de dispositivos USB's?: Si estás corriendo Windows 8 o Win server 2012 entonces puedes usar la Class DeviceWatcher (http://msdn.microsoft.com/library/windows/apps/br225446) que prácticamente te hace todo el trabajo sucio xD, eso si, es para apps de Metro así que debes referenciar la librería 'WindowsRuntime.dll' y 'Windows.Foundation' en caso de que tu proyecto sea un WinForms/WPF. De todas formas he ideado este ayudante (bueno, en realidad es un código antiguo que escribí hace tiempo, pero lo he actualizado y mejorado) que no necesita el uso de Windows 8, y en el cual solo tienes que manejar dos eventos, 'DriveInserted' y 'DriveRemoved', más sencillo imposible. Código
Saludos. Título: Re: [Duda]¿Como detectar los usb con vb 2013? Publicado por: Car0nte en 18 Febrero 2014, 04:04 am Citar Citar Para lo que quieres tú, la manera más sencilla es utiliza la shell de Windows.. es decir, si lo puedes hacer desde la cmd lo podrás hacer desde tu aplicación con todas las ventajas que conlleva Car0nte, me parece una pena esa forma de pensar. Si ustedes quieren usar la CMD para las tareas, ¿porque no están programando sus aplicaicones en Batch? :P Por supuesto que hay mejores maneras de hacer las cosas. Está claro. Pero dado el nivel de la persona que pregunta, pienso que empezar a usar NET o lenguaje que sea aprovechándose de los pocos (o muchos) conocimientos que tenga de MSDOS, es una buena manera de empezar y de que se pique. Cuando aprenda un poco ya tendrá tiempo de liarse con System.IO, librerías y todo lo demás. Para empezar a hacer casas es mejor empezar por la caseta del perro que por el Museo Guggenheim. Le puede pasar como a Santiago Calatrava y caérsele a pedazos xD Además, aunque éste no es el caso, NET tiene algunas deficiencias (cada vez menos) especialemnte trabajando a bajo nivel. Hay veces que no te queda más remedio que tirar de shell de Windows o WSS, no entiendo por qué, pero es un hecho. Por ejemplo, (y tiene que ver con esto), la creación de shortcuts, hasta no hace mucho no estaba incluido y tocaba tirar de WSS sin IntelliSense y con todas sus desventajas (creo que por eso me daba error, en este equipo tengo VS2010 y tú lo habías hecho con el 12 ó 13, además suelo trabajar con Framework 3.5 por tema de compatibilidades. Lo sé porque me he bajado algunos de tus trabajos y no puedo ver la source (los hay realmente buenos) El que quiera saber por qué que pinche aquí (http://foro.elhacker.net/programacion_general/anadir_a_favoritos_del_panel_de_navegacion_del_explorer-t408871.0.html) y vea la relación con este post) Dicho esto esto, está claro que siempre será más eficaz utilizar los recursos propios de NET por mil razones (eficiencia, rapidez, gestión de memoria, etc, etc) (aunque no lo parezca leyendo mis últimos post) ;D Saludos EDITADO: Citar el 90% de lo que vas a encontrar es morralla de VB6. Creo que no es muy justo tratar de morralla (http://lema.rae.es/drae/?val=morralla) al trabajo que han hecho otros con el mismo trabajo (o más) y que conste que no tengo prácticamente ni idea de VB6 (yo soy del paleolítico.. cuando dejé el Basic se llamaba BASICA, no había Internet ni casi documentación y los foros se hacían con señales de humo :laugh:). Piensa que dentrode unos años lo que tú con mucho esfuerzo has hecho, aunque sea antiguo, no será basura. Título: Re: [Duda]¿Como detectar los usb con vb 2013? Publicado por: Eleкtro en 18 Febrero 2014, 05:00 am Has justificado bien todo lo que has dicho y te doy la razón, solo quiero comentar una cosa:
Citar Creo que no es muy justo tratar de morralla al trabajo que han hecho otros con el mismo trabajo (o más) Claro que no, mi intención no era dar a pensar eso, si un trabajo está echo en vb5/vb6 con los métodos de vb, a mi me parece perfecto. Pero, en VB.NET, la diferencia entre algo que está echo en 5 minutos copiando códigos de VB6, y algo que está echo en horas, dias, semanas o meses se aprecia la diferencia. Creo que has visto muy pocos source-codes desarrollados en VB.NET que básicamente todos los métodos usados son de VB6 (por desgracia yo he visto más de los que quisiera), te aseguro que hay demasiados, he visto gente muy experta que siguen mal acostumbrados a esas prácticas, e incluso el tipo de declaración de APIS que usan (Declare function...), eso me parece lamentable hacerlo en VB.NET porque no aprovechan ninguna ventaja de .NET Framework como el tipo de declaraciones de APIS que he comentado (dllimport), así pues, una persona que trabaja duro y le pone ganas no haría esas cosas, es puro copy/paste de VB6, a eso me refiero con morralla, es una mania que yo tengo, pero lo llevo mal ver códigos de .NET vb6-stylized (como se suele decir por ahí...). Saludos! |