diff --git a/PROMS/Volian.Utils.Library/MSWord/WordDoc.cs b/PROMS/Volian.Utils.Library/MSWord/WordDoc.cs index e21197ee..498daf0b 100644 --- a/PROMS/Volian.Utils.Library/MSWord/WordDoc.cs +++ b/PROMS/Volian.Utils.Library/MSWord/WordDoc.cs @@ -72,9 +72,51 @@ namespace Volian.MSWord { if(_MyWordApp != null) { - _MyWordApp.Quit(false); - _MyWordApp=null; + TryToQuit(); + KillWordApps(); } } + + private static void TryToQuit() + { + try + { + _MyWordApp.Quit(false); + } + catch (Exception ex) + { + Console.WriteLine("{0} - {1}", ex.GetType().Name, ex.Message); + } + _MyWordApp=null; + } + public static void KillWordApps() + { + try + { + TerminateProcesses(WordProcesses); + } + catch (Exception ex) + { + Console.WriteLine("{0} - {1}", ex.GetType().Name, ex.Message); + } + } + public static void TerminateProcesses(System.Diagnostics.Process[] wordProcesses) + { + foreach (System.Diagnostics.Process proc in wordProcesses) + { + // TODO: Determine if Word is Visible + // If it is let it run + // otherwise Kill it. + proc.Kill(); + } + } + public static System.Diagnostics.Process[] WordProcesses + { + get + { + return System.Diagnostics.Process.GetProcessesByName("WINWORD"); + } + } + } }