求救 模拟按键问题

moruoli 2008-07-12 02:46:28
想实现一个模拟按键的小功能,每隔五秒钟就会单击一下左键
我用全局钩子截获鼠标中键点击事件,从而模拟单击左键功能
if(WM_MBUTTONDOWN == wParam)
{
POINT pt;
GetCursorPos(&pt);
// while(1)
// {
SetCursorPos(pt.x,pt.y);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
// Sleep(5000);
// }
}
else
return CallNextHookEx(g_hMouse,nCode,wParam,lParam);

可现在是当单击了一次中键,它就响应一次,怎么实现单击一次中键后,它每隔五秒钟自己就会
响应一次?(加while和sleep是实现不了的)请各位大侠赐教,谢谢啊
...全文
50 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
moruoli 2008-07-12
  • 打赏
  • 举报
回复
对线程我不太懂,很模糊,能说的更明白些吗?
nieoding 2008-07-12
  • 打赏
  • 举报
回复
开个子线程sleep不行啊
moruoli 2008-07-12
  • 打赏
  • 举报
回复
已经解决,把WaitForSingleObject(hThread,INFINITE);去掉就可以了
moruoli 2008-07-12
  • 打赏
  • 举报
回复
#include <windows.h>
#include <process.h>
HHOOK g_hMouse=NULL;
HWND g_hWnd = NULL;
//// 子线程函数
unsigned _stdcall SecondThreadFunc(void *pArguments)
{
POINT pt;
GetCursorPos(&pt);
while(1)
{
SetCursorPos(pt.x,pt.y);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(5000);
}

_endthreadex(0);
return 0;
}

//// 鼠标钩子函数
LRESULT CALLBACK MouseProc(
int nCode, // hook code
WPARAM wParam, // message identifier
LPARAM lParam // mouse coordinates
)
{
if(WM_MBUTTONDOWN == wParam)
{
HANDLE hThread;
unsigned threadID;
hThread=(HANDLE)_beginthreadex(NULL,0,&SecondThreadFunc,NULL,0,&threadID);
WaitForSingleObject(hThread,INFINITE);
// CloseHandle(hThread);
}
}
else
return CallNextHookEx(g_hMouse,nCode,wParam,lParam);

}

void SetHook(HWND hwnd)
{
g_hWnd=hwnd;
g_hMouse=SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle("Hook"),0);
}



照上面那样写,也实现不了每隔五秒钟自己模拟按键一次的功能,并且会死机

各位帮帮忙,看看怎么弄啊

15,466

社区成员

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

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