Exemplo n.º 1
0
        void axMsTscAx_OnDisconnected(object sender, IMsTscAxEvents_OnDisconnectedEvent e)
        {
            AxMsRdpClient2 client = (AxMsRdpClient2)sender;

            string error = Functions.GetErrorMessage(e.discReason);

            if (error != null)
            {
//                MessageBox.Show(this, String.Format("Error connecting to {0} ({1})", client.Server, error), "Terminals " + Program.TerminalsVersion.ToString(),MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            TabControlItem selectedTabPage = (TabControlItem)(client.Parent);
            bool           wasSelected     = selectedTabPage.Selected;

            ParentForm.tcTerminals.RemoveTab(selectedTabPage);
            ParentForm.tcTerminals_TabControlItemClosed(null, EventArgs.Empty);
            if (wasSelected)
            {
                NativeApi.PostMessage(new HandleRef(this, this.Handle), MainForm.WM_LEAVING_FULLSCREEN, IntPtr.Zero, IntPtr.Zero);
            }
            ParentForm.UpdateControls();

            if (OnDisconnected != null)
            {
                OnDisconnected(this);
            }
        }
Exemplo n.º 2
0
 public AxMsRdpClient2EventMulticaster(AxMsRdpClient2 parent) {
     this.parent = parent;
 }
Exemplo n.º 3
0
        public AxMsRdpClient2 axMsRdpClient2 = null; //new AxMsRdpClient2();
        public override bool Connect()
        {
            try
            {
                axMsRdpClient2 = new AxMsRdpClient2();
                Controls.Add(axMsRdpClient2);
                axMsRdpClient2.BringToFront();
                this.BringToFront();
                axMsRdpClient2.Parent    = base.TerminalTabPage;
                this.Parent              = TerminalTabPage;
                axMsRdpClient2.AllowDrop = true;

                ((Control)axMsRdpClient2).DragEnter += new DragEventHandler(axMsRdpClient2_DragEnter);
                ((Control)axMsRdpClient2).DragDrop  += new DragEventHandler(axMsRdpClient2_DragDrop);
                axMsRdpClient2.OnConnected          += new EventHandler(axMsRdpClient2_OnConnected);
                axMsRdpClient2.Dock = DockStyle.Fill;

                ChangeDesktopSize(Favorite.DesktopSize);
                try
                {
                    //if(Favorite.DesktopSize == DesktopSize.AutoScale) axMsRdpClient2.AdvancedSettings3.SmartSizing = true;
                    //axMsRdpClient2.DesktopWidth = width;
                    //axMsRdpClient2.DesktopHeight = height;

                    switch (Favorite.Colors)
                    {
                    case Colors.Bits8:
                        axMsRdpClient2.ColorDepth = 8;
                        break;

                    case Colors.Bit16:
                        axMsRdpClient2.ColorDepth = 16;
                        break;

                    case Colors.Bits24:
                        axMsRdpClient2.ColorDepth = 24;
                        break;

                    case Colors.Bits32:
                        if (Settings.SupportsRDP6)
                        {
                            axMsRdpClient2.ColorDepth = 32;
                        }
                        else
                        {
                            axMsRdpClient2.ColorDepth = 24;
                        }
                        break;
                    }

                    axMsRdpClient2.ConnectingText   = "Connecting. Please wait...";
                    axMsRdpClient2.DisconnectedText = "Disconnecting...";
                    axMsRdpClient2.AdvancedSettings3.RedirectDrives = Favorite.RedirectDrives;


                    //advanced settings
                    //bool, 0 is false, other is true
                    if (Favorite.AllowBackgroundInput)
                    {
                        axMsRdpClient2.AdvancedSettings.allowBackgroundInput = -1;
                    }
                    if (Favorite.BitmapPeristence)
                    {
                        axMsRdpClient2.AdvancedSettings.BitmapPeristence = -1;
                    }
                    if (Favorite.EnableCompression)
                    {
                        axMsRdpClient2.AdvancedSettings.Compress = -1;
                    }

                    if (Favorite.AcceleratorPassthrough)
                    {
                        axMsRdpClient2.AdvancedSettings2.AcceleratorPassthrough = -1;
                    }
                    if (Favorite.DisableControlAltDelete)
                    {
                        axMsRdpClient2.AdvancedSettings2.DisableCtrlAltDel = -1;
                    }
                    if (Favorite.DisplayConnectionBar)
                    {
                        axMsRdpClient2.AdvancedSettings2.DisplayConnectionBar = true;
                    }
                    if (Favorite.DoubleClickDetect)
                    {
                        axMsRdpClient2.AdvancedSettings2.DoubleClickDetect = -1;
                    }

                    if (Favorite.DisableWindowsKey)
                    {
                        axMsRdpClient2.AdvancedSettings2.EnableWindowsKey = -1;
                    }
                    if (Favorite.EnableEncryption)
                    {
                        axMsRdpClient2.AdvancedSettings2.EncryptionEnabled = -1;
                    }


                    if (Favorite.GrabFocusOnConnect)
                    {
                        axMsRdpClient2.AdvancedSettings2.GrabFocusOnConnect = true;
                    }

                    if (Favorite.EnableSecuritySettings)
                    {
                        if (Favorite.SecurityFullScreen)
                        {
                            axMsRdpClient2.SecuredSettings2.FullScreen = -1;
                        }
                        axMsRdpClient2.SecuredSettings2.StartProgram = Favorite.SecurityStartProgram;
                        axMsRdpClient2.SecuredSettings2.WorkDir      = Favorite.SecurityWorkingFolder;
                    }

                    axMsRdpClient2.AdvancedSettings2.MinutesToIdleTimeout = Favorite.IdleTimeout;

                    try {
                        int timeout = Favorite.OverallTimeout;
                        if (timeout > 600)
                        {
                            timeout = 10;
                        }
                        if (timeout <= 0)
                        {
                            timeout = 10;
                        }
                        axMsRdpClient2.AdvancedSettings2.overallConnectionTimeout = timeout;
                        timeout = Favorite.ConnectionTimeout;
                        if (timeout > 600)
                        {
                            timeout = 10;
                        }
                        if (timeout <= 0)
                        {
                            timeout = 10;
                        }

                        axMsRdpClient2.AdvancedSettings2.singleConnectionTimeout = timeout;

                        timeout = Favorite.ShutdownTimeout;
                        if (timeout > 600)
                        {
                            timeout = 10;
                        }
                        if (timeout <= 0)
                        {
                            timeout = 10;
                        }
                        axMsRdpClient2.AdvancedSettings2.shutdownTimeout = timeout;


                        //axMsRdpClient2.AdvancedSettings2.PinConnectionBar;
                        //axMsRdpClient2.AdvancedSettings2.TransportType;
                        //axMsRdpClient2.AdvancedSettings2.WinceFixedPalette;
                        //axMsRdpClient2.AdvancedSettings3.CanAutoReconnect = Favorite.CanAutoReconnect;
                    } catch (Exception exc) {
                        Terminals.Logging.Log.Error("Error when trying to set timeout values.", exc);
                    }


                    axMsRdpClient2.AdvancedSettings3.RedirectPorts      = Favorite.RedirectPorts;
                    axMsRdpClient2.AdvancedSettings3.RedirectPrinters   = Favorite.RedirectPrinters;
                    axMsRdpClient2.AdvancedSettings3.RedirectSmartCards = Favorite.RedirectSmartCards;
                    axMsRdpClient2.AdvancedSettings3.PerformanceFlags   = Favorite.PerformanceFlags;

                    /*
                     * TS_PERF_DISABLE_CURSOR_SHADOW
                     * 0x00000020
                     * No shadow is displayed for the cursor.
                     * TS_PERF_DISABLE_CURSORSETTINGS
                     * 0x00000040
                     * Cursor blinking is disabled.
                     * TS_PERF_DISABLE_FULLWINDOWDRAG
                     * 0x00000002
                     * Full-window drag is disabled; only the window outline is displayed when the window is moved.
                     * TS_PERF_DISABLE_MENUANIMATIONS
                     * 0x00000004
                     * Menu animations are disabled.
                     * TS_PERF_DISABLE_NOTHING
                     * 0x00000000
                     * No features are disabled.
                     * TS_PERF_DISABLE_THEMING
                     * 0x00000008
                     * Themes are disabled.
                     * TS_PERF_DISABLE_WALLPAPER
                     * 0x00000001
                     * Wallpaper on the desktop is not displayed.
                     *
                     */


                    if (Settings.SupportsRDP6)
                    {
                        MSTSCLib6.IMsRdpClientAdvancedSettings5 advancedSettings5 = (axMsRdpClient2.AdvancedSettings3 as MSTSCLib6.IMsRdpClientAdvancedSettings5);
                        if (advancedSettings5 != null)
                        {
                            advancedSettings5.RedirectClipboard = Favorite.RedirectClipboard;
                            advancedSettings5.RedirectDevices   = Favorite.RedirectDevices;
                            advancedSettings5.ConnectionBarShowMinimizeButton = false;
                            advancedSettings5.ConnectionBarShowPinButton      = false;
                            advancedSettings5.ConnectionBarShowRestoreButton  = false;
                        }
                    }
                    axMsRdpClient2.SecuredSettings2.AudioRedirectionMode = (int)Favorite.Sounds;

                    string domainName = Favorite.DomainName;
                    if (domainName == null || domainName == "")
                    {
                        domainName = Settings.DefaultDomain;
                    }

                    string pass = Favorite.Password;
                    if (pass == null || pass == "")
                    {
                        pass = Settings.DefaultPassword;
                    }


                    string userName = Favorite.UserName;
                    if (userName == null || userName == "")
                    {
                        userName = Settings.DefaultUsername;
                    }


                    axMsRdpClient2.UserName = userName;
                    axMsRdpClient2.Domain   = domainName;
                    try {
                        if (!String.IsNullOrEmpty(pass))
                        {
                            MSTSC.IMsTscNonScriptable nonScriptable = (MSTSC.IMsTscNonScriptable)axMsRdpClient2.GetOcx();
                            if (nonScriptable != null)
                            {
                                nonScriptable.ClearTextPassword = pass;
                            }
                        }
                    } catch (Exception exc) {
                        Terminals.Logging.Log.Error("Error when trying to set the ClearTextPassword on the nonScriptable mstsc object", exc);
                    }


                    axMsRdpClient2.Server = Favorite.ServerName;
                    axMsRdpClient2.AdvancedSettings3.RDPPort = Favorite.Port;
                    axMsRdpClient2.AdvancedSettings3.ContainerHandledFullScreen = -1;
                    axMsRdpClient2.AdvancedSettings3.DisplayConnectionBar       = Favorite.DisplayConnectionBar;

                    // Use ConnectToServerConsole or ConnectToAdministerServer based on implementation
                    if (axMsRdpClient2.AdvancedSettings3 is MSTSCLib6.IMsRdpClientAdvancedSettings6)
                    {
                        ((MSTSCLib6.IMsRdpClientAdvancedSettings6)axMsRdpClient2.AdvancedSettings3).ConnectToAdministerServer = Favorite.ConnectToConsole;
                    }
                    else
                    {
                        axMsRdpClient2.AdvancedSettings3.ConnectToServerConsole = Favorite.ConnectToConsole;
                    }

                    axMsRdpClient2.OnRequestGoFullScreen    += new EventHandler(axMsTscAx_OnRequestGoFullScreen);
                    axMsRdpClient2.OnRequestLeaveFullScreen += new EventHandler(axMsTscAx_OnRequestLeaveFullScreen);
                    axMsRdpClient2.OnDisconnected           += new IMsTscAxEvents_OnDisconnectedEventHandler(axMsTscAx_OnDisconnected);
                    axMsRdpClient2.OnWarning    += new IMsTscAxEvents_OnWarningEventHandler(axMsRdpClient2_OnWarning);
                    axMsRdpClient2.OnFatalError += new IMsTscAxEvents_OnFatalErrorEventHandler(axMsRdpClient2_OnFatalError);

                    Text = "Connecting to RDP Server...";
                    axMsRdpClient2.FullScreen = true;
                }
                catch (Exception exc)
                {
                    Terminals.Logging.Log.Warn("There was an exception setting an RDP Value.", exc);
                }


                axMsRdpClient2.Connect();
                return(true);
            }
            catch (Exception exc)
            {
                Terminals.Logging.Log.Fatal("Connecting to RDP", exc);
                return(false);
            }
        }
Exemplo n.º 4
0
        public OptionsForm(AxMsRdpClient2 terminal)
        {
            InitializeComponent();
            chkShowInformationToolTips.Checked = Settings.ShowInformationToolTips;
            chkShowUserNameInTitle.Checked     = Settings.ShowUserNameInTitle;
            chkShowFullInfo.Checked            = Settings.ShowFullInformationToolTips;
            txtDefaultDesktopShare.Text        = Settings.DefaultDesktopShare;
            chkExecuteBeforeConnect.Checked    = Settings.ExecuteBeforeConnect;
            txtArguments.Text                   = Settings.ExecuteBeforeConnectArgs;
            txtCommand.Text                     = Settings.ExecuteBeforeConnectCommand;
            txtInitialDirectory.Text            = Settings.ExecuteBeforeConnectInitialDirectory;
            chkWaitForExit.Checked              = Settings.ExecuteBeforeConnectWaitForExit;
            autoSwitchToCaptureCheckbox.Checked = Settings.AutoSwitchOnCapture;
            chkSingleInstance.Checked           = Settings.SingleInstance;
            chkShowConfirmDialog.Checked        = Settings.ShowConfirmDialog;
            chkSaveConnections.Checked          = Settings.SaveConnectionsOnClose;
            validateServerNamesCheckbox.Checked = Settings.ForceComputerNamesAsURI;
            warnDisconnectCheckBox.Checked      = Settings.WarnOnConnectionClose;

            if (Settings.Office2007BlueFeel)
            {
                RenderBlueRadio.Checked = true;
            }
            else if (Settings.Office2007BlackFeel)
            {
                RenderBlackRadio.Checked = true;
            }
            else
            {
                RenderNormalRadio.Checked = true;
            }


            currentTerminal = terminal;
            this.PortscanTimeoutTextBox.Text = Settings.PortScanTimeoutSeconds.ToString();

            ClearMasterButton.Enabled = false;
            if (Settings.TerminalsPassword != string.Empty)
            {
                PasswordProtectTerminalsCheckbox.Checked = true;
                PasswordProtectTerminalsCheckbox.Enabled = false;
                PasswordTextbox.Enabled        = false;
                ConfirmPasswordTextBox.Enabled = false;
                ClearMasterButton.Enabled      = true;
            }
            this.MinimizeToTrayCheckbox.Checked = Settings.MinimizeToTray;

            this.AutoExapandTagsPanelCheckBox.Checked = Settings.AutoExapandTagsPanel;

            ProxyRadionButton.Checked = Settings.UseProxy;
            if (Settings.UseProxy)
            {
                ProxyAddressTextbox.Text = Settings.ProxyAddress;
                ProxyPortTextbox.Text    = Settings.ProxyPort.ToString();
            }
            this.EnableFavoritesPanel.Checked = Settings.EnableFavoritesPanel;
            this.EnableGroupsMenu.Checked     = Settings.EnableGroupsMenu;


            this.AmazonBackupCheckbox.Checked = Settings.UseAmazon;
            this.AccessKeyTextbox.Text        = Settings.AmazonAccessKey;
            this.SecretKeyTextbox.Text        = Settings.AmazonSecretKey;

            this.AccessKeyTextbox.Enabled = AmazonBackupCheckbox.Checked;
            this.SecretKeyTextbox.Enabled = AmazonBackupCheckbox.Checked;
            this.TestButton.Enabled       = AmazonBackupCheckbox.Checked;
            this.BackupButton.Enabled     = AmazonBackupCheckbox.Checked;
            this.RestoreButton.Enabled    = AmazonBackupCheckbox.Checked;

            this.autoCaseTagsCheckbox.Checked = Settings.AutoCaseTags;
        }