Pfad des gestarteten Programms ermitteln?
- Dark Skillu
- Beiträge: 103
- Registriert: 18.03.2007 15:03
Pfad des gestarteten Programms ermitteln?
Hallo wie kann ich den Pfad ermitteln von dem aus das Programm gestartet wurde? Danke om Voraus.
MfG DarkSkillu
MfG DarkSkillu
Ich benutze PureBasic 4.0.
- 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
Versuch mal die Suchfunktion! Da bekommste so viele Antwoten, man kanns
kaum glauben

kaum glauben

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.

Am einfachsten ist wohl, dann kannse noch solceh Sachen benutzen:...
Da gibt es viel
//Edit: Ts war schneller, aber ich hab Beispiele
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
Da gibt es viel

//Edit: Ts war schneller, aber ich hab Beispiele

- 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
>> //Edit: Ts war schneller, aber ich hab Beispiele
So werden die Einsteiger aber nie lernen erst zu suchen, dann zu fragen.
PS: Bis auf die erste Version sind alle nur Windows geeignet, die letzte
Version falsch oder erfordert UserLib?
So werden die Einsteiger aber nie lernen erst zu suchen, dann zu fragen.
PS: Bis auf die erste Version sind alle nur Windows geeignet, die letzte
Version falsch oder erfordert UserLib?
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.

- Dark Skillu
- Beiträge: 103
- Registriert: 18.03.2007 15:03
Ich hab mal nach deinem 1.Post gesucht TS-Soft und nach "Pfad Programm" gesucht und was mit "Pfad einer Binary" gefunden, dann kam mir die Frage auf was überhaupt eine Binary ist , kann mir da jemand helfen? In diesem Thema war auch der zweite Code aus a14xerus Post glaube ich. Ich habe jetzt einfach mal Programfilename() benutzt und funktioniert auch so wie ich es mir vorgestellt habe. Danke!
MfG DarkSkillu
Edit: ich hab mit ProgramFilename() versucht die gestartete Exe zu kopieren und aufm Desktop wieder einzufügen, funktioniert aber noch nicht kann nmir jemand helfen bitte?
MfG DarkSkillu
Edit: ich hab mit ProgramFilename() versucht die gestartete Exe zu kopieren und aufm Desktop wieder einzufügen, funktioniert aber noch nicht kann nmir jemand helfen bitte?
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
Ich benutze PureBasic 4.0.
- Thorsten1867
- Beiträge: 1360
- Registriert: 04.02.2005 15:40
- Computerausstattung: [Windows 10 x64] [PB V5.7x]
- Wohnort: Kaufbeuren
- Kontaktdaten:
Ich verwende folgende Routine. Der Vorteil ist, dass der Pfad auch beim temporären Compilieren stimmt.
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
Zuletzt geändert von Thorsten1867 am 11.06.2007 17:07, insgesamt 1-mal geändert.
- Dark Skillu
- Beiträge: 103
- Registriert: 18.03.2007 15:03
- Thorsten1867
- Beiträge: 1360
- Registriert: 04.02.2005 15:40
- Computerausstattung: [Windows 10 x64] [PB V5.7x]
- Wohnort: Kaufbeuren
- Kontaktdaten:
Das Desktopverzeichnis ist auf jedem Computer anders:
PS: Normalerweise erstellt man einen Shortcut (Verknüpfung) auf dem Desktop und kopiert nicht die Datei dorthin.
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$))
Zuletzt geändert von Thorsten1867 am 11.06.2007 17:06, insgesamt 1-mal geändert.
- 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
<offtopic>
Wofür ist das niedliche, aber unnütze +1?
Am ende jedes Strings in PB befindet sich das erforderliche Nullbyte
Welches Schaf hat damit angefangen
</offtopic>
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>
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.

- Thorsten1867
- Beiträge: 1360
- Registriert: 04.02.2005 15:40
- Computerausstattung: [Windows 10 x64] [PB V5.7x]
- Wohnort: Kaufbeuren
- Kontaktdaten:
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>
