상세 컨텐츠

본문 제목

과제 - 캡쳐 프로그램

청강컴정/시스템프로그래밍

by luckey 2009. 5. 27. 14:56

본문

// test.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>

 

//버퍼 그래픽 카드의 해상도 만큼을 돌려준다.
char Buffer[1280*1024*4];

int _tmain(int argc, _TCHAR* argv[])
{
 HANDLE handle, hFile;
 DWORD ret;
 SYSTEMTIME st;
 
 TCHAR dirPath[50];
 TCHAR dirPathFull[100];
 time_t old_time = time(NULL);
 time_t new_time;
 int cnt = 0;

 printf("아무키나 누르면 시작합니다.\r\n");
 getch();

 while(cnt < 10)
 {
  handle = CreateFile( L"\\\\.\\BABO", GENERIC_READ|GENERIC_WRITE
         , 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL
         , 0 ); // 드라이버가 준비한 "\Device\SIMPLE"에 대한 동의어! 즉, "\DosDevices\BABO"를 사용해서, 접근을 시도한다

  memset( &Buffer[0], 0, 1280*1024*4 ); // 버퍼를 초기화한다, 버퍼를 100byte 만큼 0으로 초기화 한다.

  //// Application이 달라교 요청을 해야지만 드라이버가 메모리에 전해줄 내용을 넣어서 전달한다.
  //// 드라이버는 자체적으로 Application 에 무언가를 전달 할 수 없다.
  //// WriteFile도 마찬가지이다. (무조건 Application 이 주이다.)
  ReadFile(handle, &Buffer[0],1280*1024*4, &ret, NULL); //ReadFile 버퍼를 100byte 만큼 읽어온다.
  
  GetLocalTime(&st);
  int Year = st.wYear;
  int Month = st.wMonth;
  int Day = st.wDay;
  int Hour = st.wHour;
  int Minute = st.wMinute;
  int Second = st.wSecond;

  //디렉토리 생성
  wsprintf(dirPath, L"c:\\%d%02d%02d\\", Year, Month, Day);
  CreateDirectory(dirPath, NULL);

  //디렉토리를 포함하는 fullPath 를 생성해서 dirpathFull 에 넣는다.
  wsprintf(dirPathFull, L"c:\\%d%02d%02d\\%d%02d%02d%02d%02d%02d.bmp", Year, Month, Day, Year, Month, Day, Hour, Minute, Second);

  //해당 파일을 쓴다.
  hFile=CreateFile(dirPathFull,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
  WriteFile(hFile,Buffer,1280*1024*4, &ret, NULL);
  CloseHandle(hFile);

  //파일생성완료(화면에 출력)
  _tprintf(dirPathFull);
  printf("파일을 생성했습니다. \r\n");

  Sleep(2000);
  cnt++;
 }

 printf("아무키나 누르면 종료합니다.\r\n");
 getch();
 CloseHandle( handle ); // 접근을 그만 두겠다는 의미로 사용했던 드라이버핸들을 닫는다
 return 0;
}

관련글 더보기

댓글 영역