Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi USB-Gerät an Fritzbox (7270) (https://www.delphipraxis.net/144720-usb-geraet-fritzbox-7270-a.html)

Carsten1234 15. Dez 2009 05:57


USB-Gerät an Fritzbox (7270)
 
Hallo zusammen,

wenn man ein USB-Gerät direkt an den PC steckt bzw. entfernt, kommt ja über wm_DeviceChange im TMessage.wParam entweder ein DBT_DEVICEARRIVAL oder ein DBT_DEVICEREMOVECOMPLETE, auf das man reagieren kann (Geräte kommen und gehen).
Nun kam jemand bei uns im Hause auf die ("glorreiche") Idee, das USB-Gerät an eine Fritzbox 7270 anzustecken und via der AVM-Software FRITZ!Box USB-Fernanschluss eine Verbindung zum USB-Gerät aufnehmen zu wollen. Meine Applikatione erkannte (zunächst) nicht das USB-Gerät hinter der FritzBox, da ich bis vor kurzem nur alle virtuellem COM-Ports gescannt hatte (das USB-Gerät kommuniziert über einen virtuellen COM-Port mit dem PC). Da ich nun jedoch auch alle "richtigen" COM-Ports scanne, finde ich auch das USB-Gerät hinter der FritzBox. So weit, so gut, ABER: Entfernt man das USB-Gerät an der FritzBox oder steckt es (erneut) an, so kommt zwar auch ein DeviceChange vorbei, doch ist der TMessage.wParam IMMER 7. Obwohl zwar 7 eigentlich immer gut und auch die Antwort auf alle Fragen ist, hilft mir das in diesem Fall nicht sonderlich weiter.
Frage: Hat jemand eine Idee, wie ich den Gerätewechsel an der FritzBox erkennen kann?

Dank vorab und Gruß, Carsten

Blup 15. Dez 2009 09:07

Re: USB-Gerät an Fritzbox (7270)
 
So weit eigentlich doch garnicht schlecht:
Code:
Message = WM_DEVICECHANGE
wParam = DBT_DEVNODES_CHANGED = 7
lParam = 0
Die Antwort auf alle Fragen ist aber 42...

Die Setup-API ist die aktuelle Schnittstelle, wie auch in (Geräte kommen und gehen) beschrieben.

Jedi-API

Carsten1234 17. Dez 2009 10:23

Re: USB-Gerät an Fritzbox (7270)
 
Zitat:

Zitat von Blup
So weit eigentlich doch garnicht schlecht:
Code:
Message = WM_DEVICECHANGE
wParam = DBT_DEVNODES_CHANGED = 7
lParam = 0

Irgendwie doch, denn:

Delphi-Quellcode:
var devType       : Integer;
    Datos         : PDevBroadcastHdr;
begin
  if (Msg.wParam = DBT_DEVICEARRIVAL) or
     (Msg.wParam = DBT_DEVICEREMOVECOMPLETE) or
     (Msg.WParam = DBT_DEVNODES_CHANGED) then
  begin
    Datos := PDevBroadcastHdr(Msg.lParam);
    devType := Datos^.dbch_devicetype;
    if devType = DBT_DEVTYP_DEVICEINTERFACE then
    begin
(...)
    end;
  end;
end;
Da kommt dann nicht mehr viel...

Zitat:

Zitat von Blup
Die Antwort auf alle Fragen ist aber 42...

Jein, denn 42 ist ja nur ein Vielfaches von 7...


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:00 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