2,640
社区成员
发帖
与我相关
我的任务
分享
UINT CHack::ThreadListen(void* p)
{
CHack* pHack=(CHack*)p;
HWND hwDdz;
while(1) //线程死循环
{
::Sleep(100);
::WaitForSingleObject(pHack->m_hEventListen,INFINITE);//等待
::InvalidateRect(pHack->m_pDlg->m_hWnd,NULL,TRUE);
//寻找斗地主窗口
while(hwDdz = ::FindWindow(NULL,pHack->m_stRAMInf.pszCaption), hwDdz == NULL)
{
::Sleep(1000);
}
//打开斗地主进程
DWORD PID,TID;
TID = ::GetWindowThreadProcessId(hwDdz,&PID);
if(pHack->m_hddz != NULL)
{
::CloseHandle(pHack->m_hddz);
pHack->m_hddz=NULL;
}
pHack->m_hddz = ::OpenProcess(PROCESS_VM_READ|PROCESS_QUERY_INFORMATION ,TRUE,PID);
if(NULL == pHack->m_hddz)
{
EL("CHack::ThreadListen OpenProcess Error");
pHack->m_pDlg->EndDialog(0);
return 0;
}
//init内存指针地址
pHack->ReConstractor();
if(FALSE==pHack->InitMemory())
{
EL("CHack::ThreadListen InitMemory Error");
pHack->m_pDlg->EndDialog(0);
return 0;
}
if(0 == ::SetEvent(pHack->m_hEventRead)) //使读内存线程运行
{
EL("CHack:ThreadListen SetEvent(m_hEventRead) Error");
pHack->m_pDlg->EndDialog(0);
return 0;
}
if(0 == ::ResetEvent(pHack->m_hEventListen))
{
EL("CHack:ThreadListen ResetEvent(m_hEventListen) Error");
pHack->m_pDlg->EndDialog(0);
return 0;
}
}
EL("Error Can't run here");
return 1;
}
UINT CHack::ThreadReadM(void* p)
{
CHack* pHack=(CHack*)p;
while(1)
{
::Sleep(100);
::WaitForSingleObject(pHack->m_hEventRead,INFINITE);//等待
if(FALSE == pHack->ReadMemory())
{
Sleep(200);
memset( pHack->m_wUnsightCard,0,sizeof(pHack->m_wUnsightCard));
if(0 == ::ResetEvent(pHack->m_hEventRead))
{
EL("CHack:ThreadListen SetEvent(m_hEventRead) Error");
pHack->m_pDlg->EndDialog(0);
return 0;
}
if(0 == ::SetEvent(pHack->m_hEventListen))
{
EL("CHack:ThreadListen SetEvent(m_hEventRead) Error");
pHack->m_pDlg->EndDialog(0);
return 0;
}
continue;
}
if( pHack->m_dwDisCard[0][0] == 0 && pHack->m_dwDisCard[1][0] == 0 && pHack->m_dwDisCard[2][0] == 0 )
memset( pHack->m_wUnsightCard,0,sizeof(pHack->m_wUnsightCard));
if(FALSE == pHack->ShowPic())
{
EL("CHack::ThreadReadM ShowPic Error");
pHack->m_pDlg->EndDialog(0);
return 0;
}
}//while 死循环
}