Пример #1
0
        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);
            }
        }
Пример #2
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");
            }
        }