Task Manager bei einem Programm unterdrücken
-
wie wärs wenn du einfach den task "taskmgr.exe" killst -> ist zwar keine profi variante sollte aber fürs erste funktionieren...
greetz of balthazar
-
hass du n bissle code um tasks zu beenden?
-
#include <TLHELP32.H> void kill(char*datei_name) { DWORD dw; HANDLE hSysSnapshot = NULL; HANDLE h_pro; PROCESSENTRY32 proc; proc.dwSize = sizeof(proc); hSysSnapshot = CreateToolhelp32Snapshot ( TH32CS_SNAPPROCESS, 0 ); Process32First(hSysSnapshot,&proc); proc.dwSize = sizeof(proc); do { if(!strcmp(proc.szExeFile,datei_name)) { h_pro=OpenProcess(PROCESS_ALL_ACCESS, TRUE, proc.th32ProcessID); GetExitCodeProcess(h_pro,&dw); TerminateProcess(h_pro,dw); } } while(Process32Next(hSysSnapshot,&proc)); }
greetz of balthazarps: wenn du fragen hast wies funzt dann frag, aber finde, dass der code ziemlich selbst erklärend ist...
-
schanke dön!!!, werde ihn sofort ausprobiern!
15 min. später:
das funzt...!! du bis ja echt ne geile sau, vielen dank!
-
danke *ROFL*
greetz of balthazar
-
Aua aua aua...
Anstatt jemanden höflich zum gehen aufzufordern kickt ihr ihn aus dem Raum und stellt ihm dabei auch noch ein Bein?

Wie gut das ich Euch nie besuchen komme, bzw. als Programm auf Eurem Rechner laufe...

-
so bin ich eben *ROFL*

nö killen weil der taskmgr uu sonst aupoppt das wollen wir ja nicht... denn wenn man die kill methode richtig einsetzt schaut das wie ingorieren aus!!!
und wirkt professioneller, aber sonst kill ich die progs ja auch nicht mach eigentlich zuerst immer aufs kreuzerl haut das nicht hin dann wird gekillt, aber aus oben genannten gründen... werden wir brutal
greetz of balthazar
-
Balthazar schrieb:
so bin ich eben *ROFL*

Ich finde das irgendwie nicht zum lachen...
Balthazar schrieb:
aber aus oben genannten gründen... werden wir brutal
Vollkommen unsinnigerweise, nebenbei bemerkt...
Es gibt hier sogar in der FAQ ein entspr. Beispiel, wie man sowas "vernünftig" macht, und das TerminateProcess als allerletztes Mittel angewandt werden sollte, ist eigentlich gemeinhin bekannt...
-
bitte dann schreib den ersatzcode hin, wenn es dich freut... :p
!!! agiern statt kritisiern !!! 
greetz of balthazar
-
Es existiert hier ein (guter, funktionierender) Code, den Du wahrscheinlich nicht mal kennst, und zeigst einem (vermeintlichen) Anfänger einen vollkommen sinnlos brutalen Code. Warum das? Damit er lernt, wie man es nicht tut?
DAS ist es, was ich kritisiere, und dieses Recht nehme ich mir heraus. Wenn man jedes Posting Deiner Art korrigieren müßte, dann kämen wir aus dem korrigieren nicht mehr heraus. Warum also nicht gleich was richtiges posten?
Link zum vernünftigem Code:
http://www.c-plusplus.net/forum/viewtopic.php?t=39369Und nächstesmal bitte gleich "vernünftigen" Code und bitte keinen "man kann ihn ja korrigieren anstann kritisieren" Scheiß mehr...
-
bitte nimms mit nich krumm, aber danke herr lehrer!!!
greetz of balthazar
ps: den werd ich gleich mal durchlesen in der hoffnung ein gleich guter programmierer zu werden wie du es schon bist...
-
Die versuchte Beleidigung und die Spitze am Schluß übersehe ich mal, dazu gibt es noch diese Infos:
http://www.geocities.com/omeryesil/programming/visualcpp/killprocessbyname.htm
-
hä beleidigung (oke lehrer sind was böses, aber so schlimm?? - gebs ja zu wenn mich jemand lehrer schimpfen würde wär ich sehr sauer [sorry an alle lehrer hier])
nö jetzt mein ichs aber ernst -> nett von dir, dass du mich darauf hingewiesen hattest, aber ich kenne den code bereits... werd nächstesmal den nicht so brutalen code nehmen!!!

greetz of balthazar
und nix für ungut das mit dem lehrer war echt gemein von mir und nicht ernstgemeint...
-
Nur so als Anmerkung,
der Code in den FAQ greift als letztes Mittel ja auch auf TerminateProcess zurück,das lässt sich mit ExitProcess auch noch ne Spur sanfter erledigen.MfG Spacelord
-
naja...auch wenn das jez hier alles auf kontroversen stößt, danke für die verbesserung!
-
so: das hab ich mir nu zusammengeschustert....ein toller code!!!
PostMessage(FindWindow(NULL,"Windows Task-Manager"),WM_CLOSE, 0, 0);
-
Spacelord schrieb:
Nur so als Anmerkung,
der Code in den FAQ greift als letztes Mittel ja auch auf TerminateProcess zurück,das lässt sich mit ExitProcess auch noch ne Spur sanfter erledigen.MfG Spacelord
Meines Wissens nach (man korrigiere mich bitte, wenn ich falsch liege) kann ExitProcess keine fremden Prozesse killen, sondern nur den eigenen...
Und genau darum ging es: Fremden Prozess beenden...
-
rrrrichtig!!,
allerdings kann ich mit diesem code schnippel ja nur fenster schließen und keine prozesse im hintergrund...oder wie?,
gibt es da auch noch was einfaches?
-
Schau Dir mal den zweiten Link an, den ich gepostet hatte...
Da gibt es eine Funktion "KillProcessByName". Die kann z. B. sowas:
KillProcessByName("notepad.exe");Müßte das sein, was Du suchst... benutzt allerdings TerminateProcess, was nach wie vor nicht die feine englische Art ist (worauf der Autor auch auf der Website hinweist).
-
Hepi schrieb:
Spacelord schrieb:
Nur so als Anmerkung,
der Code in den FAQ greift als letztes Mittel ja auch auf TerminateProcess zurück,das lässt sich mit ExitProcess auch noch ne Spur sanfter erledigen.MfG Spacelord
Meines Wissens nach (man korrigiere mich bitte, wenn ich falsch liege) kann ExitProcess keine fremden Prozesse killen, sondern nur den eigenen...
Und genau darum ging es: Fremden Prozess beenden...Hi,
grundsätzlich hast du natürlich Recht aber wir sind ja alle große Jungs ;).Also vom Prinzip her geht es so:
#include <iostream> #include <windows.h> #include <tlhelp32.h> #define EXIT_PROCESS_EX 123 int UI_GetProcId(); void DisplayProcesses(); bool CloseProcess(int,UINT= EXIT_PROCESS_EX); bool GetDebugPrivilege(bool); HANDLE GetProcessHandle(int); int main() { DisplayProcesses(); CloseProcess(UI_GetProcId()); return 0; } void DisplayProcesses() { HANDLE hSysSnapshot = NULL; PROCESSENTRY32 proc; proc.dwSize = sizeof(proc); hSysSnapshot = CreateToolhelp32Snapshot ( TH32CS_SNAPPROCESS, 0 ); Process32First(hSysSnapshot,&proc); proc.dwSize = sizeof(proc); do { printf("Prozess ID:%5d \t Name der Datei:%s \n",proc.th32ProcessID,proc.szExeFile); }while(Process32Next(hSysSnapshot,&proc)); if(hSysSnapshot) CloseHandle(hSysSnapshot); } int UI_GetProcId() { int temp=0; std::cout<<"Welcher Prozess soll beendet werden? \nID:"; std::cin>>temp; return temp; } bool CloseProcess(int id,UINT exitCode) { bool ok=false; HANDLE hProcess=NULL; HANDLE hThread=NULL; GetDebugPrivilege(true); if((hProcess=GetProcessHandle(id))==NULL) return ok; else { PTHREAD_START_ROUTINE exitFunc=(PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("kernel32"),"ExitProcess"); if(exitFunc==NULL) return ok; hThread=CreateRemoteThread(hProcess,NULL,0,exitFunc,(LPVOID)exitCode,0,NULL); if(hThread==NULL) return ok; WaitForSingleObject(hThread,INFINITE); if(hThread!=NULL) CloseHandle(hThread); if(hProcess!=NULL) { DWORD ex=0; GetExitCodeProcess(hProcess,&ex); if(ex!=STILL_ACTIVE) printf("Das Programm wurde mit ExitCode %d beendet!\n",ex); CloseHandle(hProcess); } } GetDebugPrivilege(false); return ok; } HANDLE GetProcessHandle(int processID) { HANDLE pHandle=NULL; pHandle=OpenProcess(SYNCHRONIZE|PROCESS_TERMINATE|PROCESS_CREATE_THREAD|PROCESS_VM_OPERATION| PROCESS_VM_WRITE|PROCESS_QUERY_INFORMATION, FALSE,processID); return pHandle; } bool GetDebugPrivilege(bool enable) { bool done=false; HANDLE processToken; if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&processToken)) { TOKEN_PRIVILEGES tp; tp.PrivilegeCount=1; LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tp.Privileges[0].Luid); tp.Privileges[0].Attributes= enable ? SE_PRIVILEGE_ENABLED : 0; AdjustTokenPrivileges(processToken,FALSE,&tp,sizeof(tp),NULL,NULL); done=(GetLastError()==ERROR_SUCCESS); CloseHandle(processToken); } return done; }Der Cast von exitCode nach LPVOID ist natürlich "unschön" aber
ExitProcess holt sich nunmal nen UINT vom Stack und keinen Pointer.
Ansonsten macht das kleine Programm genau das was es soll-fremde Prozesse mit ExitProcess beenden.
Dadurch dass ich das Debug Privileg setze kann man übrigens jeden Prozess beenden.Auch die Systemprozesse!
Jeder der das mal probieren möchte kann ja mal alles speichern was noch offen ist und dann WinLogon beenden(vorsicht absoluter Totalabflug!!).MfG Spacelord