private static void TryCancelAnalysis() { if (AnalysisClass.analysisWorker.IsBusy) { AnalysisClass.timer.Stop(); AnalysisClass.analysisWorker.CancelAsync(); AnalysisClass.userCancelAnalysis = true; IntPtr intPtr = new IntPtr(UEViewer.FindWindow(null, "UE Viewer")); if ((intPtr == new IntPtr(0) ? false : !AnalysisClass.lostHandles.Contains(intPtr))) { UEViewer.SendMessageA(intPtr, 16, 0, 0); } } }
private static void timer_Tick(object sender, EventArgs e) { if (AnalysisClass.ue != null) { if ((!AnalysisClass.isSingleAnalysis ? true : !AnalysisClass.ue.HasImage)) { IntPtr intPtr = new IntPtr(UEViewer.FindWindow(null, "UE Viewer")); if ((intPtr == new IntPtr(0) ? false : !AnalysisClass.lostHandles.Contains(intPtr))) { AnalysisClass.lostHandles.Add(intPtr); Thread.Sleep(AnalysisClass.interval); Graphics graphic = Graphics.FromHwnd(intPtr); UEViewer.RECT rECT = new UEViewer.RECT(); UEViewer.GetWindowRect(intPtr, ref rECT); int right = rECT.Right - rECT.Left; int bottom = rECT.Bottom - rECT.Top; Bitmap bitmap = new Bitmap(right - 16, bottom - 38, graphic); Graphics graphic1 = Graphics.FromImage(bitmap); IntPtr hdc = graphic.GetHdc(); IntPtr hdc1 = graphic1.GetHdc(); UEViewer.BitBlt(hdc1, 0, 0, right - 16, bottom - 38, hdc, 0, 0, 13369376); graphic.ReleaseHdc(hdc); graphic1.ReleaseHdc(hdc1); Bitmap bitmap1 = new Bitmap(bitmap, right - 16, bottom - 38); UEViewer uEViewer = AnalysisClass.ue; string str = AnalysisClass.outputModelFolderName; Guid guid = Guid.NewGuid(); uEViewer.TempFileName = Path.Combine(str, string.Concat(guid.ToString(), ".jpg")); bitmap1.Save(AnalysisClass.ue.TempFileName, ImageFormat.Jpeg); AnalysisClass.ue.HasImage = true; if (!AnalysisClass.isSingleAnalysis) { UEViewer.SendMessageA(intPtr, 16, 0, 0); } } } else { AnalysisClass.timer.Stop(); } } }