Pfad zu Program (Ordner) herausfinden

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Pfad zu Program (Ordner) herausfinden

Beitrag von X360 Andy »

Nein das is nicht die Frage die schon 100 mal beantwortet ist :lol:

Ich möchte DEN pfad herausfinden wo alle Programme des Computers sind.
In meinem Fall "C:\Program Files" , es gibt doch bestimmt sowas wie
GetHomeDirectory() oder GetTemporaryDirectory() oder ?


Suche und Hilfe von PB hab ich benutzt = 0
Sogar Api´s durchsucht :D

Mfg
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Das Problem wird sein, dass man zu mindest bei den WindowsVersionen vor
Windows Vista ja die Ordner selbst definieren konnte.

Bei Windows XP ist es in der deutschen Version ein anderer Ordner als
in der amerikanischen.

Und dann kommt noch dazu, dass man ja in den meisten Programmen
den Installationsordner selbst definieren kann.

:roll:

Ansonsten mal hier schauen
http://msdn.microsoft.com/de-de/library/bb979138.aspx
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

Und wie machen das dann die Setup-Installer ?
Da wurden ja auch welche in PB geschrieben ... dort wird auch automatisch MEIN Pfad gefunden...

Muss mir die Seite mal durchlesen ... thx

EDIT
CSIDL_PROGRAM_FILES = &H26& ' C:\Programme

müsste es sein oder ?
und wie setzte ich das jetzt richtig in PB um ? :oops:
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Am besten mal Kontakt mit den Machern vom EasySetup aufnehmen.
Glaube so hieß der Installer von PureBasic.

Bei Vista heißt das Ding wohl immer "Program Files"
Du könntest also auch überprüfen, ob ein "Programme" Ordner existeriert
und oder ein "Program Files" Ordner. Würde zu mindest für den englisch sprachigen Raum und für den deutschsprachigen Raum funktionieren.

Und je nach dem, wo die meisten Programme installiert sind,
das schlägste dann als Installationsordner vor.

Ist natürlich nicht die ideale Lösung :cry:
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Beitrag von Bisonte »

auch auf die gefahr hin TS-Soft zu wiederholen ;)

Code: Alles auswählen

Procedure.s File_GetSpecialFolder(CSIDL)

  Protected *itemid.ITEMIDLIST
  Protected location.s = Space(#MAX_PATH)

  If SHGetSpecialFolderLocation_ (0, CSIDL, @*itemid) = #NOERROR
    If SHGetPathFromIDList_(*itemid, @location)
      CoTaskMemFree_(*itemid)
      If Right(location, 1) <> "\" : location + "\" : EndIf
      ProcedureReturn location
    EndIf
  EndIf
endprocedure

Debug File_GetSpecialFolder(#CSIDL_PROGRAM_FILES)
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

Danke an euch beiden :allright:
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Beitrag von Bisonte »

X360 Andy hat geschrieben: EDIT
CSIDL_PROGRAM_FILES = &H26& ' C:\Programme

müsste es sein oder ?
Naja Du hattest es ja schon fast :D
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

.... ich würde ja erst mal in die Liste der Umgebungsvariablen schauen...

ebenso wie es %SYSTEM% gibt, gibt es garantiert auch %PROGRAMS% oder so ähnlich.
diese Variable enthält dann zuverlässig den PATH$,
auch wenn das ding "D:\Hoita Programma" heißt...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
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

Beitrag von ts-soft »

Kaeru Gaman hat geschrieben:.... ich würde ja erst mal in die Liste der Umgebungsvariablen schauen...

ebenso wie es %SYSTEM% gibt, gibt es garantiert auch %PROGRAMS% oder so ähnlich.
diese Variable enthält dann zuverlässig den PATH$,
auch wenn das ding "D:\Hoita Programma" heißt...
So eine Umgebungsvariable gibt es nicht. Die API ist auch zuverlässiger,
solange Pfade abgefragt werden, die auch unterstützt werden, abhängig
vom IE und Winversion.

Für Win-, Sys- und Tempdir sollte man es nicht nehmen, sondern die
spezielle API
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.
Bild
Antworten