none
detectar usb con c# RRS feed

  • Pregunta

  • Hola buenas noches a todos disculpen las molestia como tipico mio solo preguntando ando jeje pero quisiera me ayudaran hacer un programa para detectar lo q se conecte a los puertos usb, perono tengo idea de donde empezar
    sábado, 13 de febrero de 2010 6:59

Respuestas

  • esta es una aplicacion para detectar Human Input Devices (HID),
    incluyendo mouse / teclado/ keypad / joystick / etc. Si queres
    detectar todas los unidades USB, usa GUID_DEVINTERFACE_USB_DEVICE =
    "A5DCBF10-6530-11D2-901F-00C04FB951ED".

    ---- inicio---
    using System.Runtime.InteropServices;

    namespace WindowsApplication1
    {
    public class Form1 : System.Windows.Forms.Form
    {
    private System.Windows.Forms.Label label1;

    public Form1()
    {
    InitializeComponent();
    RegisterHidNotification();
    }

    protected override void WndProc(ref Message m)
    {
    switch(m.Msg)
    {
    case Win32.WM_DEVICECHANGE: OnDeviceChange(ref m); break;
    }
    base.WndProc (ref m);
    }

    void OnDeviceChange(ref Message msg)
    {
    int wParam = (int)msg.WParam;
    if(wParam == Win32.DBT_DEVICEARRIVAL) label1.Text = "Arrival";
    else if(wParam == Win32.DBT_DEVICEREMOVECOMPLETE) label1.Text =
    "Remove";
    }

    void RegisterHidNotification()
    {
    Win32.DEV_BROADCAST_DEVICEINTERFACE dbi = new
    Win32.DEV_BROADCAST_DEVICEINTERFACE();
    int size = Marshal .SizeOf(dbi);
    dbi.dbcc_size = size;
    dbi.dbcc_devicetype = Win32.DBT_DEVTYP_DEVICEINTERFACE;
    dbi.dbcc_reserved = 0;
    dbi.dbcc_classguid = Win32.GUID_DEVINTERFACE_HID;
    dbi.dbcc_name = 0;
    IntPtr buffer = Marshal .AllocHGlobal(size);
    Marshal .StructureToPtr(dbi, buffer, true);
    IntPtr r = Win32.RegisterDeviceNotification(Handle, buffer,
    Win32.DEVICE_NOTIFY_WINDOW_HANDLE);
    if(r == IntPtr .Zero)
    label1.Text = Win32.GetLastError().ToString();
    }
    }

    class Win32
    {
    public const int
    WM_DEVICECHANGE = 0x0219;
    public const int
    DBT_DEVICEARRIVAL = 0x8000,
    DBT_DEVICEREMOVECOMPLETE = 0x8004;
    public const int
    DEVICE_NOTIFY_WINDOW_HANDLE = 0,
    DEVICE_NOTIFY_SERVICE_HANDLE = 1;
    public const int
    DBT_DEVTYP_DEVICEINTERFACE = 5;
    public static Guid
    GUID_DEVINTERFACE_HID = new
    Guid ("4D1E55B2-F16F-11CF-88CB-001111000030");

    [StructLayout(LayoutKind .Sequential)]
    public class DEV_BROADCAST_DEVICEINTERFACE
    {
    public int dbcc_size;
    public int dbcc_devicetype;
    public int dbcc_reserved;
    public Guid dbcc_classguid;
    public short dbcc_name;
    }

    [DllImport("user32.dll", SetLastError=true)]
    public static extern IntPtr RegisterDeviceNotification(
    IntPtr hRecipient,
    IntPtr NotificationFilter,
    Int32 Flags);

    [DllImport("kernel32.dll")]
    public static extern int GetLastError();
    }
    }

     

    suerte

    • Marcado como respuesta victor_23 viernes, 21 de mayo de 2010 5:07
    miércoles, 19 de mayo de 2010 6:52

Todas las respuestas

  • esta es una aplicacion para detectar Human Input Devices (HID),
    incluyendo mouse / teclado/ keypad / joystick / etc. Si queres
    detectar todas los unidades USB, usa GUID_DEVINTERFACE_USB_DEVICE =
    "A5DCBF10-6530-11D2-901F-00C04FB951ED".

    ---- inicio---
    using System.Runtime.InteropServices;

    namespace WindowsApplication1
    {
    public class Form1 : System.Windows.Forms.Form
    {
    private System.Windows.Forms.Label label1;

    public Form1()
    {
    InitializeComponent();
    RegisterHidNotification();
    }

    protected override void WndProc(ref Message m)
    {
    switch(m.Msg)
    {
    case Win32.WM_DEVICECHANGE: OnDeviceChange(ref m); break;
    }
    base.WndProc (ref m);
    }

    void OnDeviceChange(ref Message msg)
    {
    int wParam = (int)msg.WParam;
    if(wParam == Win32.DBT_DEVICEARRIVAL) label1.Text = "Arrival";
    else if(wParam == Win32.DBT_DEVICEREMOVECOMPLETE) label1.Text =
    "Remove";
    }

    void RegisterHidNotification()
    {
    Win32.DEV_BROADCAST_DEVICEINTERFACE dbi = new
    Win32.DEV_BROADCAST_DEVICEINTERFACE();
    int size = Marshal .SizeOf(dbi);
    dbi.dbcc_size = size;
    dbi.dbcc_devicetype = Win32.DBT_DEVTYP_DEVICEINTERFACE;
    dbi.dbcc_reserved = 0;
    dbi.dbcc_classguid = Win32.GUID_DEVINTERFACE_HID;
    dbi.dbcc_name = 0;
    IntPtr buffer = Marshal .AllocHGlobal(size);
    Marshal .StructureToPtr(dbi, buffer, true);
    IntPtr r = Win32.RegisterDeviceNotification(Handle, buffer,
    Win32.DEVICE_NOTIFY_WINDOW_HANDLE);
    if(r == IntPtr .Zero)
    label1.Text = Win32.GetLastError().ToString();
    }
    }

    class Win32
    {
    public const int
    WM_DEVICECHANGE = 0x0219;
    public const int
    DBT_DEVICEARRIVAL = 0x8000,
    DBT_DEVICEREMOVECOMPLETE = 0x8004;
    public const int
    DEVICE_NOTIFY_WINDOW_HANDLE = 0,
    DEVICE_NOTIFY_SERVICE_HANDLE = 1;
    public const int
    DBT_DEVTYP_DEVICEINTERFACE = 5;
    public static Guid
    GUID_DEVINTERFACE_HID = new
    Guid ("4D1E55B2-F16F-11CF-88CB-001111000030");

    [StructLayout(LayoutKind .Sequential)]
    public class DEV_BROADCAST_DEVICEINTERFACE
    {
    public int dbcc_size;
    public int dbcc_devicetype;
    public int dbcc_reserved;
    public Guid dbcc_classguid;
    public short dbcc_name;
    }

    [DllImport("user32.dll", SetLastError=true)]
    public static extern IntPtr RegisterDeviceNotification(
    IntPtr hRecipient,
    IntPtr NotificationFilter,
    Int32 Flags);

    [DllImport("kernel32.dll")]
    public static extern int GetLastError();
    }
    }

     

    suerte

    • Marcado como respuesta victor_23 viernes, 21 de mayo de 2010 5:07
    miércoles, 19 de mayo de 2010 6:52
  • gracias amigo pero esto lo haces desde un formulario? pero como le haria para modificar en console lo q pasa esq deseo tenerlo asi por lo que en el ciber muchas memorias vienen infectadas e incluso una vez me desbarato el procesador como no se
    viernes, 21 de mayo de 2010 5:08
  • ¿Hay tutoriales sobre el puerto USB con C#?

     

    Si es de un formulario por lo que veo.


    viernes, 28 de mayo de 2010 17:16
  • Si amigo asi note es para formulario lo que creo se podria hacer es ocultar ese formulario desde arranque por si deseas hacer un tipo de autoejecucion y pues no se no e encontrado sobre ello
    sábado, 29 de mayo de 2010 3:26
  • No pasa nada si es un formulario con SUB.

     

    Si encuentran más informaciòn de Web sobre C# y USB lo publican aquí.


    sábado, 29 de mayo de 2010 20:54
  • Hola!, alguien sabe como puedo hacer para instalar el formulario del puerto USB?Es decir, en el cuadro de erramientas me aparece un formulario que se llama "serialPort" pero no tengo ninguno que se relacione con el usb. Saben donde podre descargarlo?
    martes, 24 de enero de 2012 15:29
  • Hola Leandro,

    pues no entendi bien tu pregunta podrias explicar un poco mas/  y el serial port es un puerto integrado asi como algunos usb

    miércoles, 15 de febrero de 2012 14:17
  • Hola:

    Aquí hay un ejemplo USB y C# para detectarlo.

    Ver vídeo.

    Un saludo.


    http://electronica-pic.blogspot.com

    martes, 20 de marzo de 2012 14:17