Notice
- Today
- Total
Recent Posts
Recent Comments
Link
Tags
- Raspberry Pi
- RaspberryPi
- WebViewClient
- MariaDB
- ubuntu
- Spread
- UltraToolbarsManager
- ContextMenuStrip
- 동영상 오류
- Ribbon
- Image icon 변환
- 자동 닫힘
- 다중 Filter
- OSHP
- mariaDB 외부접속
- .mine
- node.js
- node.js 설치
- mp4 재생
- onPageFinished
- startActivity
- ScrollBarTrackPolicy
- <<<<<<<<
- ImageList Icon 변환
- mariaDB 설치
- OpenFileDialog
- c#
- 라즈베리파이
- 라즈베리 피이
- usb 인식 불가
Archives
Realman's World
[C#] Process의 WindowState 제어하기 본문
프로그램에서 특정 exe 파일을 실행시키는 경우가 종종 있다.
이 때 해당 프로그램이 실행되고 있는지의 여부를 판단하고 실행되고 있지 않으면 실행시키고
실행 중인 경우는 실행 중인 프로그램을 활성화시키도록 해보자.
1. 실행 판단
Process[] processes = Process.GetProcesses();
foreach (Process proc in processes)
{
if (proc.ProcessName.Equals(sProc))
{
isExecuting = true;
break;
}
}
foreach (Process proc in processes)
{
if (proc.ProcessName.Equals(sProc))
{
isExecuting = true;
break;
}
}
- 위와 같이 GetProcesses 함수를 이용하여 실행시킬 파일의 이름과 비교한다. 이때 파일 이름은 ".exe" 앞의 문자열만 해당된다.
2. 실행 중인 프로그램 활성화
[DllImport("User32",EntryPoint="FindWindow")]
private static extern IntPtr FindWindow(string lpClassName,string lpWindowName);
[DllImport("user32.dll")]
public static extern void SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
private const int SW_SHOWNORMAL = 1;
private static extern IntPtr FindWindow(string lpClassName,string lpWindowName);
[DllImport("user32.dll")]
public static extern void SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
private const int SW_SHOWNORMAL = 1;
- 우선 위와 같이 API 함수를 선언한다.
이 때 SW_SHOWNORMAL 상수는 WindowState를 결정하는 상수이다.
window를 숨기거나 최대화, 최소화 등으로 설정할 수도 있는데 이것은 해당 상수를 위와같이 선언하고 파라미터로 넘기면 된다.
자세한 내용은 검색해야 한다.
Process[] processes = Process.GetProcesses();
foreach (Process proc in processes)
{
if (proc.ProcessName.Equals(sProc))
{
// 윈도우 핸들러
IntPtr procHandler = FindWindow(null, proc.MainWindowTitle);
foreach (Process proc in processes)
{
if (proc.ProcessName.Equals(sProc))
{
// 윈도우 핸들러
IntPtr procHandler = FindWindow(null, proc.MainWindowTitle);
// 활성화
ShowWindow(procHandler, SW_SHOWNORMAL);
SetForegroundWindow(procHandler);
return;
}
}
Comments