如何接管另一台机器的全部操作?(类似NetMeeting的远程协调)(200分)

  • 主题发起人 主题发起人 liling
  • 开始时间 开始时间
L

liling

Unregistered / Unconfirmed
GUEST, unregistred user!
现有这样一个问题,好像牵扯的东东挺多,有些关键问题不知如何解决的更漂亮些。问题倒很简单,就是在局域网上对一台机器进行操作时,其它机器(软硬件的配置可能不一样)也都进行同样的操作(就是远程协作吧?)。通讯问题没的好说的,利用winsock在局域网上进行广播就可以了。鼠标和键盘的截取和仿真应该也没什么问题,用hook就可以了。最大的问题应该是屏幕图像的传送,直接把屏幕拷下来不经压缩就传送好像数据量太大了,800*600*3=<br>1440000(24位显示),一幅图像1.4M,10M局域网一秒只能传一幅图像而已,太慢了。压缩后再传输倒是可行方案,可压缩器的选择又是头疼的问题,JPG太慢,且每幅图像单独压缩,显然不经济。用一些视频压缩器,如MPEG,倒是个好思路,可总有一种大炮轰蚊子的感觉。况且,屏幕上大多数东西都是很有特征的,除了图标和图片外,都应该可以用一些符号或语法表示,如文字、线条等,或者说是一种矢量图形。关于这个问题,我现在有两个想法,不知可行否?<br>1.搞一个语法规则(类似于HTML语言)和一个语法解释算法,将整个屏幕翻译成这种语法,当然,首先还的自动识别出屏幕上的所有文字和规则图形。对不规则图形(如图标和图片)可采用JPEG压缩。当然,自动识别不好做。<br>2.截获GDI的所有操作(类似金山词霸的自动截词),然后传送出所有的操作,对该压缩的仍采用JPEG压缩。<br>现在仅仅有想法而已,不只各位是否有更好的建议?
 
对不起,忘记换行了,再贴一遍<br><br>现有这样一个问题,好像牵扯的东东挺多,有些关键问题不知如何解决的更漂亮些。<br>问题倒很简单,就是在局域网上对一台机器进行操作时,其它机器(软硬件的配置可<br>能不一样)也都进行同样的操作(就是远程协作吧?)。通讯问题没的好说的,利用<br>winsock在局域网上进行广播就可以了。鼠标和键盘的截取和仿真应该也没什么问<br>题,用hook就可以了。最大的问题应该是屏幕图像的传送,直接把屏幕拷下来不经<br>压缩就传送好像数据量太大了,800*600*3=1440000(24位显示),一幅图像<br>1.4M,10M局域网一秒只能传一幅图像而已,太慢了。压缩后再传输倒是可行方案,<br>可压缩器的选择又是头疼的问题,JPG太慢,且每幅图像单独压缩,显然不经济。用<br>一些视频压缩器,如MPEG,倒是个好思路,可总有一种大炮轰蚊子的感觉。况且,<br>屏幕上大多数东西都是很有特征的,除了图标和图片外,都应该可以用一些符号或语<br>法表示,如文字、线条等,或者说是一种矢量图形。关于这个问题,我现在有两个想<br>法,不知可行否?<br>1.搞一个语法规则(类似于HTML语言)和一个语法解释算法,将整个屏幕翻译成这<br>种语法,当然,首先还的自动识别出屏幕上的所有文字和规则图形。对不规则图形<br>(如图标和图片)可采用JPEG压缩。当然,自动识别不好做。<br>2.截获GDI的所有操作(类似金山词霸的自动截词),然后传送出所有的操作,对该<br>压缩的仍采用JPEG压缩。<br>现在仅仅有想法而已,不只各位是否有更好的建议?
 
推荐2个非常好的软件 :<br>- ReachOut Enterprise (http://www.stac.com/reachout/)<br>-MetaFrame (http://www.citrix.com/products/metaframe/)<br>解决了您所有的设想,甚至做得更好。<br>您可以研究研究看它们是如何做的。
 
有个问题: 你只是想在别的机器上"显示"操作结果画面,还是需要同步进行操作?<br>如果需要同步操作,你可以考虑这个方法:<br>随时把主机器上的鼠标/键盘操作发送到其他机器上,然后在其他机器上用<br>mouse_event, keybd_event模拟操作,结果应该差不多的.<br><br><br>
 
to cAkk:<br>可是各台机器的设置可能不一样,比如主机用Ctrl+Space打开中文输入时是标准输入法,其他机器却可能是别的输入法,那岂不乱套?
 
你想要pcANYWHERE那样的效果?
 
to cAkk:<br>pcanywhere是什么东东?<br><br>to all:<br>这两天做了些小试验,基本实现了鼠标和键盘的远程协同,即截获本机的所有键盘动<br>作和鼠标动作,然后在其它机器上仿真出来。大多数情况下是好的,只是在处理中文<br>输入时有些问题,主要是不能模仿切换输入法的动作。我在delphi环境下用<br>keybd_event给系统发出了ctrl键和空格键,但98的反应很怪。如果连着执行下面两<br>句程序:<br>keybd_event(17,0,0,0);//press ctrl<br>keybd_event(32,0,0,0);//press space<br>可以很正常的打开输入法,但是那以后就相当于ctrl键一直按着,整个键盘也变的<br>混乱了,比如按一下键盘就出输入法,按alt+tab没反应(我也因此知道了一些98下<br>ctrl键的功能)。所以在那两句话后必须再执行一句<br>&nbsp; keybd_event(17,0,KEYEVENTF_KEYUP,0);<br>释放ctrl键后才能使键盘恢复正常。由此产生一个感觉,即<br>keybd_event(17,0,0,0);<br>这句话使ctrl键按下且不释放。但又产生了一个怪现象,如果执行<br>keybd_event(17,0,0,0);<br>后手工按空格键可以打开输入法,但程序里执行<br>keybd_event(32,0,0,0);//press space<br>却打不开,我不仅糊涂了,难道keybd_event(32,0,0,0);和手工按空格键效果不一<br>样?<br>
 
呵呵!&lt;a href="http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=179839" target="_blank"&gt;请看这个程序&lt;/a&gt;,改成网络版可以实现控制另一台机的鼠标和键盘。<br>返回图片就用拷屏方式将图片传到控制机上(最好用Jpeg格式,颜色改为256色就可<br>以了)
 
连pcANYWHERE都不知道?????
 
pcanywhere是一个控制其他机器的工具,基本上可以进行一切操作。<br>分server和client。不过这里server是受控的。另外,还有很多其他工具也有类似<br>功能,包括一些病毒。不过,pcanywhere是这里面最好的。
 
你可以是一试winpop plus+的感觉,可以控制,也可以不控制,只监视,很好用!
 
小虫:<br><br>请问能说具体一点吗?<br>还有哪能找到。<br><br>谢谢!
 
小虫:<br><br>请问能说具体一点吗?<br>还有哪能找到。<br><br>谢谢!
 
用通讯的方法也行吧!<br>比如CHAT(IP协议),发送字符串,然后判断,执行响应函数
 
keybd_event确实有这种作用,即你每次调用0表示KeyDown以后都应记得再发KeyUp让系统得知这个键已经释放,否则会让系统以为这个键一直被按着不放.<br>至于说当keybd_event(17,0,0,0)后的现象偶猜测可能是这样:你发了消息后系统认为Ctrl按下,你再按Space的时候肯定要松开,这样就是两条,KeyDown和KeyUp,所以<br>可以弹出输入法,而在程序中只有KeyDown,也许系统要等待Space Up的时候才出<br>输入法?<br>呵呵,不过偶又认为如果你再发个Space表示按下不放的话,应该是输入法一直不停的<br>闪啊?还是只有单独发送控制键按下的时候才会让系统认为是这个键按住不放?<br>观望中:)<br>
 
后退
顶部