OpenProcess总是打不开,错误返回值是87,
我已经提高当前进程的权限了,为什么还是打不开呢? HWND hDialog = FindWindowEx(NULL,NULL,NULL,"XXXXXXX");
if(hDialog==NULL)
{
MessageBox("hDialog is NULL");
return;
} DWORD dwThreadID = GetWindowThreadProcessId(hDialog,NULL);
if(dwThreadID==NULL)
{
MessageBox("dwThreadID is NULL");
return;
} EnableDebugPri();///////把当前的进程增加调试权限 HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,FALSE,dwThreadID);
if(hProcess==NULL)
{
DWORD dwError = GetLastError();
CString str;
str.Format("%ld",dwError);
MessageBox(str);     ///////////在这里str为87
// MessageBox("hProcess is NULL");
return;
} char Red[]="493";///////这是角色的血量值
char readRed[4];
DWORD readAddress = 0x0085CA00;
BOOL ret = ReadProcessMemory(hProcess,(LPCVOID)readAddress,readRed,3,NULL);
readRed[3]=0;
if(!ret)
{
MessageBox("ret is NULL");
return;
}
if(strcpy(readRed,Red)==0)
{
MessageBox("cheng gong");
return;
}
else
{
MessageBox("shi bai");
return;
}
CloseHandle(hProcess);
BOOL CGetRedDlg::EnableDebugPri()
{
HANDLE hToken;
BOOL fOK = FALSE;
if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken))
{
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount = 1;
if(!LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tp.Privileges[0].Luid))
MessageBox("Can't lookup privilege value"); tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if(!AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL))
MessageBox("Can't adjust privilege value");
fOK = (GetLastError() == ERROR_SUCCESS);
CloseHandle(hToken);
}
return fOK;
}