본문 바로가기
2_ 바삭바삭 프로그래밍/C# and Visual C++

[C#] 닷넷에서의 전역후킹 / 이벤트 날리기

by 준환이형님_ 2011. 7. 20.

"닷넷에서는 전역 후킹을 지원하지 않습니다."


이건.. 블로그에도 찾아보면 있는 말이고

MSDN복음 512장 34절 에서도 이미 말씀하셨죠..


하지만 WinAPI에서는 지원하구요.. C#은 그 아이를 사용할 수 있으니..;;

실력 좋으신 분들이 이미 소스를 다 만들어 놓으셨답니다.

여기에 user32.dll 마샬링을 이용한 예제가 있어서 주소를 링크시킵니다. 기능은 키보드와 마우스 이벤트를 받아 출력 해 주구요~

http://www.codeproject.com/KB/cs/globalhook.aspx 


다음은 이벤트를 직접 날려주는 코드입니다. 참고하셔요~


keybd_event (user32)


C# Signature:
[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags,
   UIntPtr dwExtraInfo);


or

[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags,
   int dwExtraInfo);



 void PressKey( byte keyCode )
    {
        const int KEYEVENTF_EXTENDEDKEY = 0x1;
        const int KEYEVENTF_KEYUP       = 0x2;
        keybd_event( keyCode, 0x45, KEYEVENTF_EXTENDEDKEY, 0 );
        keybd_event( keyCode, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0 );
    }


왼쪽은 후킹 모니터구요.. 마우스를 움직이면 메모장에 자동으로 'a'를 찍어주게 된답니다~ 잘 활용하면 재밌는 걸 얼마든지 만들어 낼 수 있겠죠 ㅋㅋ

이런 재미에 프로그래밍을 하나봐요 :D