상세 컨텐츠

본문 제목

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

C#

by xarfox 2010. 9. 7. 16:00

본문

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

관련글 더보기