Пример #1
0
        public unsafe static void Send(Keys[] keyCodes, ServerBase serverBase)
        {
            Server    serverNode = serverBase.ServerNode;
            RdpClient client     = serverNode.Client;
            IMsRdpClientNonScriptable msRdpClientNonScriptable = (IMsRdpClientNonScriptable)client.GetOcx();
            int num = keyCodes.Length;

            try
            {
                SendKeysData sendKeysData = default(SendKeysData);
                bool *       ptr          = (bool *)sendKeysData.keyUp;
                int *        ptr2         = sendKeysData.keyData;
                int          num2         = 0;
                for (int i = 0; i < num && i < 10; i++)
                {
                    int num3 = (int)Util.MapVirtualKey((uint)keyCodes[i], 0u);
                    sendKeysData.keyData[num2] = num3;
                    sendKeysData.keyUp[num2++] = 0;
                    if (!IsModifier(keyCodes[i]))
                    {
                        for (int num4 = num2 - 1; num4 >= 0; num4--)
                        {
                            sendKeysData.keyData[num2] = sendKeysData.keyData[num4];
                            sendKeysData.keyUp[num2++] = 1;
                        }
                        msRdpClientNonScriptable.SendKeys(num2, ref *ptr, ref *ptr2);
                        num2 = 0;
                    }
                }
            }
            catch
            {
            }
        }
Пример #2
0
 internal static void ReleaseClient(RdpClient client)
 {
     try
     {
         client._server = null;
         Program.TheForm.RemoveFromClientPanel(client.Control);
     }
     finally
     {
         AxHost rdpClient = client._rdpClient5;
         if (rdpClient != null)
         {
             client._rdpClient5 = null;
             rdpClient.Dispose();
         }
         rdpClient = client._rdpClient6;
         if (rdpClient != null)
         {
             client._rdpClient6 = null;
             rdpClient.Dispose();
         }
         rdpClient = client._rdpClient7;
         if (rdpClient != null)
         {
             client._rdpClient7 = null;
             rdpClient.Dispose();
         }
         rdpClient = client._rdpClient8;
         if (rdpClient != null)
         {
             client._rdpClient8 = null;
             rdpClient.Dispose();
         }
     }
 }
Пример #3
0
        internal static RdpClient AllocClient(Server server, MainForm form)
        {
            RdpClient rdpClient = new RdpClient(form);

            rdpClient._server = server;
            return(rdpClient);
        }
Пример #4
0
        public virtual void GoFullScreenClient(Server server, bool isTopMostWindow)
        {
            RdpClient client    = server.Client;
            Rectangle rectangle = Screen.GetBounds(client.Control);

            if (Program.Preferences.UseMultipleMonitors && (rectangle.Height < client.MsRdpClient.DesktopHeight || rectangle.Width < client.MsRdpClient.DesktopWidth))
            {
                int      num        = 0;
                int      num2       = 65535;
                Screen[] allScreens = Screen.AllScreens;
                foreach (Screen screen in allScreens)
                {
                    num += screen.Bounds.Width;
                    num2 = Math.Min(screen.Bounds.Height, num2);
                }
                num       = Math.Min(num, RdpClient.MaxDesktopWidth);
                num2      = Math.Min(num2, RdpClient.MaxDesktopHeight);
                rectangle = new Rectangle(0, 0, num, num2);
            }
            _savedBounds      = base.Bounds;
            _savedBorderStyle = base.FormBorderStyle;
            DrawingControl.SuspendDrawing(this);
            SuspendLayout();
            base.FormBorderStyle = FormBorderStyle.None;
            SetMainMenuVisibility(show: false);
            SetBounds(rectangle.Left, rectangle.Top, rectangle.Width, rectangle.Height);
            server.SetClientSizeProperties();
            client.Control.Bounds = new Rectangle(0, 0, base.Width, base.Height);
            ResumeLayout();
            base.TopMost = isTopMostWindow;
            client.Control.Show();
            DrawingControl.ResumeDrawing(this);
            BringToFront();
            Activate();
        }
Пример #5
0
        internal static void Initialize(MainForm form)
        {
            using (RdpClient5 rdpClient = new RdpClient5(form))
            {
                RdpControlVersion = rdpClient.Version;
                string[] array = rdpClient.Version.Split('.');
                RdpClientVersion = 5;
                if (int.Parse(array[2]) >= 6001)
                {
                    RdpClientVersion        = 6;
                    SupportsMonitorSpanning = true;
                    if (int.Parse(array[2]) >= 7600)
                    {
                        RdpClientVersion = 7;
                        if (int.Parse(array[2]) >= 9200)
                        {
                            RdpClientVersion = 8;
                        }
                    }
                }
                form.RemoveFromClientPanel(rdpClient);
            }
            StaticClient = new RdpClient(form);
            RdpClient staticClient = StaticClient;

            staticClient.Control.Enabled = false;
            MaxDesktopWidth  = 4096;
            MaxDesktopHeight = 2048;
            if (staticClient.AdvancedSettings7 != null)
            {
                SupportsGatewayCredentials = true;
            }
            if (staticClient.AdvancedSettings8 != null)
            {
                SupportsAdvancedAudioVideoRedirection = true;
            }
            if (staticClient.ClientNonScriptable3 != null)
            {
                SupportsFineGrainedRedirection = true;
            }
            if (staticClient.MsRdpClient8 != null)
            {
                SupportsRemoteSessionActions = true;
            }
        }