.NET - C#. Обработка события подключения флешки.

Ответить
Аватара пользователя
Efsey

.NET - C#. Обработка события подключения флешки.

Сообщение Efsey »

Здрасте. Подскажите каким образом можно детектить подключение флешки.

В
MSDN
нашел:



Код:

Код: Выделить всё

LRESULT CALLBACK WindowProc(
  HWND hwnd,       // handle to window
  UINT uMsg,       // WM_DEVICECHANGE
  WPARAM wParam,   // device-change event
  LPARAM lParam    // event-specific data
);

Только вот что с этим делать непонятно, VS С# ругается.
Аватара пользователя
Delirium

Re: .NET - C#. Обработка события подключения флешки.

Сообщение Delirium »

Цитата Efsey:



VS С# ругается
.NET - C#. Обработка события подключения флешки.




И правильно делает, приведенный код - код C++, а не C#.
Аватара пользователя
Efsey

Re: .NET - C#. Обработка события подключения флешки.

Сообщение Efsey »

А как это будет на с#?



мда, английский все таки придеться выучить
Аватара пользователя
Delirium

Re: .NET - C#. Обработка события подключения флешки.

Сообщение Delirium »

Efsey, в программировании без англ. вообще никуда. Верно составленный вопрос на том же гугле на англ. языке даст множество решений твоего вопроса.

Результаты поиска:

http://www.lvr.com/hidpage.htm#MyExampleCode
- пример определения флешки

http://community.opennetcf.com/forums/p/6081/59773.aspx
- пример кода

http://bytes.com/topic/c-sharp/answe...vents-usb-port
- описание принципов работы с Win32_USBControllerDevice

http://www.codeproject.com/KB/system/DriveDetector.aspx
- готовое приложение.
Аватара пользователя
Admiral

Re: .NET - C#. Обработка события подключения флешки.

Сообщение Admiral »

Efsey, обрабатывать оконные события можно и в С#, к примеру на заинтересованное WM_DEVICECHANGE

Код:

Код: Выделить всё

using System;
using System.Drawing;
using System.Windows.Forms;
class UsbDetector : Form
{
    public static void Main()
    {
        Application.Run(new UsbDetector());     
    }
    /*UsbDetector()
    {
    }*/
    protected override void WndProc(ref Message msg)
    {
        if (msg.Msg == 537) //WM_DEVICECHANGE
            MessageBox.Show("Device Changed " + msg.WParam + " " + msg.LParam );
        base.WndProc(ref msg);
    }
}

Но я бы присмотрелся к актуальности срабатывания WM_DEVICECHANGE, есть сообщения
USB : Автоматическое обнаружение съёмных дисков
что на события подключение/отключение флешки может не быть реакции.



Хоть тесты не выявили аномалии.

По коду выше пришло два сообщения с соответственными кодами

Device Changed 32772 78763296

Device Changed 7 0[/i]
Ответить

Вернуться в «Программирование и базы данных»