선언:
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(0, 1));
}
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), True, False)
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 |