I have a viewer.exe that loads at startup some models (*.mdl) from a “models” folder. Some of the models crash viewer.exe: “viewer.exe has stopped working. Windows can check online for a solution to the problem”.
What I could do is move all the .mdl files in a “source” folder and then manually test for each .mdl file moved to “models” if viewer.exe is running but, there are a lot of files to check. How do I move each *.mdl file from “source” to “models” and test programmatically if viewer.exe is running correctly?
Here is the code I use for my first problem: to move the .mdl files from “source” folder sub-directories in “models”. Some of the files had identical names but different size:
String mask = "*.mdl";
String source = @"c:\Source\";
String destination = @"c:\Models\";
String[] files = Directory.GetFiles(source, mask, SearchOption.AllDirectories);
foreach (String file in files)
{
if (File.Exists(file) && !File.Exists(destination + new FileInfo(file).Name))
{
File.Move(file, destination + new FileInfo(file).Name);
}
else
{
FileInfo f = new FileInfo(file);
long s = f.Length;
FileInfo f2 = new FileInfo(destination + new FileInfo(file).Name);
long s2 = f2.Length;
if (s >= s2)
{
File.Delete(destination + new FileInfo(file).Name);
File.Move(file, destination + new FileInfo(file).Name);
}
}
}
use process.start(startInfo) (see http://msdn.microsoft.com/en-gb/library/0w4h05yb.aspx)
Wait a few seconds, check if the process has terminated, then the returned process.hasexited (http://msdn.microsoft.com/en-us/library/system.diagnostics.process.hasexited.aspx)
then kill it anyway using process.kill() (see http://msdn.microsoft.com/en-us/library/system.diagnostics.process.kill.aspx)
You might need to turn off windows error reporting: http://msdn.microsoft.com/en-us/library/bb513638(VS.85).aspx