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/)
-   -   Liste von "Dieser PC" erhalten? (https://www.delphipraxis.net/202397-liste-von-dieser-pc-erhalten.html)

MicMic 30. Okt 2019 08: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 09: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 09:33

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

p80286 30. Okt 2019 09: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 10: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 10: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 15: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 17: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 18: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 21: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.

ghubi01 31. Okt 2019 09:46

AW: Liste von "Dieser PC" erhalten?
 
Hallo,

wo genau in der Registry findet man den Wert, den Du gefunden hast?
Die Schlüsselpfadangabe CLSID\Instance\InitPropertyBag gibt es in meiner gesamten Registry nicht.
Es gibt aber mehrere Einträge wie HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSDI\{...}\In stance\InitPropertyBag\TargetKnownFolder.

:?:

peterbelow 31. Okt 2019 14:06

AW: Liste von "Dieser PC" erhalten?
 
Zitat:

Zitat von ghubi01 (Beitrag 1450582)
Hallo,

wo genau in der Registry findet man den Wert, den Du gefunden hast?
Die Schlüsselpfadangabe CLSID\Instance\InitPropertyBag gibt es in meiner gesamten Registry nicht.
Es gibt aber mehrere Einträge wie HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSDI\{...}\In stance\InitPropertyBag\TargetKnownFolder.

:?:

Lass die Finger von der Regfstry, verwende das Shell APi. http://bcbjournal.org/articles/vol4/..._namespace.htm

MicMic 31. Okt 2019 14:17

AW: Liste von "Dieser PC" erhalten?
 
Zitat:

s gibt aber mehrere Einträge wie HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSDI\{...}\In stance\InitPropertyBag\TargetKnownFolder.
Ja, die meine ich. Aber ich glaube, da muss man noch schauen, wegen 32/64 Bit Windows.

Zitat:

Lass die Finger von der Regfstry, verwende das Shell APi. http://bcbjournal.org/articles/vol4/..._namespace.htm
Ich nutze ja schon die API aber die aktuelle Liste bekommt man wohl nicht durch die API. Also ich meine die Ordner, die in "Dieser PC" beim Explorer gelistet sind. Deswegen noch die Registry (für die Liste = Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Win dows\CurrentVersion\Explorer\MyComputer\NameSpace)


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