如何实现VNC远程连接PC的自动化?

本文关键字:PC 远程连接 自动化 VNC 何实现 实现 | 更新日期: 2023-09-27 18:07:28

我有一个几周前写的应用程序,当你在列表中单击特定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键。这将成功连接到PC 90%的时间。但有时它会挂起,密码不会自动提交。有更好的方法吗?这是一个可怕的不正确的方式来实现WaitForInputIdle()?

如何实现VNC远程连接PC的自动化?

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

如果没有输入密码,可以使用catch;如果还在等待,可以使用catch再次输入密码。任何捕获都是好的,只要它是可预测的错误。这样可以保持简单。

你也可以分开两个startVNC.WaitForInputIdle();因此,密码输入是基于如果PC名输入工作,因为它是一个bool,你可以使用第一个有效的等待开始下一个不那么简单。

https://msdn.microsoft.com/en-us/library/hh194873 (v = vs.110) . aspx为任务。延迟方法。

如果它是一个可预测的时间,你也可以使用延迟而不是等待。比如delay(2000)是2秒这是同样大小的代码,但不那么简单因为你仍然有原始的等待但现在你有一个延迟任务而不是秒等待。希望这对回答问题有帮助,所以我添加了catch和delay的参考,而不是建议直接更改。