ich komme mit ProgramRunning nicht klar

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
wie_jetzt?
Beiträge: 21
Registriert: 28.08.2017 17:23

ich komme mit ProgramRunning nicht klar

Beitrag von wie_jetzt? »

Hallo Leute,

muss Euch wieder mal mit einem Anfänger-Prob belästigen:

Mein Prog soll ein externes Prog starten, aber nur, falls dieses Prog nicht bereits gestartet ist. Ich dachte also (naiv wie ich bin) ...

Code: Alles auswählen

if ProgramRunning("dingsbums.exe") = 0
   RunProgram ("dingsbums.exe")
endif
wär's ja, aber: will nicht!

Wie muss man das denn anstellen, dass dingsbums.exe nur dann gestartet wird, wenn es noch nicht läuft (also nicht mehrfach gestartet werden kann)?

Und, absolutes Leckerli wäre für mich noch:
Wenn dingsbums.exe bereits liefe, wie dann in den Vordergrund bringen, damit es der User sehen kann?
Was das Programmieren angeht, bin ich ein Anfänger mit fast 40 Jahren Erfahrung, mit gelegentlichen, mitunter jahrzehntelangen Unterbrechungen. Kann mich noch dunkel an den TI58 bei der Bundeswehr Anfang der 1980er erinnern. Habe da mit "Mondlandung" viele Stunden der Heimatverteidung verbracht - Insider werden's kennen.
... wir hatten doch sonst nix!
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

Re: ich komme mit ProgramRunning nicht klar

Beitrag von ts-soft »

So einfach geht es wohl nicht :mrgreen:
Hier mal mein Modul: http://www.purebasic.fr/english/viewtop ... 95#p437795

Sollte alles gewünschte erfüllen, hauptsache es wird auch verstanden.
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
Benutzeravatar
wie_jetzt?
Beiträge: 21
Registriert: 28.08.2017 17:23

Re: ich komme mit ProgramRunning nicht klar

Beitrag von wie_jetzt? »

Hallo ts-soft,

vielen Dank für den Code. Werde mich da wohl erstmal reinfuchsen müssen, wird wohl seine Zeit dauern. Allerdings habe ich in den Code-Kommentaren das Stichwort "Lockfile" gelesen, das brachte mich auf die Idee

Code: Alles auswählen

If aufruf = 0
             aufruf = RunProgram("dingsbums.exe")
EndIf
womit schon mal das Gröbste (mehrfach starten) erschlagen ist. Vielen Dank für den Schubs in die richtige Richtung.
Was das Programmieren angeht, bin ich ein Anfänger mit fast 40 Jahren Erfahrung, mit gelegentlichen, mitunter jahrzehntelangen Unterbrechungen. Kann mich noch dunkel an den TI58 bei der Bundeswehr Anfang der 1980er erinnern. Habe da mit "Mondlandung" viele Stunden der Heimatverteidung verbracht - Insider werden's kennen.
... wir hatten doch sonst nix!
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

Re: ich komme mit ProgramRunning nicht klar

Beitrag von ts-soft »

Das ist jetzt meiner Meinung nach der falsche Weg, da dann das Modul das noch viel mehr bietet, wie z.B. Parameterübergabe an Programm usw.

Besser erst mal so:

Code: Alles auswählen

OnlyOne::InitOne(0, "Example_Application")
Denn Text natürlich ändern :wink:
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
Benutzeravatar
helpy
Beiträge: 635
Registriert: 29.08.2004 13:29

Re: ich komme mit ProgramRunning nicht klar

Beitrag von helpy »

Könnte es sein, dass Ihr aneinander vorbeiredet?

wie_jetzt möchte mit seinem PB-Programme eine fremde EXE starten, aber nur, wenn diese noch nicht läuft!

@ts-soft:
Wenn ich das richtig verstehe, dann kann Dein Modul verhindern dass ein PB-Programm nicht ein zweites Mal gestartet wird ... und falls doch, dann können Parameter an das zuerst gestartete Programm übergeben werden.

Aber dann kann mit dem Modul von ts-soft das Problem von wie_jetzt nicht gelöst werden.

...
Windows 10
PB Last Final / (Sometimes testing Beta versions)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: ich komme mit ProgramRunning nicht klar

Beitrag von STARGÅTE »

Result = RunProgram ("dingsbums.exe") gibt ja einen Wert zurück.
Dieser Wert kann danach benutzt werden, um zu prüfen ob das Programm (noch) Läuft:
ProgramRunning(Result)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Sicro
Beiträge: 955
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: ich komme mit ProgramRunning nicht klar

Beitrag von Sicro »

Siehe: Ermitteln, ob Prozess gerade läuft

Code: Alles auswählen

If CheckRunningPureBasic("dingsbums.exe")
  MessageRequester("","Dingsbums läuft schon!",0)
Else
  MessageRequester("","Dingsbums läuft noch NICHT!",0)
EndIf
Den Code habe ich nicht getestet.
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
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

Re: ich komme mit ProgramRunning nicht klar

Beitrag von ts-soft »

helpy hat geschrieben:Könnte es sein, dass Ihr aneinander vorbeiredet?
Das glaube ich eher nicht :wink:
Er möchte, das wenn ein Programm mehrmals gestartet wird, das erstgestartete das einzige bleibt und den Focus bekommt!
Genau das macht mein Modul, es verhindert mehrfachstarten und bietet optional an, das erstgestartete in den Vordergrund zu bringen und leitet evtl. übergebenen Parameter an dieses weiter.
Ist Crossplattform und einfach 8)

Einfacheres Vorgehen wäre wie von Sirco gepostet (auch mein Code?), aber nicht so komfortabel. Das Modul macht fast alles alleine.
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
Benutzeravatar
helpy
Beiträge: 635
Registriert: 29.08.2004 13:29

Re: ich komme mit ProgramRunning nicht klar

Beitrag von helpy »

ts-soft hat geschrieben:Er möchte, das wenn ein Programm mehrmals gestartet wird, das erstgestartete das einzige bleibt und den Focus bekommt!
Und wenn dieses Programm "dingsbums.exe", welches von wie_jetzt mit seinem PB-Programm gestartet ist, nicht von ihm stammt und er dort Dein Modul OnlyOne nicht einbauen kann?

Mir scheint, wir interpretieren den ersten Beitrag unterschiedlich ;-)
Welche Interpretation nun richtig ist, kann ich nicht sagen.
Dazu müsste wie_jetzt etwas mehr Infos zum Programm "dingsbums.exe" (welches er mittels seines PB-Programms starten möchte) mitteilen.

...
Windows 10
PB Last Final / (Sometimes testing Beta versions)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8679
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: ich komme mit ProgramRunning nicht klar

Beitrag von NicTheQuick »

Ich verstehe es auch so wie helpy. Er schreibt ja auch, dass er ein externes Programm starten will.
Bild
Antworten