private static void processKeys(ENUMS.SPECIALKEYS keys, int UPORDOWN) { byte key = (byte)Keys.None; switch (keys) { case ENUMS.SPECIALKEYS.ALT: key = (byte)(Keys.Menu); break; case ENUMS.SPECIALKEYS.ARROW_DOWN: key = (byte)(Keys.Down); break; case ENUMS.SPECIALKEYS.ARROW_LEFT: key = (byte)(Keys.Left); break; case ENUMS.SPECIALKEYS.ARROW_RIGHT: key = (byte)(Keys.Right); break; case ENUMS.SPECIALKEYS.ARROW_UP: key = (byte)(Keys.Up); break; case ENUMS.SPECIALKEYS.BACKSPACE: key = (byte)(Keys.Back); break; case ENUMS.SPECIALKEYS.CAPSLOCK: key = (byte)(Keys.CapsLock); break; case ENUMS.SPECIALKEYS.CTRL: key = (byte)(Keys.ControlKey); break; case ENUMS.SPECIALKEYS.DEL: key = (byte)(Keys.Delete); break; case ENUMS.SPECIALKEYS.END: key = (byte)(Keys.End); break; case ENUMS.SPECIALKEYS.ENTER: key = (byte)(Keys.Enter); break; case ENUMS.SPECIALKEYS.ESC: key = (byte)(Keys.Escape); break; case ENUMS.SPECIALKEYS.F1: key = (byte)(Keys.F1); break; case ENUMS.SPECIALKEYS.F10: key = (byte)(Keys.F10); break; case ENUMS.SPECIALKEYS.F11: key = (byte)(Keys.F11); break; case ENUMS.SPECIALKEYS.F12: key = (byte)(Keys.F12); break; case ENUMS.SPECIALKEYS.F2: key = (byte)(Keys.F2); break; case ENUMS.SPECIALKEYS.F3: key = (byte)(Keys.F3); break; case ENUMS.SPECIALKEYS.F4: key = (byte)(Keys.F4); break; case ENUMS.SPECIALKEYS.F5: key = (byte)(Keys.F5); break; case ENUMS.SPECIALKEYS.F6: key = (byte)(Keys.F6); break; case ENUMS.SPECIALKEYS.F7: key = (byte)(Keys.F7); break; case ENUMS.SPECIALKEYS.F8: key = (byte)(Keys.F8); break; case ENUMS.SPECIALKEYS.F9: key = (byte)(Keys.F9); break; case ENUMS.SPECIALKEYS.HOME: key = (byte)(Keys.Home); break; case ENUMS.SPECIALKEYS.INSERT: key = (byte)(Keys.Insert); break; case ENUMS.SPECIALKEYS.NUMLOCK: key = (byte)(Keys.NumLock); break; case ENUMS.SPECIALKEYS.PAGEDOWN: key = (byte)(Keys.PageDown); break; case ENUMS.SPECIALKEYS.PAGEUP: key = (byte)(Keys.PageUp); break; case ENUMS.SPECIALKEYS.PRTSC: key = (byte)(Keys.PrintScreen); break; case ENUMS.SPECIALKEYS.SHIFT: key = (byte)(Keys.ShiftKey); break; case ENUMS.SPECIALKEYS.SPACE: key = (byte)(Keys.Space); break; case ENUMS.SPECIALKEYS.TAB: key = (byte)(Keys.Tab); break; case ENUMS.SPECIALKEYS.WIN: key = (byte)(Keys.LWin); break; case ENUMS.SPECIALKEYS.GAME_A: key = (byte)(A_button); break; case ENUMS.SPECIALKEYS.GAME_B: key = (byte)(B_button); break; case ENUMS.SPECIALKEYS.GAME_C: key = (byte)(C_button); break; case ENUMS.SPECIALKEYS.GAME_D: key = (byte)(D_button); break; case ENUMS.SPECIALKEYS.GAME_DOWN: key = (byte)(down_button); break; case ENUMS.SPECIALKEYS.GAME_LEFT: key = (byte)(left_button); break; case ENUMS.SPECIALKEYS.GAME_OTHER1: key = (byte)(Other1); break; case ENUMS.SPECIALKEYS.GAME_OTHER2: key = (byte)(Other2); break; case ENUMS.SPECIALKEYS.GAME_OTHER3: key = (byte)(Other3); break; case ENUMS.SPECIALKEYS.GAME_OTHER4: key = (byte)(Other4); break; case ENUMS.SPECIALKEYS.GAME_RIGHT: key = (byte)(right_button); break; case ENUMS.SPECIALKEYS.GAME_START: key = (byte)(Start); break; case ENUMS.SPECIALKEYS.GAME_STOP: key = (byte)(Stop); break; case ENUMS.SPECIALKEYS.GAME_UP: key = (byte)(up_button); break; default: break; } if (key == (byte)Keys.None) return; if (UPORDOWN == UP) keybd_event(key, MapVirtualKey(key, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); else keybd_event(key, MapVirtualKey(key, 0), KEYEVENTF_EXTENDEDKEY | 0, 0); }
public static void processCmd(ServerForm mainForm, BinaryReader reader, ENUMS.MESSAGETYPE messageType) { try { Console.WriteLine(messageType); switch (messageType) { case ENUMS.MESSAGETYPE.EXIT: mainForm.stopClient();//disconnect socket break; case ENUMS.MESSAGETYPE.CODE: int mesLen = big2Small(reader.ReadInt32()); byte[] msg = reader.ReadBytes(mesLen); if (Encoding.UTF8.GetString(msg) != "小鸡炖蘑菇") { mainForm.stopClient(); } break; case ENUMS.MESSAGETYPE.FUN_LOCK: LockWorkStation();//lock PC break; case ENUMS.MESSAGETYPE.FUN_LOGOUT: DoExitWin(EWX_LOGOFF);//logout break; case ENUMS.MESSAGETYPE.FUN_MANAGER://open the task manager ProcessStartInfo ps = new ProcessStartInfo(); ps.FileName = @"C:\WINDOWS\system32\taskmgr.exe"; Process.Start(ps); break; case ENUMS.MESSAGETYPE.FUN_RESTART: DoExitWin(EWX_REBOOT); break; case ENUMS.MESSAGETYPE.FUN_SHOW_DESKTOP: Type shellType = Type.GetTypeFromProgID("Shell.Application"); object shellObject = System.Activator.CreateInstance(shellType); shellType.InvokeMember("ToggleDesktop", System.Reflection.BindingFlags.InvokeMethod, null, shellObject, null); break; case ENUMS.MESSAGETYPE.FUN_SHUTDOWN: DoExitWin(EWX_SHUTDOWN | EWX_FORCE); break; case ENUMS.MESSAGETYPE.FUN_SHUTDOWN_CANCEL: cancelShutdown(); break; case ENUMS.MESSAGETYPE.FUN_SHUTDOWN_TIME: int timeSpan = big2Small(reader.ReadInt32());//delay shutdown, int data, shutDownTime(timeSpan); break; case ENUMS.MESSAGETYPE.FUN_SLEEP: Application.SetSuspendState(PowerState.Hibernate, true, true); break; case ENUMS.MESSAGETYPE.HOST_NANME: int len = big2Small(reader.ReadInt32()); byte[] message = reader.ReadBytes(len); String msg2 = Encoding.UTF8.GetString(message); mainForm.setMessageHost(msg2); break; case ENUMS.MESSAGETYPE.KEY_DOWN: ENUMS.SPECIALKEYS key = (ENUMS.SPECIALKEYS)reader.ReadByte(); processKeys(key, DOWN); break; case ENUMS.MESSAGETYPE.KEY_UP: ENUMS.SPECIALKEYS key2 = (ENUMS.SPECIALKEYS)reader.ReadByte(); processKeys(key2, UP); break; case ENUMS.MESSAGETYPE.MOUSE_LEFT_CLICK: mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); break; case ENUMS.MESSAGETYPE.MOUSE_LEFT_DOUBLE_CLICK: //双击左键 mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); Thread.Sleep(100); mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); break; case ENUMS.MESSAGETYPE.MOUSE_LEFT_DOWN: mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); break; case ENUMS.MESSAGETYPE.MOUSE_LEFT_UP: mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); break; case ENUMS.MESSAGETYPE.MOUSE_MOVE: int xdis = big2Small(reader.ReadInt32()); int ydis = big2Small(reader.ReadInt32()); mouse_event(MOUSEEVENTF_MOVE, xdis, ydis, 0, 0); break; case ENUMS.MESSAGETYPE.MOUSE_RIGHT_CLICK: mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0); Thread.Sleep(100); mouse_event( MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0); break; case ENUMS.MESSAGETYPE.MOUSE_RIGHT_DOUBLE_CLICK: //双击右键 mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0); Thread.Sleep(100); mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0); break; case ENUMS.MESSAGETYPE.MOUSE_RIGHT_DOWN: mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0); break; case ENUMS.MESSAGETYPE.MOUSE_RIGHT_UP: mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0); break; case ENUMS.MESSAGETYPE.MOUSE_WHEEL: int wheel = big2Small(reader.ReadInt32()); mouse_event(MOUSEEVENTF_WHEEL, 0, 0, wheel, 0); break; case ENUMS.MESSAGETYPE.MOUSE_SET: int xPoint = big2Small(reader.ReadInt32()); int yPoint = big2Small(reader.ReadInt32()); //mouse_event(MOUSEEVENTF_ABSOLUTE, xPoint, yPoint, 0, 0); SetCursorPos(xPoint, yPoint); break; case ENUMS.MESSAGETYPE.START_PIC: mainForm.startSendPicFlags(); break; case ENUMS.MESSAGETYPE.STOP_PIC: mainForm.stopSendPicFlags(); break; case ENUMS.MESSAGETYPE.TEXT: int textLen = big2Small(reader.ReadInt32()); byte[] textByte = reader.ReadBytes(textLen); SendKeys.SendWait(Encoding.UTF8.GetString(textByte)); break; case ENUMS.MESSAGETYPE.BOARDKEY_DOWN: byte keyDown = reader.ReadByte(); keybd_event(keyDown, MapVirtualKey(keyDown, 0), KEYEVENTF_EXTENDEDKEY | 0, 0); break; case ENUMS.MESSAGETYPE.BOARDKEY_UP: byte keyUp = reader.ReadByte(); keybd_event(keyUp, MapVirtualKey(keyUp, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); break; } } catch (Exception ex) { Console.WriteLine(ex.Message); throw new Exception("client is closed"); } }