Entwickler-Ecke
Sonstiges (Delphi) - exe nicht über tastkill beenden
Petros - So 22.01.12 17:47
Titel: exe nicht über tastkill beenden
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.
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
Petros - 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
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', nil, nil, SW_SHOWNORMAL) else if MyString = 'close1' then taskkill('sc_serv.exe') end; |
und ein teil vom clienten
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 - 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...
Petros - 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 - So 22.01.12 23:44
Moin!
Ähm, nur der Vollständigkeit halber für die Nachwelt, das hier ist kaputter Code:
Petros hat folgendes geschrieben : |
hier mal ein teil vom remote server code
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', nil, nil, SW_SHOWNORMAL) else if MyString = 'close1' then taskkill('sc_serv.exe') end; | |
Warum, ist
in diesem FAQ-Beitrag [
http://www.delphi-library.de/topic_Datenpakete+bei+den+SocketKomponenten+auseinanderhalten_56194.html] im Detail nachzulesen. :les: :think:
cu
Narses
Petros - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!