PowerPoint가 실행 되었는지 무한정 검사를 하고
PowerPoint의 SlideShow가 실행 되었는지 무한정 검사를하고
SlideShow가 종료 되었는지 무한정 검사
HowRunProcessCheck.zip
namespace HowRunProcessCheck
{
class Program
{
/// <summary>
/// PowerPoint MainWindowTitle명 (Office 2007)
/// </summary>
const string powerPointName = "Microsoft PowerPoint -";
/// <summary>
/// PowerPoint MainWindowTitle명 (Office 2007)
/// </summary>
const string slideName = "PowerPoint 슬라이드 쇼";
/// <summary>
/// PowerPoint
/// </summary>
Process powerPoint;
/// <summary>
/// PowerPoint Slide
/// </summary>
Process slide;
static void Main(string[] args)
{
Program test = new Program();
test.TestRunProcessCheck();
}
/// <summary>
/// Test
/// </summary>
private void TestRunProcessCheck()
{
this.powerPoint = StartCheckProcess(powerPointName);
Console.WriteLine("시작 {0}", this.powerPoint.MainWindowTitle);
this.slide = StartCheckProcess(slideName);
Console.WriteLine("시작 {0}", this.slide.MainWindowTitle);
CheckAlive(this.slide);
Console.WriteLine("종료 {0}", this.slide.MainWindowTitle);
Console.ReadKey();
}
/// <summary>
/// Process가 죽으면 Return
/// </summary>
/// <param name="pro"></param>
private void CheckAlive(Process pro)
{
while (CheckProcess(pro.MainWindowTitle) != null)
{
}
}
/// <summary>
/// MainWindowTitle이 title로 시작하는 Process 무한 검사
/// </summary>
/// <param name="title"></param>
/// <returns></returns>
private Process StartCheckProcess(string title)
{
while (true)
{
Process pro = CheckProcess(title);
if (pro != null)
{
return pro;
}
System.Threading.Thread.Sleep(1000);
}
}
/// <summary>
/// MainWindowTitle이 title로 시작하는 Process 검사
/// </summary>
/// <param name="title"></param>
/// <returns></returns>
private Process CheckProcess(string title)
{
Process[] processes = Process.GetProcesses();
foreach (Process pro in processes)
{
if (pro.MainWindowTitle.StartsWith(title))
{
return pro;
}
}
return null;
}
}
}