[C#] 타 프로그램간의 화면 전환

■ 네임스페이스

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
{ //없으면 머라든 하든지 말든지
}

 

 

Post Author: 김 키티

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다