コード例 #1
0
        public void NullConnectionInfoResultsInEmptyVariables()
        {
            var parser     = new ExternalToolArgumentParser(null);
            var parsedText = parser.ParseArguments("test %USERNAME% test");

            Assert.That(parsedText, Is.EqualTo("test  test"));
        }
コード例 #2
0
ファイル: IntegratedProgram.cs プロジェクト: viders/mRemoteNG
        public override bool Connect()
        {
            try
            {
                if (_externalTool.TryIntegrate == false)
                {
                    _externalTool.Start(InterfaceControl.Info);
                    Close();
                    return(false);
                }

                ExternalToolArgumentParser argParser = new ExternalToolArgumentParser(_externalTool.ConnectionInfo);
                _process = new Process();

                _process.StartInfo.UseShellExecute = true;
                _process.StartInfo.FileName        = argParser.ParseArguments(_externalTool.FileName);
                _process.StartInfo.Arguments       = argParser.ParseArguments(_externalTool.Arguments);

                _process.EnableRaisingEvents = true;
                _process.Exited += ProcessExited;

                _process.Start();
                _process.WaitForInputIdle(Convert.ToInt32(Settings.Default.MaxPuttyWaitTime * 1000));

                int startTicks = Environment.TickCount;
                while (_handle.ToInt32() == 0 & Environment.TickCount < startTicks + (Settings.Default.MaxPuttyWaitTime * 1000))
                {
                    _process.Refresh();
                    if (_process.MainWindowTitle != "Default IME")
                    {
                        _handle = _process.MainWindowHandle;
                    }
                    if (_handle.ToInt32() == 0)
                    {
                        Thread.Sleep(0);
                    }
                }

                NativeMethods.SetParent(_handle, InterfaceControl.Handle);
                Runtime.MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, Language.strIntAppStuff, true);
                Runtime.MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, string.Format(Language.strIntAppHandle, _handle.ToString()), true);
                Runtime.MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, string.Format(Language.strIntAppTitle, _process.MainWindowTitle), true);
                Runtime.MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, string.Format(Language.strIntAppParentHandle, InterfaceControl.Parent.Handle.ToString()), true);

                Resize(this, new EventArgs());
                base.Connect();
                return(true);
            }
            catch (Exception ex)
            {
                Runtime.MessageCollector.AddExceptionMessage(Language.strIntAppConnectionFailed, ex);
                return(false);
            }
        }
コード例 #3
0
        public void Setup()
        {
            var connectionInfo = new ConnectionInfo
            {
                Name        = TestString,
                Hostname    = TestString,
                Port        = Port,
                Username    = TestString,
                Password    = TestString,
                Domain      = TestString,
                Description = TestString,
                MacAddress  = TestString,
                UserField   = TestString
            };

            _argumentParser = new ExternalToolArgumentParser(connectionInfo);
        }
コード例 #4
0
        public override bool Connect()
        {
            try
            {
                Runtime.MessageCollector?.AddMessage(MessageClass.InformationMsg, $"Attempting to start: {_externalTool.DisplayName}", true);

                if (_externalTool.TryIntegrate == false)
                {
                    _externalTool.Start(InterfaceControl.Info);

                    /* Don't call close here... There's nothing for the override to do in this case since
                     * _process is not created in this scenario. When returning false, ProtocolBase.Close()
                     * will be called - which is just going to call IntegratedProgram.Close() again anyway...
                     * Close();
                     */
                    Runtime.MessageCollector?.AddMessage(MessageClass.InformationMsg, $"Assuming no other errors/exceptions occurred immediately before this message regarding {_externalTool.DisplayName}, the next \"closed by user\" message can be ignored", true);
                    return(false);
                }

                var argParser = new ExternalToolArgumentParser(_externalTool.ConnectionInfo);
                _process = new Process
                {
                    StartInfo =
                    {
                        UseShellExecute = true,
                        FileName        = argParser.ParseArguments(_externalTool.FileName),
                        Arguments       = argParser.ParseArguments(_externalTool.Arguments)
                    },
                    EnableRaisingEvents = true
                };


                _process.Exited += ProcessExited;

                _process.Start();
                _process.WaitForInputIdle(Settings.Default.MaxPuttyWaitTime * 1000);

                var startTicks = Environment.TickCount;
                while (_handle.ToInt32() == 0 & Environment.TickCount < startTicks + Settings.Default.MaxPuttyWaitTime * 1000)
                {
                    _process.Refresh();
                    if (_process.MainWindowTitle != "Default IME")
                    {
                        _handle = _process.MainWindowHandle;
                    }
                    if (_handle.ToInt32() == 0)
                    {
                        Thread.Sleep(0);
                    }
                }

                NativeMethods.SetParent(_handle, InterfaceControl.Handle);
                Runtime.MessageCollector?.AddMessage(MessageClass.InformationMsg, Language.strIntAppStuff, true);
                Runtime.MessageCollector?.AddMessage(MessageClass.InformationMsg, string.Format(Language.strIntAppHandle, _handle), true);
                Runtime.MessageCollector?.AddMessage(MessageClass.InformationMsg, string.Format(Language.strIntAppTitle, _process.MainWindowTitle), true);
                Runtime.MessageCollector?.AddMessage(MessageClass.InformationMsg, string.Format(Language.strIntAppParentHandle, InterfaceControl.Parent.Handle), true);

                Resize(this, new EventArgs());
                base.Connect();
                return(true);
            }
            catch (Exception ex)
            {
                Runtime.MessageCollector?.AddExceptionMessage(Language.strIntAppConnectionFailed, ex);
                return(false);
            }
        }
コード例 #5
0
 public void Teardown()
 {
     _argumentParser = null;
 }