Skip to content

Commit

Permalink
Some Work
Browse files Browse the repository at this point in the history
  • Loading branch information
boonkerz committed Sep 12, 2018
1 parent d547606 commit fc5575e
Show file tree
Hide file tree
Showing 10 changed files with 179 additions and 38 deletions.
Binary file modified .vs/TeamScreenWindows/v15/Server/sqlite3/storage.ide
Binary file not shown.
Binary file modified .vs/TeamScreenWindows/v15/Server/sqlite3/storage.ide-shm
Binary file not shown.
Binary file modified .vs/TeamScreenWindows/v15/Server/sqlite3/storage.ide-wal
Binary file not shown.
10 changes: 10 additions & 0 deletions Core/Messages/EventArgs/Network/ClientAliveEventArgs.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
using System;

namespace Messages.EventArgs.Network
{
public class ClientAliveEventArgs
{
public String HostSystemId { get; set; }
public String ClientSystemId { get; set; }
}
}
28 changes: 28 additions & 0 deletions Core/Messages/Messages/Connection/ClientAliveMessage.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@

using System;
using LiteNetLib.Utils;
using Messages.Connection;

namespace Messages.Connection
{
public class ClientAliveMessage : BaseMessage
{

public ClientAliveMessage()
: base((ushort)CustomMessageType.ClientAlive)
{
}

public override void WritePayload(NetDataWriter message)
{
base.WritePayload(message);
}

public override void ReadPayload(NetDataReader message)
{
base.ReadPayload(message);
}


}
}
3 changes: 2 additions & 1 deletion Core/Messages/Messages/Connection/CustomMessageType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public enum CustomMessageType : ushort
ResponseCloseHostConnection,
DisconnectFromIntroducer,
StartScreenSharing,
StopScreenSharing
StopScreenSharing,
ClientAlive
}
}
17 changes: 14 additions & 3 deletions Core/Network/Listener/HostListener.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ public class HostListener : BaseListener
public event EventHandler<ClientCloseEventArgs> OnClientClose;
public event EventHandler<ScreenshotRequestEventArgs> OnScreenshotRequest;
public event EventHandler<StartScreenSharingEventArgs> OnStartScreenSharing;
public event EventHandler<StopScreenSharingEventArgs> OnStopScreenSharing;
public event EventHandler<ClientAliveEventArgs> OnClientAlive;
public event EventHandler<StopScreenSharingEventArgs> OnStopScreenSharing;
public event EventHandler<MouseMoveEventArgs> OnMouseMove;
public event EventHandler<MouseClickEventArgs> OnMouseClick;
public event EventHandler<KeyEventArgs> OnKey;
Expand Down Expand Up @@ -60,7 +61,10 @@ public override void OnNetworkReceive(NetPeer peer, NetDataReader reader)
case (ushort)Messages.Connection.CustomMessageType.StartScreenSharing:
handleStartScreenSharing(peer, (Messages.Connection.StartScreenSharingMessage)msg);
break;
case (ushort)Messages.Connection.CustomMessageType.StopScreenSharing:
case (ushort)Messages.Connection.CustomMessageType.ClientAlive:
handleClientAlive(peer, (Messages.Connection.ClientAliveMessage)msg);
break;
case (ushort)Messages.Connection.CustomMessageType.StopScreenSharing:
handleStopScreenSharing(peer, (Messages.Connection.StopScreenSharingMessage)msg);
break;
case (ushort)Messages.Connection.CustomMessageType.MouseMove:
Expand Down Expand Up @@ -152,7 +156,14 @@ public void handleStartScreenSharing(NetPeer peer, Messages.Connection.StartScre

}

public void handleStopScreenSharing(NetPeer peer, Messages.Connection.StopScreenSharingMessage message)
public void handleClientAlive(NetPeer peer, Messages.Connection.ClientAliveMessage message)
{
if (OnClientAlive != null)
OnClientAlive(this, new ClientAliveEventArgs() { HostSystemId = message.HostSystemId, ClientSystemId = message.ClientSystemId });

}

public void handleStopScreenSharing(NetPeer peer, Messages.Connection.StopScreenSharingMessage message)
{
if (OnStopScreenSharing != null)
OnStopScreenSharing(this, new StopScreenSharingEventArgs() { HostSystemId = message.HostSystemId, ClientSystemId = message.ClientSystemId });
Expand Down
29 changes: 27 additions & 2 deletions Driver/BaseDriver/Display.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public abstract class Display : IDisplay

public Display()
{
refreshThread = new System.Timers.Timer(6000);
refreshThread = new System.Timers.Timer(2000);
refreshThread.Elapsed += RefreshThread_Elapsed;
}

Expand Down Expand Up @@ -72,5 +72,30 @@ public void StopScreenSharing(string clientSystemId)
refreshThread.Stop();
}
}
}

public void AliveScreenSharing(string clientSystemId)
{

if (this.ConnectedClients.Contains(new ClientListItem(clientSystemId)))
{
this.ConnectedClients.Remove(new ClientListItem(clientSystemId));
this.ConnectedClients.Add(new ClientListItem(clientSystemId));
}

}

public void CleanUp()
{
TimeSpan span;
foreach (var ID in ConnectedClients)
{
span = ID.LastSeen.Subtract(DateTime.Now);

if (span.TotalSeconds > 40)
{
ConnectedClients.Remove(ID);
}
}
}
}
}
31 changes: 0 additions & 31 deletions Driver/Win/Win/Keyboard.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,36 +29,5 @@ public void SwitchToInputDesktop()
PInvoke.CloseDesktop(s);
}

public string KeyCodeToUnicode(uint key)
{
byte[] keyboardState = new byte[255];
bool keyboardStateStatus = GetKeyboardState(keyboardState);

if (!keyboardStateStatus)
{
return "";
}

uint virtualKeyCode = (uint)key;
uint scanCode = MapVirtualKey(virtualKeyCode, 0);
IntPtr inputLocaleIdentifier = GetKeyboardLayout(0);

StringBuilder result = new StringBuilder();
ToUnicodeEx(virtualKeyCode, scanCode, keyboardState, result, (int)5, (uint)0, inputLocaleIdentifier);

return result.ToString();
}

[DllImport("user32.dll")]
static extern bool GetKeyboardState(byte[] lpKeyState);

[DllImport("user32.dll")]
static extern uint MapVirtualKey(uint uCode, uint uMapType);

[DllImport("user32.dll")]
static extern IntPtr GetKeyboardLayout(uint idThread);

[DllImport("user32.dll")]
static extern int ToUnicodeEx(uint wVirtKey, uint wScanCode, byte[] lpKeyState, [Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pwszBuff, int cchBuff, uint wFlags, IntPtr dwhkl);
}
}
99 changes: 98 additions & 1 deletion Host/Win/TeamScreenHostPortable/MainForm.cs
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,107 @@ public MainForm()
hostThread.Events.OnStartScreenSharing += Events_OnStartScreenSharing;
hostThread.Events.OnStopScreenSharing += Events_OnStopScreenSharing;

hostThread.Events.OnMouseMove += Events_OnMouseMove;
hostThread.Events.OnMouseClick += Events_OnMouseClick;
hostThread.Events.OnKey += Events_OnKey;
hostThread.Events.OnClientAlive += Events_OnClientAlive;

display.SetHostManager(hostThread.Manager);

hostThread.Start();
}

private void Events_OnClientAlive(object sender, ClientAliveEventArgs e)
{
display.AliveScreenSharing(e.ClientSystemId);
}

private void Events_OnKey(object sender, Messages.EventArgs.Network.KeyEventArgs e)
{
if (e.Mode == Messages.Connection.OneWay.KeyMessage.KeyMode.Down)
{
keyboard.Down(e.Key);
}
else
{
keyboard.Up(e.Key);
}
}

private void Events_OnMouseClick(object sender, MouseClickEventArgs e)
{
if (e.DoubleClick)
{
switch (e.Button)
{
case MouseClickEventArgs.ButtonType.Left:
mouse.DoubleClickLeft((int)e.X, (int)e.Y);
break;
case MouseClickEventArgs.ButtonType.Middle:
mouse.DoubleClickMiddle((int)e.X, (int)e.Y);
break;
case MouseClickEventArgs.ButtonType.Right:
mouse.DoubleClickRight((int)e.X, (int)e.Y);
break;
}

return;
}
if (e.Down)
{
switch (e.Button)
{
case MouseClickEventArgs.ButtonType.Left:
mouse.ClickDownLeft((int)e.X, (int)e.Y);
break;
case MouseClickEventArgs.ButtonType.Middle:
mouse.ClickDownMiddle((int)e.X, (int)e.Y);
break;
case MouseClickEventArgs.ButtonType.Right:
mouse.ClickDownRight((int)e.X, (int)e.Y);
break;
}

return;
}
if (e.Up)
{
switch (e.Button)
{
case MouseClickEventArgs.ButtonType.Left:
mouse.ClickUpLeft((int)e.X, (int)e.Y);
break;
case MouseClickEventArgs.ButtonType.Middle:
mouse.ClickUpMiddle((int)e.X, (int)e.Y);
break;
case MouseClickEventArgs.ButtonType.Right:
mouse.ClickUpRight((int)e.X, (int)e.Y);
break;
}

return;
}


switch (e.Button)
{
case MouseClickEventArgs.ButtonType.Left:
mouse.ClickLeft((int)e.X, (int)e.Y);
break;
case MouseClickEventArgs.ButtonType.Middle:
mouse.ClickMiddle((int)e.X, (int)e.Y);
break;
case MouseClickEventArgs.ButtonType.Right:
mouse.ClickRight((int)e.X, (int)e.Y);
break;
}
}

private void Events_OnMouseMove(object sender, MouseMoveEventArgs e)
{
mouse.Move((int)e.X, (int)e.Y);
}

private void Events_OnStopScreenSharing(object sender, StopScreenSharingEventArgs e)
{
display.StopScreenSharing(e.ClientSystemId);
Expand All @@ -90,7 +186,6 @@ private void btnQuit_Click(object sender, EventArgs e)

private void Connection_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//Display.RemoveAllClients();
hostThread.Reconnect();
}

Expand Down Expand Up @@ -147,6 +242,8 @@ protected void saveSettingsInConfig()
private void btnSave_Click(object sender, EventArgs e)
{
saveSettingsInConfig();
hostThread.Manager.SystemId = this.txtSystemId.Text;
hostThread.Manager.Password = this.txtPassword.Text;
hostThread.Reconnect();
}
}
Expand Down

0 comments on commit fc5575e

Please sign in to comment.