■ 네임스페이스
using Microsoft.Win32; using System.Runtime.InteropServices; using System.Diagnostics;
■ 전역변수
bool isExecuting = false; // FindWindow 사용을 위한 코드 [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern IntPtr FindWindow(string strClassName, string StrWindowName); [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern void SetForegroundWindow(IntPtr hWnd); [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); private const int SW_SHOWNORMAL = 1;
■ 코드
Process[] process = Process.GetProcesses(); foreach (Process proc in process) { if (proc.ProcessName.Equals(Pgm_FileName)) // Pgm_FileName 프로그램의 실행 파일[.exe]를 제외한 파일명 { isExecuting = true; break; } else isExecuting = false; } //int hWnd = (int)FindWindow(null, "notepad"); // 해당 프로그램이 실행중이면 현재 프로그램을 최소화 시키고, 해당 프로그램으로 전환 시킨다. // 해당 프로그램을 다시 찾을때에는 윈도우명으로 찾는다. ex)메모장 if (isExecuting) { this.WindowState = FormWindowState.Minimized; //윈도우 핸들러 IntPtr procHandler = FindWindow(null, Fnw_Name); ShowWindow(procHandler, SW_SHOWNORMAL); SetForegroundWindow(procHandler); } else { //없으면 머라든 하든지 말든지 }