// 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(); } }
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"); }
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(); } }