Mit C++ Programm einen Prozess einfrieren und entfrieren?

4 Antworten

Woher ich das weiß:Recherche

bodoooosdfer 
Fragesteller
 29.03.2020, 13:32

debugactiveprocess habe ich schon probiert, es hält den Prozess jedoch nicht an... Keine Ahnung warum es das nicht tut.

Mein Code:

#include <iostream>

#include <Windows.h>

HWND window;

DWORD pid;

int main()

{

window = FindWindowA(NULL, "Alan Wake Trainer");

GetWindowThreadProcessId(window, &pid);

std::cout << pid;

Sleep(2000);

DebugActiveProcess(pid);

Sleep(4000);

}

0
bodoooosdfer 
Fragesteller
 29.03.2020, 13:34
@Klawutzel

Bei pid? Der gibt immer den richtigen Wert. Es klappt auch alles, nur der DebugActiveProcess(pid); nicht

0

Mit dieser Variante von Stackoverflow beschrieben scheint es zu funktionieren:
https://stackoverflow.com/questions/11010165/how-to-suspend-resume-a-process-in-windows

Ich habe den Code, nur insofern abgeändert das auch ein Fortsetzen möglich ist:

#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>

void SuspendProcess(DWORD processId, bool suspend = true)
{
    HANDLE hThreadSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
    THREADENTRY32 threadEntry;
    threadEntry.dwSize = sizeof(THREADENTRY32);
    Thread32First(hThreadSnapshot, &threadEntry);
    do
    {
        if (threadEntry.th32OwnerProcessID == processId)
        {
            HANDLE hThread = OpenThread(THREAD_ALL_ACCESS, FALSE,
                threadEntry.th32ThreadID);


            if (suspend)
                SuspendThread(hThread);
            else
                ResumeThread(hThread);


            CloseHandle(hThread);
        }
    } while (Thread32Next(hThreadSnapshot, &threadEntry));
    CloseHandle(hThreadSnapshot);
}
#define ResumeProcess(processId) SuspendProcess(processId, false)

int main()
{
    auto window = FindWindowA(NULL, "Alan Wake Trainer");
    DWORD pid = 0;
    GetWindowThreadProcessId(window, &pid);

    SuspendProcess(pid);
    system("pause");
    ResumeProcess(pid);
    return 0;
}
Woher ich das weiß:Recherche

bodoooosdfer 
Fragesteller
 29.03.2020, 14:09

Funktioniert der Code bei dir? Bei mir nicht, aber danke!

0
bodoooosdfer 
Fragesteller
 29.03.2020, 14:46
@Klawutzel Ach und GetWindowThreadProcessId gibt die falsche ProcID. Hast du eine Ahnung wie ich die richtige bekomme. Ich meine Thread sagt ja schon so einiges.
0
bodoooosdfer 
Fragesteller
 29.03.2020, 15:12
@Klawutzel

Ich weiß, aber im taskmanager hat der Prozess eine andere ID

1
bodoooosdfer 
Fragesteller
 29.03.2020, 15:16
@bodoooosdfer

und der Code klappt bei mir nicht und ich habe ebenfalls Visual Studio 2019 Community

0