// Try and close a process. Kill it if the Close takes
// too long.
// exeLessExtension - Process name (without extension)
// msToWaitForCloseMainWindow - Time in milliseconds to
// wait for 'CloseMainWindow()' before just killing the
// process, Set negative to not kill at all, set to 0 to
// kill without calling CloseMainWindow
public static void ForceProcessClose(
string exeLessExtension,
int msToWaitForCloseMainWindow)
{
Process[] processes = Process.GetProcessesByName(exeLessExtension);
if (msToWaitForCloseMainWindow != 0)
{
foreach (Process p in processes)
{
if (!p.CloseMainWindow())
{ // Process does not have a GUI, use 'Kill()' instead
msToWaitForCloseMainWindow = 0;
}
}
}
if (msToWaitForCloseMainWindow >= 0)
{
Thread.Sleep(msToWaitForCloseMainWindow);
processes = Process.GetProcessesByName(exeLessExtension);
foreach (Process p in processes)
{
p.Kill();
}
}
}
July 9, 2010
Close or Kill a Process
This routine will try and close a process by sending a close message to it's main window. If the process has no GUI or a timeout period is exceeded then the 'Process.Kill()' method will be used to close it.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment