선언:

C#

[DllImport("user32")]
public static extern UInt16 GetAsyncKeyState(Int32 vKey);


VB.NET

<DllImport("user32")> _
Public Shared Function GetAsyncKeyState(vKey As Int32) As UInt16
End Function




사용 예제:

C#

using System;
using System.Runtime.InteropServices;
      
namespace ApiReference {
    public class ExampleCode {
        [DllImport("user32")]
        public static extern UInt16 GetAsyncKeyState(Int32 vKey);

        public static void Main(String[] args) {
            Console.WriteLine("키보드 눌림 상태표:");
            for ( Int32 i = 0; i < 128; i++ ) {
                if ( i > 0 && i % 8 == 0 )
                    Console.WriteLine();

                Console.Write("({0,-3}, {1}) ", i, IsKeyPressed(i).ToString().Substring(01));
            }
            
            Console.ReadKey(true);
        }
        public static bool IsKeyPressed(Int32 KeyCode) {
            return (GetAsyncKeyState(KeyCode) == 32768) ? true : false;
        }
    }
}


VB.NET

Imports System
Imports System.Runtime.InteropServices

Namespace ApiReference
    Public Class ExampleCode
        <DllImport("user32")> _
        Public Shared Function GetAsyncKeyState(vKey As Int32) As UInt16
        End Function

        Public Shared Sub Main(args As [String]())
            Console.WriteLine("키보드 눌림 상태표:")
            For i As Int32 = 0 To 127
                If i > 0 AndAlso i Mod 8 = 0 Then
                    Console.WriteLine()
                End If

                Console.Write("({0,-3}, {1}) ", i, IsKeyPressed(i).ToString().Substring(0, 1))
            Next

            Console.ReadKey(True)
        End Sub
        Public Shared Function IsKeyPressed(KeyCode As Int32) As Boolean
            Return If((GetAsyncKeyState(KeyCode) = 32768), TrueFalse)
        End Function
    End Class
End Namespace




예제 실행 결과:





매개 변수 설명:

vKey - 상태를 확인할 키의 가상 코드 값을 입력합니다.




API 설명:

키의 상태를 가져옵니다.




참고:

GetAsyncKeyState (MSDN)




비고:

이 API는 호출 당시에 눌린 키가 있으면 32,768 값을 반환하기 때문에, 키 눌림을 확인하려면 API 호출 결과 값이 32,768인지를 확인하면 됩니다.


'API Reference' 카테고리의 다른 글

17. FormatMessage  (0) 2014.09.29
16. GetLastError  (0) 2014.09.27
14. SetCursorPos  (0) 2014.09.25
13. GetCursorPos  (0) 2014.09.23
12. MapWindowPoints  (0) 2014.09.21

+ Recent posts