![]() |
Re: Event wenn Digitalkamera angeschlossen wird...
Über die Registry gehts anscheinend, trotzdem wäre es nett von dir den genauen Weg dahin aufzuzeigen :)
Gruß Hagen |
Re: Event wenn Digitalkamera angeschlossen wird...
Das werde ich machen... wenn ich ihn denn habe. *g*
Ich brauch selbst noch etwas, um den genauen Weg rauszufinden, befürchte ich. Aber ich bin dabei... Gruß Wormid |
Re: Event wenn Digitalkamera angeschlossen wird...
Hi,
ich glaube du kannst nach DeviceChange mit SetupDiGetClassDevsEx siehe: ![]() weiter machen die entsprechende API Übersetzung findest du bei Jedi. Wenn du Class GUID deiner Hardware kennst musst du mit SetupDigetClassDevsEx abfragen ob deine Hardware eingetroffen ist. Danach aber nicht vergessen mit SetupDiDestroyDeviceInfoList die Liste zu zerstören. mfg Rumpi & Pascal |
Re: Event wenn Digitalkamera angeschlossen wird...
Hi,
ich misch mich mal kurz ein. Du könntest doch auch mit der Function GetLogicalDrives die Logischen Laufwerke mittels eines Timers abfragen. Vergleichst du das Ergebnis mit dem Ergebnis der letzten Anfrage, dann erkennst du ob ein Laufwerk hinzu- oder weggekommen ist. Dann nur noch überprüfen ob es sich den dem Laufwerk um ein Wechseldatenträger handelt mit einem DCIM-Verzeichnis und du weißt, ob es sich um eine Kamera, oder eine Speicherkarte einer Kamera handelt. Und beim entfernen braucht du ja nur überprüfen, ob es sich bei dem entfernten Laufwerk um deins handelt (das hast du ja, vom einstecken). (hmm. kann man das verstehen, was ich da gerade zusammengekritzelt habe :mrgreen: :mrgreen: ) So würde ich das machen. Sofern dieses Timer-ereignis nicht den Programm ablauf stört. |
Re: Event wenn Digitalkamera angeschlossen wird...
Moinsen,
einmal zu dem Hinweis von Rumpi: Ich würde ungern mit Dingen wie SetupDigetClassDevsEx rumspielen, da das a) sehr kompliziert scheint, und b) auf XP und 2000 beschränkt ist. Es muss doch nen einfachen Weg geben, die VendorID (Casio: 07cf) und die ProdID (1001) von einem Device zu erfragen. Dann kann man den Rest bequem aus der Registry saugen. Zu der Idee von Captnemo: Es ist nicht notwendig, per Timer alles abzufragen. Es wird ja das Event WM_DEVICECHANGE gefeuert, wenn die Cam oder andere USB-Storage-Devices angeschlossen werden. Dann kann man bequem aus der Message auslesen, welcher Laufwerksbuchstabe neu hinzugekommen ist. Aber dann nur auf vorhandensein des Ordners "DCIM" zu testen, das war/ist mir zu stumpf, irgendwie. Aber wahrscheinlich wird es doch auf irgendwie sowas hinauslaufen, ob mir das gefällt oder nicht... :? Gruß Wormid |
Re: Event wenn Digitalkamera angeschlossen wird...
Die SetupDi-Funktionen sind auch unter Win 98 vorhanden und es lassen sich die USB-Geraete genau wie die HID-Geraete enumerieren.
Ich habe die HID Komponente geschrieben und haette auch eine USB Komponente vorraetig. Die Komponente kann man dann fragen ob ein bestimmtes USB-Geraet vorhanden ist, also VendorID und ProductID. Letztlich grabe ich die Infos auch aus der Registry, aber auf korrektem und sicherem Weg. Kontakte mich doch direkt robert_marquardt@gmx.de |
Re: Event wenn Digitalkamera angeschlossen wird...
Wird denn WM_DEVICECHANCED auch ausgelöst, wenn ein USB-Gerät wieder entfernt wird?
|
Re: Event wenn Digitalkamera angeschlossen wird...
Beim meinen ersten Versuchen habe ich die Message nicht registriert beim entfernen das Gerätes. Aber sicher bin ich mir da nicht.
Gruß Wormid |
Re: Event wenn Digitalkamera angeschlossen wird...
Zitat:
mfg Rumpi & Pascal |
Re: Event wenn Digitalkamera angeschlossen wird...
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!
Auch ich stehe vor der Aufgabe, meine Olypmus Camera, die sich als USB Storage meldet, automatisch zuzuordnen. Nach sorgfältigen Lesen dieses Themas habe ich mich der hervoragenden HID-Componente von Robert Marquardt (Ein großes Danke an dieser Stelle) gewidmet. Ich habe die Klasse "TJvHidPnPInfo" aus der "JvHidControllerClass.pas" extrahiert, zu "TUSBstorInfo" umbenannt und die Funktion "procedure TJvHidDeviceController.FillInList(var List: TList)" zur "procedure FillUSBStoragesInList(var List: TList; CurrentlyActive: boolean);" umgebaut, damit sie die installierten bzw. aktiven USB Storages zurückgibt, also über die SetupDi-Funktionen. Das funktioniert bei mir sehr gut (bei meiner Olympus C-300). Fehlt aber immernoch die Zuordnung zu dem Laufwerksbuchstaben. (Über "HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices" geht es meiner Meinung nach nicht, da dieser Eintrag unter Win9x nicht besteht und das einen Rattenschwanz von Registry-Verfolgungen nach sich zieht.) Demo-Projekt mit allen benutzten Dateien ist als Attachment angehängt. Grüße Quinten |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz