private void HandleMessage(Message.MESSAGE_ID msgType, byte[] msgData) { switch (msgType) { case Message.MESSAGE_ID.BUTTON: Debug.WriteLine(string.Format("BTN " + BitConverter.ToInt32(msgData, 0))); Win32Natives.keybd_event((byte)BitConverter.ToInt32(msgData, 0), 0, (int)Win32Natives.KeyActionState.Down, 0); Win32Natives.keybd_event((byte)BitConverter.ToInt32(msgData, 0), 0, (int)Win32Natives.KeyActionState.Up, 0); _socket.SendBytes(Message.Create(Message.MESSAGE_ID.OK, 0)); break; case Message.MESSAGE_ID.MOUSE: int x = BitConverter.ToInt32(msgData, 0); int y = BitConverter.ToInt32(msgData, 4); break; case Message.MESSAGE_ID.NONE: break; case Message.MESSAGE_ID.GET_STATUS: break; case Message.MESSAGE_ID.STATUS: break; case Message.MESSAGE_ID.GET_SCREEN: lock (ObjScreenLock) { try { Bitmap bmpScreem = (Bitmap)ScreenCapture.CaptureDesktop(); // NativeMethods.CaptureScreen(new Rectangle(0, 0, 272, 480)); SendScreenBitmap(BitmapToByteArray(bmpScreem)); //bmpScreem.Save(BMP_FILENAME, ImageFormat.Jpeg); //// send screen bitmap //SendScreenBitmap(BMP_FILENAME); } catch (Exception exception) { _socket.SendBytes(Message.Create(Message.MESSAGE_ID.NONE, 0)); _logger.Log(string.Format("HandleMessage {0} {1}", msgType, exception)); } } break; case Message.MESSAGE_ID.SCREEN: break; } }
public void HandleConnection(object obj) { if (_socket != null) { try { while (_socket.IsConnected()) { // read header first byte[] headerBytes = new byte[Message.MSG_HEADER_LENGTH]; ReadMessageToken readMessageToken = new ReadMessageToken { Buffer = headerBytes, Event = new AutoResetEvent(false), Socket = _socket }; IAsyncResult result = _socket.BeginReceive(headerBytes, 0, headerBytes.Length, SocketFlags.None, CallbackReadHeader, readMessageToken); result.AsyncWaitHandle.WaitOne(); readMessageToken.Event.WaitOne(); if (readMessageToken.Buffer != null) { Message.MESSAGE_ID msgType = Message.GetMessageType(readMessageToken.Buffer); int msgLength = Message.GetMessageLength(readMessageToken.Buffer); if (msgLength > 0) { byte[] msgData = new byte[msgLength]; ReadCompleteMessage(msgData); HandleMessage(msgType, msgData); } else { HandleMessage(msgType, null); } } } } catch (Exception exception) { _logger.Log("HandleConnection- " + exception); } finally { _socket.DoClose(); } } }