반응형

* C# 윈도우 폼 (Window Form) 이 포커스(Focus) 를 가지지 않게 하기 예제...

 

메인화면

전체 소스 코드

Form1.cs

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;


using System.Runtime.InteropServices;

namespace CSharp_FormNoActive
{
    public partial class Form1 : Form
    {
        [DllImport("user32.dll")]
        static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);

        private const long WM_NOACTIVATE = 0x8000000L;

        public Form1()
        {
            InitializeComponent();
        }

        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.ExStyle = cp.ExStyle | (int)WM_NOACTIVATE;
                return cp;
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            keybd_event((byte)Keys.W, 0, 0, 0);     //KeyDown   이벤트
            keybd_event((byte)Keys.W, 0, 0x02, 0);  //KeyUp     이벤트
        }
    }
}

위 소스와 같이 keybd_event API 함수를 이용해 키보드를 입력한 효과를 나타 낼 수 있습니다.

 

3번째 전달인자 0 : 키를 눌렀을 때 효과

                0x02 : 키가 올라왔을 때 효과

 

이므로 두개를 합치면 키를 눌렀다 땠다 하는 효과를 볼 수 있습니다.

 

 

*예제 결과

 

보통 윈도우 폼에서 버튼을 클릭을 하게 되면 마우스 커서 즉 포커스가 윈도우 폼으로 이동 하게 되는데 아래의 그림과 같이 버튼을 클릭 하여도 마우스 커서 즉 포커스가 윈도우 폼으로 이동 되지 않는 다는 것을 볼 수 있습니다. 

 

 

 

 

 

반응형

+ Recent posts