[C#강좌]ALT+F4(윈도우종료)키 막기,메시지필터링,IMessageFilter,Application.AddMessageFilter

홈 > 공유팁! > 프로그램 관련
프로그램 관련

[C#강좌]ALT+F4(윈도우종료)키 막기,메시지필터링,IMessageFilter,Application.AddMessageFi…

꽁스짱 0 866
Application 클래스의 AddMessageFilter() 메소드는 응용프로그램에 메시지 필터를 등록하며 이 메소드의 매개변수로 IMessageFilter를 구현한 클래스의 인스턴스를 매개변수로 받으며 IMessageFilter의 PreFilterMessage를 구현해야 한다.

[예제]

using System.Windows.Forms;
using System;
namespace ConsoleApplication1
{   
    public class Program : Form
    {
        static void Main()
        {
            Application.AddMessageFilter(new AltF4Filter()); // Add a message filter
            Application.Run(new Program());
        }
    }

    public class AltF4Filter : IMessageFilter
    {
        public bool PreFilterMessage(ref Message m)
        {
            const int WM_SYSKEYDOWN = 0x0104;
            if (m.Msg == WM_SYSKEYDOWN)
            {
                bool alt = ((int)m.LParam & 0x20000000) != 0;
                if (alt && (m.WParam == new IntPtr((int)Keys.F4)))
                    Console.WriteLine("ALT+F4 Filtering됨.");
                    return true; // eat it!                
            }
            return false;
        }
    }
}
 
0 Comments
제목