exe nicht über tastkill beenden
spacer
Autor Nachricht
Petros
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Beiträge: 103
Erhaltene Danke: 1


Delphi7, DelphiXE, VSC# 2010 , VSC++ 2010, Flash AS3
BeitragVerfasst: So 22.01.12 18: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 markieren
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
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15841
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: So 22.01.12 18: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
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Petros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Beiträge: 103
Erhaltene Danke: 1


Delphi7, DelphiXE, VSC# 2010 , VSC++ 2010, Flash AS3
BeitragVerfasst: So 22.01.12 19: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 markieren
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', nil, nil, SW_SHOWNORMAL)
else
if MyString = 'close1' then
taskkill('sc_serv.exe')
end;


und ein teil vom clienten

ausblenden Delphi-Quelltext markieren
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
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15841
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: So 22.01.12 19: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
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Petros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Beiträge: 103
Erhaltene Danke: 1


Delphi7, DelphiXE, VSC# 2010 , VSC++ 2010, Flash AS3
BeitragVerfasst: So 22.01.12 20: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...
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Administrator
Beiträge: 8372
Erhaltene Danke: 244

W2k, WXPpro
TP3 - D7pro
BeitragVerfasst: Mo 23.01.12 00: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 markieren
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', nil, nil, 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.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Petros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Beiträge: 103
Erhaltene Danke: 1


Delphi7, DelphiXE, VSC# 2010 , VSC++ 2010, Flash AS3
BeitragVerfasst: Mo 23.01.12 16: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
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
home home