ProgrammName, Verzeichnis und Process ID
ProgrammName, Verzeichnis und Process ID
Hallo
ich habe jetzt schon eine ganze Weile gesucht, bin aber nicht fündig geworden und hoffe nicht, daß ich Tomaten auf den Augen habe.
Ich möchte gerne aktuelles
- Programmverzeichnis
- Programmname
- Prozess ID
ermitteln und im Programm verwenden. Wie mache ich das? Gibt es dafür Standard Konstanten, die man verwenden kann?
Danke für Eure Hilfe.
Sigi
ich habe jetzt schon eine ganze Weile gesucht, bin aber nicht fündig geworden und hoffe nicht, daß ich Tomaten auf den Augen habe.
Ich möchte gerne aktuelles
- Programmverzeichnis
- Programmname
- Prozess ID
ermitteln und im Programm verwenden. Wie mache ich das? Gibt es dafür Standard Konstanten, die man verwenden kann?
Danke für Eure Hilfe.
Sigi
- 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
Unter PB3.94 sollte Dir die PBOSL_Processlib weiterhelfen.
Unter PB4 sehe einfach in der Process Lib nach
Unter PB4 sehe einfach in der Process Lib nach
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.

Hallo ts-soft
Danke für den Beitrag. Aber trotz langwierigem Suchen finde ich da nichts passendes. Zudem nur für KleinUndWeich, wenn ich das richtig sehe. So wie ich mitbekommen habe, bist du ein richtiger Guru und könntest mir sicher direkter auf den Weg helfen. Oder? ;)
Also mein Wunsch sind eigentlich Standardfunktionen für jede Programmiersprache, selbst Perl beherrscht das auf KleinUndWeich und Linux/Unix. Kann man das hier wirklich nirgends abfragen?
Viele Grüße
Sigi
Danke für den Beitrag. Aber trotz langwierigem Suchen finde ich da nichts passendes. Zudem nur für KleinUndWeich, wenn ich das richtig sehe. So wie ich mitbekommen habe, bist du ein richtiger Guru und könntest mir sicher direkter auf den Weg helfen. Oder? ;)
Also mein Wunsch sind eigentlich Standardfunktionen für jede Programmiersprache, selbst Perl beherrscht das auf KleinUndWeich und Linux/Unix. Kann man das hier wirklich nirgends abfragen?
Viele Grüße
Sigi
- 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
Mit PB4 geht das, ansonsten mußte die API des jeweiligen Betriebssystemes
benutzen. Da ich mit Linux nicht viel mache, kenne ich die entsprechenden
Funktionen dort nicht.
Hier mal aktuelles Verzeichnis Cross-Plattform
(aktuelles Verzeichnis muß nicht dem Programm-Verzeichnis entsprechen!)
benutzen. Da ich mit Linux nicht viel mache, kenne ich die entsprechenden
Funktionen dort nicht.
Hier mal aktuelles Verzeichnis Cross-Plattform
(aktuelles Verzeichnis muß nicht dem Programm-Verzeichnis entsprechen!)
Code: Alles auswählen
Procedure.s GetCurrentDir()
Protected CurDir.s
CurDir.s = Space(2048)
CompilerIf #PB_Compiler_OS = #PB_OS_Linux
getcwd_(CurDir, 2048)
CompilerElse
GetCurrentDirectory_(2048,CurDir)
CompilerEndIf
ProcedureReturn CurDir
EndProcedure
Debug GetCurrentDir()
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.

für PB 3.94 und Windows
Für die Prozess-ID wirklich am einfachsten die PBOSL_Processlib benutzen
Code: Alles auswählen
Procedure.s GetExeName()
Prg.s = Space(#MAX_PATH+1)
GetModuleFileName_(GetModuleHandle_(0), @Prg, #MAX_PATH)
ProcedureReturn Prg
EndProcedure
Debug GetPathPart(GetExeName()) ; Programmpfad
Debug GetExeName() ; Programmname
__________________________________________
Weniger glauben - mehr wissen!
------------------------------------------------------
Proud beneficial owner of SpiderBasic, PureBasic 3.x, 4.x, 5.x and PureVisionXP
Weniger glauben - mehr wissen!
------------------------------------------------------
Proud beneficial owner of SpiderBasic, PureBasic 3.x, 4.x, 5.x and PureVisionXP
Hallo ihr zwei!
Danke mal für die "erste Hilfe".
Ist ja mal ein Anfang, vor allem deine Lösung ts-soft. Das aktuelle Verzeichnis muß natürlich nicht das Programmverzeichnis sein, klar.
Ich hatte das wie folgt probiert, allerdings kommt da nicht das ganze Verzeichnis zurück, sondern auch nur der Punkt. Schade. ;)
[code]
If ExamineDirectory(0, ".", "")
debug DirectoryEntryName()
EndIf
[/code]
Aber das Programmverzeichnis und den Programmnamen hätte ich schon gerne, heul. Kann mir niemand helfen? Kann man deines DataMiner nicht auch so aufbohren wie das von ts-soft, damit es unter Linux rennt? ;)
Noch 'ne dumme Anfängerfrage zum Schluß: Wo finde ich denn die ganzen Befehle wie "getcwd_", "GetCurrentDirectory_", "GetModuleFileName_" und "GetModuleHandle_". Im CodeArchiv habe ich dazu leider nichts gefunden (Liste oder so). Dankeschön.
Viele Grüße
Sigi
Danke mal für die "erste Hilfe".
Ist ja mal ein Anfang, vor allem deine Lösung ts-soft. Das aktuelle Verzeichnis muß natürlich nicht das Programmverzeichnis sein, klar.
Ich hatte das wie folgt probiert, allerdings kommt da nicht das ganze Verzeichnis zurück, sondern auch nur der Punkt. Schade. ;)
[code]
If ExamineDirectory(0, ".", "")
debug DirectoryEntryName()
EndIf
[/code]
Aber das Programmverzeichnis und den Programmnamen hätte ich schon gerne, heul. Kann mir niemand helfen? Kann man deines DataMiner nicht auch so aufbohren wie das von ts-soft, damit es unter Linux rennt? ;)
Noch 'ne dumme Anfängerfrage zum Schluß: Wo finde ich denn die ganzen Befehle wie "getcwd_", "GetCurrentDirectory_", "GetModuleFileName_" und "GetModuleHandle_". Im CodeArchiv habe ich dazu leider nichts gefunden (Liste oder so). Dankeschön.
Viele Grüße
Sigi
- 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
Die APIs zu Windows findeste in der Win32.hlp bzw. PSDK oder MSDN, zu
Linux API unter: http://lidn.sourceforge.net/ scheint aber gerade nicht zu gehen. Ansonsten findest Du weitere Links und Infos unter FAQ & Tuts
Linux API unter: http://lidn.sourceforge.net/ scheint aber gerade nicht zu gehen. Ansonsten findest Du weitere Links und Infos unter FAQ & Tuts
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.

Für das Programmverzeichnis unter Linux hab ich hier was.
Für den Programmnamen einfach das GetPathPart durch GetFilePart ersetzen.
(Allerdings hat der Code anscheinend noch Probleme auf 64bit Systemen,
sobald ich das behoben hab, werde ich das noch in schöne Prozeduren packen
)
ProzessID unter Linux ist eigendlich ganz einfach:
Für den Programmnamen einfach das GetPathPart durch GetFilePart ersetzen.
(Allerdings hat der Code anscheinend noch Probleme auf 64bit Systemen,
sobald ich das behoben hab, werde ich das noch in schöne Prozeduren packen

ProzessID unter Linux ist eigendlich ganz einfach:
Code: Alles auswählen
Procedure GetPID()
!mov eax,20
!int 0x80
ProcedureReturn
EndProcedure