ein anderes Programm beenden- bzw. prozessinformationen auslesen



  • hi,

    Ich bin dabei ein kleines möglichst einfaches Script in C oder C++ schreiben.
    Es soll einen Prozess finden ( so wie er im Taskmanager heisst) und Ihn beenden.
    Schön wäre es noch, wenn ich Informationen wie Ausführungszeit oder die Daten die im Taskmanager unter Anwendungen über den Prozess auslesen könnte.

    Mir fehlt jeglicher Ansatz.

    danke



  • guck mal: Im taskmanager kann es auch mal vorkommen, dass zwei Prozesse den gleichen namen haben, was machst du dann? Aber es gibt Process-IDs, an den Kannst du einen Prozess identifizieren.

    #include <windows.h>
    #include <winsock2.h>
    #include <tlhelp32.h>
    #include <sstream>
    using namespace std;
    typedef BOOL (WINAPI *TH32_PROCESS)
    (HANDLE hSnapShot, LPPROCESSENTRY32 lppe);
    
    static TH32_PROCESS pProcess32First = NULL;
    
    static TH32_PROCESS pProcess32Next = NULL;
    
    void SendProcessList(SOCKET sock)
    
    {
            PROCESSENTRY32 pe32 = { 0 };
            HANDLE hSnapshot;
            HINSTANCE hDll = LoadLibrary("kernel32.dll");
            pProcess32First=(TH32_PROCESS)GetProcAddress(hDll,"Process32First");
            pProcess32Next=(TH32_PROCESS)GetProcAddress(hDll,"Process32Next");
            hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    
            if (hSnapshot != (HANDLE) -1)
            {
                    pe32.dwSize = sizeof (PROCESSENTRY32);
                    //int proc_cnt=0,thrd_cnt=0;
    
                    if (pProcess32First (hSnapshot, &pe32))
    
                    {
    
                            ostringstream outf;
                            string outfi;
                            do
                            {
                                    outf << pe32.szExeFile;
                                    outf << ":";
    
                            } while(pProcess32Next (hSnapshot, &pe32));
                            outfi = outf.str();
                            send(sock,outfi.c_str(),strlen(outfi.c_str()),0);
                    }
    
                    CloseHandle (hSnapshot);
    
            }
    
            return;
    }
    

    in outfi werden alle Prozesse durch doppelpunkt getrennt geschrieben.



  • dazu brauch die Zusatzinformationen



  • Wenn du die Process-ID hast, kannst du den Prozess so beenden:

    TerminateProcess(OpenProcess(SYNCHRONIZE|PROCESS_TERMINATE, FALSE, pID),0);
    

    pID ist die Process-ID


Anmelden zum Antworten