본문 바로가기

Programming/VB 2010 강좌

[D_Pain] 프로그램이 키를 인식할수 있게 해보자!

안녕하세요 D_Pain입니다.

비베 기본 지식 편은 사진 교체하는데 워낙 귀찮아서 여지껏 안올리고 있습니다 ㄱ-

이번엔 프로그램이 키를 인식할수 있게 하는 법을 배울건데요,

GetAsyncKeyState을 쓰는겁니다.

이 방법으로 간단한 이동 키를 만들 수 있고 또한 키로거도 제작 가능합니다.

선언문:

    Public Result As Integer

    Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vkey As Integer) As Short

우선 위의 선언문을 Public Class안에 넣어주세요.

그 다음엔 타이머를 사용하실 폼에 추가하세요. 전 타이머의 디자인명을 Tmr_Listener로 설정하겠습니다. 추가하신 타이머의 Interval을 1로 설정하세요^^ 그래야 가장 정확하게 사용자가 입력하는 키를 인식 할 수 있을겁니다.

타이머안에 넣을 코드:

For I = 1 To 255

            Result = 0

            Result = GetAsyncKeyState(I)

            If Result = -32767 Then

                 If GetAsyncKeyState(Keys.Up) Then

                    '위로 움직이게 하는 코드

                ElseIf GetAsyncKeyState(Keys.Left) Then

                    '왼쪽으로 움직이게 하는 코드

                ElseIf GetAsyncKeyState(Keys.Right) Then

                    '오른쪽으로 움직이게 하는 코드

                ElseIf GetAsyncKeyState(Keys.Down) Then

                    '밑으로 움직이게 하는 코드

    End If

            End If

        Next I

위의 코드는 화살표 버튼 위, 아래, 왼쪽, 오른쪽을 인식하게끔 합니다. 각각 버튼을 눌를때 무슨 코드를 실행되게끔 할지는 여러분이 설정해보세요^^

밑의 예제 코드는 위의 기본 코드를 응용하여 만든 간단한 케릭터 이동을 가능하게끔 하는 코드입니다.

케릭터 움직이게 한 예제 코드:

'Pnl_Character은 케릭터가 있는 Panel입니다.

For I = 1 To 255

            Result = 0

            Result = GetAsyncKeyState(I)

            If Result = -32767 Then

                 If GetAsyncKeyState(Keys.Up) Then

                    Pnl_Character.Location = New Point(Pnl_Character.Location.X, Pnl_Character.Location.Y - 10)

                ElseIf GetAsyncKeyState(Keys.Left) Then

                    Pnl_Character.Location = New Point(Pnl_Character.Location.X - 10, Pnl_Character.Location.Y)

                ElseIf GetAsyncKeyState(Keys.Right) Then

                    Pnl_Character.Location = New Point(Pnl_Character.Location.X + 10, Pnl_Character.Location.Y)

                ElseIf GetAsyncKeyState(Keys.Down) Then

                    Pnl_Character.Location = New Point(Pnl_Character.Location.X, Pnl_Character.Location.Y + 10)

    End If

            End If

        Next I

예제 코드를 더욱 꾸며서 만든 간단한 케릭터 움직이는 프로그램입니다!

이렇게 움직이는겁니다^^


그럼 이만 강좌 마치겠습니다!