救命啊,在线跪求!!!!!!!!!!!!
我在我的DLL中设置了timer,显式加载该DLL一切正常,timer回调函数工作正常,但是当我把该DLL注入一个远程进程后,调试时SetTimer返回了正确的值,但是timer回调函数不工作,不知怎么回事?请教大家!!!
void CALLBACK WINAPI TimerProc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime)
{
if((timerF1 !=0 )&&(timerF1 == idEvent))
{
keybd_event(VK_F1,0,KEYEVENTF_EXTENDEDKEY,0);
keybd_event(VK_F1,0,KEYEVENTF_KEYUP,0);
}
}
DWORD WINAPI CInjectProcessApp::ThreadProc (PVOID pParam)
{
CInjectProcessApp *p = (CInjectProcessApp *)pParam;
if(p->dlg.GetSafeHwnd())
if(!::IsWindowVisible(p->dlg.GetSafeHwnd()))
{
::ShowWindow(p->dlg.GetSafeHwnd(),SW_SHOW);
BOOL x = ::UpdateWindow(p->dlg.GetSafeHwnd());
}
if(!timerF1 )
timerF1= SetTimer(NULL,1,2500,TimerProc);
//while(1)
//{
//hkb=SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)keyboardProc,hins,0);
//}
return 0;
}
void CInjectProcessApp::CreateWorkThreak()
{
if(!threadid)
{
HWND lp = 0;
lp =dlg.GetSafeHwnd();
if(!lp)
{
dlg.Create(IDD_DIALOG_DISPLAY);
}
char *pstr="";
::CreateThread(NULL,0,ThreadProc,this,0,&threadid);
}
}
_declspec(dllexport) BOOL installhook(LPCTSTR str)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if(!threadid)
{
theApp.CreateWorkThreak();
}
return TRUE;
}