public void updateDisplayRemote() { TimeWebClient w = new TimeWebClient(); for (; ;) { st.Start(); byte[] data = w.DownloadData(setUri); using (var ms = new MemoryStream(data)) { extBitmap = new Bitmap(ms); } this.Invoke(new MethodInvoker(delegate() { this.Text = rawTitle + prevTime + "ms"; pictureBox1.Image = extBitmap; })); st.Stop(); prevTime = (int)st.ElapsedMilliseconds; st.Reset(); Console.WriteLine("Got frame"); Thread.Sleep(250); } }
public void mainTestThread(int thrid, List <String> ips, camData cdat, string dir, bool DoIpTag) { string thridAsText = "[" + thrid + "] "; cPrint(Color.Black, thridAsText + "Starting thread"); List <String> goodIps = new List <String> { }; TimeWebClient wc = new TimeWebClient(); wc.Credentials = cdat.Creds; foreach (string ip in ips) { //if the viewer form doesnt exist, exit the thread# if (killSwitch) { //cPrint(Color.Red, thridAsText + "Close given! Killing myself!"); //break; } if (!this.IsHandleCreated) { cPrint(Color.Red, thridAsText + "Handle lost! Killing myself!"); break; } remoteTestcounter++; this.Invoke(new MethodInvoker(delegate() { BarMain.Value = remoteTestcounter; this.Text = "Viewer | Progress: " + remoteTestcounter + "/" + ipaCount; })); try { string intIp = ip; if (intIp.EndsWith(":")) { intIp = intIp.Substring(0, intIp.Length - 1); } byte[] dlData = wc.DownloadData("http://" + intIp + cdat.Path); cPrint(Color.DarkGreen, thridAsText + ip + " | 200"); Bitmap bmp; Graphics g; using (var ms = new MemoryStream(dlData)) { bmp = new Bitmap(ms); } if (normalising) { Bitmap tmp = new Bitmap(bmp, setAR.width, setAR.height); bmp = new Bitmap(tmp); tmp.Dispose(); } g = Graphics.FromImage(bmp); String combinedCredsPT = cdat.Creds.UserName + " : " + cdat.Creds.Password; SizeF sizeOfIp = g.MeasureString(intIp, luc); SizeF sizeOfCreds = g.MeasureString(combinedCredsPT, luc); int totalheight = (int)sizeOfIp.Height + (int)sizeOfCreds.Height; int largerWidth; if (sizeOfIp.Width > sizeOfCreds.Width) { largerWidth = (int)sizeOfIp.Width; } else { largerWidth = (int)sizeOfCreds.Width; } totalheight += 3; largerWidth += 3; if (DoIpTag) { if (style == ipStyle.fancy || style == ipStyle.basic) { g.DrawImage(gHandle.generateStamp(intIp, combinedCredsPT, luc, bmp.Width, timestamp, style), 2, 2); } else if (style == ipStyle.barTop) { Bitmap stamp = gHandle.generateStamp(intIp, combinedCredsPT, luc, bmp.Width, timestamp, style); Bitmap temp = new Bitmap(bmp.Width, bmp.Height + stamp.Height); Graphics gtemp = Graphics.FromImage(temp); gtemp.DrawImage(stamp, 0, 0); gtemp.DrawImage(bmp, 0, stamp.Height); bmp = new Bitmap(temp); stamp.Dispose(); temp.Dispose(); gtemp.Dispose(); GC.Collect(); } else if (style == ipStyle.barBottom) { Bitmap stamp = gHandle.generateStamp(intIp, combinedCredsPT, luc, bmp.Width, timestamp, style); Bitmap temp = new Bitmap(bmp.Width, bmp.Height + stamp.Height); Graphics gtemp = Graphics.FromImage(temp); gtemp.DrawImage(bmp, 0, 0); gtemp.DrawImage(stamp, 0, bmp.Height); bmp = new Bitmap(temp); stamp.Dispose(); temp.Dispose(); gtemp.Dispose(); GC.Collect(); } gHandle.tidy(); } else { //not using the graphics object causes System.Runtime.InteropServices.ExternalException g.FillRectangle(Brushes.Black, -1, -1, 1, 1); } remoteSaveCounter++; workingIps.Add(ip); int rscLen = remoteSaveCounter.ToString().Length; string ipSafe = ip.Replace(".", "-"); ipSafe = ipSafe.Replace(":", "-"); Console.WriteLine(bmp.GetType().Name); string saveName = ""; if (anonFileNames) { saveName = RandomString(15) + ".jpg"; } else { saveName = RandomString(5) + "-" + ipSafe + ".jpg"; } if (useOutDir) { File.WriteAllLines(outdir, workingIps); } shiftReg.Insert(0, new shiftItem(bmp.Clone(new Rectangle(0, 0, bmp.Width, bmp.Height), PixelFormat.DontCare), saveName, intIp)); mainPB.Image = shiftReg[0].img; subPBone.Image = shiftReg[1].img; subPBtwo.Image = shiftReg[2].img; subPBthree.Image = shiftReg[3].img; subPBfour.Image = shiftReg[4].img; subPBfive.Image = shiftReg[5].img; subPBsix.Image = shiftReg[6].img; Bitmap save = bmp.Clone(new Rectangle(0, 0, bmp.Width, bmp.Height), PixelFormat.DontCare); save.Save(dir + "/" + saveName, ImageFormat.Jpeg); cPrint(Color.DarkGreen, thridAsText + "Wrote " + new FileInfo(dir + "/" + saveName).Length + " bytes to disk"); if (shiftReg.Count > 8) { shiftReg.RemoveRange(8, shiftReg.Count - 8); } save.Dispose(); bmp.Dispose(); g.Dispose(); GC.Collect(); } catch (WebException ex) { if (ex.Status == WebExceptionStatus.ProtocolError) { var response = ex.Response as HttpWebResponse; if (response != null) { cPrint(Color.Gray, thridAsText + ip + " | " + (int)response.StatusCode); } else { cPrint(Color.Gray, thridAsText + ip + " | Null"); } } else { cPrint(Color.Gray, thridAsText + ip + " | Down"); } } catch { //sometimes ThreadAbortException is thrown when killing threads, dont show any errors after killswitch is triggered. if (!killSwitch) { cPrint(Color.Red, thridAsText + ip + " | Internal error"); } } } deadThreads++; cPrint(Color.Black, thridAsText + "Reaching end. Thread will exit."); }