ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Win32 API 기초
    > Information Security/Windows 2014. 6. 17. 12:37

    #include <windows.h>


    // 1. WinMain() 함수

    int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

    {

    // 2. 윈도우 구조체 설정

    WNDCLASSEX wcex={};

    wcex.cbSize=sizeof(WNDCLASSEX);

    wcex.style=CS_HREDRAW | CS_VREDRAW;

    wcex.lpfnWndProc = WndProc;

    wcex.hInstance = hInstance;

    wcex.hbrBackground(HBRUSH)(COLOR_WINDOW+1);

    wcex.lpszClassName="win01";


    // 3. 윈도우 구조체 OS에 등록

    RegisterClassEx(&wcex);


    // 4. 윈도우 생성

    HWND hWnd = CreateWindow("win01", "Win32 API", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 

    CW_USERDEFAULT, 300,300,NULL, NULL, hInstance, NULL);


    // 5. 윈도우 출력

    ShowWindow(hWnd, SH_SHOW); //윈도우 출력상태 설정

    UpdateWindow(hWnd); // 윈도우 클라이언트영역 새로 그리는 함수


    // 6. 메시지 루프

    MSG msg;

    while (GetMessage(&msg, NULL, 0, 0) //큐에서 응용프로그램에 해당되는 메시지 조사

    {

    TranslateMessage(&msg); //WM_CHAR메시지와 문자키를 WinProc()로 보낸 뒤, 메시지큐에 넣음

    DispatchMessage(&msg); //메시지와 함께 OS에 WndProc()함수 호출 요청하여 OS는 등록된 윈도우 프로시저 호출

    }

    return 0; 

    }


    // 7. WinProc()함수 -메시지 처리함수

    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM IParam)

    {

    switch (message)

    {

    case WM_DESTROY: //윈도우 프로그램 종료

    PostQuitMessage(0);

    break;


    default:

    retrun DefWindowProc(hWnd, message, wParam, lParam);

    }

    return 0;

    }





    ■ 키보드와 마우스 입출력


        외부            OS
    키보드 입력 >메시지 발생(WM_CHAR, WM_KEYDOWN)




    728x90
    반응형

    '> Information Security > Windows' 카테고리의 다른 글

    Windows 루트킷 원리  (0) 2017.07.16
    루트킷 - 프로세스 은닉에 이용되는 기술  (1) 2014.10.30
    악성코드 탐지 - 툴 사용법  (0) 2014.05.30
    Stealth (프로세스 은폐기법)  (2) 2012.06.11
    API Code Patch  (0) 2012.06.11
Designed by Tistory.