public bool Start(string fileName, CommandLineArguments arguments = null) { Process.StartInfo.UseShellExecute = false; Process.StartInfo.FileName = fileName; if (arguments != null) Process.StartInfo.Arguments = arguments.ToString(); if (!Process.Start()) return false; GetMainWindowHandle(); return true; }
public bool Start(string fileName, CommandLineArguments arguments = null) { Process.StartInfo.UseShellExecute = false; Process.StartInfo.FileName = fileName; if (arguments != null) { Process.StartInfo.Arguments = arguments.ToString(); } if (!Process.Start()) { return(false); } GetMainWindowHandle(); return(true); }
public override bool Connect() { try { _isPuttyNg = PuttyTypeDetector.GetPuttyType() == PuttyTypeDetector.PuttyType.PuttyNg; PuttyProcess = new Process { StartInfo = { UseShellExecute = false, FileName = PuttyPath } }; var arguments = new CommandLineArguments {EscapeForShell = false}; arguments.Add("-load", InterfaceControl.Info.PuttySession); if (!(InterfaceControl.Info is PuttySessionInfo)) { arguments.Add("-" + PuttyProtocol); if (PuttyProtocol == Putty_Protocol.ssh) { var username = ""; var password = ""; if (!string.IsNullOrEmpty(InterfaceControl.Info.Username)) { username = InterfaceControl.Info.Username; } else { if (Settings.Default.EmptyCredentials == "windows") { username = Environment.UserName; } else if (Settings.Default.EmptyCredentials == "custom") { username = Convert.ToString(Settings.Default.DefaultUsername); } } if (!string.IsNullOrEmpty(InterfaceControl.Info.Password)) { password = InterfaceControl.Info.Password; } else { if (Settings.Default.EmptyCredentials == "custom") { var cryptographyProvider = new LegacyRijndaelCryptographyProvider(); password = cryptographyProvider.Decrypt(Convert.ToString(Settings.Default.DefaultPassword), Runtime.EncryptionKey); } } arguments.Add("-" + (int)PuttySSHVersion); if (((int)Force & (int)ConnectionInfo.Force.NoCredentials) != (int)ConnectionInfo.Force.NoCredentials) { if (!string.IsNullOrEmpty(username)) { arguments.Add("-l", username); } if (!string.IsNullOrEmpty(password)) { arguments.Add("-pw", password); } } } arguments.Add("-P", InterfaceControl.Info.Port.ToString()); arguments.Add(InterfaceControl.Info.Hostname); } if (_isPuttyNg) { arguments.Add("-hwndparent", InterfaceControl.Handle.ToString()); } PuttyProcess.StartInfo.Arguments = arguments.ToString(); PuttyProcess.EnableRaisingEvents = true; PuttyProcess.Exited += ProcessExited; PuttyProcess.Start(); PuttyProcess.WaitForInputIdle(Convert.ToInt32(Settings.Default.MaxPuttyWaitTime * 1000)); var startTicks = Environment.TickCount; while (PuttyHandle.ToInt32() == 0 & Environment.TickCount < startTicks + (Settings.Default.MaxPuttyWaitTime * 1000)) { if (_isPuttyNg) { PuttyHandle = NativeMethods.FindWindowEx( InterfaceControl.Handle, new IntPtr(0), null, null); } else { PuttyProcess.Refresh(); PuttyHandle = PuttyProcess.MainWindowHandle; } if (PuttyHandle.ToInt32() == 0) { Thread.Sleep(0); } } if (!_isPuttyNg) { NativeMethods.SetParent(PuttyHandle, InterfaceControl.Handle); } Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, Language.strPuttyStuff, true); Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, string.Format(Language.strPuttyHandle, PuttyHandle), true); Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, string.Format(Language.strPuttyTitle, PuttyProcess.MainWindowTitle), true); Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, string.Format(Language.strPuttyParentHandle, InterfaceControl.Parent.Handle), true); Resize(this, new EventArgs()); base.Connect(); return true; } catch (Exception ex) { Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, Language.strPuttyConnectionFailed + Environment.NewLine + ex.Message); return false; } }