远程控制关键技术:屏幕控制之一(模拟鼠标)
远程控制关键技术:屏幕控制之一(模拟鼠标)
在远程控制软件的编写中,屏幕控制最重要的部分就是模拟鼠标和模拟键盘操作了,看完这两篇文章,估计大家都很容易明白编写屏幕控制的原理,它的一般流程如下:
一、捕获被控机屏幕 => 发送到控制机。
二、捕获控制机鼠标坐标和操作(映射OnMouseUp,OnMouseDown等) => 发送到被控制机,并模拟鼠标执行。
三、捕获控制机键盘操作(pretranslatemessage中拦截) => 发送到被控制机,模拟键盘执行。
在这篇文章中我们主要来说下模拟鼠标操作所用到的函数,以及范例:
先看一下效果图:
具体可以操作演示一下,具体代码见下面。
关键函数:mouse_event();
函数原型:mouse_event(DWORD dwFlag,DWORD dx, DWORD dy, DWORD dwData, ULONG_PTR dwExtraInfo );
简单用法:
- MOUSEEVENTF_MOVE:表明发生移动。
- MOUSEEVENTF_LEFTDOWN:表明接按下鼠标左键。
- MOUSEEVENTF_LEFTUP:表明松开鼠标左键。
- MOUSEEVENTF_RIGHTDOWN:表明按下鼠标右键。
- MOUSEEVENTF_RIGHTUP:表明松开鼠标右键。
- MOUSEEVENTF_MIDDLEDOWN:表明按下鼠标中键。
- MOUSEEVENTF_MIDDLEUP:表明松开鼠标中键。
- MOUSEEVENTF_WHEEL:在Windows NT中如果鼠标有一个轮,表明鼠标轮被移动。移动的数量由dwData给出。
{
SetCursorPos(50,130);int i,x = 5,y = 5;
for (i = 0;i < 60; i++)
{
mouse_event(MOUSEEVENTF_MOVE,x,y,0,0);
//每隔一秒钟移动一次
Sleep(10);
}
}
void CmouseDlg::OnBnClickedLeft()
{
//把鼠标移动到坐标为50,130的位置
SetCursorPos(50,130);
//按下鼠标,并释放
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
}
void CmouseDlg::OnBnClickedDoubleleft()
{
SetCursorPos(50,130);
//鼠标双击由两次按下与释放来模拟
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
}
void CmouseDlg::OnBnClickedRight()
{
SetCursorPos(300,300);
mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
}
[/cpp]
完整代码下载:百度网盘(失效请联系邮箱索取:10814750$qq.com谢谢!)
One Reply to “远程控制关键技术:屏幕控制之一(模拟鼠标)”
不错