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;
        }

    }
}

+ Recent posts