-
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