哪位高手可否介绍一下远程控制中当我进行键盘、鼠标操作时,远程电脑也跟我做同样的操作的原理?
解决方案 »
- MFC数据集问题
- 编译错误yntax error : identifier 'DWORD_PTR'
- 菜鸟求教:界面程序"无效索引"
- ado + sqlserver 2000 + vc++ 多线程编程时,是否每个线程要用一个独立的数据库连接(connection)
- 请教:通过编程,如何获取广域网上远程主机(比如www.sina.com.cn)的MAC?谢谢!
- 在ClassWizard怎样为单选按钮添加Member Variables我在里面看不到单选按钮变量
- 简单问题:CListCtrl无法显示
- 线程有必要吗?????
- 菜鸟的问题!!!!如何把敲回车键的动作送入一个变量?
- ***********************菜鸟问题,在VC中如何动态实现控制文本框?
- 搜索算法问题!
- 紧急求救,再线等....
消息。当在本地进行键盘,鼠标等的操作时,都向系统发消息,再由系统发到各程序的消息队列。你在服务端用posetmessage(),sendmessage()什么的,改改窗口句柄 发消息就是了。至于message取什么,不用说了吧.
用一个电脑就可以做这个效果了。
int MouseType ;
CPoint pt ; MouseType = (传送过来的鼠标事件类别,如LBUTTON_DOWN) ;
pt = (传送过来的鼠标位置) ;
switch(MouseType)
{
case MOUSEEVENTF_LEFTDOWN:
mouse_event(MOUSEEVENTF_LEFTDOWN , pt.x , pt.y , 0 , 0) ;
break; case MOUSEEVENTF_LEFTUP:
mouse_event(MOUSEEVENTF_LEFTUP , pt.x , pt.y , 0 , 0) ;
break ; case MOUSEEVENTF_RIGHTDOWN:
mouse_event(MOUSEEVENTF_RIGHTDOWN , pt.x , pt.y , 0 , 0) ;
break ; case MOUSEEVENTF_RIGHTUP:
mouse_event(MOUSEEVENTF_RIGHTUP , pt.x , pt.y , 0 , 0) ;
break ; case MOUSEEVENTF_MOVE:
SetCursorPos(pt.x,pt.y);
break ;
case MOUSEEVENTF_DBCLK:
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTDOWN,
pt.x,pt.y,0,0);
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTUP,
pt.x,pt.y,0,0);
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTDOWN,
pt.x,pt.y,0,0);
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTUP,
pt.x,pt.y,0,0);
break ;
case MOUSEEVENTF_WHEEL:
mouse_event(MOUSEEVENTF_WHEEL , pt.x , pt.y , tempMouseData , 0) ;
break ; default:
break ;
}
键盘事件:在你的 pretranslatemessage函数截取你的键盘输入,如果你想传送所有键盘事件,就要用钩子
了,截取后传送键盘虚拟码,然后远程执行
int i = (传送过来的数据)
DWORD dwstyle = (键盘状态)
keybd_event((BYTE)i , 0 , KEYEVENTF_EXTENDEDKEY | dwstyle, 0) ;