Пример #1
0
        /**线程接收函数*/
        private void recPacketFun(object clientSocket)
        {
            if (clientSocket == null)
            {
                return;
            }
            Socket client = (Socket)clientSocket;

            if (!client.Connected)
            {
                return;
            }
            NetworkStream stream = new NetworkStream(client);
            BinaryReader  reader = new BinaryReader(stream);

            while (isClientRun)
            {
                //Console.WriteLine("recPacketThread***********");
                try
                {
                    ENUMS.MESSAGETYPE messageType = (ENUMS.MESSAGETYPE)reader.ReadByte();
                    CmdProcess.processCmd(this, reader, messageType);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("readThread:client is off line");
                    stopClient();/**clean socket*/
                    Console.WriteLine(ex.Message);
                    ErrorInfo.getErrorWriter().writeErrorMassageToFile(ex.Message + "\r\n" + ex.StackTrace + "\r\n");
                }
            }
        }
Пример #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");
            }
        }