Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   C#. Обработка события подключения флешки. (http://forum.oszone.net/showthread.php?t=197335)

Efsey 22-01-2011 18:37 1594762

C#. Обработка события подключения флешки.
 
Здрасте. Подскажите каким образом можно детектить подключение флешки.
В 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 24-01-2011 00:49 1595810

Цитата:

Цитата Efsey
VS С# ругается »

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

Efsey 24-01-2011 06:31 1595869

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

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

Delirium 24-01-2011 06:49 1595873

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 27-01-2011 16:39 1598496

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


Время: 17:33.

Время: 17:33.
© OSzone.net 2001-