2012년 10월 24일 수요일

C++에서 Windows 시스템 제어하기 (1)

번역 귀찮아 각주 안 달래

여기서는 처음 말하는 것 같은데, 저는 C++를 사용하는 도스 프로그래머입니다.
  • WinMain이 너무 어려워요.
  • 여기서는 도스를 이용하여 키 후킹을 하는 방법을 알려드리도록 하겠습니다.

    저도 얼마 전에 안 함수인데, GetAsyncKeyState(int vKey) 함수입니다.
    인자로 vKey 변수를 받는데, int형이군요. 하지만 윗 3바이트는 버리고 아래 1바이트만 보니 알 게 뭐야.
    vKey는 Virtual Keycode의 준말로, 가상 키코드라는 뜻입니다.
    저건 도스창이 포커스가 되어 있지 않을 때도 잘 돌아가는 함수인데요,
    키보드에 직접 접근?하여 상태를 알아내기 때문에 그렇습니다.

    가상 키 코드표는 MSDN 같은 곳에서 전부(0에서 255까지) 구할 수 있지만 우리가 그 코드를 다 쓸 것도 아니고, 귀찮으므로 하나 만들어 봅시다.
    코드는 다음과 같습니다.
    #include <iostream>
    #include <windows.h>
    using namespace std;


    void main() {
        int i;
        while (1) {
            for (i=0; i<256; i++) {
                if (GetAsyncKeyState(i) & 0x0001) {
                    cout << i << endl;
                }
            }
        }
    }
    이것을 컴파일하고 실행하면 아무 키가 눌릴 때마다 어떤 수를 출력합니다.
    사실상 마우스도 되는데, 1번이 마우스 왼쪽 키, 2번이 마우스 오른쪽 키기 때문입니다.

    이것으로 우리는 매크로를 만들 수 있습니다!

    저는 강좌를 잘 쓰는 편이 아니기 때문에, 알아보실 분들만 알아보시고 유용하게 쓰시리라 믿습니다.

    댓글 1개:

    1. http://www.bloter.net/archives/137419

      이제 크롬의 시대가 열린다 ㅋㅋ
      인터넷 뉴스도 크롬을!! ㅎㅎㅎ

      답글삭제