반응형
해법 : FindWindow()를 사용한다.
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
string path = AppDomain.CurrentDomain.BaseDirectory + "../../XXX/XX.exe"; // XXX와 XX는 경로와 프로그램의 이름이다.
var hWindow = FindWindow(null, "Title"); // 윈도우의 제목을 "Title"로 가지는 아이가 있는지 확인
if (hWindow != IntPtr.Zero) // 만약 있다면
{
ShowWindowAsync(hWindow, SW_SHOWNORMAL); //윈도우 최소화 되어있을 때 활성화
SetForegroundWindow(hWindow); // 윈도우를 최상단으로
}
else //만약 없다면
{
Process.Start(path); //프로세스 스타트 (프로그램 실행)
}
}
++
예제)
윈도우 제목으로 최상위 화면으로 활성화 시키는 방법
윈도우 API를 사용하여 현재 윈도우에 실행 중인 프로그램의 제목을 찾아서 해당 화면이 최상위로 오도록 만들어 보자
1. FindWindow() 함수를 사용하여 윈도우 제목으로 핸들을 찾는다
2. ShowWindowAsync() 함수를 사용하여 윈도우가 최소화 되어 있다면 다시 활성화 시킨다
3. SetForegroundWindow() 함수를 사용하여 포커스를 줘서 최상위로 오도록 만든다
윈도우 API를 사용하기 위해서는 using System.Runtime.InteropServices 꼭 선언해 줘야한다
반응형
'개발자 > WPF(C#) UI' 카테고리의 다른 글
MFC 프로퍼티 컨트롤(추가예정) (0) | 2020.08.11 |
---|---|
Report 형식의 CListCtrl 에 자료 넣기 (0) | 2020.07.29 |
[MFC] List Control (추가예정) (0) | 2020.07.28 |
SonarLint로 정적 test 중 나오는 Warning 정리(2) (0) | 2020.04.13 |
SonarLint로 정적 test 중 나오는 Warning 정리(1) (0) | 2020.04.13 |