Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Liste von "Dieser PC" erhalten? (https://www.delphipraxis.net/202397-liste-von-dieser-pc-erhalten.html)

MicMic 30. Okt 2019 09:23

Liste von "Dieser PC" erhalten?
 
Hallo,
In "Dieser PC" stehen ja erst mal Laufwerksbuchstaben, dann aber auch ein paar Ordnernamen. Die Liste kann sich ja auch ändern. Deshalb würde ich gerne stets die Liste aus dem Windows-System auslesen können. Wie hole ich mir diese? Stehen sicherlich in der Registry aber könnte mir vorstellen, es gibt auch API Funktionen dafür. Hat vielleicht jemand ein Beispiel rumliegen?

Gruß Mic

Moombas 30. Okt 2019 10:25

AW: Liste von "Dieser PC" erhalten?
 
Blöde Frage aber welches OS? Win10?

"Dieser PC" habe ich noch nie wahrgenommen XD

MicMic 30. Okt 2019 10:33

AW: Liste von "Dieser PC" erhalten?
 
Ja Sorry.. Windows 10 im Explorer
Davor war es glaub ich, "Arbeitsplatz"

p80286 30. Okt 2019 10:51

AW: Liste von "Dieser PC" erhalten?
 
"dieser PC" besteht aus zwei Teilen
zum einen einige Standardverzeichnisse: SHGetFolderPath
und den verfügbaren Laufwerken: GetDriveType

Das aber nur für den Einstieg, mindestens SHGetFolders ist heute veraltet.

Gruß
K-H

MicMic 30. Okt 2019 11:03

AW: Liste von "Dieser PC" erhalten?
 
Ja, die Funktionen zu SpecialFolders kenne ich... Trotzdem Danke für die Info.
Jedenfalls ist der Inhalt "Dieser PC" vorgegeben. Die Liste dort mit den Ordnern, die zu den echten Verzeichnissen verweisen, kann man über die Registry abändern. Und das machen wohl einige Anwender (viele Fragen danach laut Google). Wenn möglich, soll man ja lieber Funktionen nutzen, als irgendwas aus der Registry zu holen (z.B. SHGetFolderPath). Deswegen meine Frage, ob's evtl. Funktionen gibt, damit ich diesen Inhalt der speziellen Ordner von "Mein PC" auslesen kann. Wenn es dafür nichts gibt, muss ich es halt aus der Registry auslesen.

Der schöne Günther 30. Okt 2019 11:21

AW: Liste von "Dieser PC" erhalten?
 
Ich gehe stark davon aus dass es reine Registry-Einträge sind, denn man kann die Liste ja beliebig anpassen: Einträge entfernen und ganz eigene hinzufügen. Mein Tool der Wahl dafür war immer "ThisPC Tweaker", mittlerweile aufgegangen in WinAeroTools -> WinAero.com.

Weiß gar nicht ob das quelloffen ist, aber vielleicht kann man den Autor ja anschreiben wenn man auf die Schnelle selbst nichts findet...

KodeZwerg 30. Okt 2019 16:10

AW: Liste von "Dieser PC" erhalten?
 
also diese kauf komponente stellt dies alles bereit... jam-software /shellbrowser
ansonsten mach's wie oben beschrieben selber :)

TurboMagic 30. Okt 2019 18:15

AW: Liste von "Dieser PC" erhalten?
 
Naja, der Shellbrowser benutzt die Explorer Umsetzung und zeigt damit genau das an,
was der Explorer anzeigt. Kann nützlich sein, muss aber nicht.

MicMic 30. Okt 2019 19:55

AW: Liste von "Dieser PC" erhalten?
 
Naja, ich versuche keine Komponenten zu nutzen. Egal ob Kostenlos oder nicht. Versuche halt alles selbst zu machen, da man so auch besser lernt.
Mit der Registry ist's aber nicht so einfach. Es ist zwar leicht die Liste zu bekommen, also die CLSIDs aber von den bekannten Ordnern gibt's keine Beschreibung (z.B. 3D-Objekte). Habe versucht CLSIDs zu folgen aber irgendwo habe ich dann "3D-Objects" bekommen. Also kein Deutsch. Ich habe gesehen, dass bei manuellen benutzerdefinierten Einträgen, dazu im CLSID Abschnitt der Standard REG_SZ Wert genutzt wird. Also kann ich hier dies abfragen aber bei den bekannten Ordnern (3D-Objekte, Dokumente, Downloads, Musik etc.) ist dieser Standard REG_SZ leer.

Wenigstens bekomme ich mit:
Code:
SHGetKnownFolderPath(StringToGUID('{...CLSID-Wert...}'),0,0,Path);
das Verzeichnis. Jetzt fehlt mir nur noch der Name. Eigentlich noch das Icon dazu. Aber das Icon ist aus der Registry wohl wieder einfacher herauszulesen. Nur mit den Namen (3D-Objekte, Dokumente, Downloads, Musik etc.) weiß ich noch nicht genau wie.

Gruß Mic

MicMic 30. Okt 2019 22:28

AW: Liste von "Dieser PC" erhalten?
 
Habs hinbekommen.

Im CLSID/Instance/InitPropertyBag findet sich "TargetKnownFolder" (Registry).
Dieser Wert dann mit "SHGetKnownFolderItem" nutzen und mit "GetDisplayName" kann ich dann Name sowie Pfad ermitteln.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:40 Uhr.
Seite 1 von 2  1 2   

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