2015-01-12 1 views
1

Возможно ли программно (используя C# или PowerShell) узнать, когда было установлено USB-устройство? Я хочу узнать, когда USB-принтер был подключен к машине или включен?USB Mount DateTime

+0

Если приложение работает постоянно в фоновом режиме, вы можете контролировать все подключенные USB-устройства и записывать время самостоятельно. Но что, если устройство уже подключено, когда компьютер включен? Я не думаю, что вы сможете найти время в этом случае. – RaYell

+0

Возможный дубликат http://stackoverflow.com/questions/17912969/detect-when-a-new-virtual-drive-is-created – dotNET

+0

Да, но на принтере нет установленного накопителя. Это всего лишь устройство. – wonea

ответ

1

Для определения изменения устройства вы можете использовать следующие коды. Но я не знаю, как определить измененное устройство - USB-принтер или нет.

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    protected override void WndProc(ref Message m) 
    { 
     const int WM_DEVICECHANGE = 0x0219; 
     switch (m.Msg) 
     { 
      case WM_DEVICECHANGE: 

       MessageBox.Show("Something changed."); 

       break; 
      default: 
       break; 
     } 
     base.WndProc(ref m); 
    } 
} 
+0

, если вы поставили точку останова на «MessageBox.Show», и когда вы подключаете что-то на свой компьютер, если вы видите значения параметра «Message», возможно, вы можете найти правильное значение для USB-принтера. – iBener

+0

Я не думаю, что класс 'Form' подписывается на это конкретное сообщение. – Lankymart

+0

Я использовал этот способ один из моих проектов для обнаружения вставки флеш-накопителя USB. Он должен работать, когда устройство подключено к компьютеру. – iBener