본문 바로가기

728x90
반응형

API

(11)
1초에 한번씩 캡쳐 화면 파일로 저장하기 이번에는 지금까지 공부했던 함수들을 모아모아 1초에 한번씩 화면을 캡쳐해서 그 화면을 파일로 해당 폴더에 저장해주는 프로그램을 만들어 보았습니다. 뭐 지금까지 공부했던 걸 그냥 모아서 만든 프로그램이라 그렇게 어려운 부분은 없었던거 같습니다. 이번에는 유니코드를 다 지원해주고 하느라 좀 골치가 아팠었는데요. 덕분에 유니코드에 대해서 좀 많이 알수 있었던 것 같습니다~ 혹시 위 함수들에 대해서 잘 모르겠다 싶으신분들은 이전 포스트들에 적혀져 있는 것을 보시면 자세히 알수 있을 것입니다~ #include #include #include "Resource.h" #pragma comment(lib, "shlwapi") LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM)..
디렉토리 생성 이번에는 디렉토리를 생성하는 함수를 만들어 보았습니다. 100% 제가 한건 아니지만 -_-;; 디렉토리 명을 호출시 받아오고 그 디렉토리 명을 검사해서 있으면 만들지 않고 지나가게 됩니다. 원래 CreateDirectory 함수는 맨 하위 디렉토리만을 생성하는 녀석이라 부모 디렉토리가 없으면 디렉토리를 생성하지 못합니다. 그래서 문자를 하나하나 검사해서 상위 디렉토리부터 하나하나 다 만들어주게 하였습니다~ #include #pragma comment(lib, "shlwapi") BOOL CreateDirectoryFunc(LPCTSTR path) { TCHAR szPathBuffer[MAX_PATH]; UINT len = lstrlen(path); for(UINT i = 0; i < len; i++) {..
Win API Timer 회사 일이 엄청 바쁜이유에서 공부를 제대로 못하다가 주말이 되서야 좀 할 수 있게 되었네요. 그것도 야근의 여파로 제대로 못했지만 ㅜ_ㅜ 뭐 암튼 오늘은 열심히 Timer란 녀석에 대해서 공부해 보았습니다. 그럼 이 타이머는 무엇일까요? 타이머는 이름에서 풍겨오는 이미지와 같이 일정시간 간격을 두고 연속적으로 WM_TIMER 메시지를 발생시킵니다. 주기적으로 해야되는 작업이나 여러 번 나누어서 해야되는 작업이 있다면 이 타이머를 사용해서 하면 되는 것이죠 ^^ 우선 타이머 메시지를 통해서 간단한 시간 출력 프로그램을 만들어 보도록하죠 #include LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE g_hInst; LPCTSTR lpszCl..
캡쳐 화면 BMP로 저장하기 오늘은 요 몇일 동안 열심히 공부했던 화면 캡쳐, 메뉴생성 등을 이용해서 캡쳐한 화면을 BMP 파일로 저장하는 프로그램을 만들어 보려고합니다. 중간을 빼먹고 공부해서 그런지 파일 저장 부분이 상당히 어렵게 느껴지더군요 ㅜ_ㅜ 그래도 여차여차 책과 인터넷을 뒤지며-_-;; 납득이 갈 정도의 이해를 하게 되었죠...이걸 몇시간이나 했다니 ㅜ_ㅜ 역시 점점 둔화되가는 머리를 느낄수 있었던 부분이었습니다. 에궁 네. 혹시 화면 캡쳐나 메뉴만드는 방법을 모르시는 분들을 위해서 해당 링크를 달아 드리겠습니다. 전체 화면 캡쳐 : http://darkangelus.tistory.com/entry/API로-구현한-전체화면-캡쳐-소스 해당 포커스 윈도우 화면 캡쳐 : http://darkangelus.tistory.co..
메뉴의 단축키, 액셀러레이터 생성 전 포스트에 이어서 메뉴 관련하여 기능을 알아보도록 하겠습니다. 우선 메뉴는 리소스 파일을 사용해서 만들어야 하고 실제 코드에서는 리소스 파일 생성 때 자동으로 생성되는 resource.h 파일을 include 해야하고 lpszMenuName = MAKEINTRESOURCE(해당 메뉴이름) 이렇게 대입해야 메뉴가 생성이 가능하게 되는 것입니다. 혹시 메뉴 생성 방법을 모르신다면 이전 포스팅을 먼저 보시고 이 포스팅을 보시기 바랍니다 링크 : http://darkangelus.tistory.com/entry/메뉴-만들기 위 링크로 가시면 리소스를 이용하여 메뉴를 생성하는 것을 알수 있을 것입니다. 그럼 이번에는 액셀러레이터와 단축키에 대해서 알아보죠. 액셀러레이터란 일종의 단축키 입니다. 하지만 단축키라는..
메뉴 만들기 익스플로러나 오피스 등을 사용하다 보면 메뉴를 눌러서 해당 기능 선택할 때 가 있습니다. 그럼 그 메뉴들은 어떻게 만들어지는 걸까요? 오늘은 그 메뉴를 생성하는 방법에 대해서 알아 보려고 합니다. 윈도우 프로그래밍을 C# 윈폼으로만 만들어본 저로써는 어떻게 만드는지 전혀 감을 못잡았었죠. 그래서 책을 보는 순간 C#과는 많이 틀리다는걸 알았습니다. C#이야 그냥 열심히 폼에 붙여넣기를 하거나 컨트롤 객체 생성해서 소스로 넣어주면 끝이었죠. 하지만 WIN API로 생성할 때는 좀 다르게 리소스라는 녀석으로 작성하게 됩니다. 한마디로 메뉴 자체가 데이터로써 뽑아져 있다는 거지요. 그 리소스는 RC라는 파일명을 가지고 있고 Resource.h에 해당 리소스에 대해서 해더로 잡히게 됩니다. 그럼 리소스 작성하는..
포커스가 있는 윈도우 캡쳐 전체화면 캡쳐에 이어서 포커스가 있는 윈도우의 캡쳐하는 소스에 대해서 보도록 하겠습니다. 이번에는 핫키를 이용해서 해당 핫키를 눌렀을때 지금 포커스가 있는 윈도우를 캡쳐하게 하는 소스입니다. 우선 전체 화면 캡쳐와는 많은 차이가 없으므로 바로 소스와 약간의 분석을 하도록 하겠습니다. #include LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); HBITMAP ScreenCapture(HWND); HINSTANCE g_hInst; LPCTSTR lpszClass=TEXT("ScreenCapturTest"); HBITMAP hBit = NULL; int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstan..
API로 구현한 전체화면 캡쳐 소스 오늘은 API로 전체화면을 캡쳐하는 방법을 공부할 것인데요. 저같은 아무것도 모르는 초보가 하기에는 살짝 어려운듯 했지만 삽질의 연속으로 겨우 성공을 하게 되었네요. 화면캡쳐에는 DC가 꼭 필요합니다. 그래서 어제 DC를 먼저 공부해 보았던 것이고요. 그럼 어제 DC에 대한 것과 화면캡쳐에 필요한 함수들을 살펴보도록 하지요. 간단한 소스와 함께 알아보도록 하죠. #include LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); HBITMAP ScreenCapture(HWND); HINSTANCE g_hInst; LPCTSTR lpszClass=TEXT("ScreenCapturTest"); HBITMAP hBit = NULL; int APIENTRY WinMa..

728x90
반응형