Example #1
0
        private void HandleScreenshotRequest(OperationRequest operationRequest, SendParameters sendParameters)
        {
            var param   = ScreenshotRequest.Read(operationRequest.Parameters);
            var handler = new ScreenshotHandler();

            //launch client and make screens
            var metaInfoPathName = handler.RunClientAndWait(param.topicId, param.discussionId);

            var screenDict = handler.MetaInfoToDict(metaInfoPathName);

            File.Delete(metaInfoPathName);

            //build screenshot response
            var resp = new Dictionary <int, byte[]>();

            foreach (var kvp in screenDict)
            {
                resp.Add(kvp.Key, File.ReadAllBytes(kvp.Value));
            }

            this.SendOperationResponse(
                new OperationResponse((byte)DiscussionOpCode.ScreenshotRequest, ScreenshotResponse.Write(resp)),
                sendParameters);

            //cleanup
            foreach (var kvp in screenDict)
            {
                File.Delete(kvp.Value);
            }
        }
        public async Task <ActionResult> GetScreenshot(string id)
        {
            ScreenshotResponse screenshotResponse = await this._agent.GetScreenshot(id);

            if (screenshotResponse == null)
            {
                return(this.NotFound());
            }

            Screenshot result = new Screenshot
            {
                MediaType    = screenshotResponse.MediaType,
                ImageContent = screenshotResponse.ImageContent
            };

            return(this.Ok(result));
        }
Example #3
0
        /// <summary>
        /// The callback for when the screenshot has been taken
        /// </summary>
        /// <param name="clientPID"></param>
        /// <param name="status"></param>
        /// <param name="screenshotResponse"></param>
        void Callback(Int32 clientPID, ResponseStatus status, ScreenshotResponse screenshotResponse)
        {
            //try
            //{
            //    if (screenshotResponse != null && screenshotResponse.CapturedBitmap != null)
            //    {
            //        Bitmap bmp = screenshotResponse.CapturedBitmapAsImage;
            //        Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
            //        System.Drawing.Imaging.BitmapData bmpData =
            //            bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite,
            //            bmp.PixelFormat);
            //        bmp.UnlockBits(bmpData);
            //        ScreenshotManager_OnScreenshotDebugMessage(clientPID, "Size is " + bmp.Size.ToString());
            //        //MessageBox.Show("Size is " + screenshotResponse.CapturedBitmapAsImage.Size.ToString());


            //        String dir=_process.ProcessName+@"\"+_process.StartTime+@"\";
            //        String file = _process.ProcessName + "_" + DateTime.Now + ".jpg";

            //        dir = @"c:\temp\" + dir.Replace(':','-').Replace(' ','-');
            //        file = file.Replace(':', '-').Replace(' ', '-');


            //        ScreenshotManager_OnScreenshotDebugMessage(clientPID, "Saving to " + dir + file);
            //        if (!Directory.Exists(dir)) {
            //            Directory.CreateDirectory(dir);
            //        }
            //        bmp.Save(dir+file, ImageFormat.Jpeg);
            //        ScreenshotManager_OnScreenshotDebugMessage(clientPID, "Saved to "+dir+file);
            //     }

            //    //Thread t = new Thread(new ThreadStart(DoRequest));
            //    //t.Start();
            //}
            //catch(Exception e)
            //{
            //    ScreenshotManager_OnScreenshotDebugMessage(clientPID, e.ToString());
            //}
        }
Example #4
0
        /// <summary>
        /// The callback for when the screenshot has been taken
        /// </summary>
        /// <param name="clientPID"></param>
        /// <param name="status"></param>
        /// <param name="screenshotResponse"></param>
        void Callback(Int32 clientPID, ResponseStatus status, ScreenshotResponse screenshotResponse)
        {
            try
            {
                if (screenshotResponse != null && screenshotResponse.CapturedBitmap != null)
                {
                    pictureBox1.Invoke(new MethodInvoker(delegate()
                    {
                        if (pictureBox1.Image != null)
                        {
                            pictureBox1.Image.Dispose();
                        }
                        pictureBox1.Image = screenshotResponse.CapturedBitmapAsImage;
                    })
                                       );
                }

                Thread t = new Thread(new ThreadStart(DoRequest));
                t.Start();
            }
            catch
            {
            }
        }
Example #5
0
        /// <summary>
        /// Колбэк, когда получен во внедряемой библиотеке получен скриншот
        /// </summary>
        /// <param name="clientPID">Идентификатор процесса</param>
        /// <param name="status">Статус ответа</param>
        /// <param name="screenshotResponse">Данные с ответом</param>
        public void ScreenshotManagerCallback(Int32 clientPID, ResponseStatus status, ScreenshotResponse screenshotResponse)
        {
            if (IsLocked)
            {
                inRefresh = false;
                return;
            }

            try
            {
                if (screenshotResponse != null && screenshotResponse.CapturedBitmap != null)
                {
                    // Сохраняем битмап в собственный буфер
                    AssignBitmapFromBytes(screenshotResponse.CapturedBitmap);
                    // Отсылает сообщение об успешном обновлении
                    ScreenshotUpdate(window);
                }
            }
            finally
            {
                inRefresh = false;
            }
        }
 /// <summary>
 /// The callback for when the screenshot has been taken
 /// </summary>
 /// <param name="clientPID"></param>
 /// <param name="status"></param>
 /// <param name="screenshotResponse"></param>
 public static void processShot(Int32 clientPID, ResponseStatus status, ScreenshotResponse sr)
 {
 }
Example #7
0
        public void OnOperationResponse(OperationResponse operationResponse)
        {
            switch (operationResponse.OperationCode)
            {
            case (byte)DiscussionOpCode.Test:
                //Console.WriteLine(operationResponse.Parameters[(byte)DiscussionParamKey.Message]);
                break;

            case (byte)LiteOpCode.Join:
                Console.WriteLine("OpResp: Join " + operationResponse.Parameters);
                if (operationResponse.Parameters.ContainsKey((byte)LiteOpKey.ActorNr))
                {
                    this.localUsr.ActNr = (int)operationResponse.Parameters[(byte)LiteOpKey.ActorNr];
                }
                if (onJoin != null)
                {
                    onJoin();
                }
                break;

            case (byte)LiteOpCode.Leave:
                ResetConnState();
                break;

            case (byte)OperationCode.GetProperties:
                const byte magic = 249;
                Hashtable  resp  = (Hashtable)operationResponse.Parameters[(byte)magic];

                foreach (var k in resp.Keys)
                {
                    int       ActorNr = (int)k;
                    Hashtable props   = (Hashtable)resp[k];
                    string    name    = (string)props[(byte)ActProps.Name];
                    int       usrDbId = (int)props[(byte)ActProps.DbId];

                    DiscUser usr;
                    if (usersOnline.ContainsKey(ActorNr))
                    {
                        usr         = usersOnline[ActorNr];
                        usr.Name    = name;
                        usr.usrDbId = usrDbId;
                    }
                    else
                    {
                        usr         = new DiscUser(name, ActorNr);
                        usr.usrDbId = usrDbId;
                        usersOnline.Add(ActorNr, usr);

                        if (userJoins != null)
                        {
                            userJoins(usr);
                        }
                    }

                    DbgPrintOnlineList();
                }
                break;

            case (byte)DiscussionOpCode.ScreenshotRequest:
                if (onScreenshotResponse != null)
                {
                    onScreenshotResponse(ScreenshotResponse.Read(operationResponse.Parameters).screenshots);
                }
                break;

            default:
                //Console.WriteLine("Unhandled OnOperationResponse " + operationResponse.OperationCode);
                break;
            }
        }