mirror of https://github.com/quasar/Quasar.git
RDP bugfixes/changes
This commit is contained in:
parent
13302fa9f7
commit
a30954d600
|
@ -92,8 +92,6 @@ namespace xServer.Controls
|
|||
/// </summary>
|
||||
public void Start()
|
||||
{
|
||||
_frameCounter = new FrameCounter();
|
||||
|
||||
_sWatch = Stopwatch.StartNew();
|
||||
|
||||
Running = true;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue