[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 |