2016-09-17 3 views
0

У меня есть приложение, которое я написал несколько недель назад, которое автоматически подключается к конкретным ПК в нашей сети, когда вы нажимаете имя ПК в списке. Процесс включает ввод имени ПК и пароля по умолчанию в VNC и нажатие enter для подключения. Он отлично работает на одном ПК, но попадает или промахивается другим. Я уверен, что я мог бы повторить автоматизации с использованием другого метода, но мне понравилось, как просто это было так, как я его, что:Как я могу автоматизировать процесс подключения к ПК удаленно через VNC?

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, он ожидает ввода (который будет первым имя ПК), а затем отправляет клавишу ENTER. Затем он снова ждет ввода (на этот раз это apassword), а затем отправляет клавишу ENTER. Это будет успешно подключаться к ПК в 90% случаев. Но иногда он зависает, и пароль не будет отправляться автоматически. Есть лучший способ сделать это? Это ужасно неправильный способ реализации WaitForInputIdle()?

ответ

0

https://msdn.microsoft.com/en-us/library/0yd65esw.aspx об использовании положений catch для устранения ошибок.

Вы можете использовать что-то вроде улова, если пароль не вводится или не поймать, что если все еще ждет, введите пароль еще раз. Любой улов хорош, если у него предсказуемая ошибка. Это может привести к простоте.

вы также можете отделить 2 startVNC.WaitForInputIdle(); так что ввод пароля основан на том, что если входное имя pc работало с момента его bool, вы могли бы использовать первое действительное ожидание, чтобы начать следующее не так просто.

https://msdn.microsoft.com/en-us/library/hh194873(v=vs.110).aspx для задачи.Delay Method.

Если это предсказуемое количество времени, вы также можете использовать задержку, а не ждать. Говорить, что задержка (2000) составляет 2 секунды, это такой же размер кода, но не так просто, потому что у вас все еще будет оригинальное ожидание, но теперь вместо второго ожидания у вас будет задание задержки. Надеюсь, что это помогает мне начать отвечать на вопросы, поэтому я добавил ссылку на улов и задержку, вместо того, чтобы рекомендовать прямые изменения.