프로그램 최상위 활성화
http://story0111.tistory.com/44
1. 프로그램 이름을 사용하는 방법
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//폼 최상위로 띄우기
[DllImport("user32.dll")]
private static extern IntPtr FindWindow(string SClassName, string SWindowName);
[DllImport("user32.dll")]
private static extern bool SetForegroundWindow(IntPtr findname);
[DllImport("user32.dll")]
private static extern bool ShowWindowAsync(IntPtr findname, int howShow);
private const int showNORMAL = 1;
private const int showMINIMIZED = 2;
private const int showMAXIMIZED = 3;
private void button1_Click(object sender, EventArgs e)
{
// 프로그램명으로 핸들을 찾음
IntPtr findname = FindWindow(null, "윈도우 최상위로");
if (!findname.Equals(IntPtr.Zero))
{
// 프로그램이 최소화 되어 있다면 활성화 시킴
ShowWindowAsync(findname, showNORMAL);
// 윈도우에 포커스를 줘서 최상위로 만듬
SetForegroundWindow(findname);
}
}
}
}
2. 프로세스 이름으로 사용하는 방법
[DllImport("user32.dll")]
private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
private const int SW_SHOWNORMAL = 1;
private const int SW_SHOWMINIMIZED = 2;
private const int SW_SHOWMAXIMIZED = 3;
[DllImport("user32.dll")]
static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll")]
static extern bool AllowSetForegroundWindow(int dwProcessId);
void ActivateApp(string processName)
{
Process[] p = Process.GetProcessesByName(processName);
// Activate the first application we find with this name
if (p.Count() > 0)
try
{
ShowWindowAsync(p[0].MainWindowHandle, SW_SHOWNORMAL);
AllowSetForegroundWindow(p[0].Id);
SetForegroundWindow(p[0].MainWindowHandle);
}
catch(Exception ex)
{
Debug.WriteLine(ex.Message);
}
}
프로세스 이름은 작업 관리자에서 해당 앱 우클릭 - 속성에 들어가서 이름(.exe빼고)을 사용합니다.
'C# > WindowsAPI' 카테고리의 다른 글
C# 절전모드 / 최대 절전모드 (0) | 2020.08.19 |
---|---|
C# 키보드 인풋 (0) | 2020.08.19 |
C# 마우스 인풋 API (0) | 2020.08.19 |
C# 마우스 커서 Cursor Show / Hide (0) | 2020.08.19 |
C# Windows API 참고사이트 (0) | 2020.08.19 |