[vb] SendKeys 함수가 먹히지 않는 곳에서의 key event

Posted by 겨울에
2011. 2. 4. 02:13 scrap/ Visual Basic
vb에서 키가 눌러지게 하는 이벤트를 표현하기 위해서는
 
대부분 간단한 SendKeys 함수를 사용합니다.
 
 
 
 
 
증권 HTS나 기타 게임 등에서는 이런 SendKeys 함수를 막고 있기 때문에 (소프트웨어 적인 키입력은 차단하는듯), 하드웨어 적인 이벤트를 주어야 됩니다.
 
 
 
예를 들어,
 
 
SendKeys "{Enter}"
 
 
함수의 경우에는 미리 막아놓은 프로그램에서는 먹히지가 않지요.
 
 
이를 바꾸어주어 키보드의 키가 직접 눌러지는 것처럼(실상은 그렇지 않지만 해당 함수는 그런식으로 받아들이더라구요 ^^;) 하려면 아래와 같이 코딩하시면 됩니다.
 
 
 
 
Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2
Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
 
 
 
다음과 같이 선언을 한뒤에,
 
 
이벤트를 줄 부분에
 
    keybd_event 13, 0, 0, 0
    keybd_event 13, 0, KEYEVENTF_KEYUP, 0
 
 
다음과 같이 적어주시면 됩니다.
 
여기서 '13' 은 Enter 의 아스키 값입니다 :)