C#/- Useful Code

윈도우(Windows)에 포커스 가지 않는 설정

고고 뜌지 2021. 3. 2. 16:58

고고뜌지입니다.

특정 프로그램은 사용할때 윈도우에 포커스가 가면 안되는 경우가 있습니다.

예를 들면 가상키보드 같은 경우입니다.

 

이를 처리하기에는 Winform 과 WPF의 처리 방식은 다릅니다.

 

 01. Winform

protected override CreateParams CreateParams
{
    get
    {
        CreateParams param = base.CreateParams;
        param.ExStyle |= 0x08000000;
        return param;
    }
}

 02. WPF

private const int GWL_EXSTYLE = -20;
private const int WS_EX_NOACTIVATE = 0x08000000;
[DllImport("user32.dll")]
public static extern IntPtr SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
[DllImport("user32.dll")]
public static extern int GetWindowLong(IntPtr hWnd, int nIndex);
protected override void OnSourceInitialized(EventArgs e)
{
    base.OnSourceInitialized(e);
    WindowInteropHelper helper = new WindowInteropHelper(this);
    IntPtr ip = SetWindowLong(helper.Handle, GWL_EXSTYLE,
        GetWindowLong(helpe.Handle, GWL_EXSTYLE) | WS_EX_NOACTIVATE);
}