(WinAPI) TEMP-Pfad ermitteln

Hier kannst du häufig gestellte Fragen/Antworten und Tutorials lesen und schreiben.
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

(WinAPI) TEMP-Pfad ermitteln

Beitrag von Danilo »

Frage:
Wie kann ich mit PB den Temp-Pfad des OS ermitteln.
Leider ist der Temp-Pfad von Win95 bis XP standardmässig unterschiedlich.

Wer weiß Rat??

Antwort:
Das kannst Du ganz einfach mit einer kleinen Prozedur erledigen:

Code: Alles auswählen

Procedure.s GetTempPath()
  A$ = Space(1024)
  GetTempPath_(1024,@A$)
  ProcedureReturn A$
EndProcedure

MessageRequester("INFO","Temp: "+GetTempPath(),0)
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Funzt!
Danke!
Aber wieso kommt der Pfad bei mir unter WinXP SP2 noch im 8.3 dateiFormat?
Bei mir siehts so aus:
C:\DOKUME~1\ANDR~1\LOKALE~1\Temp
Geht das nicht auch so:
C:\Dokumente und EInstellungen\André\Lokale Einstellungen\Temp ???
Wäre das nicht besser? Und kompatibel mit Win95 oder Win98 bis WinXP ?

Naja, Gurß AND51
Zuletzt geändert von AND51 am 17.01.2006 17:48, insgesamt 1-mal geändert.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Oder geht das nicht gleich, indem ich die Umgebungsvariable

%TEMP%

benutze?
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
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 »

Erweiterte Version für AND51:

Code: Alles auswählen

Procedure.s GetLongPathName(File.s)
  DLL = OpenLibrary(#PB_Any, "Kernel32.dll")
  If DLL
    CallFunction(DLL,"GetLongPathNameA", @File, @File, #MAX_PATH)
    CloseLibrary(DLL)
    ProcedureReturn File
  EndIf
EndProcedure

Procedure.s GetTempPath()
  A$ = Space(1024)
  GetTempPath_(1024,@A$)
  ProcedureReturn A$
EndProcedure

MessageRequester("INFO","Temp: "+GetLongPathName(GetTempPath()),0)
Oder per %TEMP% :wink:

Code: Alles auswählen

Procedure.s GetEnv(szVariable.s)
  Protected Length.l, Buffer.s
  Length = GetEnvironmentVariable_(@szVariable, @Buffer, 0)
  If Length
    Buffer = Space(Length)
    GetEnvironmentVariable_(@szVariable, @Buffer, Length)
    ProcedureReturn Buffer
  EndIf
  ProcedureReturn ""
EndProcedure

MessageRequester("Environment", GetEnv("TEMP"))
was ich aber nicht für so empfehlenswert halte
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