怎么获取其他进程的threadcontext?为什么我的总是出错
需要获取另一个程序的寄存器。
我 先拿到窗口handle,测试是拿一个记事本窗口测的
然后getwindowthreadprocessid拿到threadid
然后openthread拿到threadhandle
再suspendthread(hthread)
这时看记事本窗口已经不响应了。挂起函数返回值也是成功
然后调用 BOOL ret = GetThreadContext((HANDLE)hThread, &ctx);
这个函数就不行了,死活返回失败,错误码是87,不知道是哪个参数错误。有谁知道怎么回事么。
下面是代码。
HWND hWnd = FindWindow(NULL, "新建文本文档.txt - 记事本");
if ( hWnd != NULL )
{
dwThreadID = GetWindowThreadProcessId(hWnd, &dwProcessID);
}
HANDLE hThread = OpenThread(THREAD_ALL_ACCESS, FALSE, dwThreadID);
DWORD dret = SuspendThread(hThread);
CONTEXT ctx;
ZeroMemory(&ctx, sizeof(ctx));
ctx.ContextFlags = CONTEXT_ALL;
BOOL ret = GetThreadContext(hThread, &ctx);
int error = GetLastError();
ResumeThread(hThread);