anderes Programm beenden [ERLEDIGT]

Sonstiges (nicht kategorisierbar)

Moderator: Moderatoren

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 18915
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

anderes Programm beenden [ERLEDIGT]

Beitrag von Manfred » Fr, 27. Sep 2019 18:16

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 Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
andreas
Foren-Moderator
Foren-Moderator
Beiträge: 1794
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Kontaktdaten:

Re: anderes Programm beenden

Beitrag von andreas » Mo, 30. Sep 2019 12:28

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
Beisitzer des Deutschsprachige Xbase-Entwickler e. V.

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 18915
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: anderes Programm beenden

Beitrag von Manfred » Mo, 30. Sep 2019 12:29

ermitteln, rausschmeißen?
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
andreas
Foren-Moderator
Foren-Moderator
Beiträge: 1794
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Kontaktdaten:

Re: anderes Programm beenden

Beitrag von andreas » Mo, 30. Sep 2019 12:38

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

Andreas
VIP der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e. V.

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 13526
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: anderes Programm beenden

Beitrag von Jan » Mo, 30. Sep 2019 12:40

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
Foren-Moderator
Foren-Moderator
Beiträge: 1794
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Kontaktdaten:

Re: anderes Programm beenden

Beitrag von andreas » Mo, 30. Sep 2019 12:49

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
Beisitzer des Deutschsprachige Xbase-Entwickler e. V.

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 18915
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: anderes Programm beenden

Beitrag von Manfred » Mo, 30. Sep 2019 12:50

das wäre es, wenn ich es machen muß, dann geht es eh nur über den Weg.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

flanelli
UDF-Programmierer
UDF-Programmierer
Beiträge: 72
Registriert: Di, 11. Mai 2010 16:27

Re: anderes Programm beenden

Beitrag von flanelli » Mo, 30. Sep 2019 15:05

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: 12093
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: anderes Programm beenden

Beitrag von AUGE_OHR » Mi, 02. Okt 2019 6:13

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) 4-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: 18915
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: anderes Programm beenden

Beitrag von Manfred » Mi, 02. Okt 2019 6:52

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 Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12093
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: anderes Programm beenden

Beitrag von AUGE_OHR » Mi, 02. Okt 2019 8:18

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: 18915
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: anderes Programm beenden

Beitrag von Manfred » Mi, 02. Okt 2019 8:20

sorry, ich habe es mit pure xbase++ von app++ versucht.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12093
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: anderes Programm beenden

Beitrag von AUGE_OHR » Mi, 02. Okt 2019 8:46

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: 18915
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: anderes Programm beenden

Beitrag von Manfred » Mi, 02. Okt 2019 8:59

bei mir klappt es nicht.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12093
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: anderes Programm beenden

Beitrag von AUGE_OHR » Mi, 02. Okt 2019 9:16

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: 18915
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: anderes Programm beenden

Beitrag von Manfred » 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. Wobei ich nicht verstehe was der Parameter oClass zu besagen hat.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12093
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: anderes Programm beenden

Beitrag von AUGE_OHR » Mi, 02. Okt 2019 9:58

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: 18915
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: anderes Programm beenden

Beitrag von Manfred » Mi, 02. Okt 2019 20:06

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 Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12093
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: anderes Programm beenden

Beitrag von AUGE_OHR » Mi, 02. Okt 2019 20:19

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: 1693
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern

Re: anderes Programm beenden

Beitrag von Werner_Bayern » Mi, 02. Okt 2019 22:13

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

Werner

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 18915
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: anderes Programm beenden

Beitrag von Manfred » Do, 03. Okt 2019 7:59

Hi Werner,
was müßte da wo stehen?
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 13526
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: anderes Programm beenden

Beitrag von Jan » Do, 03. Okt 2019 8:08

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: 18915
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: anderes Programm beenden [ERLEDIGT]

Beitrag von Manfred » 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?
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
azzo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 304
Registriert: So, 28. Mär 2010 19:21

Re: anderes Programm beenden [ERLEDIGT]

Beitrag von azzo » Mi, 09. Okt 2019 20:49

Hallo Manfred,
ich beziehe den Festertitel mit ein.
LG
Otto

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12093
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: anderes Programm beenden [ERLEDIGT]

Beitrag von AUGE_OHR » Mi, 09. Okt 2019 21:20

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