//api·Î ¸¸µç ÈÄÅ· ÇÁ·Î½ÃÀú #include LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK KeyHookProc(int nCode, WPARAM wParam, LPARAM lParam); HINSTANCE g_hInst; HWND hWndMain; LPCTSTR lpszClass=TEXT("noname.txt"); HHOOK hKeyHook; int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow) { HWND hWnd; MSG Message; WNDCLASS WndClass; g_hInst = hInstance; WndClass.cbClsExtra = 0; WndClass.cbWndExtra = 0; WndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); WndClass.hCursor = LoadCursor(NULL, IDC_ARROW); WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); WndClass.hInstance = hInstance; WndClass.lpfnWndProc = (WNDPROC)WndProc; WndClass.lpszClassName = lpszClass; WndClass.lpszMenuName = NULL; WndClass.style = CS_HREDRAW | CS_VREDRAW; RegisterClass(&WndClass); hWnd = CreateWindow(lpszClass, lpszClass, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, (HMENU)NULL, hInstance, NULL); ShowWindow(hWnd, nCmdShow); hWndMain = hWnd; while(GetMessage(&Message, 0, 0, 0)) { TranslateMessage(&Message); DispatchMessage(&Message); } return Message.wParam; } LRESULT CALLBACK KeyHookProc(int nCode, WPARAM wParam, LPARAM lParam) { HDC hdc; char str[MAX_PATH]; RECT rt = {100, 120, 500, 150}; static int Count = 0; if(nCode < 0) return CallNextHookEx(hKeyHook, nCode, wParam, lParam); hdc = GetDC(hWndMain); wsprintf(str, "nCode = %d, wParam = %u, lParam = %08x, Count = %d", nCode, wParam, lParam, Count++); FillRect(hdc, &rt, (HBRUSH)GetStockObject(WHITE_BRUSH)); TextOut(hdc, 100, 120, str, strlen(str)); ReleaseDC(hWndMain, hdc); return CallNextHookEx(hKeyHook, nCode, wParam, lParam); } LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; char mes[] = "Űº¸µå ÈÅ Å×½ºÆ® ÇÁ·Î±×·¥ÀÌ´Ü´Ù."; switch(iMessage) { case WM_CREATE: hKeyHook = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyHookProc, NULL, GetCurrentThreadId()); return 0; case WM_PAINT: hdc = BeginPaint(hWnd,&ps); TextOut(hdc, 100, 100, mes, strlen(mes)); EndPaint(hWnd, &ps); return 0; case WM_DESTROY: UnhookWindowsHookEx(hKeyHook); PostQuitMessage(0); return 0; } return (DefWindowProc(hWnd, iMessage, wParam, lParam)); }