Seite 1 von 1

(WinAPI) TEMP-Pfad ermitteln

Verfasst: 29.08.2004 06:09
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)

Verfasst: 10.10.2005 00:45
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

Verfasst: 10.10.2005 00:49
von AND51
Oder geht das nicht gleich, indem ich die Umgebungsvariable

%TEMP%

benutze?

Verfasst: 10.10.2005 01:14
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