2013-04-08 3 views
3

Я пытаюсь обнаружить событие прибытия usb. Я пытался переопределить wndproc() для получения моих сообщений. Но я столкнулся с ошибкой в ​​сообщениях Windows.Имя 'WM_DEVICECHANGE' не существует в текущем контексте

Ошибка:

The name 'WM_DEVICECHANGE' does not exist in the current context 

The name 'DBT_DEVICEARRIVAL' does not exist in the current context 

Кроме того, это код, я пробовал.

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Windows.Forms;   
using System.IO; 
using Microsoft.Win32.SafeHandles; 

namespace USBCheckerApp 
{ 
    public partial class Form1 : Form 
    { 
     bool bDeviceFound = false; 

     public Form1() 
     { 
      InitializeComponent(); 

     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      if (!bDeviceFound) 
      { 
       button1.Enabled = false; 
      } 


     } 
     [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")] 
     protected override void WndProc(ref Message m) 
     { 
      switch (m.Msg) 
      { 
       case WM_DEVICECHANGE: 
        if (m.WParam == DBT_DEVICEARRIVAL) 
        { 
         MessageBox.Show("MEDIA FOUND"); 
        } 
      } 

     } 

    } 
} 

Добавлено, что вы можете предложить любые обновления в том же самом. Благодаря

+0

Показать код здесь. Люди не могут читать ваши мысли. –

+0

@ SonerGönül Я только что прочитал ваш. Я редактировал – Zigma

+0

Возможный дубликат [Как обнаружить USB-накопитель подключен?] (Http://stackoverflow.com/questions/6003822/how-to-detect-a- usb-drive-has-been-plug-in) - вы забыли скопировать в константах, упомянутых в ответе от Onsightfree – Petesh

ответ

5

Вы должны объявить и определить значения констант:

private const int DBT_DEVICEARRIVAL = 0x8000; 
private const int WM_DEVICECHANGE = 0x0219; 
+0

На самом деле я не новичок в C#, но имел некоторое удовольствие в C++ :). Вот что. Позвольте мне проверить ур ответить – Zigma

+0

Хорошо, я немного отредактировал свой ответ;) –