RDP bugfixes/changes

This commit is contained in:
d3agle 2015-09-17 01:44:20 -05:00
parent 13302fa9f7
commit a30954d600
5 changed files with 39 additions and 41 deletions

View File

@ -92,8 +92,6 @@ namespace xServer.Controls
/// </summary>
public void Start()
{
_frameCounter = new FrameCounter();
_sWatch = Stopwatch.StartNew();
Running = true;

View File

@ -41,7 +41,10 @@ namespace xServer.Core.Commands
}
public static void HandleGetDesktopResponse(Client client, GetDesktopResponse packet)
{
if (client.Value == null || client.Value.FrmRdp == null)
if (client.Value == null
|| client.Value.FrmRdp == null
|| client.Value.FrmRdp.IsDisposed
|| client.Value.FrmRdp.Disposing)
return;
if (packet.Image == null)

View File

@ -44,12 +44,8 @@ namespace xServer.Core.MouseKeyHook.WinApi
/// </item>
/// </list>
/// </remarks>
#if IS_X64
[FieldOffset(0x22)]
#else
[FieldOffset(0x16)]
#endif
public Int16 MouseData;
[FieldOffset(0x16)] public Int16 MouseData_x86;
[FieldOffset(0x22)] public Int16 MouseData_x64;
/// <summary>
/// Converts the current <see cref="AppMouseStruct" /> into a <see cref="MouseStruct" />.
@ -62,7 +58,7 @@ namespace xServer.Core.MouseKeyHook.WinApi
{
MouseStruct tmp = new MouseStruct();
tmp.Point = Point;
tmp.MouseData = MouseData;
tmp.MouseData = (IntPtr.Size == 4) ? MouseData_x86 : MouseData_x64;
tmp.Timestamp = Environment.TickCount;
return tmp;
}

View File

@ -230,9 +230,9 @@
private System.Windows.Forms.Panel panelTop;
private System.Windows.Forms.Button btnHide;
private System.Windows.Forms.Button btnShow;
private xServer.Controls.RapidPictureBox picDesktop;
private System.Windows.Forms.ComboBox cbMonitors;
private System.Windows.Forms.Button btnKeyboard;
private System.Windows.Forms.ToolTip toolTipButtons;
private Controls.RapidPictureBox picDesktop;
}
}

View File

@ -8,16 +8,17 @@ using xServer.Core.Utilities;
using xServer.Core.MouseKeyHook;
using xServer.Enums;
namespace xServer.Forms
{
//TODO: Fix Alt + Tab
public partial class FrmRemoteDesktop : Form
{
public bool IsStarted { get; private set; }
private readonly Client _connectClient;
private bool _enableMouseInput;
private bool _enableKeyboardInput;
private IKeyboardMouseEvents _mEvents;
private IKeyboardMouseEvents _keyboardHook;
private IKeyboardMouseEvents _mouseHook;
private List<Keys> _keysPressed;
public FrmRemoteDesktop(Client c)
@ -25,11 +26,7 @@ namespace xServer.Forms
_connectClient = c;
_connectClient.Value.FrmRdp = this;
if (PlatformHelper.RunningOnMono)
SubscribeMonoEvents();
else
SubscribeWindowsHookEvents();
SubscribeEvents();
InitializeComponent();
}
@ -41,7 +38,7 @@ namespace xServer.Forms
btnHide.Left = (panelTop.Width / 2) - (btnHide.Width / 2);
btnShow.Location = new Point(377, 0);
btnShow.Location = new System.Drawing.Point(377, 0);
btnShow.Left = (this.Width / 2) - (btnShow.Width / 2);
_keysPressed = new List<Keys>();
@ -50,31 +47,36 @@ namespace xServer.Forms
new Core.Packets.ServerPackets.GetMonitors().Execute(_connectClient);
}
private void SubscribeWindowsHookEvents()
private void SubscribeEvents()
{
_mEvents = Hook.GlobalEvents();
_mEvents.MouseWheel += OnMouseWheelMove;
_mEvents.KeyDown += OnKeyDown;
_mEvents.KeyUp += OnKeyUp;
}
private void SubscribeMonoEvents()
if (PlatformHelper.RunningOnMono)
{
this.KeyDown += OnKeyDown;
this.KeyUp += OnKeyUp;
}
private void UnsubscribeWindowsHookEvents()
else
{
if (_mEvents == null) return;
_mEvents.MouseWheel -= OnMouseWheelMove;
_mEvents.KeyDown -= OnKeyDown;
_mEvents.KeyUp -= OnKeyUp;
_mEvents.Dispose();
_keyboardHook = Hook.GlobalEvents();
_keyboardHook.KeyDown += OnKeyDown;
_keyboardHook.KeyUp += OnKeyUp;
_mouseHook = Hook.AppEvents();
_mouseHook.MouseWheel += OnMouseWheelMove;
}
}
private void UnsubscribeMonoEvents()
private void UnsubscribeEvents()
{
if (_keyboardHook != null && _mouseHook != null)
{
_keyboardHook.KeyDown -= OnKeyDown;
_keyboardHook.KeyUp -= OnKeyUp;
_mouseHook.MouseWheel -= OnMouseWheelMove;
_mouseHook.Dispose();
_keyboardHook.Dispose();
}
this.KeyDown -= OnKeyDown;
this.KeyUp -= OnKeyUp;
}
@ -95,7 +97,7 @@ namespace xServer.Forms
}
}
public void UpdateImage(Bitmap bmp, bool cloneBitmap = false)
public void UpdateImage(System.Drawing.Bitmap bmp, bool cloneBitmap = false)
{
picDesktop.UpdateImage(bmp, cloneBitmap);
}
@ -138,8 +140,7 @@ namespace xServer.Forms
if (_connectClient.Value != null)
_connectClient.Value.FrmRdp = null;
UnsubscribeWindowsHookEvents();
UnsubscribeMonoEvents();
UnsubscribeEvents();
}
private void FrmRemoteDesktop_Resize(object sender, EventArgs e)