none
如何通过Remote Desktop Service控制远程桌面的鼠标移动、点击以及键盘输入 RRS feed

  • 问题

  • 我在客户端是通过MsRdpClient连接的远程桌面

    现在想通过SendMessage或者PostMessage对MsRdpClient发送鼠标或键盘消息

    但是远程桌面并没有响应

    大致代码如下

    [DllImport("user32.dll", CharSet = CharSet.Auto)]  
    private static extern int PostMessage(IntPtr hWnd, uint msg, int wParam, IntPtr lParam);

    static uint WM_CHAR = 0x0102;

    AxMSTSCLib.AxMsRdpClient4 rdpc=new AxMSTSCLib.AxMsRdpClient4();

    PostMessage(rdpc.Handle, WM_CHAR, (int)'A', IntPtr.Zero);

    不知问题出在什么地方 或者是否有更好的解决方案

    谢谢

    2011年1月19日 3:39

答案

  • 楼上的解决方案我也想过

    但是目前的要求在服务器端不能有自己的程序

    我只能通过微软的Remote Desktop Service来实现

    目前看来 必须自己实现RDP的客户端才行

    2011年1月20日 4:07

全部回复

  • 据我所知,目前没有办法对于 RDP Session 的任何窗口进行运程的消息控制,但本地是可以的 (也就是如果程序在远程左面连接的会话内运行,就可以,如果运行在发起远程桌面连接的机器上,就不行),RDP Client 中间的那个显示桌面的部分是一个 ActiveX,并且,它并不具备本地 Windows 所能认识的消息机制 (您可以通过 Spy++ 看看就知道了)。

    目前,对于 Test Automation 来说,这是一个很大的挑战。。。不知道 RDP 7.1 (Windows 7 Service Pack 1 + RemoteFX) 会不会在设计上有所变动,但我想,应该没什么希望。


    Mark Zhou
    2011年1月19日 9:08
  • 如果是按你所说

    那么本地的键盘和鼠标事件又是怎样传递到远程桌面的呢?

     

     

    2011年1月19日 9:13
  • c# 远程控制

    参照

    http://www.lwolf.cn/blog/article/code/csharp-remote.htm


    http://blog.csdn.net/zx13525079024
    2011年1月20日 2:24
  • 楼上的解决方案我也想过

    但是目前的要求在服务器端不能有自己的程序

    我只能通过微软的Remote Desktop Service来实现

    目前看来 必须自己实现RDP的客户端才行

    2011年1月20日 4:07