【问题标题】:How can I automate the process of connecting to a PC remotely through VNC?如何自动化通过 VNC 远程连接到 PC 的过程?
【发布时间】:2017-01-25 20:36:13
【问题描述】:

我有一个几周前编写的应用程序,当您单击列表中的 PC 名称时,它会自动连接到我们网络上的特定 PC。该过程包括在 VNC 中输入 PC 的名称和默认密码,然后按 Enter 键进行连接。它可以在一台 PC 上完美运行,但在另一台 PC 上会受到影响。我确信我可以使用不同的方法重做自动化,但我喜欢它的简单方式,即:

string x86Path = "C:\\Program Files (x86)\\uvnc bvba\\UltraVNC\\vncviewer.exe";

        try
        {
            startVNC.StartInfo.FileName = x86Path;
            if (startVNC.Start())
            {
                startVNC.WaitForInputIdle();
                SendKeys.Send(pcName);
                SendKeys.Send("{ENTER}");
                startVNC.WaitForInputIdle();
                SendKeys.Send("apassword");
                SendKeys.Send("{ENTER}");
            }
        }

当 VNC 启动时,它会等待输入(首先是 PC 名称),然后发送 ENTER 键。然后它再次等待输入(这次是密码),然后发送 ENTER 键。这将在 90% 的时间内成功连接到 PC。但有时它会挂起,密码不会自动提交。有一个更好的方法吗?这是实现 WaitForInputIdle() 的非常不正确的方法吗?

【问题讨论】:

    标签: c# visual-studio-2012 automation vnc


    【解决方案1】:

    https://msdn.microsoft.com/en-us/library/0yd65esw.aspx 关于使用 catch 子句处理错误。

    如果没有输入密码,您可以使用 catch 之类的东西,或者如果仍在等待再次输入密码,则可以使用 catch。只要是可预测的错误,任何捕获都是好的。这样可以保持简单。

    你也可以分开 2 startVNC.WaitForInputIdle();因此密码输入基于 pc 名称输入是否有效,因为它是一个布尔值,您可以使用第一个有效等待来开始下一个不那么简单。

    https://msdn.microsoft.com/en-us/library/hh194873(v=vs.110).aspx 对于 Task.Delay 方法。

    如果它是可预测的时间量,您也可以使用延迟而不是等待。说 (2000) 的延迟是 2 秒,这是相同大小的代码,但不是那么简单,因为您仍然需要原始等待,但现在您将有一个延迟任务,而不是第二次等待。希望这有助于我刚开始回答问题,所以我添加了对捕获和延迟的参考,而不是建议直接更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-05
      相关资源
      最近更新 更多