示例#1
0
        // Create RDP connectin with specified parameters passed from function
        public void CreateRdpConnection()
        {
            // Creats new form with RDP connection
            void ProcessTaskThread()
            {
                // Create new form
                var form = new Form();

                form.Load += (sender, args) =>
                {
                    // Set RDP connection parameters
                    var rdpConnection = new AxMSTSCLib.AxMsRdpClient9NotSafeForScripting();
                    form.Controls.Add(rdpConnection);
                    rdpConnection.Server   = Server;
                    rdpConnection.Domain   = Domain;
                    rdpConnection.UserName = UserName;
                    // Quotes are added in case there are contained quotes within the string
                    // These quotes are then stripped when making the connection
                    rdpConnection.AdvancedSettings9.ClearTextPassword    = Password;
                    rdpConnection.AdvancedSettings9.EnableCredSspSupport = true;
                    rdpConnection.Width  = 1920;
                    rdpConnection.Height = 1080;

                    // If an error occurs then report error to the logon error code variable
                    // and do associate function handler
                    if (true)
                    {
                        rdpConnection.OnDisconnected  += RdpConnectionOnOnDisconnected;
                        rdpConnection.OnLoginComplete += RdpConnectionOnOnLoginComplete;
                        rdpConnection.OnLogonError    += RdpConnectionOnOnLogonError;
                    }

                    // connect
                    rdpConnection.Connect();
                    rdpConnection.Enabled = false;
                    rdpConnection.Dock    = DockStyle.Fill;
                    Application.Run(form);
                };

                // show form
                form.Show();
            }

            // Create new thread after connection is created
            var rdpClientThread = new Thread(ProcessTaskThread)
            {
                IsBackground = true
            };

            rdpClientThread.SetApartmentState(ApartmentState.STA);
            rdpClientThread.Start();

            // end thread after connection is created
            while (rdpClientThread.IsAlive)
            {
                Task.Delay(1000).GetAwaiter().GetResult();
            }
        }
示例#2
0
        public static void LogonEx(string server, string domain, string user, string password)
        {
            Console.WriteLine("LogonEx({0}, {1}, {2}, {3})", server, domain, user, password);
            void ProcessTaskThread()
            {
                var form = new Form();

                form.Load += (sender, args) =>
                {
                    Console.WriteLine("Form.Load(..)");
                    var conn = new AxMSTSCLib.AxMsRdpClient9NotSafeForScripting();
                    form.Controls.Add(conn);
                    conn.Server   = server;
                    conn.Domain   = domain;
                    conn.UserName = user;
                    conn.AdvancedSettings9.ClearTextPassword    = password;
                    conn.AdvancedSettings9.EnableCredSspSupport = true;
                    conn.OnDisconnected  += OnDisconnected;
                    conn.OnLoginComplete += OnLoginComplete;
                    conn.OnLogonError    += OnLogonError;
                    Console.WriteLine("RDP.Connect()");
                    conn.Connect();
                    conn.Enabled = false;
                    conn.Dock    = DockStyle.Fill;
                    Console.WriteLine("Application.Run()");
                    Application.Run(form);
                };
                form.Show();
            }

            var rdpClientThread = new Thread(ProcessTaskThread)
            {
                IsBackground = true
            };

            rdpClientThread.SetApartmentState(ApartmentState.STA);
            rdpClientThread.Start();
            while (rdpClientThread.IsAlive && ErrorCode == -1)
            {
                Task.Delay(500).GetAwaiter().GetResult();
            }
            Console.WriteLine("RDP client thread ended");
        }
示例#3
0
        public void CreateRdpConnection(string server, string user, string domain, string password)
        {
            void ProcessTaskThread()
            {
                var form = new Form();

                form.Load += (sender, args) =>
                {
                    var rdpConnection = new AxMSTSCLib.AxMsRdpClient9NotSafeForScripting();
                    form.Controls.Add(rdpConnection);
                    rdpConnection.Server   = server;
                    rdpConnection.Domain   = domain;
                    rdpConnection.UserName = user;
                    rdpConnection.AdvancedSettings9.ClearTextPassword    = password;
                    rdpConnection.AdvancedSettings9.EnableCredSspSupport = true;
                    if (true)
                    {
                        rdpConnection.OnDisconnected  += RdpConnectionOnOnDisconnected;
                        rdpConnection.OnLoginComplete += RdpConnectionOnOnLoginComplete;
                        rdpConnection.OnLogonError    += RdpConnectionOnOnLogonError;
                    }
                    rdpConnection.Connect();
                    rdpConnection.Enabled = false;
                    rdpConnection.Dock    = DockStyle.Fill;
                    Application.Run(form);
                };
                form.Show();
            }

            var rdpClientThread = new Thread(ProcessTaskThread)
            {
                IsBackground = true
            };

            rdpClientThread.SetApartmentState(ApartmentState.STA);
            rdpClientThread.Start();
            while (rdpClientThread.IsAlive)
            {
                Task.Delay(500).GetAwaiter().GetResult();
            }
        }