救命啊,在线跪求!!!!!!!!!!!!

smzwsq 2006-11-30 10:38:56
我在我的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;
}
...全文
156 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
BOYGUARD110 2006-12-01
  • 打赏
  • 举报
回复
up
smzwsq 2006-11-30
  • 打赏
  • 举报
回复
改过来了还是不行啊,请看看!!!
timerF1= SetTimer(p->dlg.GetSafeHwnd(),1,2500,TimerProc);
louifox 2006-11-30
  • 打赏
  • 举报
回复
timerF1= SetTimer(NULL,1,2500,TimerProc);
??
没有窗口句柄?消息发给谁啊

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧