Здравствуйте, я пытаюсь приостановить поток, но по какой-то причине он продолжает сбивать игру.
вот что я получил
void Test(){
SuspendThread((PVOID)0x83593C24);//0x83593C24 The offset from the game
Scr_AddInt(1);
ResumeThread((PVOID)0x83593C24);
}
В основном я пытаюсь сделать паузу, чем вызвать Add Int, чем возобновить его
Вам нужно использовать дескриптор потока, который был возвращен при создании потока. Смотрите документацию для CreateThread
; SuspendThread
; а также ResumeThread
.
В частности, из документации по CreateThread
:
Если функция завершается успешно, возвращаемое значение является дескриптором нового потока. Если функция завершается ошибкой, возвращаемое значение равно NULL.
Пример:
HANDLE thread_handle = CreateThread(/*args*/); // hold on to this value (and check for failure)
if (thread_handle == NULL)
{
// handle creation error
}
DWORD suspend_retval = SuspendThread(thread_handle);
if (suspend_retval == static_cast<DWORD>(-1))
{
// handle suspend error
}
Scr_AddInt(1); // original work
DWORD resume_retval = ResumeThread(thread_handle);
if (resume_retval == static_cast<DWORD>(-1))
{
// handle resume error
}
Может быть, стоит создать класс-оболочку, который инкапсулирует создание, приостановку, возобновление и завершение потока. Этот класс может выполнять всю внутреннюю проверку ошибок и при необходимости генерировать исключение.