Starten von weiteren Instanzen eines Programmes verhindern

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

KnorxThieus

Betreff: Starten von weiteren Instanzen eines Programmes verhindern

BeitragDo, Mai 16, 2013 15:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,


gibt es eine Möglichkeit, herauszufinden, ob ein Programm bereits läuft?
ich habe mal in eine Datei geschrieben: "läuft" und beim beenden "läuft nicht", aber das ist sehr provisorisch und wenn programm oder PC abstürzt, startet das Programm nie wieder...

Gäbe es da was?

MfG,
KnorxThieus
Version: BlitzPlus / Blitz+

Dicker Hobbit

BeitragDo, Mai 16, 2013 16:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie wärs, wenn du prüfst ob der Prozess ("Programm.exe") bereits läuft?
(Stichwort WIN API)

KnorxThieus

BeitragDo, Mai 16, 2013 16:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Sicherlich kenne ich WinAPI, aber lange noch nicht all seine Befehle.
Deswegen habe ich ja nachgefragt.
Version: BlitzPlus / Blitz+

Dicker Hobbit

BeitragDo, Mai 16, 2013 16:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Meine Aussage sollte eigentlich nur ein Denkanstoss sein und keineswegs provozieren! Wink

Dieser Link sollte dir eventuell eine Hilfe sein:
http://support.microsoft.com/kb/175030/de

Lg Dicker Hobbit

KnorxThieus

BeitragDo, Mai 16, 2013 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
OK.
Naja bloß wäre mir eine schnelle Codebox lieber gewesen als 4 Seiten...

Danke trotzdem.
Version: BlitzPlus / Blitz+

count-doku

BeitragDo, Mai 16, 2013 17:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Alternativ kannst du auch die process dll von flona nehmen...

https://www.blitzforum.de/foru...hp?t=28287
(Download unten von ozzi )

Verwende ich um z.b. L4D2 zu crashen - fragt nicht warum Very Happy

BlitzBasic: [AUSKLAPPEN]

Print "Total processes: "+EnumProcesses()
Local processID=FindProcessByName("dein programm name hier")
If processID ; Wenn programm läuft, beenden
KillProcess(processID)
End If



Im oben angegeben Thread findest die anderen Befehle etc...

lg,
Count-Doku

KnorxThieus

BeitragDo, Mai 16, 2013 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Diese process.dll klingt gut und einfach, aber basiert die nun auf der Win-API oder nicht? Ich möchte nicht immer so viele DLLs mit mir rumschleppen... weiß nicht mal wie die dann verwendet werden Embarassed
und microsoft hat trotz allem mein vertrauen...

naja, danke erstmal und mtg (mit technischen Grüßen)
KnorxThieus
Version: BlitzPlus / Blitz+

ZEVS

BeitragDo, Mai 16, 2013 18:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Was auch eine verwendete Methode ist: Suche dir einen entlegenen UDP-Port und erstelle einen Stream mittels CreateUDPStream. Da auf einem Rechner nie der selbe UDP-Port von zwei Programmen verwendet werden darf, weiß dein Programm, dass es bereits ausgeführt wird, falls der Rückgabewert 0 ist. Funktioniert natürlich nur, wenn kein anderes Programm diesen UDP-Port benutzt.

ZEVS

KnorxThieus

BeitragDo, Mai 16, 2013 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah! Danke, ZEVS! Eine mir bisher unbekannte Befehlsgruppe. Andere Befehle brauche ich nicht? Close vlt.?
Bliebe nur noch die Frage, welche Ports "entlegen" sind.

Mfg!
Version: BlitzPlus / Blitz+

count-doku

BeitragDo, Mai 16, 2013 19:46
Antworten mit Zitat
Benutzer-Profile anzeigen
joa zu zevs idee:

BlitzBasic: [AUSKLAPPEN]
;Anfang vom Programm :
Global UDP_Stream=CreateUDPStream(55555)
If Not udp_stream Then RuntimeError "Programm läuft bereits!"


; Programmcode


CloseUDPStream UDP_Stream
End


Eine Portlist findest z.b. auf Wikipedia

lg,
Count-Doku

KnorxThieus

BeitragDo, Mai 16, 2013 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, so hatt ichs mir auch schon überlegt. Allerdings ist 5555 besetzt!
OK!

Und was ist, wenn ich nicht CloseUDPStream verwende?
Version: BlitzPlus / Blitz+

count-doku

BeitragDo, Mai 16, 2013 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
dann nimm halt nen anderen. geht ja von 1-65536 wobei die ersten 1024 systemreserviert sind...
Außerdem nahm ich nicht port 5555 sondern 55555 und in der region sollte eigentlich noch reichlich frei sein -> vllt nicht so ne "lustige" Zahl nehmen.

Ohne CloseStream am Ende? Uff keine Ahnung. Ich vermute das wird automatisch geschlossen oder aber im schlechteren Fall bleibts offen und danach kannst das Programm nichtmehr starten - probiers aus !
Dann musst halt einmal neustarten oder so.

lg,
Count-Doku

KnorxThieus

BeitragDo, Mai 16, 2013 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
OK, na dann danke; das war mir eine Lösung!
Version: BlitzPlus / Blitz+

BladeRunner

Moderator

BeitragDo, Mai 16, 2013 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
KnorxThieus hat Folgendes geschrieben:
OK.
Naja bloß wäre mir eine schnelle Codebox lieber gewesen als 4 Seiten...

Danke trotzdem.

So wirst du als Programmierer nicht weit kommen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

KnorxThieus

BeitragDo, Mai 16, 2013 20:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Das sehe ich auch ein und will es auch irgendwann lernen.
Aber ich möchte nicht 10 Jahre an irgendeinem Programm, welches diese Funktionen beinhaltet, sitzen.
Version: BlitzPlus / Blitz+

BladeRunner

Moderator

BeitragDo, Mai 16, 2013 20:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Und ab welchem Programm ist es Wert daran zu sitzen?
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

KnorxThieus

BeitragDo, Mai 16, 2013 20:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich meinte, dass ich doch erst vorgefertigten Code verwenden kann und später dessen Funktionsweise begreifen kann.
Ich meinte das zeitlich (ein paar Jahre), keine Größenordnung.
Version: BlitzPlus / Blitz+

Xeres

Moderator

BeitragDo, Mai 16, 2013 21:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ist nicht grundsätzlich falsch, fertige Bibliotheken oder Codeschlipsen zu benutzen... aber wenn du vor ein paar Seiten Dokumentation zurück schreckst, machst du was falsch. Gewöhne dich nicht daran, hier fertigen Code zu erfragen - denn das bringt dich nicht weiter und hier werden dir immer mehr Leute sagen "Probier's doch mal selber".
Solche Probleme zu lösen ist der Hauptteil vom programmieren, Schleifen und Kontrollstrukturen sind nur das Mittel zum Zweck.
Die Methode mit dem UDP Stream würde ich in keinem Fall benutzen... Viel zu Fehleranfällig (was nur in 99% der Fälle funktioniert kann man eigentlich nicht guten Gewissens benutzen).

Programmieren ist besser googeln können als andere, endlos Dokumentationen wälzen und auf fremden Code starren, bis einem aufgeht, wie er funktioniert. Wenn du das nicht willst, findest du sicher Leute, die den technischen Teil übernehmen. Für einen angemessenen Stundenlohn.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

DAK

BeitragDo, Mai 16, 2013 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
@Knorx: Was ich in vielen Threads von dir (nahezu allen) bemerke, ist, du stellst eine Frage (was auch voll okay ist, fragen darf man), aber wenn man dir Antworten gibt, dann nimmst du sie nicht an. Es gibt immer ein "Nö, das will ich nicht, weil...".
Ich glaube, du missverstehst den Sinn von Fragen hier. Wir sind nicht dazu da, deine Programmierprobleme zu lösen. Das ist dein Job.
Alles wozu wir da sind, ist, dir ein Wegweiser in die richtige Richtung zu sein. Gehen musst du selbst.
Wenn wir dir alles genau vorkauen, dann wirst du nie was lernen. Im Gegenteil, du wirst uns immer am Rockzipfel hängen. Versuch lieber, aus der ersten Antwort schlau zu werden, und nur nachzufragen, wenn du nach mindestens 3 Stunden selbst ausprobieren und Google befragen nicht weiter kommst.
Ich weiß, du hast grad erst vor kurzem angefangen zu programmieren und erwartest, dass Programmieren so einfach bleibt, wie die ersten Textprogramme und Grafikspielereien, die du bis jetzt gebastelt hast. Das ist nicht so. Als jemand, der beruflich programmiert kann ich dir sagen, der Arbeitsalltag eines professionellen Programmierers besteht nicht darin, Programme einfach runterzuschreiben. Der Grund, warum die Älteren hier im Forum sehr selten um Hilfe fragen (oder gar nicht), ist nicht, dass sie alles wissen. Ganz im Gegenteil. Programmieren ist so ein elends weites Feld, man kann nicht mal anfangen, alles zu wissen.
Sie brauchen deswegen selten Hilfe, weil sie wissen, wie man sie sich selber beschafft.
Den größten Teil meiner Arbeitszeit verbringe ich damit, entweder auf Google zu schauen, wie andere Leute ein ähnliches Problem gelöst haben, oder teilweise stundenlang herumzuprobieren, bis ich es selbst hin krieg.

Als Programmierer bist du kein Bauarbeiter, der Ziegel auf Ziegel schichtet, eher bist du ein Rätsellöser. Wenn du Sudokus machst, dann fragst du doch auch nicht bei jedem Schritt irgendwen, was du tun sollst, oder?

Ich schreib das nicht um dich fertig zu machen. Wie ich angefangen hab (vor mittlerweile 8 Jahren), war ich genau so drauf wie du (und es gibt sogar noch ein paar Leute hier, die das bezeugen könnten). Und man hat mir auch sowas geschrieben, und es hat mir geholfen, ein halbwegs brauchbarer Programmierer zu werden. Deswegen geb ich das jetzt weiter.

Achja, wegen einem deiner anderen Threads: Arroganz sieht man nicht gerne von jemandem, dessen Frage man gerade versucht hat zu beantworten.
Gewinner der 6. und der 68. BlitzCodeCompo

KnorxThieus

BeitragDo, Mai 16, 2013 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Xeres: Es sollte sich hierbei vorerst nur um eine Nebensächlichkeit handeln, der ich nicht viel Aufmerksamkeit schenken wollte. Das ist auch nicht so mein Interesse am Programmieren, das geht in andere Richtungen.

DAK: Dasselbe wie Xeres, und: Ich meine, später löse ich ja gerne die Rätsel, aber das hier war eben nur ein kleines unbedeutendes Extra! Und wenn ich es aufgeschoben hätte, bis ich Zeit zum Vertiefen gefunden hätte, wäre die "Man darf hier noch posten"-Zeit abgelaufen!
Version: BlitzPlus / Blitz+

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group