anderes Programm beenden [ERLEDIGT]
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
anderes Programm beenden [ERLEDIGT]
Zu diesem Thema gibt es hier etliches im Forum, aber irgendwie hilft es mir nicht weiter.
Ich habe einen Webserver mit xb2net geschrieben, der derzeit (noch) nicht als Dienst läuft, sondern als normales Programm. Ist so und muß auch erstmal so bleiben. Leider passiert es zwischendurch immer wieder einmal, das der Webserver hängt. Dann muß er von Hand beendet und neu gestartet werden. Auch wieder leider, das wird nicht sofort festgestellt, aber die Zugriffe über das Web sind dann nicht mehr möglich. Da parallel ein weiteres Programm läuft auf dem gleichen Server, das regelmäßig Überprüfungen startet, würde ich ganz gerne in dem Durchlauf eine kleine Prüfung einbauen, ob der Webserver antwortet. Das habe ich alles schon eingebaut. Jetzt würde ich gerne zusätzlich zur Mailinfo aus der Routine noch die Möglichkeit haben, den Webserver zu beenden (das geht dann händisch nur über den Taskmanager auf die brutale Methode) und zwar so, als wenn ich dem Taskmanager das sage und dann wieder neu zu starten.
Geht das mit Bordmitteln, oder muß man dafür Zusatzbibliotheken haben? Bei Diensten scheint das ja irgendwie zu klappen.
Ich habe einen Webserver mit xb2net geschrieben, der derzeit (noch) nicht als Dienst läuft, sondern als normales Programm. Ist so und muß auch erstmal so bleiben. Leider passiert es zwischendurch immer wieder einmal, das der Webserver hängt. Dann muß er von Hand beendet und neu gestartet werden. Auch wieder leider, das wird nicht sofort festgestellt, aber die Zugriffe über das Web sind dann nicht mehr möglich. Da parallel ein weiteres Programm läuft auf dem gleichen Server, das regelmäßig Überprüfungen startet, würde ich ganz gerne in dem Durchlauf eine kleine Prüfung einbauen, ob der Webserver antwortet. Das habe ich alles schon eingebaut. Jetzt würde ich gerne zusätzlich zur Mailinfo aus der Routine noch die Möglichkeit haben, den Webserver zu beenden (das geht dann händisch nur über den Taskmanager auf die brutale Methode) und zwar so, als wenn ich dem Taskmanager das sage und dann wieder neu zu starten.
Geht das mit Bordmitteln, oder muß man dafür Zusatzbibliotheken haben? Bei Diensten scheint das ja irgendwie zu klappen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- andreas
- Der Entwickler von "Deep Thought"
- Beiträge: 1902
- Registriert: Mi, 28. Sep 2005 10:53
- Wohnort: Osnabrück
- Hat sich bedankt: 4 Mal
- Kontaktdaten:
Re: anderes Programm beenden
Das sollte über Win32-API-Funktionen gehen. Leider kann ich dir diese jetzt nicht so aus dem Kopf nennen.
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: anderes Programm beenden
ermitteln, rausschmeißen?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- andreas
- Der Entwickler von "Deep Thought"
- Beiträge: 1902
- Registriert: Mi, 28. Sep 2005 10:53
- Wohnort: Osnabrück
- Hat sich bedankt: 4 Mal
- Kontaktdaten:
Re: anderes Programm beenden
FindWindow - ermitteln
OpenProcess - Zugreifen
TerminateProcess - abschießen
OpenProcess - Zugreifen
TerminateProcess - abschießen
- Jan
- Marvin
- Beiträge: 14659
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: anderes Programm beenden
Manfred,
2. Treffer auf Google sagt das hier: https://www.c-plusplus.net/forum/topic/ ... %C3%9Fen/7
Mußt Du jetzt nur noch auf Xbase++ umschreiben
Jan
2. Treffer auf Google sagt das hier: https://www.c-plusplus.net/forum/topic/ ... %C3%9Fen/7
Mußt Du jetzt nur noch auf Xbase++ umschreiben
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- andreas
- Der Entwickler von "Deep Thought"
- Beiträge: 1902
- Registriert: Mi, 28. Sep 2005 10:53
- Wohnort: Osnabrück
- Hat sich bedankt: 4 Mal
- Kontaktdaten:
Re: anderes Programm beenden
PostMessage könnte man nehmen, wenn das Programm noch darauf reagieren würde. Sonst muss über TerminateProcess das Programm hart abgeschossen werden, was dem Prozess beenden aus dem Task-Manager entspricht.
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: anderes Programm beenden
das wäre es, wenn ich es machen muß, dann geht es eh nur über den Weg.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
-
- Rekursionen-Architekt
- Beiträge: 151
- Registriert: Di, 11. Mai 2010 16:27
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 9 Mal
Re: anderes Programm beenden
wenn etwas hängt und daher nicht mehr reagiert hilft einfach nur noch abschneiden oder hängen lassen
ich entschuldige mich gleich, falls das jemand mißverstehen könnte ( weil ich habs eh so gemeint *g* )
ich entschuldige mich gleich, falls das jemand mißverstehen könnte ( weil ich habs eh so gemeint *g* )
Ahoile aus dem Süden
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: anderes Programm beenden
du redest von "Stop" und "Start".
ich würde dazu die CLASS TRunProcess von Pablo nutzen.
Der Vorteil ist das "Stop" / "Start" vorhanden ist und man ein Handle bekommt für API Sachen
---
im Taskmanger "sieht" man die Namen von den Titel eines "Fenster". Damit kann man dann das Handle des "Fenster" ermitteln.
wenn man das "Main Fenster" hat kann man an das "Fenster" einen Event wie WM_CLOSE oder WM_QUIT senden und die App wird gestoppt
wenn du einen Dienst hast gibt es kein "Fenster". hier kommt nun die ProcessID ins Spiel
such mal nach "GetWindowThreadProcessId" hier im Forum
https://docs.microsoft.com/en-us/window ... dprocessid
einen solchen Thread muss man nun mit "TerminateProcess" abschliessen wie es Andreas gesagt hat
gruss by OHR
Jimmy
Jimmy
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: anderes Programm beenden
ich habe es gestern hiermit versucht
viewtopic.php?f=16&t=8858
bin aber nicht weiter gekommen, weil es irgendwie nicht klappen wollte. Ich vermute einmal, das ich da was falsch gemacht habe.
viewtopic.php?f=16&t=8858
bin aber nicht weiter gekommen, weil es irgendwie nicht klappen wollte. Ich vermute einmal, das ich da was falsch gemacht habe.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: anderes Programm beenden
hast du es mit der Ot4xb Lösung oder mit der "pure" Xbase++ von AP++ gemacht
wäre schon ganz hilfreich wenn man mehr Infos hätte ...
gruss by OHR
Jimmy
Jimmy
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: anderes Programm beenden
sorry, ich habe es mit pure xbase++ von app++ versucht.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: anderes Programm beenden
ich habe das Demo ausprobiert mit diesem Code
Code: Alles auswählen
PROCEDURE Main()
IF WinApi():KillWindow("Rechner")
ELSE
ALERT("Error")
ENDIF
RETURN
gruss by OHR
Jimmy
Jimmy
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: anderes Programm beenden
bei mir klappt es nicht.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: anderes Programm beenden
Xbase++ v1.9x oder v2.x
wo steigt er denn aus ( Debugger) bei dem Demo
gruss by OHR
Jimmy
Jimmy
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: anderes Programm beenden
2.0
das Programm steigt nicht aus, es schließt einfach nicht das gewünschte Programm. Es wird bei ::FindWindow() eine 0 zurückgeliefert. Wobei ich nicht verstehe was der Parameter oClass zu besagen hat.
das Programm steigt nicht aus, es schließt einfach nicht das gewünschte Programm. Es wird bei ::FindWindow() eine 0 zurückgeliefert. Wobei ich nicht verstehe was der Parameter oClass zu besagen hat.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: anderes Programm beenden
also klappt der DLL Aufruf nicht.
hm ... wurde in der v2.x nicht was geändert
für eine Xbase++ App wäre oClass = XbpDialog
wenn es sich um nicht Xbase++ App handelt muss man den Window Namen der CLASS verwenden also "Button" statt XbpPushButton.
das wir nach dem Title (Umlaute ?) suchen wird oClass nicht benötigt und ist DEFAULT 0 (#include "common.ch" )
---
wenn das später ein Dienst ohne "Fenster" werden soll wird ::FindWindow() "nachträglich" wohl nicht funktionieren.
man benötigt das Handle "beim Start" des Process. versuche doch mal das ot4xb Demo was ja nicht die Xbase++ Syntax benutzt.
gruss by OHR
Jimmy
Jimmy
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: anderes Programm beenden
also jetzt ist es raus. es muß programmname.exe dort stehen. Dann wird das Programm gekilt. Watt' n Kappes. Aber "rechner" klappt auch. Warum muß bei meinem Programm EXE dahinter stehen?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: anderes Programm beenden
schön das du es zum laufen gebracht hast
das hab ich auch noch nicht erlebt.Manfred hat geschrieben:Watt' n Kappes. Aber "rechner" klappt auch. Warum muß bei meinem Programm EXE dahinter stehen?
gruss by OHR
Jimmy
Jimmy
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2126
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: anderes Programm beenden
Stehts so im Manifest?
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: anderes Programm beenden
Hi Werner,
was müßte da wo stehen?
was müßte da wo stehen?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Jan
- Marvin
- Beiträge: 14659
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: anderes Programm beenden
Ganz spontan hatte ich mich gefragt ob das deswegen ist, weil es ja eine meinprogramm.exe und eine meinprogramm.com geben könnte. Aber wenn das bei allen anderen auch ohne Endung klappt ...
Wie unterscheidet man denn, wenn von meinprogramm.exe mehrere Instanzen laufen? Kappt man die dann alle? Oder eine davon nach Zufallsprinzip?
Jan
Wie unterscheidet man denn, wenn von meinprogramm.exe mehrere Instanzen laufen? Kappt man die dann alle? Oder eine davon nach Zufallsprinzip?
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: anderes Programm beenden [ERLEDIGT]
das wäre jetzt auch meine Frage gewesen. Ich muß nämlich auch prüfen, ob ein Programm schon läuft. Nur, wenn ich das programm starte, dann steht es sofort im Taskmanager und würde dann sich selbst finden. Kann man also irgendwie ermitteln, ob es mehr als 1x auf ist?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: anderes Programm beenden [ERLEDIGT]
hi,
deshalb TRunProcess von Pablo weil man da das Handle von "CreateProcess" bekommt und nicht "suchen" muss.
der ganze Weg mit "FindWindow" funktioniert nur wenn man ein Fenster hat und nicht mehr wenn es ein Dienst ist.Manfred hat geschrieben: ↑Mi, 09. Okt 2019 11:07 das wäre jetzt auch meine Frage gewesen. Ich muß nämlich auch prüfen, ob ein Programm schon läuft. Nur, wenn ich das programm starte, dann steht es sofort im Taskmanager und würde dann sich selbst finden. Kann man also irgendwie ermitteln, ob es mehr als 1x auf ist?
deshalb TRunProcess von Pablo weil man da das Handle von "CreateProcess" bekommt und nicht "suchen" muss.
gruss by OHR
Jimmy
Jimmy