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)); }
/// <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()); //} }
/// <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 { } }
/// <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) { }
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; } }