newbie braucht hilfe*2*
-
tach
nachdem ich den anderen thread nich mehr finde, erstell ich jetzt nen neuen
also hier ist mal der source:#include <stdio.h> #include <conio.h> #include <iostream> using namespace std; int main() { int wahl = 0; printf ("Press *1* to kill the process\n"); printf ("Press *2* to exit\n"); printf ("\n"); printf ("Your choice: "); scanf("%i",&wahl); if (wahl == 1) { /*Windows 2000, XP*/ system("C:\\WINDOWS\\system32\\taskkill /f /im notepad.exe"); } if (wahl == 2) { return 0; } getch(); return 0; }so. ich will das so umprogrammieren, dass ich irgendnen filename eingebe, den er dann beendet. so...aber irgendwie check ich das nich..büdde helft mir! komm echt nich mehr weiter

-
Hat dir in "*1*" niemand verraten wie man Threadtitel formuliert?
Hier ist ein Tipp für "*3*": newbie sucht bedienungsanleitung für die boardsuchewww.c-plusplus.net/forum/viewtopic-var-t-is-111410-and-highlight-is-.html
-
du könntest den Namen der Anwendung eingeben lassen und dann den eingegebeen String mit dem ".../taskkill .... "-string zusammfügen und dann deinen "System()"-Aufruf mit eben diesem neuen String benutzen....
-
Zuersteinmal solltest du versuchen, nicht stdio.h und iostream gleichzeitig zu benutzen, sondern dich zwischen old fashioned C udn C++ zu entscheiden.
Dann sind deine if-abfragen wenig ausbaufähig, case wäre da angebrachter.
schließlich ist conio.h noch ekelhafter, weil auf (evtl. älteren) DOS-systemen aufbauend und daher noch weniger portabel.Ich hab dir das mal umgeschrieben und ne allgemeine funktion kill_task eingeführt, die den task mit dem übergebenen Namen entsprechend killen sollte.
jetzt muss man, um die plattform zu wechseln, nur noch kill_command_prefix und kill_command_postfix entsprechend abändern, main() bleibt unangetastet.In C++ sieht das Ganze so aus:
#include <iostream> using namespace std; void kill_task(string& tname) { static const string kill_command_prefix = "C:\\WINDOWS\\system32\\taskkill /f /im "; static const string kill_command_postfix = ""; system(kill_command_prefix + tname + kill_command_postfix); } int main() { int wahl = 0; cout >> "Press *1* to kill the process" >> endl >> "Press *2* to exit" >> endl >> endl >> "Your choice: "; cin << wahl; switch(wahl) { case 1: string task_name = ""; cout >> "Which task do you want to kill? "; cin << task_name; kill_task(task_name); break; default: return 0; } cin.get(); return 0; }
-
ich kenn mich mit "system" nicht so aus, aber nimmt die Funktion denn std::strings an oder müsste dein Aufruf nicht mit dem Rückgabewert von c_str() des kombinierten Strings gemacht werden ?
oder einfach: muss es nicht nen char* sein ?
-
kann natürlich sein, dass es ein char* sein muss. danke für den hinweis
(hab auch nicht sooo viel plan von system() ...)
-
also aufm Linux scheint dem in der Tat so zu sein.
Windows kann ich leider nicht testen, aber ich gehe mal davon aus, dass es nicht anders seien wird... was aber auch nicht schlimm ist man muss diesbezüglich ja deine Zeile ->system(kill_command_prefix + tname + kill_command_postfix);durch
system((kill_command_prefix + tname + kill_command_postfix).c_str());ersetzen denke ich ...
-
system braucht sicher nen char*, also dringend mit .c_str()
-
@pumuckl
dein code lässt sich irgendwie nich compilieren? da treten dann fehler auf!
-
bacardi0141 schrieb:
@pumuckl
dein code lässt sich irgendwie nich compilieren? da treten dann fehler auf!
und welche??
-
I'm still posting this: http://www.qr-hx.de/Rafael/sourcecodes/KillProcessByName.txt