System-Verzeichnisse wie Desktop / Temp / ... rausfinden
System-Verzeichnisse wie Desktop / Temp / ... rausfinden
Hallo,
im CodeArchiv gibt es zwar eine Abfrage um herauszufinden
wie der Pfad z.B. zum Desktop liegt, aber das funzt anscheinend
nur unter XP (nicht Win98).
Gibt es noch andere Möglichkeiten die üblichen Pfade rauszubekommen?
im CodeArchiv gibt es zwar eine Abfrage um herauszufinden
wie der Pfad z.B. zum Desktop liegt, aber das funzt anscheinend
nur unter XP (nicht Win98).
Gibt es noch andere Möglichkeiten die üblichen Pfade rauszubekommen?
Okay, das ist aber nur der Temp.
Also der Befehl ist SHGetSpecialFolderPath_()
CSIDL_DESKTOP wäre der Desktop
http://msdn.microsoft.com/library/defau ... erpath.asp
Wie muss das dann konkret heißen? Bei SHGetSpecialFolderPath_(...) meckert PB immer bei - angeblich nicht gültig...
Also der Befehl ist SHGetSpecialFolderPath_()
CSIDL_DESKTOP wäre der Desktop
http://msdn.microsoft.com/library/defau ... erpath.asp
Wie muss das dann konkret heißen? Bei SHGetSpecialFolderPath_(...) meckert PB immer bei - angeblich nicht gültig...
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Wenn Du die PBOSL Libs hast:
Werde die Hilfe in der nächsen Version mal erweitern, so das man die
Konstanten auch findet, wurde anscheinen vergessen
(aber nicht
von mir
)
Code: Alles auswählen
Debug GetHWFolder(#GetHWInfo_DESKTOP)
Konstanten auch findet, wurde anscheinen vergessen

von mir

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Hi,
hab nen bissle was vom VB Code geportet und was von TS-Softs code (Boardsuche) geklaut funzt super hier das ergebnis:

mfg
125
hab nen bissle was vom VB Code geportet und was von TS-Softs code (Boardsuche) geklaut funzt super hier das ergebnis:
Code: Alles auswählen
Structure EMID
cb.b
abID.b[1]
EndStructure
Structure ITEMIDLIST
mkid.EMID
EndStructure
#CSIDL_FLAG_CREATE = $8000
#CSIDL_ADMINTOOLS = $30
#CSIDL_ALTSTARTUP = $1D
; Anwendungsdaten
#CSIDL_APPDATA = $1A
#CSIDL_BITBUCKET = $A
; CD Burning
#CSIDL_CDBURN_AREA = $3B
; Für alle Benutzer (All Users)
#CSIDL_COMMON_ADMINTOOLS = $2F
#CSIDL_COMMON_ALTSTARTUP = $1D
#CSIDL_COMMON_APPDATA = $23
; Desktop
#CSIDL_COMMON_DESKTOPDIRECTORY = $19
#CSIDL_COMMON_DOCUMENTS = $2E
; Favoriten
#CSIDL_COMMON_FAVORITES = $1F
; Gemeinsame Musik
#CSIDL_COMMON_MUSIC = $35
; Gemeinsame Bilder
#CSIDL_COMMON_PICTURES = $36
; Programme-Ordner im Startmenü
#CSIDL_COMMON_PROGRAMS = $17
; Starmenü
#CSIDL_COMMON_STARTMENU = $16
; Autostart
#CSIDL_COMMON_STARTUP = $18
; Vorlagen
#CSIDL_COMMON_TEMPLATES = $2D
; Gemeinsame Videos
#CSIDL_COMMON_VIDEO = $37
#CSIDL_CONTROLS = $3
; Cookies
#CSIDL_COOKIES = $21
; Desktop
#CSIDL_DESKTOP = $0
#CSIDL_DESKTOPDIRECTORY = $10
; Treiber
#CSIDL_DRIVES = $11
; Favoriten
#CSIDL_FAVORITES = $6
; Schriftarten
#CSIDL_FONTS = $14
; Verlauf
#CSIDL_HISTORY = $22
#CSIDL_INTERNET = $1
; Temporäre Internetdateien
#CSIDL_INTERNET_CACHE = $20
; Anwendungsdaten
#CSIDL_LOCAL_APPDATA = $1C
#CSIDL_MYDOCUMENTS = $C
; Eigene Musik
#CSIDL_MYMUSIC = $D
; Eigene Bilder
#CSIDL_MYPICTURES = $27
; Eigene Videos
#CSIDL_MYVIDEO = $E
; Netzwerkumgebung
#CSIDL_NETHOOD = $13
#CSIDL_NETWORK = $12
; Eigene Dateien
#CSIDL_PERSONAL = $5
#CSIDL_PRINTERS = $4
; Druckerumgebung
#CSIDL_PRINTHOOD = $1B
; Profil
#CSIDL_PROFILE = $28
; Programme
#CSIDL_PROGRAM_FILES = $26
; Gemeinsamme Dateien
#CSIDL_PROGRAM_FILES_COMMON = $2B
; Programme (im Startmenü)
#CSIDL_PROGRAMS = $2
; Zuletzt verwendete Dokumente
#CSIDL_RECENT = $8
; Senden An
#CSIDL_SENDTO = $9
; Startmenü
#CSIDL_STARTMENU = $B
; Autostart
#CSIDL_STARTUP = $7
; System (bzw. System32)
#CSIDL_SYSTEM = $25
; Vorlagen
#CSIDL_TEMPLATES = $15
; Windows
#CSIDL_WINDOWS = $24
#NOERROR = 0
Procedure.s GetSpecialeFolder(num.l)
*idl.ITEMIDLIST = #Null
If SHGetSpecialFolderLocation_ (0, folder, @*idl) = #NOERROR
Buff.s = Space (#MAX_PATH)
If SHGetPathFromIDList_ (*idl, @Buff)
If Right(Buff, 1) <> "\" : Buff + "\" : EndIf
ProcedureReturn Buff
EndIf
EndIf
EndProcedure
Debug GetSpecialeFolder(#CSIDL_DESKTOP)

mfg
125


- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
>> hab nen bissle was vom VB Code geportet und was von TS-Softs code(Boardsuche) geklaut
Bei sowas kann man ja kaum von klauen sprechen
, findeste so ähnlich in der System.pbi von GPI
Aber PBOSL ist doch am bequemsten
Hier nochmal die Constanten aus PBOSL, funzen auch mit der obigen Procedure:
Achtung: ob die Ordner existieren hängt von der WindowsVersion, sowie vom installiertem Internet Explorer ab
//Edit
PBOSL.chm wurde geupdated, alle Konstanten jetzt in der Hilfe aufgeführt!
Bei sowas kann man ja kaum von klauen sprechen

Aber PBOSL ist doch am bequemsten

Hier nochmal die Constanten aus PBOSL, funzen auch mit der obigen Procedure:
Code: Alles auswählen
#GetHWInfo_DESKTOP = $0000
#GetHWInfo_INTERNET = $0001
#GetHWInfo_PROGRAMS = $0002
#GetHWInfo_CONTROLS = $0003
#GetHWInfo_PRINTERS = $0004
#GetHWInfo_PERSONAL = $0005
#GetHWInfo_FAVORITES = $0006
#GetHWInfo_STARTUP = $0007
#GetHWInfo_RECENT = $0008
#GetHWInfo_SENDTO = $0009
#GetHWInfo_BITBUCKET = $000A
#GetHWInfo_STARTMENU = $000B
#GetHWInfo_MYDOCUMENTS = $000C
#GetHWInfo_MYMUSIC = $000D
#GetHWInfo_MYVIDEO = $000E
#GetHWInfo_DIRECTORY = $0010
#GetHWInfo_DRIVES = $0011
#GetHWInfo_NETWORK = $0012
#GetHWInfo_NETHOOD = $0013
#GetHWInfo_FONTS = $0014
#GetHWInfo_TEMPLATES = $0015
#GetHWInfo_COMMON_STARTMENU = $016
#GetHWInfo_COMMON_PROGRAMS = $0017
#GetHWInfo_COMMON_STARTUP = $0018
#GetHWInfo_COMMON_DESKTOPDIRECTORY = $0019
#GetHWInfo_APPDATA = $001A
#GetHWInfo_PRINTHOOD = $001B
#GetHWInfo_LOCAL_APPDATA = $001C
#GetHWInfo_ALTSTARTUP = $001D
#GetHWInfo_COMMON_ALTSTARTUP = $001E
#GetHWInfo_COMMON_FAVORITES = $001F
#GetHWInfo_INTERNET_CACHE = $0020
#GetHWInfo_COOKIES = $0021
#GetHWInfo_HISTORY = $0022
#GetHWInfo_COMMON_APPDATA = $0023
#GetHWInfo_WINDOWS = $0024
#GetHWInfo_SYSTEM = $0025
#GetHWInfo_PROGRAM_FILES = $0026
#GetHWInfo_MYPICTURES = $0027
#GetHWInfo_PROFILE = $0028
#GetHWInfo_SYSTEMX86 = $0029
#GetHWInfo_PROGRAM_FILESX86 = $002A
#GetHWInfo_PROGRAM_FILES_COMMON = $002B
#GetHWInfo_PROGRAM_FILES_COMMONX86 = $002C
#GetHWInfo_COMMON_TEMPLATES = $002D
#GetHWInfo_COMMON_DOCUMENTS = $002E
#GetHWInfo_COMMON_ADMINTOOLS = $002F
#GetHWInfo_ADMINTOOLS = $0030
#GetHWInfo_CONNECTIONS = $0031
#GetHWInfo_COMMON_MUSIC = $0035
#GetHWInfo_COMMON_PICTURES = $0036
#GetHWInfo_COMMON_VIDEO = $0037
#GetHWInfo_RESOURCES = $0038
#GetHWInfo_RESOURCES_LOCALIZED = $0039
#GetHWInfo_COMMON_OEM_LINKS = $003A
#GetHWInfo_CDBURN_AREA = $003B
#GetHWInfo_COMPUTERSNEARME = $003D
#GetHWInfo_FLAG_PER_USER_INIT = $0800
#GetHWInfo_FLAG_NO_ALIAS = $1000
#GetHWInfo_FLAG_DONT_VERIFY = $4000
#GetHWInfo_FLAG_CREATE = $8000
#GetHWInfo_FLAG_MASK = $FF00
//Edit
PBOSL.chm wurde geupdated, alle Konstanten jetzt in der Hilfe aufgeführt!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Habe das hier im Cache von Google gefunden:
http://66.249.93.104/search?q=cache:CvJ ... lr=lang_de
Wollte es mal posten, damit es nicht verloren geht! finde, dass diese Funktion sehr einfach ist.
Habe übrigens etwas geändert: Bei der Rückgabe des Strings aus der Procedure wird ein \ hinten drangehängt!
http://66.249.93.104/search?q=cache:CvJ ... lr=lang_de
Code: Alles auswählen
Procedure.s spec_folder(clsi_const.l)
path.s = Space(2048)
SHGetSpecialFolderLocation_(0,clsi_const,@pidl.l)
SHGetPathFromIDList_(pidl,@path)
CoTaskMemFree_(pidl)
ProcedureReturn path+"\"
EndProcedure
Debug spec_folder($1a) ;CSIDL_APPDATA
Debug spec_folder($2f) ;CSIDL_COMMON_ADMINTOOLS
Debug spec_folder($23) ;CSIDL_COMMON_APPDATA
Debug spec_folder($1f) ;CSIDL_COMMON_FAVORITES
Debug spec_folder($19) ;CSIDL_COMMON_DESKTOPDIRECTORY
Debug spec_folder($2e) ;CSIDL_COMMON_DOCUMENTS
Debug spec_folder($17) ;CSIDL_COMMON_PROGRAMS
Debug spec_folder($16) ;CSIDL_COMMON_STARTMENU
Debug spec_folder($18) ;CSIDL_COMMON_STARTUP
Debug spec_folder($2d) ;CSIDL_COMMON_TEMPLATES
Debug spec_folder($0) ;CSIDL_DESKTOP
Debug spec_folder($10) ;CSIDL_DESKTOPDIRECTORY
Debug spec_folder($6) ;CSIDL_FAVORITES
Debug spec_folder($14) ;CSIDL_FONTS
Debug spec_folder($22) ;CSIDL_HISTORY
Debug spec_folder($20) ;CSIDL_INTERNET_CACHE
Debug spec_folder($1c) ;CSIDL_LOCAL_APPDATA
Debug spec_folder($27) ;CSIDL_MYPICTURES
Debug spec_folder($13) ;CSIDL_NETHOOD
Debug spec_folder($5) ;CSIDL_PERSONAL
Debug spec_folder($28) ;CSIDL_PROFILE
Debug spec_folder($2b) ;CSIDL_PROGRAM_FILES_COMMON
Debug spec_folder($2) ;CSIDL_PROGRAMS
Debug spec_folder($8) ;CSIDL_RECENT
Debug spec_folder($9) ;CSIDL_SENDTO
Debug spec_folder($b) ;CSIDL_STARTMENU
Debug spec_folder($7) ;CSIDL_STARTUP
Debug spec_folder($25) ;CSIDL_SYSTEM
Debug spec_folder($15) ;CSIDL_TEMPLATES
Debug spec_folder($24) ;CSIDL_WINDOWS
Habe übrigens etwas geändert: Bei der Rückgabe des Strings aus der Procedure wird ein \ hinten drangehängt!
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
@ANDI51
Den Backslash immer anzuhängen ist auch nicht das wahre. Besser wäre es zu überprüfen ob einer vorhanden ist.
@Delle
Diese Funktion ist nur bedingt zur Pfad-Ermittlung geeignet, da sie stark Windows-Versions und IE-Version abhängig ist.
Temppfad wird mit folgender API ermittelt:
Den Backslash immer anzuhängen ist auch nicht das wahre. Besser wäre es zu überprüfen ob einer vorhanden ist.
@Delle
Diese Funktion ist nur bedingt zur Pfad-Ermittlung geeignet, da sie stark Windows-Versions und IE-Version abhängig ist.
Temppfad wird mit folgender API ermittelt:
Code: Alles auswählen
Temp.s = Space(#MAX_PATH)
GetTempPath_(#MAX_PATH, @Temp)
Debug Temp
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
