#c# #wpf #linux #plink
#c# #wpf #linux #plink
Вопрос:
Я пытаюсь подключиться к компьютеру с Linux через pLink и PuTTY для передачи некоторого файла .txt. Сейчас я просто пытаюсь наладить соединение. У меня есть небольшое окно с 2 текстовыми полями (имя пользователя, linux1) и поле пароля (pwbox1), а также кнопка, при нажатии на которую она должна подключить вас к компьютеру с Linux!
Вот мой код:
private void button1_Click(object sender, RoutedEventArgs e)
{
string user = username.Text;
string passw = pwbox1.Password;
string linuxHst = linux1.Text;
ProcessStartInfo psi = new ProcessStartInfo(@"C:Program Files (x86)PuTTYplink.exe", user "@" linuxHst " -pw " passw);
psi.RedirectStandardInput = true;
psi.RedirectStandardOutput = true;
psi.WindowStyle = ProcessWindowStyle.Normal;
psi.UseShellExecute = false;
psi.CreateNoWindow = false;
Process process = Process.Start(psi);
process.WaitForExit(5000);
}
Проблема в том, что когда я пытаюсь это сделать с консольным приложением, оно работает без текстовых полей! но мне это нужно для работы с WPF.
Может кто-нибудь, пожалуйста, скажите мне, что я делаю не так? я что-то упускаю?
Комментарии:
1. Что именно работает не так, как вы ожидаете, и что вы наблюдаете вместо этого? «Но мне это нужно для работы с WPF» на самом деле не является описанием проблемы…
2. это не показывает, что я подключен к машине Linux! окно cmd пустое! он должен показывать что-то вроде «использование mowglin ..», не так ли?
3. Почему окно cmd должно показывать что-либо, если вы это делаете
psi.RedirectStandardOutput = true;
? Если вы не хотите перенаправлять вывод консоли и видеть его в окне cmd, не перенаправляйте его 😉 (Возможно, аналогичный аргумент может быть применим кpsi.RedirectStandardInput = true;
— не уверен, нужно ли вам / хотите выполнять ввод с клавиатуры в этом окне cmd)4. но точно такой же код работает с консольным приложением! и это показывает, что я подключен.
5. Ну, если это работает в консольном приложении, то код, который вы выполняете там в своем консольном приложении, не совсем такой, как показано выше… — там у вас может быть несколько строк кода, которые заставляют его работать (возможно, что-то вроде
Console.WriteLine(process.StandardOutput.ReadToEnd());
)