private static string GetSavePath(Type cls, TimelineHandler handler, TimelineEvent timelineEvent, string fileExtension) { _log.Trace($"{cls} event - {timelineEvent}"); WorkingHours.Is(handler); if (timelineEvent.DelayBefore > 0) { Thread.Sleep(timelineEvent.DelayBefore); } Thread.Sleep(3000); var rand = RandomFilename.Generate(); var dir = timelineEvent.CommandArgs[0].ToString(); if (dir.Contains("%")) { dir = Environment.ExpandEnvironmentVariables(dir); } if (Directory.Exists(dir)) { Directory.CreateDirectory(dir); } var path = $"{dir}\\{rand}.{fileExtension}"; //if directory does not exist, create! _log.Trace($"Checking directory at {path}"); var f = new FileInfo(path).Directory; if (f == null) { _log.Trace($"Directory does not exist, creating directory at {f.FullName}"); Directory.CreateDirectory(f.FullName); } try { if (File.Exists(path)) { File.Delete(path); } } catch (Exception e) { _log.Debug(e); } _log.Trace($"{cls} saving to path - {path}"); return(path); }
private void ExecuteEvents(Timeline timeline, TimelineHandler handler) { try { foreach (var timelineEvent in handler.TimeLineEvents) { try { _log.Trace($"Excel event - {timelineEvent}"); WorkingHours.Is(handler); if (timelineEvent.DelayBefore > 0) { Thread.Sleep(timelineEvent.DelayBefore); } if (timeline != null) { var processIds = ProcessManager.GetPids(ProcessManager.ProcessNames.Excel).ToList(); if (processIds.Count > timeline.TimeLineHandlers.Count(o => o.HandlerType == HandlerType.Excel)) { return; } } // start excel and turn off msg boxes var excelApplication = new Excel.Application { DisplayAlerts = false, Visible = true }; try { excelApplication.WindowState = XlWindowState.xlMinimized; foreach (var item in excelApplication.Workbooks) { item.Windows[1].WindowState = XlWindowState.xlMinimized; } } catch (Exception e) { _log.Trace($"Could not minimize: {e}"); } // create a utils instance, not need for but helpful to keep the lines of code low var utils = new CommonUtils(excelApplication); _log.Trace("Excel adding workbook"); // add a new workbook var workBook = excelApplication.Workbooks.Add(); _log.Trace("Excel adding worksheet"); var workSheet = (Excel.Worksheet)workBook.Worksheets[1]; // draw back color and perform the BorderAround method workSheet.Range("$B2:$B5").Interior.Color = utils.Color.ToDouble(Color.DarkGreen); workSheet.Range("$B2:$B5").BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlMedium, XlColorIndex.xlColorIndexAutomatic); // draw back color and border the range explicitly workSheet.Range("$D2:$D5").Interior.Color = utils.Color.ToDouble(Color.DarkGreen); workSheet.Range("$D2:$D5") .Borders[(Excel.Enums.XlBordersIndex)XlBordersIndex.xlInsideHorizontal] .LineStyle = XlLineStyle.xlDouble; workSheet.Range("$D2:$D5") .Borders[(Excel.Enums.XlBordersIndex)XlBordersIndex.xlInsideHorizontal] .Weight = 4; workSheet.Range("$D2:$D5") .Borders[(Excel.Enums.XlBordersIndex)XlBordersIndex.xlInsideHorizontal] .Color = utils.Color.ToDouble(Color.Black); var writeSleep = ProcessManager.Jitter(100); Thread.Sleep(writeSleep); workSheet.Cells[1, 1].Value = "We have 2 simple shapes created."; var rand = RandomFilename.Generate(); var dir = timelineEvent.CommandArgs[0].ToString(); if (dir.Contains("%")) { dir = Environment.ExpandEnvironmentVariables(dir); } if (Directory.Exists(dir)) { Directory.CreateDirectory(dir); } var path = $"{dir}\\{rand}.xlsx"; //if directory does not exist, create! _log.Trace($"Checking directory at {path}"); var f = new FileInfo(path).Directory; if (f == null) { _log.Trace($"Directory does not exist, creating directory at {f.FullName}"); Directory.CreateDirectory(f.FullName); } try { if (File.Exists(path)) { File.Delete(path); } } catch (Exception e) { _log.Error($"Excel file delete exception: {e}"); } _log.Trace($"Excel saving to path - {path}"); workBook.SaveAs(path); FileListing.Add(path); Report(handler.HandlerType.ToString(), timelineEvent.Command, timelineEvent.CommandArgs[0].ToString()); if (timelineEvent.DelayAfter > 0) { //sleep and leave the app open _log.Trace($"Sleep after for {timelineEvent.DelayAfter}"); Thread.Sleep(timelineEvent.DelayAfter - writeSleep); } // close excel and dispose reference excelApplication.Quit(); excelApplication.Dispose(); excelApplication = null; workBook = null; workSheet = null; try { Marshal.ReleaseComObject(excelApplication); } catch { } try { Marshal.FinalReleaseComObject(excelApplication); } catch { } GC.Collect(); } catch (Exception e) { _log.Error($"Excel handler exception: {e}"); } finally { Thread.Sleep(5000); } } } catch (Exception e) { _log.Error(e); } finally { KillApp(); _log.Trace("Excel closing..."); } }
private void ExecuteEvents(Timeline timeline, TimelineHandler handler) { try { foreach (var timelineEvent in handler.TimeLineEvents) { try { _log.Trace($"PowerPoint event - {timelineEvent}"); WorkingHours.Is(handler); if (timelineEvent.DelayBefore > 0) { Thread.Sleep(timelineEvent.DelayBefore); } if (timeline != null) { var processIds = ProcessManager.GetPids(ProcessManager.ProcessNames.PowerPoint).ToList(); if (processIds.Count > timeline.TimeLineHandlers.Count(o => o.HandlerType == HandlerType.PowerPoint)) { return; } } var powerApplication = new PowerPoint.Application { DisplayAlerts = PpAlertLevel.ppAlertsNone, Visible = MsoTriState.msoTrue }; try { powerApplication.WindowState = PpWindowState.ppWindowMinimized; } catch (Exception e) { _log.Trace($"Could not minimize: {e}"); } // add a new presentation with one new slide var presentation = powerApplication.Presentations.Add(MsoTriState.msoTrue); presentation.Slides.Add(1, PpSlideLayout.ppLayoutClipArtAndVerticalText); var writeSleep = ProcessManager.Jitter(100); Thread.Sleep(writeSleep); // save the document var rand = RandomFilename.Generate(); var dir = timelineEvent.CommandArgs[0].ToString(); if (dir.Contains("%")) { dir = Environment.ExpandEnvironmentVariables(dir); } if (Directory.Exists(dir)) { Directory.CreateDirectory(dir); } var path = $"{dir}\\{rand}.pptx"; //if directory does not exist, create! _log.Trace($"Checking directory at {path}"); var f = new FileInfo(path).Directory; if (f == null) { _log.Trace($"Directory does not exist, creating directory at {path}"); Directory.CreateDirectory(path); } try { if (File.Exists(path)) { File.Delete(path); } } catch (Exception e) { _log.Debug(e); } Thread.Sleep(5000); presentation.SaveAs(path); FileListing.Add(path); Report(handler.HandlerType.ToString(), timelineEvent.Command, timelineEvent.CommandArgs[0].ToString()); if (timelineEvent.DelayAfter > 0) { //sleep and leave the app open _log.Trace($"Sleep after for {timelineEvent.DelayAfter}"); Thread.Sleep(timelineEvent.DelayAfter - writeSleep); } // close power point and dispose reference powerApplication.Quit(); powerApplication.Dispose(); powerApplication = null; presentation = null; try { Marshal.ReleaseComObject(powerApplication); } catch { } try { Marshal.FinalReleaseComObject(powerApplication); } catch { } GC.Collect(); } catch (Exception e) { _log.Debug(e); } finally { Thread.Sleep(5000); } } } catch (Exception e) { _log.Debug(e); } finally { KillApp(); _log.Trace("PowerPoint closing..."); } }
private void ExecuteEvents(Timeline timeline, TimelineHandler handler) { try { foreach (TimelineEvent timelineEvent in handler.TimeLineEvents) { try { _log.Trace($"Word event - {timelineEvent}"); WorkingHours.Is(handler); if (timelineEvent.DelayBefore > 0) { Thread.Sleep(timelineEvent.DelayBefore); } if (timeline != null) { System.Collections.Generic.List <int> pids = ProcessManager.GetPids(ProcessManager.ProcessNames.Word).ToList(); if (pids.Count > timeline.TimeLineHandlers.Count(o => o.HandlerType == HandlerType.Word)) { return; } } // start word and turn off msg boxes Word.Application wordApplication = new Word.Application { DisplayAlerts = WdAlertLevel.wdAlertsNone, Visible = true }; // add a new document Word.Document newDocument = wordApplication.Documents.Add(); try { wordApplication.WindowState = WdWindowState.wdWindowStateMinimize; foreach (Word.Document item in wordApplication.Documents) { item.Windows[1].WindowState = WdWindowState.wdWindowStateMinimize; } } catch (Exception e) { _log.Trace($"Could not minimize: {e}"); } // insert some text System.Collections.Generic.List <string> list = RandomText.GetDictionary.GetDictionaryList(); RandomText rt = new RandomText(list.ToArray()); rt.AddContentParagraphs(1, 1, 1, 10, 50); wordApplication.Selection.TypeText(rt.Content); int writeSleep = ProcessManager.Jitter(100); Thread.Sleep(writeSleep); wordApplication.Selection.HomeKey(WdUnits.wdLine, WdMovementType.wdExtend); wordApplication.Selection.Font.Color = WdColor.wdColorSeaGreen; wordApplication.Selection.Font.Bold = 1; wordApplication.Selection.Font.Size = 18; string rand = RandomFilename.Generate(); string dir = timelineEvent.CommandArgs[0].ToString(); if (dir.Contains("%")) { dir = Environment.ExpandEnvironmentVariables(dir); } if (Directory.Exists(dir)) { Directory.CreateDirectory(dir); } string path = $"{dir}\\{rand}.docx"; //if directory does not exist, create! _log.Trace($"Checking directory at {path}"); DirectoryInfo f = new FileInfo(path).Directory; if (f == null) { _log.Trace($"Directory does not exist, creating directory at {f.FullName}"); Directory.CreateDirectory(f.FullName); } try { if (File.Exists(path)) { File.Delete(path); } } catch (Exception e) { _log.Debug(e); } newDocument.Saved = true; newDocument.SaveAs(path); Report(handler.HandlerType.ToString(), timelineEvent.Command, timelineEvent.CommandArgs[0].ToString()); FileListing.Add(path); if (timelineEvent.DelayAfter > 0) { //sleep and leave the app open _log.Trace($"Sleep after for {timelineEvent.DelayAfter}"); Thread.Sleep(timelineEvent.DelayAfter - writeSleep); } wordApplication.Quit(); wordApplication.Dispose(); wordApplication = null; try { Marshal.ReleaseComObject(wordApplication); } catch { } try { Marshal.FinalReleaseComObject(wordApplication); } catch { } GC.Collect(); } catch (Exception e) { _log.Debug(e); } finally { Thread.Sleep(5000); } } } catch (Exception e) { _log.Error(e); } finally { KillApp(); _log.Trace($"Word closing..."); } }