반응형

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

 

메인화면

 

전체 소스 코드

Form1.vb

 

Imports System.Runtime.InteropServices

Public Class Form1

    <DllImport("user32.dll")> _
Private Shared Sub keybd_event(ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As UInteger, ByVal dwExtraInfo As Integer)
    End Sub

    Dim WS_NOACTIVE As Long = 134217728

    Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
        Get
            Dim cp As CreateParams = MyBase.CreateParams
            cp.ExStyle = cp.ExStyle Or WS_NOACTIVE
            Return cp
        End Get
    End Property

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        keybd_event(Convert.ToByte(Keys.W), 0, 0, 0)        'KeyDown 
        keybd_event(Convert.ToByte(Keys.W), 0, &H2, 0)      'KeyUp

    End Sub
End Class

 

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

 

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

                    &H2 : 키가 올라왔을 때 효과

 

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

 

 

*예제 결과

 

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

 

 

 

반응형

+ Recent posts