Deutsch
Quelltexte/ Codesnippets

Desktop Finden Knownfolders Knownfoldersid Ole Ole32 Ordner Spezielle Vista Windows

 

Nico
Madysa

KompilierenMarkierenSeparieren
' gilt ab Windows Vista oder höher
declare Long hShell32, hOle32

proc Init

    hOle32 = ImportDLL("OLE32", "ole.")
    hShell32 = ImportDLL("SHELL32", "shell.")
    ole.CoInitialize(0)

endproc

proc Exit

    ole.CoUnInitialize()
    FreeDLL hOle32
    FreeDLL hShell32

endproc

proc GetCurrentDesktopPath

    declare String KnownFoldersID_Desktop, Long pPath, String desktopPath
    /* Die KnownFolders IDs stehen (mehr oder weniger in Klartext)
    in Microsofts knownfolders.h Headerdatei. Es sind nichts
    Anderes als ein Haufen 16 Byte lange Konstanten. Aus
    ihnen wiederum können die Pfade der verschiedensten
    speziellen Ordner bezogen werden, selbst wenn diese vom
    Nutzer verschoben worden sind.                              */
    KnownFoldersID_Desktop = "\x3A\xCC\xBF\xB4\x2C\xDB\x4C\x42\xB0\x29\x7F\xE9\x9A\x87\xC6\x41"
    shell.SHGetKnownFolderPath(Addr(KnownFoldersID_Desktop), 0, 0, Addr(pPath))
    ' Die obige Funktion hat uns die Adresse eines neu
    ' erzeugten Strings gegeben. Wir basteln daraus
    ' wieder einen XProfan-String.
    desktopPath = StringW$(pPath, 0)
    ole.CoTaskMemFree(pPath)
    return desktopPath

endproc

cls
Init()
print GetCurrentDesktopPath()
Exit()
waitinput
end
 
28.02.2014  
 




Jörg
Sellmeyer
Für welche Windowsversion gilt das? Mit XP bekomme ich eine Fehlermeldung, dass die Funktion shell.SHGetKnownFolderPath unbekannt ist.
Außerdem ist die Variable hShell32 nicht deklariert. Dafür wird hUser32 nicht verwendet...

Zumindest unter XP geht es so ganz easy:
KompilierenMarkierenSeparieren
Def Desktop(0) ReadIni$("Hkey_1","Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders","Desktop")
Print Desktop()
waitinput
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
28.02.2014  
 




Nico
Madysa
Jörg Sellmeyer (28.02.14)

Für welche Windowsversion gilt das? Mit XP bekomme ich eine Fehlermeldung, dass die Funktion shell.SHGetKnownFolderPath unbekannt ist.


Ab Windows 7 geht's und ich habe keinen Grund anzunehmen, dass es unter Vista nicht klappt. Habe mal "ab Windows Vista" hinzugefügt.

Jörg Sellmeyer (28.02.14)

Außerdem ist die Variable hShell32 nicht deklariert. Dafür wird hUser32 nicht verwendet...


Mein Fehler. Variable war falsch deklariert, hab's korrigiert. War schon spät, als ich damit rumgefummelt hatte.

Jörg Sellmeyer (28.02.14)

Zumindest unter XP geht es so ganz easy:


Bin über diese "Known Folders" Sache in der MSDN gestolpert und es hat den Anschein, dass das die von M$ bevorzugte Methode ist, diese speziellen Pfade abzugreifen.

Ein Blogartikel von 2003 [...]  erklärt, dass der "Shell-Folders"-Registry-Schlüssel nur aus Kompatibilitätsgründen mit irgendwelchen obskuren Programmen aus 1994 existiert und nicht mehr verwendet werden sollte.
Die Funktion SHGetSpecialFolderLocation , die darin stattdessen vorgeschlagen wird, ist mittlerweile nochmals  abgelöst worden, und zwar von SHGetKnownFolderPath  [...] , der Funktion, die ich oben verwendet habe.

Wenn ich die Ressourcen zu dem Thema richtig verstanden habe, hat der Registryschlüssel "Shell Folders" unter Windows derzeit etwa den Status, den Add-, Sub- und die anderen veralteten Funktionen in XProfan 10 hatten. Ob du ihn weiter verwendest, ist trotzdem deine Sache.
 
28.02.2014  
 




Michael
Wodrich
Wahrscheinlich hat jeder Microsoft-Mitarbeiter da seine eigene Routine. Gott sei Dank sind die nicht alle so mitteilsam wie einige wenige ...
Da hätte wirklich eine einzige Möglichkeit voll ausgereicht. Jetzt weiß man wieder nicht, welche der vielen Möglichkeiten man nutzen sollte.

Dein Fundstück läuft auf einem Vista Ultimate ganz hervorragend.

Das wäre ja wieder Zündstoff für die Foren:
- statt: Welche Programmiersprache ist die beste....
- einfach: Welche SpecialFolder-Routine sollte man bevorzugen....

(Ist euch übrigens schon mal aufgefallen: Diejenigen, die diese Frage stellen tauchen dann in den folgenden 10.000 Postings nicht mehr auf...

Gruß
Michael Wodrich
 
XProfan X2
Windows (TM) Vista Ultimate, Core(TM) i7 920 @ 2.67GHz, 9206,26 MB

Programmieren, das spannendste Detektivspiel der Welt.
28.02.2014  
 




Nico
Madysa
[OFFTOPIC]
Michael Wodrich (28.02.14)

(Ist euch übrigens schon mal aufgefallen: Diejenigen, die diese Frage stellen tauchen dann in den folgenden 10.000 Postings nicht mehr auf...


Wahrscheinlich sind das Leute, die einfach nur nach Streit suche.
[/OFFTOPIC]
 
28.02.2014  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

10.143 Betrachtungen

Unbenanntvor 0 min.
H.Brill22.02.2022
p.specht20.11.2021
Uwe Lang20.11.2021
Manfred Barei19.11.2021
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie