AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Event wenn Digitalkamera angeschlossen wird...
Thema durchsuchen
Ansicht
Themen-Optionen

Event wenn Digitalkamera angeschlossen wird...

Ein Thema von Wormid · begonnen am 26. Aug 2003 · letzter Beitrag vom 29. Sep 2003
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#11

Re: Event wenn Digitalkamera angeschlossen wird...

  Alt 28. Aug 2003, 13:02
Über die Registry gehts anscheinend, trotzdem wäre es nett von dir den genauen Weg dahin aufzuzeigen

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#12

Re: Event wenn Digitalkamera angeschlossen wird...

  Alt 28. Aug 2003, 13:50
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
  Mit Zitat antworten Zitat
Rumpi

Registriert seit: 26. Aug 2003
Ort: Berlin
72 Beiträge
 
#13

Re: Event wenn Digitalkamera angeschlossen wird...

  Alt 1. Sep 2003, 09:14
Hi,

ich glaube du kannst nach DeviceChange mit
SetupDiGetClassDevsEx siehe:

setupdigetclassdevsex

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
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#14

Re: Event wenn Digitalkamera angeschlossen wird...

  Alt 4. Sep 2003, 10:23
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 )

So würde ich das machen.

Sofern dieses Timer-ereignis nicht den Programm ablauf stört.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#15

Re: Event wenn Digitalkamera angeschlossen wird...

  Alt 4. Sep 2003, 12:15
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
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#16

Re: Event wenn Digitalkamera angeschlossen wird...

  Alt 5. Sep 2003, 13:00
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
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#17

Re: Event wenn Digitalkamera angeschlossen wird...

  Alt 6. Sep 2003, 12:23
Wird denn WM_DEVICECHANCED auch ausgelöst, wenn ein USB-Gerät wieder entfernt wird?
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#18

Re: Event wenn Digitalkamera angeschlossen wird...

  Alt 6. Sep 2003, 12:59
Beim meinen ersten Versuchen habe ich die Message nicht registriert beim entfernen das Gerätes. Aber sicher bin ich mir da nicht.

Gruß

Wormid
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
Rumpi

Registriert seit: 26. Aug 2003
Ort: Berlin
72 Beiträge
 
#19

Re: Event wenn Digitalkamera angeschlossen wird...

  Alt 6. Sep 2003, 13:01
Zitat von Captnemo:
Wird denn WM_DEVICECHANCED auch ausgelöst, wenn ein USB-Gerät wieder entfernt wird?
Ja.

mfg Rumpi & Pascal
  Mit Zitat antworten Zitat
Quinten

Registriert seit: 29. Sep 2003
1 Beiträge
 
#20

Re: Event wenn Digitalkamera angeschlossen wird...

  Alt 29. Sep 2003, 10:49
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
Angehängte Dateien
Dateityp: zip usbstorages.zip (50,6 KB, 65x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 02:49 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