Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   TOpenDialog - Datei vom Handy kopieren (https://www.delphipraxis.net/165733-topendialog-datei-vom-handy-kopieren.html)

gmc616 13. Jan 2012 10:08

TOpenDialog - Datei vom Handy kopieren
 
Gesundes Neues!

Ich habe Windows 7, Delphi 2009 und ein auf Android laufenden Handy (Smartphone, PDA, was auch immer).
Schießt man das Handy per USB an den Windows-PC, kann man wählen ob diese Verbindung als Massenspeicherübertragung oder als Medienübertragen funktionieren soll.
Wählt man Massenspeicherübertragung bekommt das Handy einen Laufwerksbuchstaben und alles ist gut.
Wählt man stattdessen Medienübertragung bekommt das Handy KEINEN Laufwerkbuchstaben, wird aber dennoch im Explorer sowie im TOpenDialog als "Tragbares Gerät" geführt.

Im TOpenDialog kann ich nun auf die SD-Card zugreifen durch lustig durch die Verzeichnisse wechseln. Das Tragbare Gerät repräsentiert sich (für den DAU) als ganz normales Laufwerk.
Möchte man eine Datei öffnen, in meinem Fall kopieren, funktioniert das Ganze nicht mehr, da die gewählte Datei im TOpenDialog.FileName nur den Namen, nicht aber das komplette Verzeichnis enthält. Wie auch, es gibt ja noch nicht mal einen Laufwerksbuchstaben ^^

Kann man die Datei trotzdem irgendwie öffnen bzw. kopieren?

Oder gibt es eine Möglichkeit "Tragbare Geräte" im TOpenDialog auszublenden? In den Optionen des Dialogs habe ich bis jetzt nichts gefunden.

Für eure Hilfe vielen Dank.

SimplySimon 16. Jan 2012 22:54

AW: TOpenDialog - Datei vom Handy kopieren
 
Ich denke dass das bei der Medienübertragung nicht funktionieren wird. Um Dateien kopieren zu können muss das Gerät eben als Massenspeicher konfiguriert werden.
Andere Lösungen habe ich (nach probieren) auch nicht herausgefunden. Es funktioniert tatsächlich nicht...
Aber ist es so ein großes Problem das Gerät als Massenspeicher bereit zu stellen?

gmc616 17. Jan 2012 08:26

AW: TOpenDialog - Datei vom Handy kopieren
 
Danke für deine Mühe.

Naja, für mich ist es kein Problem den Massenspeichermodus zu aktivieren, aber die Anwendung sollen auch Leute einsetzten können, die mit Rechner nicht so gut umgehen können, wie ich/wir. DAUs eben.

Zusätzlich soll zu besseren Handhabung auf dem PC eine RemoteControl-Anwendung den PDA steuern können.
Ich weiß nicht, ob das im Massenspeichermodus funktioniert.

Windows bietet im KontextMenü des Explorers beim Zugriff auf die SD-Card im Medienübertragungsmodus die Möglichkeit Dateien zu kopieren. Es wird sogar beim Doppelklick auf z.B. eine MP3-Datei, die Datei vorher (ich nehme an in ein temporäres Verzeichnis) kopiert und anschließend geöffnet.
Irgendwie muß man das doch auch per Code ansprechen können. Hab bloß keine Ahnung wo ich im MSDN anfangen soll zu suchen. :?

einbeliebigername 17. Jan 2012 10:08

AW: TOpenDialog - Datei vom Handy kopieren
 
Hallo,

Zitat:

Zitat von gmc616 (Beitrag 1146269)
Zusätzlich soll zu besseren Handhabung auf dem PC eine RemoteControl-Anwendung den PDA steuern können.
Ich weiß nicht, ob das im Massenspeichermodus funktioniert.

Ich habe auch ein Handy wo man beim Verbinden mit dem Computer zwischen zwei Arten wählen kann. Entweder Zugriff auf den Massenspeicher oder die Restlichen Funktionen nutzen. Ich habe gerade festgestellt das ich mit dem Explorer im nicht Massenspeicher-Modus auch auf den Massenspeicher zugreifen kann. Bei mir taucht das Handy mit seinem Namen unter Computer neben den Laufwerken auf. Wenn ich mir im Explorer den Pfad anzeigen lasse bekomme ich aber nur "Bluetooth-Umgebung\Memory Stick". Im Öffnen-Dialog vom Nodepad kann ich aber nicht auf das Handy zugreifen. Somit kann ich dir nicht direkt weiterhelfen.

Zitat:

Zitat von gmc616 (Beitrag 1146269)
Windows bietet im KontextMenü des Explorers beim Zugriff auf die SD-Card im Medienübertragungsmodus die Möglichkeit Dateien zu kopieren. Es wird sogar beim Doppelklick auf z.B. eine MP3-Datei, die Datei vorher (ich nehme an in ein temporäres Verzeichnis) kopiert und anschließend geöffnet.
Irgendwie muß man das doch auch per Code ansprechen können. Hab bloß keine Ahnung wo ich im MSDN anfangen soll zu suchen. :?

Aber einen Tipp kann ich dir noch geben. Im Hintergrund vom Windows-Dateisystem gibt es noch "item identifier". Zu einigen Orten wie z.B. der Desktop gibt es auch noch Konstanten wie CSIDL_DESKTOP (ShlObj.pas). Ein Einstig in diese Materie könnte eine Implementierung einer BrowseForFolderDialog-Komponente sein (z.B. TJvBrowseForFolderDialog). Dort wird z.B. mittels SHGetSpecialFolderLocation anhand einer CSIDL-Konstante eine "item identifier list" ermittelt. Interessant wäre was der Öffnen-Dialog vom Nodepad oder Media Player und der BrowseForFolderDialog bei deinem Handy machen. Zu mindestens der BrowseForFolderDialog zeigt bei mir unter Computer ein zusätzlicher Eintrag ohne Namen und mit Blatt-Icon an. Ich kann diesen da aber nicht öffnen. Im Ordner-Edit erscheint nur zwei GUID's, jeweils mit :: davor und durch \ getrennt.

Ach noch einen Tipp: Schau doch mal was der Total Commander bei deinem Handy macht. Wenn du mit dem im nicht Massenspeicher-Modus von deinem Handy Dateien kopieren kannst, hast du eine echte Chance das in deiner Anwendung hinzubekommen. Ansonsten wird es schwer. Ich denke es ist aber nicht unmöglich. Der Explorer ist ja auch nur ein Programm was auf die Windows-API zugreift.

Einbeliebigername.

r_amse_s 26. Mai 2012 20:34

AW: TOpenDialog - Datei vom Handy kopieren
 
ich hätte auch Interesse an das Thema!

gibt es vielleicht eine Lösung?

TotalCommander erkennt das Gerät auch nicht wenn keine Laufwerkbuchstabe zugewiesen wird...wäre sehr dankbar für eine Lösung


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