Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Помогите переделать код для ослежывание флешки


Автор: BEST13 25.10.2008, 22:00
Я нашол код в котором отслежываеться извлечение флешки. Я несильно шаю в WinAPI. помогите пожалуйста передалать код....
Код

type
  _DEV_BROADCAST_HDR=record
        dbch_size:DWORD;
        dbch_devicetype:DWORD;
        dbch_reserved:DWORD;
  end;
  _DEV_BROADCAST_VOLUME=record
        dbcv_size:DWORD;
        dbcv_devicetype:DWORD;
        dbcv_reserved:DWORD;
        dbcv_unitmask:DWORD;
        dbcv_flags:WORD;
  end;
type
  TForm1 = class(TForm)
...
public
   procedure WndProc(var Message: TMessage); override;
.....

procedure TForm1.WndProc(var Message: TMessage);
var DB_HDR:_DEV_BROADCAST_HDR;
    DB_V:_DEV_BROADCAST_VOLUME;
    P:pointer;
begin
  if (Message.Msg = WM_DEVICECHANGE )  and ((Message.wParam = $8000) or (Message.wParam = $8004))  
  then begin
        P:=Ptr(Message.LParam);
        DB_HDR:=_DEV_BROADCAST_HDR(P^);
        if DB_HDR.dbch_devicetype=2 then begin
          DB_V:=_DEV_BROADCAST_VOLUME(P^);
          if DB_V.dbcv_flags=0 then  begin
                ShowMessage('Диск подключен!');
                
                // Если FLASH то код ЗДЕСЬ
            end;
        end;
  end
  else
        inherited WndProc(Message);
end;

Автор: ne0n 26.10.2008, 00:08
Цитата(BEST13 @  25.10.2008,  22:00 Найти цитируемый пост)
помогите пожалуйста передалать код....


так и не понятно, что переделать то надо?

Автор: BEST13 26.10.2008, 18:22
ой сори, мне нужно что сообщение появлялось когда флешка отсоединяеться

Автор: BEST13 26.10.2008, 21:37
помогите плиз


Автор: ne0n 26.10.2008, 23:26
Цитата(BEST13 @  26.10.2008,  18:22 Найти цитируемый пост)
ой сори, мне нужно что сообщение появлялось когда флешка отсоединяеться


эмммм я конечно дико извиняюсь, но этот код и так реагирует на отключение флешки. Точнее он реагирует и на включени и на отключение. если надо только именно отключение то просто убери одно из условий:

Код

 if (Message.Msg = WM_DEVICECHANGE )  and  (Message.wParam = $8004))   ....



msdn рулит:
Код

DBT_DEVICEARRIVAL
0x8000   - A device or piece of media has been inserted and is now available.
 
.....
 
DBT_DEVICEREMOVECOMPLETE
0x8004 - A device or piece of media has been removed.
 


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)