본문 바로가기

work/vb

MDI form에서 키 이벤트(Key Event)받기

Keycode로 구분하시면 됩니다..
[예]
if KeyCode = vbKeyF4 then
'Your procedure
end if
vbKeyF4 = 0x73

====================================
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
  If KeyCode=vbKeyF4 Then
    Call 저장 '저장모듈로..~~~
  End If
End Sub


[답변] MDI Form에서 Key Event를 주려고 합니다.



>MDI Form에서 Key Event를 주려고 하는데요...
>F1,F2..이런 키에 이벤트를 주려고 하거든요.
>근데 MDI Form에는 Key에 대한 이벤트가 없어서요.
>혹시 아시분이나 API로 하는 법을 아시는 분 있으면 좀 알려주세요.
>
>아직 초보라서....^^;


안녕하세요.

님의 질문 관련 .... 잘 아시다시피 MDI 에는  일반 폼에서 볼수있는 Key_Down Event 가 없지요 그래서 MDI_Form 에서 KEY Event 를 알아내시려면 다음과 같이 적용 하시면 됩니다.


Option Explicit

Private Declare Function GetAsyncKeyState Lib "user32" _
                       (ByVal vKey As Long) As Integer
Const VK_A = &H70



'------------ VIRTUAL KEY CODE ------------------
'
' [F1] KEY 가 아닌경우 다른 KEY 는 알아서 선택하여 적용 하세요
'
'Const VK_LBUTTON = &H1
'Const VK_RBUTTON = &H2
'Const VK_CANCEL = &H3
'Const VK_MBUTTON = &H4
'Const VK_BACK = &H8
'Const VK_TAB = &H9
'Const VK_CLEAR = &HC
'Const VK_RETURN = &HD
'Const VK_SHIFT = &H10
'Const VK_CONTROL = &H11
'Const VK_MENU = &H12
'Const VK_PAUSE = &H13
'Const VK_CAPITAL = &H14
'Const VK_ESCAPE = &H1B
'Const VK_SPACE = &H20
'Const VK_PRIOR = &H21
'Const VK_NEXT = &H22
'Const VK_END = &H23
'Const VK_HOME = &H24
'Const VK_LEFT = &H25
'Const VK_UP = &H26
'Const VK_RIGHT = &H27
'Const VK_DOWN = &H28
'Const VK_SELECT = &H29
'Const VK_PRINT = &H2A
'Const VK_EXECUTE = &H2B
'Const VK_SNAPSHOT = &H2C
'Const VK_INSERT = &H2D
'Const VK_DELETE = &H2E
'Const VK_HELP = &H2F
'Const VK_0 = &H30
'Const VK_1 = &H31
'Const VK_2 = &H32
'Const VK_3 = &H33
'Const VK_4 = &H34
'Const VK_5 = &H35
'Const VK_6 = &H36
'Const VK_7 = &H37
'Const VK_8 = &H38
'Const VK_9 = &H39
'Const VK_A = &H41
'Const VK_B = &H42
'Const VK_C = &H43
'Const VK_D = &H44
'Const VK_E = &H45
'Const VK_F = &H46
'Const VK_G = &H47
'Const VK_H = &H48
'Const VK_I = &H49
'Const VK_J = &H4A
'Const VK_K = &H4B
'Const VK_L = &H4C
'Const VK_M = &H4D
'Const VK_N = &H4E
'Const VK_O = &H4F
'Const VK_P = &H50
'Const VK_Q = &H51
'Const VK_R = &H52
'Const VK_S = &H53
'Const VK_T = &H54
'Const VK_U = &H55
'Const VK_V = &H56
'Const VK_W = &H57
'Const VK_X = &H58
'Const VK_Y = &H59
'Const VK_Z = &H5A
'Const VK_STARTKEY = &H5B
'Const VK_CONTEXTKEY = &H5D
'Const VK_NUMPAD0 = &H60
'Const VK_NUMPAD1 = &H61
'Const VK_NUMPAD2 = &H62
'Const VK_NUMPAD3 = &H63
'Const VK_NUMPAD4 = &H64
'Const VK_NUMPAD5 = &H65
'Const VK_NUMPAD6 = &H66
'Const VK_NUMPAD7 = &H67
'Const VK_NUMPAD8 = &H68
'Const VK_NUMPAD9 = &H69
'Const VK_MULTIPLY = &H6A
'Const VK_ADD = &H6B
'Const VK_SEPARATOR = &H6C
'Const VK_SUBTRACT = &H6D
'Const VK_DECIMAL = &H6E
'Const VK_DIVIDE = &H6F
'Const VK_F1 = &H70       ' <---- F1 인경우 요거를 적용 하세요
'Const VK_F2 = &H71
'Const VK_F3 = &H72
'Const VK_F4 = &H73
'Const VK_F5 = &H74
'Const VK_F6 = &H75
'Const VK_F7 = &H76
'Const VK_F8 = &H77
'Const VK_F9 = &H78
'Const VK_F10 = &H79
'Const VK_F11 = &H7A
'Const VK_F12 = &H7B
'Const VK_F13 = &H7C
'Const VK_F14 = &H7D
'Const VK_F15 = &H7E
'Const VK_F16 = &H7F
'Const VK_F17 = &H80
'Const VK_F18 = &H81
'Const VK_F19 = &H82
'Const VK_F20 = &H83
'Const VK_F21 = &H84
'Const VK_F22 = &H85
'Const VK_F23 = &H86
'Const VK_F24 = &H87
'Const VK_NUMLOCK = &H90
'Const VK_OEM_SCROLL = &H91
'Const VK_OEM_1 = &HBA
'Const VK_OEM_PLUS = &HBB
'Const VK_OEM_COMMA = &HBC
'Const VK_OEM_MINUS = &HBD
'Const VK_OEM_PERIOD = &HBE
'Const VK_OEM_2 = &HBF
'Const VK_OEM_3 = &HC0
'Const VK_OEM_4 = &HDB
'Const VK_OEM_5 = &HDC
'Const VK_OEM_6 = &HDD
'Const VK_OEM_7 = &HDE
'Const VK_OEM_8 = &HDF
'Const VK_ICO_F17 = &HE0
'Const VK_ICO_F18 = &HE1
'Const VK_OEM102 = &HE2
'Const VK_ICO_HELP = &HE3
'Const VK_ICO_00 = &HE4
'Const VK_ICO_CLEAR = &HE6
'Const VK_OEM_RESET = &HE9
'Const VK_OEM_JUMP = &HEA
'Const VK_OEM_PA1 = &HEB
'Const VK_OEM_PA2 = &HEC
'Const VK_OEM_PA3 = &HED
'Const VK_OEM_WSCTRL = &HEE
'Const VK_OEM_CUSEL = &HEF
'Const VK_OEM_ATTN = &HF0
'Const VK_OEM_FINNISH = &HF1
'Const VK_OEM_COPY = &HF2
'Const VK_OEM_AUTO = &HF3
'Const VK_OEM_ENLW = &HF4
'Const VK_OEM_BACKTAB = &HF5
'Const VK_ATTN = &HF6
'Const VK_CRSEL = &HF7
'Const VK_EXSEL = &HF8
'Const VK_EREOF = &HF9
'Const VK_PLAY = &HFA
'Const VK_ZOOM = &HFB
'Const VK_NONAME = &HFC
'Const VK_PA1 = &HFD
'Const VK_OEM_CLEAR = &HFE






Private Sub MDIForm_Load()

Timer1.Interval = 10

End Sub

Private Sub Timer1_Timer()

'-- 자 이상태에서 F1 KEY 를 눌러 보세요 : 반응을 하지요 ...??? !!

If GetAsyncKeyState(VK_A) <> 0 Then
   MsgBox "[F1] KEY 를 누르셨네요 ...!"
End If
  
End Sub