minjeong-oh
기록
minjeong-oh
전체 방문자
오늘
어제
  • 분류 전체보기 (207)
    • ML & Neural Net (3)
    • ◼️GNN (1)
    • ◼️시계열 (1)
    • ◼️추천시스템 (0)
    • ◼️수학 (3)
    • Data Engineer (2)
    • ◼️Spark (1)
    • ◼️Kafka (1)
    • ◼️Elestic Search (0)
    • ◼️Redis (0)
    • ◼️ClickHouse (1)
    • Programming Language (4)
    • ◼️SQL (0)
    • ◼️React (0)
    • ◼️Git (1)
    • ◼️Python (1)
    • ◼️C++ (33)
    • ◼️Fortran 99 (2)
    • ◼️OpenGL (7)
    • ◼️MFC (35)
    • ◼️Flutter (46)
    • ◼️Kotlin (1)
    • ◼️Android (1)
    • ◼️Java (1)
    • ◼️C (4)
    • Development (0)
    • ◼️디자인패턴 (0)
    • ◼️네트워크 (2)
    • ◼️인증 (1)
    • Computer Science (4)
    • 알고리즘 문제풀이 (12)
    • SQL 고득점 Kit 문제풀이 (8)
    • 취업준비 (0)
    • Notion 정리 글 (1)
    • Article Scrap (12)
      • Careerly - Q&A (7)
      • Careerly - Post (2)
    • 기타 등등 (16)

블로그 메뉴

  • 글쓰기
  • 홈
  • 태그
  • 방명록
  • 편집

공지사항

인기 글

태그

  • 구조체매개변수
  • hello테마
  • 그램업그레이드
  • OpenGL회전
  • 리눅스파티션
  • 19년식그램SSD장착
  • API문서정리
  • SpringBootSwagger
  • 그램풀스팩업그레이드
  • 인공지능개발자
  • 구조체배열포인터
  • 19년식그램램장착
  • kafka구축
  • 이것이C++이다책참고
  • mfc
  • NextJSSwagger
  • 티스토리폰트배경색없애기
  • AI배워야하나
  • GSLB
  • 이차원구조체배열포인터

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
minjeong-oh

기록

◼️MFC

[MFC] 윈도우에서 제공하는 캡쳐기능을 사용하여 캡쳐하고, 캡쳐한 파일을 원하는 위치에 저장 시키기

2024. 2. 15. 19:58

[CFileFind를 이용해서 파일을 찾고 다른이름으로 저장 창 열어서 다른 위치에 저장시킨다.]

윈도우 캡쳐 ( window+Shift+s ) 로 화면 캡쳐를 하고 캡쳐된 알림을 클릭하게 되면 아래의 위치에 캡쳐이미지가 png파일으로 저장된다.
"C:\Users\username\AppData\Local\Packages\Microsoft.ScreenSketch_8wekyb3d8bbwe\TempState\*.png"
특정 시간 이후에 생성된 파일을 해당 위치에서 찾은 후 다른이름으로 저장 창을 열어서 원하는 위치로 이동시킨다. (사용자는 원하는 위치로 이동이 아닌 그 위치로 바로 저장되었다고 생각하게된다.)

 

CTime startTime, createTime;
startTime = CTime::GetCurrentTime();  //현재 시간

CString userName = getenv("USERNAME");
CString filePath;

filePath.Format(_T("C:\\Users\\%s\\AppData\\Local\\Packages\\Microsoft.ScreenSketch_8wekyb3d8bbwe\\TempState\\*.*"), userName);
//이미지 캡쳐파일이 자동적으로 저장되는 폴더 경로

//검색 클래스
CFileFind finder;

//CFileFind는 파일, 디렉터리가 존재하면 TRUE 를 반환함
BOOL bWorking = finder.FindFile(filePath); //
CString fileName;
int i = 0;
while (bWorking)
{
	//다음 파일 / 폴더 가 존재하면다면 TRUE 반환
	bWorking = finder.FindNextFile();
	if (bWorking == FALSE)  //폴더를 다 탐색한 후 다시 탐색(새로 생성된 파일을 찾을 때 까지)
		bWorking = finder.FindFile(filePath);

		//파일 일때
	if (finder.IsArchived())
	{
		//파일의 이름
		CString _fileName = finder.GetFileName();
		// 현재폴더 상위폴더 썸네일파일은 제외
		if (_fileName == _T(".") ||
			_fileName == _T("..") ||
			_fileName == _T("Thumbs.db")) continue;

		finder.GetCreationTime(createTime); //file의 생성시간을 (createTime변수에) 알아냄
		if (createTime < startTime)
				continue;

		//capture가 시작된 이후에 파일이 생성되었으면 그 파일을 프로젝트폴더의 Capture폴더로 이동시킨다.
		//Capture 폴더가 없으면 생성
		CString capturePath;
		capturePath.Format(_T("%s\\Capture"), temp_project_filepath);
		
        if (!::CreateDirectory(capturePath, NULL)) {
				if (GetLastError() == ERROR_ALREADY_EXISTS) {
					// directory already exists
				}
				else {
					// creation failed due to some other reason
				}
		}

		static TCHAR BASED_CODE szFilter[] = _T("이미지 파일(*.PNG) | *.BMP;*.GIF;*.JPG;*.bmp;*.jpg;*.gif |모든파일(*.*)|*.*||");
		CFileDialog dlg(FALSE, "*.png", "*.png", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);

		if (dlg.DoModal() == IDOK)
		{
			CString str;
			CString m_filedir = dlg.GetPathName(); //다른이름으로 저장 창에서 선택한 원하는 위치  
			::MoveFile(finder.GetFilePath(), m_filedir); //다른이름으로저장 창에서 선택한 위치로 파일이동
                       //찾은 파일의 전체경로		
        }
		AfxMessageBox(_T("Save Completed!!"));
		finder.Close();
		break;
	}
}

'◼️MFC' 카테고리의 다른 글

[MFC] 원하는 텍스트를 txt파일로 생성하기  (0) 2024.02.15
[MFC] CDialogBar 조작하기  (0) 2024.02.15
[MFC] 다이얼로그 상하좌우로 창크기 늘릴수 있도록한다.  (0) 2024.02.15
[MFC] 기본 개념  (0) 2024.02.15
[MFC] visual studio 2015 MFC 상단 메뉴바에 하위메뉴 추가  (0) 2024.02.15

    티스토리툴바