Pfad des gestarteten Programms ermitteln?
Verfasst: 11.06.2007 15:00
Hallo wie kann ich den Pfad ermitteln von dem aus das Programm gestartet wurde? Danke om Voraus.
MfG DarkSkillu
MfG DarkSkillu
Das deutsche PureBasic-Forum
https://www.purebasic.fr/german/
Code: Alles auswählen
ProgramFilename()
Code: Alles auswählen
Procedure.s GetAppDir()
FullPath.s = Space(#MAX_PATH)
GetModuleFileName_(GetModuleHandle_(0), @FullPath, #MAX_PATH)
FullPath = GetPathPart(FullPath)
If Right(FullPath, 1) <> "\" : FullPath + "\" : EndIf
ProcedureReturn FullPath
EndProcedure
Procedure.s GetAppName()
AppName.s = Space(#MAX_PATH)
GetModuleFileName_(GetModuleHandle_(0), @AppName, #MAX_PATH)
ProcedureReturn GetFilePart(AppName)
EndProcedure
Procedure.s GetExePath()
Debug "GetExePath()"
Protected ExePath.s = GetPathPart()
If LCase(ExePath) = LCase(#PB_Compiler_Home + "Compilers\")
ExePath = GetCurrentDirectory()
EndIf
ProcedureReturn ExePath
EndProcedure
Code: Alles auswählen
Zieldatei$ = "C:\Dokumente und Einstellungen\Sebastian\Desktop"
Enumeration
#Window_0
EndEnumeration
If OpenWindow(#Window_0, 216, 0, 276, 70, "New window ( 0 )", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreateGadgetList(WindowID(#Window_0))
ButtonGadget(1, 20, 20, 240, 30, "")
EndIf
EndIf
Repeat
Event=WaitWindowEvent()
If Event=#PB_Event_CloseWindow
quit=1
EndIf
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 1
ergebnis$ = ProgramFilename()
Debug ergebnis$
CopyFile(ergebnis$, Zieldatei$)
EndSelect
EndSelect
Until quit=1
Code: Alles auswählen
Procedure.s GetProgramDirectory() ; Program Path
Protected ProgDir.s, TempDir.s = Space(#MAX_PATH)
GetTempPath_(#MAX_PATH,@TempDir)
ProgDir = GetPathPart(ProgramFilename())
If ProgDir = #PB_Compiler_Home+"Compilers\" Or ProgDir = TempDir
ProgDir = GetCurrentDirectory()
EndIf
ProcedureReturn ProgDir
EndProcedure
Code: Alles auswählen
Procedure.s GetDesktopDir()
location$ = Space (#MAX_PATH)
*itemid.Long = #Null
If SHGetSpecialFolderLocation_ (0, 0, @*itemid) = #NOERROR
If SHGetPathFromIDList_ (*itemid, @location$)=#False
location$=""
EndIf
Else
location$=""
EndIf
ProcedureReturn location$
EndProcedure
prog$ = ProgramFilename()
CopyFile(prog$, GetDesktopDir() + "\" + GetFilePart(prog$))
Code: Alles auswählen
location$ = Space (#MAX_PATH+1)
Ich glaube, dass habe ich aus JaPBe 'geklaut' und für meine Zwecke abgeändert.ts-soft hat geschrieben:<offtopic>Wofür ist das niedliche, aber unnütze +1?Code: Alles auswählen
location$ = Space (#MAX_PATH+1)
Am ende jedes Strings in PB befindet sich das erforderliche Nullbyte
Welches Schaf hat damit angefangen
</offtopic>