본문 바로가기
프로그래밍/④ C#프로젝트

④ C# 프로젝트 -1 프로그램명으로 프로그램 최상위로 활성화시키기(윈도우 전역) == Activate the top of the program by program name (Windows wide)

by ronul 2017. 7. 11.
300x250

프로그램명으로 최소화나 다른 프로그램이 활성화 되어있을때 최상위로 활성화 시켜주는 소스입니다.

예로 버튼을 만들어서 버튼을 누를때 최상위로 올라오도록했습니다.

다른 방법으로 단축키를 사용하여 눌리게되었을경우  최상위로 올라오게 하던가 어떤 프로그램이 닫히게 되면 프로그램을 최상위로 올린다던가 여러 가지로 사용할수있을것 같습니다.

여기서 프로그램명이란 작업관리자를 누르시게 되면 응용 프로그램쪽에 나오는 이름 입니다.

c#에서 사용하게 된다면 이것은 폼의 Text와 같은 것 입니다.

여기서 이폼의 text는 윈도우 취상위로 입니다.

 

코드입니다.

 

 

 

 

 


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);
            }

        }
    }
}


DllImport로 윈도우 내에있는 user32.dll에 접근하게 됩니다.

여기서 그냥 보여줄때는 1, 최소화를 시킬때는 2, 최대화를 시킬때는 3을 입력해줍니다 .

이후 프로그램명을 이용하여 프로그램을 보여줍니다.

300x250

댓글