Войти

Показать полную графическую версию : C#. Обработка события подключения флешки.


Efsey
22-01-2011, 18:37
Здрасте. Подскажите каким образом можно детектить подключение флешки.
В MSDN (http://msdn.microsoft.com/en-us/library/aa363205(VS.85).aspx) нашел:
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
VS С# ругается »
И правильно делает, приведенный код - код C++, а не C#.

Efsey
24-01-2011, 06:31
А как это будет на с#?

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

Delirium
24-01-2011, 06:49
Efsey, в программировании без англ. вообще никуда. Верно составленный вопрос на том же гугле на англ. языке даст множество решений твоего вопроса.
Результаты поиска:
http://www.lvr.com/hidpage.htm#MyExampleCode - пример определения флешки
http://community.opennetcf.com/forums/p/6081/59773.aspx - пример кода
http://bytes.com/topic/c-sharp/answers/274543-c-code-detect-inset-remove-events-usb-port - описание принципов работы с Win32_USBControllerDevice
http://www.codeproject.com/KB/system/DriveDetector.aspx - готовое приложение.

Admiral
27-01-2011, 16:39
Efsey, обрабатывать оконные события можно и в С#, к примеру на заинтересованное WM_DEVICECHANGEusing 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 : Автоматическое обнаружение съёмных дисков (http://forum.oszone.net/thread-42285.html) что на события подключение/отключение флешки может не быть реакции.

Хоть тесты не выявили аномалии.
По коду выше пришло два сообщения с соответственными кодами
Device Changed 32772 78763296
Device Changed 7 0




© OSzone.net 2001-2012