anderes Programm beenden [ERLEDIGT]

Sonstiges (nicht kategorisierbar)

Moderator: Moderatoren

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

anderes Programm beenden [ERLEDIGT]

Beitrag von Manfred »

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.
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!!
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
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

Beitrag von andreas »

Das sollte über Win32-API-Funktionen gehen. Leider kann ich dir diese jetzt nicht so aus dem Kopf nennen.
Gruß,

Andreas
VIP der XUG Osnabrück
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: anderes Programm beenden

Beitrag von Manfred »

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!!
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
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

Beitrag von andreas »

FindWindow - ermitteln
OpenProcess - Zugreifen
TerminateProcess - abschießen
Gruß,

Andreas
VIP der XUG Osnabrück
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: anderes Programm beenden

Beitrag von Jan »

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 :badgrin: :D

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
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

Beitrag von andreas »

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.
Gruß,

Andreas
VIP der XUG Osnabrück
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: anderes Programm beenden

Beitrag von Manfred »

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!!
flanelli
Rekursionen-Architekt
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

Beitrag von flanelli »

wenn etwas hängt und daher nicht mehr reagiert hilft einfach nur noch abschneiden oder hängen lassen :lol:

ich entschuldige mich gleich, falls das jemand mißverstehen könnte ( weil ich habs eh so gemeint *g* )
Ahoile aus dem Süden
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: anderes Programm beenden

Beitrag von AUGE_OHR »

Manfred hat geschrieben: Mo, 30. Sep 2019 12:50 das wäre es, wenn ich es machen muß, dann geht es eh nur über den Weg.
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
TRunProcess.zip
NEED ot4xb
(3.95 KiB) 313-mal heruntergeladen
---

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
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: anderes Programm beenden

Beitrag von Manfred »

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.
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!!
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: anderes Programm beenden

Beitrag von AUGE_OHR »

Manfred hat geschrieben: Mi, 02. Okt 2019 6:52 ich habe es gestern hiermit versucht
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
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: anderes Programm beenden

Beitrag von Manfred »

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!!
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: anderes Programm beenden

Beitrag von AUGE_OHR »

Manfred hat geschrieben: Mi, 02. Okt 2019 8:20 sorry, ich habe es mit pure xbase++ von app++ versucht.
ich habe das Demo ausprobiert mit diesem Code

Code: Alles auswählen

PROCEDURE Main()
   IF WinApi():KillWindow("Rechner")
   ELSE
       ALERT("Error")
   ENDIF
RETURN
und Calc.EXE wird damit geschlossen.
gruss by OHR
Jimmy
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: anderes Programm beenden

Beitrag von Manfred »

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!!
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: anderes Programm beenden

Beitrag von AUGE_OHR »

Manfred hat geschrieben: Mi, 02. Okt 2019 8:59 bei mir klappt es nicht.
:shock:

Xbase++ v1.9x oder v2.x :?:
wo steigt er denn aus ( Debugger) bei dem Demo :?:
gruss by OHR
Jimmy
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: anderes Programm beenden

Beitrag von Manfred »

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.
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!!
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: anderes Programm beenden

Beitrag von AUGE_OHR »

Manfred hat geschrieben: Mi, 02. Okt 2019 9:20 2.0
das Programm steigt nicht aus, es schließt einfach nicht das gewünschte Programm. Es wird bei ::FindWindow() eine 0 zurückgeliefert.
also klappt der DLL Aufruf nicht. :o
hm ... wurde in der v2.x nicht was geändert :?:
Manfred hat geschrieben: Mi, 02. Okt 2019 9:20 Wobei ich nicht verstehe was der Parameter oClass zu besagen hat.
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
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: anderes Programm beenden

Beitrag von Manfred »

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!!
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: anderes Programm beenden

Beitrag von AUGE_OHR »

Manfred hat geschrieben: Mi, 02. Okt 2019 20:06 also jetzt ist es raus. es muß programmname.exe dort stehen. Dann wird das Programm gekilt.
schön das du es zum laufen gebracht hast =D>
Manfred hat geschrieben:Watt' n Kappes. Aber "rechner" klappt auch. Warum muß bei meinem Programm EXE dahinter stehen?
das hab ich auch noch nicht erlebt.
gruss by OHR
Jimmy
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: anderes Programm beenden

Beitrag von Werner_Bayern »

Manfred hat geschrieben: Mi, 02. Okt 2019 20:06 Warum muß bei meinem Programm EXE dahinter stehen?
Stehts so im Manifest?
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: anderes Programm beenden

Beitrag von Manfred »

Hi Werner,
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!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: anderes Programm beenden

Beitrag von Jan »

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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: anderes Programm beenden [ERLEDIGT]

Beitrag von Manfred »

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!!
Benutzeravatar
azzo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 483
Registriert: So, 28. Mär 2010 19:21
Danksagung erhalten: 11 Mal

Re: anderes Programm beenden [ERLEDIGT]

Beitrag von azzo »

Hallo Manfred,
ich beziehe den Festertitel mit ein.
LG
Otto
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: anderes Programm beenden [ERLEDIGT]

Beitrag von AUGE_OHR »

hi,
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?
der ganze Weg mit "FindWindow" funktioniert nur wenn man ein Fenster hat und nicht mehr wenn es ein Dienst ist.
deshalb TRunProcess von Pablo weil man da das Handle von "CreateProcess" bekommt und nicht "suchen" muss.
gruss by OHR
Jimmy
Antworten