Guest User

Untitled

a guest
Oct 14th, 2018
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.58 KB | None | 0 0
  1. using System;
  2. using System.Diagnostics;
  3. using System.Threading;
  4. using System.Threading.Tasks;
  5. using System.Windows.Forms;
  6. using AxMSTSCLib;
  7.  
  8. namespace Utility.RemoteDesktop
  9. {
  10. public class Client
  11. {
  12. private int LogonErrorCode { get; set; }
  13.  
  14. public void CreateRdpConnection(string server, string user, string domain, string password)
  15. {
  16. void ProcessTaskThread()
  17. {
  18. var form = new Form();
  19. form.Load += (sender, args) =>
  20. {
  21. var rdpConnection = new AxMSTSCLib.AxMsRdpClient9NotSafeForScripting();
  22. form.Controls.Add(rdpConnection);
  23. rdpConnection.Server = server;
  24. rdpConnection.Domain = domain;
  25. rdpConnection.UserName = user;
  26. rdpConnection.AdvancedSettings9.ClearTextPassword = password;
  27. rdpConnection.AdvancedSettings9.EnableCredSspSupport = true;
  28. if (true)
  29. {
  30. rdpConnection.OnDisconnected += RdpConnectionOnOnDisconnected;
  31. rdpConnection.OnLoginComplete += RdpConnectionOnOnLoginComplete;
  32. rdpConnection.OnLogonError += RdpConnectionOnOnLogonError;
  33. }
  34. rdpConnection.Connect();
  35. rdpConnection.Enabled = false;
  36. rdpConnection.Dock = DockStyle.Fill;
  37. Application.Run(form);
  38. };
  39. form.Show();
  40. }
  41.  
  42. var rdpClientThread = new Thread(ProcessTaskThread) { IsBackground = true };
  43. rdpClientThread.SetApartmentState(ApartmentState.STA);
  44. rdpClientThread.Start();
  45. while (rdpClientThread.IsAlive)
  46. {
  47. Task.Delay(500).GetAwaiter().GetResult();
  48. }
  49. }
  50.  
  51. private void RdpConnectionOnOnLogonError(object sender, IMsTscAxEvents_OnLogonErrorEvent e)
  52. {
  53. LogonErrorCode = e.lError;
  54. }
  55. private void RdpConnectionOnOnLoginComplete(object sender, EventArgs e)
  56. {
  57. if (LogonErrorCode == -2)
  58. {
  59. Debug.WriteLine($" ## New Session Detected ##");
  60. Task.Delay(10000).GetAwaiter().GetResult();
  61. }
  62. var rdpSession = (AxMsRdpClient9NotSafeForScripting)sender;
  63. rdpSession.Disconnect();
  64. }
  65. private void RdpConnectionOnOnDisconnected(object sender, IMsTscAxEvents_OnDisconnectedEvent e)
  66. {
  67. Environment.Exit(0);
  68. }
  69. }
  70. }
Add Comment
Please, Sign In to add comment