哪位高手可否介绍一下远程控制中当我进行键盘、鼠标操作时,远程电脑也跟我做同样的操作的原理?

解决方案 »

  1.   


    消息。当在本地进行键盘,鼠标等的操作时,都向系统发消息,再由系统发到各程序的消息队列。你在服务端用posetmessage(),sendmessage()什么的,改改窗口句柄 发消息就是了。至于message取什么,不用说了吧.
      

  2.   

    其实很简单的,键盘只需传一个参数就可以啦,呵呵,鼠标就传4个参数啰,然后客户端直接用posetmessage()模拟这些操作
      

  3.   

    用mouse_event和keyboard_event两个API函数进行模拟
    用一个电脑就可以做这个效果了。
      

  4.   

    呵呵,我真的不是要做木马!木马何必要控制对方的鼠标、键盘呢?谢谢aoosang(智慧的鱼)。我先自己找一下先,没有再向您请教。
      

  5.   

    鼠标操作:传输鼠标事件,鼠标位置数据 ,接受方根据鼠标事件类别和鼠标位置进行模拟鼠标输入
             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) ;