AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Kein WParam in WM_DEVICECHANGE bei bestimmter Hardware
Thema durchsuchen
Ansicht
Themen-Optionen

Kein WParam in WM_DEVICECHANGE bei bestimmter Hardware

Ein Thema von sieppl · begonnen am 17. Aug 2004 · letzter Beitrag vom 20. Aug 2004
Antwort Antwort
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#1

Kein WParam in WM_DEVICECHANGE bei bestimmter Hardware

  Alt 17. Aug 2004, 17:53
Hallo,

ich versuche meine Digitalkamera automatisch erkennen zu lassen (via WM_DEVICECHANGE9
und ggfs. die fotos in einen ordner kopieren zu lassen.
Das Programm funktioniert sehr gut mit allen Medien die im Arbeitsplatz mit einem
Laufwerksbuchstaben gemountet werden. Manche Digital-Kameras werden dagegen als
virtuelles Laufwerk gemountet. (z.B. Canon Powershot S45), zu erkennen an dem
kleinem Kamera-Icon was beim anschließen erscheint.
Komischerweise ist dann der Parameter wParam leer und lParam enthält keinen Pointer auf
nähere Informationen.
Ich bin mittlerweile ein wenig verzweifelt, da ich jetzt 3 Tage das Internet durchsuche
und jetzt im 3. großen Delphi-Forum poste, da ich bisher nicht eine einzige Antwort
bekommen habe.

Vielleicht finde ich den Experten..

Grüße

Sebastian

Code:
this one uses the same variable names for the Message-Struct like described in the API-Reference:

procedure TForm1.WMDEVICECHANGE(var Msg: TMsg);
var
  MsgType: String;
  Filter: PDevBroadcastVolume;
  lpdb: PDEVBROADCASTHDR;
  Volume: String;
begin
  lpdb := PDEVBROADCASTHDR(Msg.lParam);
  if assigned(lpdb) then
  begin
    case lpdb^.dbch_devicetype of
      DBT_DEVTYP_OEM: MsgType := 'OEM- or IHV-defined';
      DBT_DEVTYP_DEVNODE: MsgType := 'Devnode number';
      DBT_DEVTYP_VOLUME: MsgType := 'Logical volume';
      DBT_DEVTYP_PORT: MsgType := 'Port (serial or parallel';
      DBT_DEVTYP_NET: MsgType := 'Network resource';
      DBT_DEVTYP_DEVICEINTERFACE: MsgType := 'DEVTYP_DEVICEINTERFACE';
      DBT_DEVTYP_HANDLE: MsgType := 'DEVTYP_HANDLE';
      DBT_DEVNODES_CHANGED: MsgType := 'DBT_DEVNODES_CHANGED';
    else MsgType := 'Unkown DeviceType' + IntToStr(lpdb^.dbch_devicetype);
    end;
  end;
  Memo1.Lines.Add(MsgType);
 
  case Msg.wParam of
    DBT_DEVICEARRIVAL: MsgType := 'DBT_DEVICEARRIVAL';
    DBT_DEVICEQUERYREMOVE: MsgType := 'DBT_DEVICEQUERYREMOVE';
    DBT_DEVICEQUERYREMOVEFAILED: MsgType := 'DBT_DEVICEQUERYREMOVEFAILED';
    DBT_DEVICEREMOVEPENDING: MsgType := 'DBT_DEVICEREMOVEPENDING';
    DBT_DEVICEREMOVECOMPLETE: MsgType := 'DBT_DEVICEREMOVECOMPLETE';
    DBT_DEVICETYPESPECIFIC: MsgType := 'DBT_DEVICETYPESPECIFIC';
    DBT_CONFIGCHANGED: MsgType := 'DBT_CONFIGCHANGED';
    else MsgType := 'Unknown event ' + IntToHex(Msg.wParam, 0);
  end;
  Memo1.Lines.Add('Msg: ' + IntToStr(Msg.message));
  Memo1.Lines.Add('Event: ' + IntToStr(Msg.wParam));
  Memo1.Lines.Add('Result: ' + IntToStr(Msg.lParam));
  if Msg.lParam > 0 then
  begin
    Filter:= @Msg.lParam;
    Volume:= DetermineVolume(Filter^.dbcv_unitmask);
    MsgType := MsgType + ' ' + Volume +
      ' '+ IntToSTr(Filter^.dbcv_flags);
    Memo1.Lines.Add(MsgType);
  end;
  if Msg.wParam = DBT_DEVICEARRIVAL then
  begin
    //do something
  end;
end;
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#2

Re: Kein WParam in WM_DEVICECHANGE bei bestimmter Hardware

  Alt 20. Aug 2004, 20:41
Korrekte Antwort wäre gewesen: RegisterDeviceNotification vorher auszuführen. Dann bekommt man wenigstens mit, dass die Kamera sich als DeviceInterface anmeldet..
Sebastian
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz