Доброго времени суток. Пишу программу для отслеживания подключения USB устройств на WinApi. Вот код:
| Код | program usb;
uses windows, messages, dialogs, sysutils; // для тестов
var WClass:TWndClass; hWnd:THandle; mMsg:TMsg;
function WndProc(hWn:Thandle;mMsg,wParam,lParam:integer):integer; stdcall; begin Case mMsg of WM_DESTROY:halt(0); WM_DEVICECHANGE: ShowMessage(inttostr(wparam)+' '+inttostr(lparam)); end; result:=DefWindowProc(hWn,mMsg,wParam,lParam); end;
begin with WClass do begin lpfnWndProc:=@WndProc; lpszClassName:='My'; end; RegisterClass(WClass); hWnd:=CreateWindow('My','',WS_OVERLAPPEDWINDOW,0,0,0,0,0,0,hInstance,nil); while GetMessage(mMsg, hWnd , 0, 0) do begin TranslateMessage(mMsg); DispatchMessage(mMsg); end; end.
|
Проблема в том, что сообщение WM_DEVICECHANGE отлавливает все события от устройств (значения wParam и lParam всегда одинаковы) , а мне надо только от флешек. На форуме много примеров с компонентами и с формами, но вот заставить это работать на WinApi не получается! |