Ejemplo n.º 1
0
            /*
             * private void sendPack(MemoryStream mem, NetworkStream stream)
             * {
             *  long headersize = mem.Length;
             *  byte[] packetLength = BitConverter.GetBytes(headersize);
             *  stream.Write(packetLength, 0, 4);
             *  mem.WriteTo(stream);
             *  stream.Flush();
             * }
             */

            public BabylonMS.BMSPack InitPack()
            {
                BabylonMS.BMSPack outputpack = new BabylonMS.BMSPack();
                outputpack.AddField("CMD", BabylonMS.BabylonMS.CONST_FT_INT8).Value(VRMainContentExporter.VRCEShared.CONST_IC_EVENT);
                BabylonMS.BMSField btn = outputpack.AddField("BUTTON", BabylonMS.BabylonMS.CONST_FT_INT32);
                BabylonMS.BMSField X   = outputpack.AddField("X", BabylonMS.BabylonMS.CONST_FT_INT16);
                BabylonMS.BMSField Y   = outputpack.AddField("Y", BabylonMS.BabylonMS.CONST_FT_INT16);
                return(outputpack);
            }
Ejemplo n.º 2
0
        //T O  A N D R O I D
        //public void sendNoticeToAndroidsNewContent(BabylonMS.BMSPack inputpack, StreamReader reader, StreamWriter writer)
        public void sendNoticeToAndroidsNewContent(BabylonMS.BMSEventSessionParameter session)
        {
            BabylonMS.BMSPack androidpack;
            foreach (AndroidDescriptor android in AndroidsList)
            {
                try
                {
                    if (android.isEnabled(session))  //adott android mit kaphat meg...
                    {
                        byte cmd = (byte)session.inputPack.GetFieldByName("CMD").getValue(0);
                        switch (cmd)
                        {
                        case VRCEShared.CONST_COMMAND_STORE:     //->CONST_ANDROIDCOMMAND_CHANGE_HWND
                            //Translate pack
                            androidpack = new BabylonMS.BMSPack();
                            session.inputPack.CopyTo(androidpack);
                            androidpack.GetFieldByName("CMD").clearValue().Value(VRCEShared.CONST_ANDROIDCOMMAND_CHANGE_HWND);      //ClearValue because addarray to next position (2.)
                            androidpack.AddField("PCKCNT", BabylonMS.BabylonMS.CONST_FT_INT8).Value((byte)android.sentPackCounter++);
                            BabylonMS.BabylonMS.TransferPacket(android.writer, androidpack, true, android.locker);
                            break;

                        case VRCEShared.CONST_ANDROIDCOMMAND_LOST_WINDOW:
                            androidpack = session.inputPack;
                            androidpack.AddField("PCKCNT", BabylonMS.BabylonMS.CONST_FT_INT8).Value((byte)android.sentPackCounter++);
                            BabylonMS.BabylonMS.TransferPacket(android.writer, androidpack, true, android.locker);
                            break;

                        case VRCEShared.CONST_IC_EVENT:     //->CONST_ANDROIDCOMMAND_IC_EVENT
                            androidpack = new BabylonMS.BMSPack();
                            session.inputPack.CopyTo(androidpack);
                            androidpack.GetFieldByName("CMD").clearValue().Value(VRCEShared.CONST_ANDROIDCOMMAND_IC_EVENT);      //ClearValue because addarray to next position (2.)
                            ScreenCapture focused = ScreenCapture.getFocused();
                            if (focused != null)
                            {
                                androidpack.AddField("LEFT", BabylonMS.BabylonMS.CONST_FT_INT16).Value((Int16)ScreenCapture.frame[0]);
                                androidpack.AddField("TOP", BabylonMS.BabylonMS.CONST_FT_INT16).Value((Int16)ScreenCapture.frame[1]);
                            }
                            androidpack.AddField("PCKCNT", BabylonMS.BabylonMS.CONST_FT_INT8).Value((byte)android.sentPackCounter++);
                            BabylonMS.BabylonMS.TransferPacket(android.writer, androidpack, true, android.locker);
                            break;
                        }
                    }
                }
                catch (Exception)
                {
                }
            }
        }
Ejemplo n.º 3
0
        static void lista()
        {
            Process[] processes = Process.GetProcesses();
            //int i = 0;
            IntPtr self = Process.GetCurrentProcess().MainWindowHandle;

            foreach (Process p in processes)
            {
                if (!String.IsNullOrEmpty(p.MainWindowTitle))
                {
                    long typ = (long)WindowType(p.MainWindowHandle); //https://msdn.microsoft.com/en-us/library/windows/desktop/ms632600(v=vs.85).aspx
                    if (p.MainWindowHandle.ToInt64() != self.ToInt64())
                    {
                        if (false || (
                                //((typ & 0x80000000L)==0) &&
                                ((typ & 0x20000000L) == 0)
                                )
                            )
                        {
                            if (DEBUG_OnlyWin)
                            {
                                if ((p.MainWindowTitle.CompareTo("{C:\\Program Files (x86)\\VideoLAN\\VLC} - Far 3.0.4400 x86") == 0) ||
                                    (p.MainWindowTitle.CompareTo("{C:\\Program Files (x86)\\VideoLAN\\VLC} - Far 3.0.4545 x86") == 0) ||
                                    (p.MainWindowTitle.CompareTo("Számológép") == 0)
                                    )
                                {
                                    outputpack.AddField("HWND", BabylonMS.BabylonMS.CONST_FT_INT64);
                                    outputpack.GetField(outputpack.FieldsCount() - 1).Value(p.MainWindowHandle.ToInt64());
                                }
                            }
                            else
                            {
                                if ((!p.MainWindowTitle.StartsWith("Android Monitor")) &&
                                    (!p.MainWindowTitle.StartsWith("Prelimutens")) &&
                                    (!p.MainWindowTitle.StartsWith("VRMainContentExporter")))
                                {
                                    outputpack.AddField("HWND", BabylonMS.BabylonMS.CONST_FT_INT64);
                                    outputpack.GetField(outputpack.FieldsCount() - 1).Value(p.MainWindowHandle.ToInt64());
                                }
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 4
0
 public void BringToFront()
 {
     focused = this;
     BabylonMS.BMSPack pack = new BabylonMS.BMSPack();
     pack.Attribs = screensession.outputPack.Attribs;
     pack.setMinTimeWithoutStart(screensession.outputPack.MinTime);
     pack.AddField("CMD", BabylonMS.BabylonMS.CONST_FT_INT8).Value(VRCEShared.CONST_CAPTURE_FOCUS_WINDOW);
     screensession.TransferPacket(true, pack); //v;dett sempahore lock
 }
Ejemplo n.º 5
0
        //void InputFrame_fromImageBuffer(String partnerUUID, BabylonMS.BMSPack imagebufferPack, StreamReader imagebufferReader, StreamWriter imagebufferWriter)
        void InputFrame_fromImageBuffer(BabylonMS.BMSEventSessionParameter imagebuffersession)
        {
            // The Imgebuffer sent some hwnd image data
            //please send to requester android
            try
            {
                byte              cmd         = (byte)imagebuffersession.inputPack.GetFieldByName("CMD").getValue(0);
                Int64             ID          = (Int64)imagebuffersession.inputPack.GetFieldByName("REQID").getValue(0);
                AndroidDescriptor thisAndroid = getAndroidDescriptor(ID);

                switch (cmd)
                {
                case VRCEShared.CONST_COMMAND_RETRIEVE:
                    if (imagebuffersession.inputPack.FieldsCount() > 2)
                    {
                        BabylonMS.BMSPack pack = new BabylonMS.BMSPack();
                        pack.AddField("CMD", BabylonMS.BabylonMS.CONST_FT_INT8).Value(VRCEShared.CONST_ANDROIDCOMMAND_RETRIEVE_ALL);
                        pack.AddField("PCKCNT", BabylonMS.BabylonMS.CONST_FT_INT8).Value((byte)thisAndroid.sentPackCounter++);
                        int cnt = (imagebuffersession.inputPack.FieldsCount() - 2) / 3;
                        for (int i = 0; i < cnt; i++)
                        {
                            byte idx = (byte)imagebuffersession.inputPack.GetField((i * 4) + 2).getValue(0);
                            pack.AddField("IDX", BabylonMS.BabylonMS.CONST_FT_INT8).Value(idx);
                            pack.AddField("HWND", BabylonMS.BabylonMS.CONST_FT_INT64).Value(imagebuffersession.inputPack.GetField((i * 4) + 3).getValue(0));
                            pack.AddField("GROUP", BabylonMS.BabylonMS.CONST_FT_UUID).ValueAsUUID(imagebuffersession.inputPack.GetField((i * 4) + 4).GetUUIDValue(0));
                            pack.AddField("IMAGE", BabylonMS.BabylonMS.CONST_FT_BYTE).Value(imagebuffersession.inputPack.GetField((i * 4) + 5).getValue());
                        }
                        BabylonMS.BabylonMS.TransferPacket(thisAndroid.writer, pack, true, thisAndroid.locker);      //transfer images to requester android
                    }
                    break;
                }
            }
            finally { }
        }
Ejemplo n.º 6
0
        static void InputFrame(BabylonMS.BabylonMS bms, BabylonMS.BMSEventSessionParameter session) //newinput frame or continuous
        {
            String partnerUUID = session.shipUUID;


            bool  isFirstTime;
            Int64 ID = IDGenerator.GetId(session.reader, out isFirstTime); //The client ID from reader instance unique ID

            try
            {
                /*
                 * //Az inputpack paramétermintázatának ellenőrzésére szolgál (nem szükséges)
                 * //Elválasztva egymás után a paramétermintázatok.
                 * session.inputPack.AcceptedEnergyPattern(new byte[] {
                 *  BabylonMS.BabylonMS.CONST_FT_INT8,BabylonMS.BabylonMS.CONST_FT_INT64,BabylonMS.BabylonMS.CONST_FT_BYTE,BabylonMS.BabylonMS.CONST_FT_END,
                 *  BabylonMS.BabylonMS.CONST_FT_INT8,BabylonMS.BabylonMS.CONST_FT_INT64,BabylonMS.BabylonMS.CONST_FT_END
                 * }
                 * );
                 */

                byte command = (byte)session.inputPack.GetField(0).getValue(0);
                BabylonMS.BMSPack outputpack = new BabylonMS.BMSPack();
                Int64             hwnd;
                String            group;
                String            key;
                MediaBuffer       buf;
                //String owner = partnerUUID;
                switch (command)
                {
                case VRMainContentExporter.VRCEShared.CONST_COMMAND_GETBUFFER:
                    //TODO : NOT TESTED
                    outputpack.AddField("CMD", BabylonMS.BabylonMS.CONST_FT_INT8).Value(command);
                    //bool first = true;
                    BabylonMS.BMSField f1 = null;
                    BabylonMS.BMSField f2 = null;
                    BabylonMS.BMSField f3 = null;
                    BabylonMS.BMSField f4 = null;
                    BabylonMS.BMSField f5 = null;
                    int  cnt = mediaserver.SIBuffer.Count();
                    byte idx = 0;
                    for ( ; idx < cnt; idx++)
                    {
                        buf = mediaserver.SIBuffer[idx];
                        if (idx == 0)
                        {
                            f1 = outputpack.AddField("IDX", BabylonMS.BabylonMS.CONST_FT_INT8);
                            f2 = outputpack.AddField("HWND", BabylonMS.BabylonMS.CONST_FT_INT64);
                            f3 = outputpack.AddField("GROUP", BabylonMS.BabylonMS.CONST_FT_UUID);     //UUID length string array
                            f4 = outputpack.AddField("DATE", BabylonMS.BabylonMS.CONST_FT_INT64);
                            f5 = outputpack.AddField("USAGE", BabylonMS.BabylonMS.CONST_FT_INT32);
                        }
                        f1.Value(idx);
                        f2.Value(buf.hwnd);
                        f3.ValueAsUUID(buf.owner);     //mivel owner = UUID
                        f4.Value(buf.created.Ticks);
                        f5.Value(buf.usage);
                    }
                    if (idx > 0)
                    {
                        bms.TransferPacket(session.writer, outputpack, true);
                    }
                    break;

                case VRMainContentExporter.VRCEShared.CONST_COMMAND_EXIST:
                    //TODO : NOT TESTED
                    hwnd  = session.inputPack.GetFieldByName("HWND").getValue(0);
                    group = session.inputPack.GetFieldByName("GROUP").GetUUIDValue(0);
                    key   = System.Text.Encoding.ASCII.GetString(session.inputPack.GetField(2).getValue());
                    outputpack.AddField("CMD", BabylonMS.BabylonMS.CONST_FT_INT8).Value(command);
                    outputpack.AddField("HWND", BabylonMS.BabylonMS.CONST_FT_INT64).Value(hwnd);
                    outputpack.AddField("GROUP", BabylonMS.BabylonMS.CONST_FT_UUID).ValueAsUUID(group);
                    sema1.WaitOne();
                    outputpack.AddField("EXISTS", BabylonMS.BabylonMS.CONST_FT_INT8).Value(mediaserver.Exists(group, key, hwnd));
                    sema1.Release();
                    bms.TransferPacket(session.writer, outputpack, true);
                    break;

                case VRMainContentExporter.VRCEShared.CONST_COMMAND_STORE:
                    hwnd  = session.inputPack.GetFieldByName("HWND").getValue(0);
                    group = session.inputPack.GetFieldByName("GROUP").GetUUIDValue(0);
                    byte[] image = session.inputPack.GetFieldByName("IMAGE").getValue();
                    sema1.WaitOne();
                    byte[] res     = mediaserver.indexOfBufferAndStore(group, MediaServer.md5(image), image, hwnd);
                    bool   refresh = clientFollower.IsNeedRefresh(ID, res[0], res[1]);
                    sema1.Release();
                    outputpack.AddField("CMD", BabylonMS.BabylonMS.CONST_FT_INT8).Value(command);
                    outputpack.AddField("HWND", BabylonMS.BabylonMS.CONST_FT_INT64).Value(hwnd);
                    outputpack.AddField("GROUP", BabylonMS.BabylonMS.CONST_FT_UUID).ValueAsUUID(group);
                    outputpack.AddField("MODE", BabylonMS.BabylonMS.CONST_FT_INT8).Value(res[0]);
                    outputpack.AddField("IDX", BabylonMS.BabylonMS.CONST_FT_INT8).Value(res[1]);
                    outputpack.AddField("REFRESH", BabylonMS.BabylonMS.CONST_FT_INT8).Value(refresh);
                    if ((refresh) && (res[0] != VRMainContentExporter.VRCEShared.CONST_MODE_BFFOUND))
                    {
                        MediaBuffer buf2 = mediaserver.Retrieve(res[1]);
                        if (buf2 != null)
                        {
                            outputpack.AddField("IMAGE", BabylonMS.BabylonMS.CONST_FT_BYTE).Value(buf2.buffer);
                        }
                    }
                    bms.TransferPacket(session.writer, outputpack, true);
                    //Console.WriteLine();
                    break;

                case VRMainContentExporter.VRCEShared.CONST_COMMAND_RETRIEVE:
                    outputpack.AddField("CMD", BabylonMS.BabylonMS.CONST_FT_INT8).Value(command);
                    Int64 androidReqID = session.inputPack.GetFieldByName("REQID").getValue(0);
                    outputpack.AddField("REQID", BabylonMS.BabylonMS.CONST_FT_INT64).Value(androidReqID);
                    if (session.inputPack.FieldsCount() > 2)
                    {
                        //TODO mert nem ellenőriztem ;s mert lehet hogy a UUID+HWND parost kellene lek;rdezni!!!!
                        for (int i = 2; i < session.inputPack.FieldsCount(); i += 2)   //CMD in first position
                        {
                            hwnd  = session.inputPack.GetField(i).getValue(0);
                            group = session.inputPack.GetField(i + 1).GetUUIDValue(0);
                            sema1.WaitOne();
                            buf = mediaserver.Retrieve(group, hwnd);
                            outputpack.AddField("IDX", BabylonMS.BabylonMS.CONST_FT_INT8).Value((byte)buf.position_in_buffer);
                            outputpack.AddField("HWND", BabylonMS.BabylonMS.CONST_FT_INT64).Value(hwnd);
                            outputpack.AddField("GROUP", BabylonMS.BabylonMS.CONST_FT_UUID).ValueAsUUID(group);
                            outputpack.AddField("IMAGE", BabylonMS.BabylonMS.CONST_FT_BYTE).Value(buf.buffer);
                            sema1.Release();
                        }
                    }
                    else
                    {
                        //All uptodate element from buffer because no specified sent HWND
                        List <string> owners = mediaserver.GetOwners();
                        foreach (var o in owners)
                        {
                            List <Int64> hwnds = mediaserver.GetOwnerHwnds(o);
                            foreach (var h in hwnds)
                            {
                                sema1.WaitOne();
                                buf = mediaserver.Retrieve(o, h);
                                if (buf != null)
                                {
                                    outputpack.AddField("IDX", BabylonMS.BabylonMS.CONST_FT_INT8).Value((byte)buf.position_in_buffer);
                                    BabylonMS.BMSField fi = outputpack.AddField("HWND", BabylonMS.BabylonMS.CONST_FT_INT64);
                                    fi.Value(h);
                                    outputpack.AddField("GROUP", BabylonMS.BabylonMS.CONST_FT_UUID).ValueAsUUID(o);
                                    outputpack.AddField("IMAGE", BabylonMS.BabylonMS.CONST_FT_BYTE).Value(buf.buffer);
                                }
                                sema1.Release();
                            }
                        }
                    }
                    bms.TransferPacket(session.writer, outputpack, true);
                    break;
                }
            }
            catch (Exception) {
            };
        }