Autor Beitrag
Petros
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 131
Erhaltene Danke: 1


Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
BeitragVerfasst: So 22.01.12 17:47 
Hallo Delphi Freunde.

Nun brauch mal wieder einen rat bzw hilfe von euch..

Ich habe ein remote programm geschrieben wo ich per client mich mit dem server (extra server programm) verbinden kann und dort programme starten und beenden. Soweit funktioniert das ganze auch super...

Jetzt kommt mein problem ich habe einen hauptordner mit 3 unterordner auf dem server dort sind 3 identische server.exe drin ich kann sie zwar per taskkill beenden aber dann beenden sich alle 3 programme wie kann ich es machen das er diese einzeln beendet.

beispiel

...........|------------------ordner 1 |------ server.exe
Hauptordner|------------------ordner 2 |------ server.exe
...........|------------------ordner 3 |------ server.exe

Es handelt sich um 3 shotcast server / 3 streams.

Es geht darum das einige leute von mir diese starten und stoppen können ohne auf dem Remote Desktop drauf zuzugreifen.
da ich nicht 24 stunden am tag auf meinem server drauf bin und ich den leuten den zugang nicht gebe zum remot desktop habe ich dem entsprechen ein programm geschrieben

Hat jemand eine idee. Hab es schon per Batch datei versucht aber hat nicht wirklich geklappt.

ausblenden Quelltext
1:
2:
3:
4:
@echo off
echo
C:\Users\Administrator\Desktop\Stream Software\haupt\sc_serv.exe
exit


ich hoffe ich habs einigermaßen verständlich erklärt ansonsten ändere ich es noch etwas
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19337
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 22.01.12 17:57 
Wie wäre es, wenn du in die Serveranwendung eine Möglichkeit einbaust diese von außen zu beenden? :gruebel: Da herumzufrickeln und die einfach abzuschießen ist ja nun keine wirkliche Lösung. :shock:

Aber vom Prinzip her musst du nur alle Prozesse mit EnumProcesses enumerieren, mit OpenProcess öffnen und die passenden mit TerminateProcess abschießen.

Ein kleines Beispiel findest du hier:
www.delphi-library.d...stellen_41114,0.html

Für diesen Beitrag haben gedankt: Petros
Petros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 131
Erhaltene Danke: 1


Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
BeitragVerfasst: So 22.01.12 18:24 
Zitat:
Wie wäre es, wenn du in die Serveranwendung eine Möglichkeit einbaust diese von außen zu beenden?

welche serveranwendung meinst du.. den Remot Server oder den Shoutcast Server..

ich will diese ja von außen beenden via client wenn es nur ein stream wäre hätte ich es per taskkill gemacht aber bei 3 geht das nicht werden ja dann alle 3 beendet.

Bekommt nicht jeder prozess eine neue id zugewiesen wenn diese neu gestartet werden!

hier mal ein teil vom remote server code

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
myString : String;
buff : array[0..MAX_COMPUTERNAME_LENGTH] of char;
nsize : DWORD;
rc : hwnd;
begin
nsize := SizeOf(buff);
myString := Socket.ReceiveText;
Randomize();
if MyString = 'shotcast1' then
ShellExecute(Handle, 'open''haupt\sc_serv.exe'nilnil, SW_SHOWNORMAL)
else
if MyString = 'close1' then
taskkill('sc_serv.exe')
end;


und ein teil vom clienten

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.btn1Click(Sender: TObject);
begin
ClientSocket1.Socket.SendText('shotcast1');
end;

procedure TForm1.btn2Click(Sender: TObject);
begin
ClientSocket1.Socket.SendText('close1');
end;


so hätte ich es gemacht wenn es nur 1ner wäre
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19337
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 22.01.12 18:41 
Naja, statt taskkill zu benutzen musst du eben die oben genannten Funktionen nehmen um den ganzen Pfad zu vergleichen.

Wobei ich mir relativ sicher bin, dass in der Funktion taskkill schon ähnlicher Code steckt. Du hast vermutlich nur noch nicht reingeschaut...

Für diesen Beitrag haben gedankt: Petros
Petros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 131
Erhaltene Danke: 1


Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
BeitragVerfasst: So 22.01.12 19:46 
Das ist ja mal richtig cool DANKE für deine hilfe habe den taskkill jetzt mit pfad genommen und es funktioniert kann alle 3 jetzt einzellt beenden...
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 22.01.12 23:44 
Moin!

Ähm, nur der Vollständigkeit halber für die Nachwelt, das hier ist kaputter Code:
user profile iconPetros hat folgendes geschrieben Zum zitierten Posting springen:
hier mal ein teil vom remote server code
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
myString : String;
buff : array[0..MAX_COMPUTERNAME_LENGTH] of char;
nsize : DWORD;
rc : hwnd;
begin
nsize := SizeOf(buff);
myString := Socket.ReceiveText;
Randomize();
if MyString = 'shotcast1' then
ShellExecute(Handle, 'open''haupt\sc_serv.exe'nilnil, SW_SHOWNORMAL)
else
if MyString = 'close1' then
taskkill('sc_serv.exe')
end;
Warum, ist in diesem FAQ-Beitrag im Detail nachzulesen. :les: :think:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Petros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 131
Erhaltene Danke: 1


Delphi7, Delphi RadStudio 10 Berlin, VSC# 2015, Java 8
BeitragVerfasst: Mo 23.01.12 15:17 
Danke Narses.

Ich werde meinen Code nochmal überarbeiten habe das tut teilweise überflogen (grad keine zeit für) werde ich aber noch genauer durchgehen ich danke dir für die info.

MFG Petros