관련 : 2010/09/03 C# 에서 Window Message 전달
// FindWindow 사용을 위한 코드
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, "NateOnMain");
// 해당 프로그램이 실행중이면 현재 프로그램을 최소화 시키고, 해당 프로그램으로 전환 시킨다.
// 해당 프로그램을 다시 찾을때에는 윈도우명으로 찾는다. ex)NateOn, 알집
if (isExecuting)
{
this.WindowState = FormWindowState.Minimized;
//윈도우 핸들러
IntPtr procHandler = FindWindow(null, Fnw_Name);
ShowWindow(procHandler, SW_SHOWNORMAL);
SetForegroundWindow(procHandler);
}
else
{ //없으면 머라든 하든지 말든지
}