[WinAPI] 작업 스케줄러 등록 – 관리자 권한 프로그램 부팅 시 자동 실행

최근  프로젝트를 진행하면서 발생했던 이슈에 대해 정리 할겸 글을 씁니다. 컴퓨터를 부팅했을 때 프로그램을 자동 실행 방법은 여러 가지가 있습니다. 1. 시작 프로그램 폴더에 파일 이동 Windows + R 키를 눌러 shell:startup를 입력하면 시작프로그램 폴더를 볼 수 있습니다.여기에 exe 파일을 이동하면 부팅 시 프로그램이 실행 됩니다. 2. 레지스트리에 등록 Windows + R 키를 눌러 regedit을 입력하면 레지스트리 편집기가 실행됩니다.HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion에 … Read more

[WinAPI] CWnd로 시계 화면 만들기 – 파일 첨부

이번 글에서는, 커스텀 화면을 만들어야 하는 경우 어떻게 해야하는지 알아보겠습니다. 장문의 글이 될 것 같네요.우선 개발로 들어가기 전에 몇가지 알아 보겠습니다. 1. Windows 화면 구조 PC를 켜면, Windows OS가 구동 되어 바탕화면이 보일 것이고, 바탕화면의 프로그램을 실행 시키면 프로그램이 모니터에 표시됩니다. 이때 모니터에 표시되는 바탕화면, 프로그램, 프로그램의 버튼, 리스트 컨트롤 등등 모두 핸들을 가지고 있으며, 화면 … Read more

[WinAPI] CString 문자열 추출 SpanIncluding, SpanExcluding

이번 글에서는 CString의 SpanIncluding과 SpanExcluding을 사용하여 포함 문자열, 포함하지 않는 문자열을 추출하는 방법에 대해 알아보겠습니다. CString을 사용하기 위해서는 아래 함수를 include 해야합니다. 헤더   cstringt.h MFC 전용 문자열 개체 atlstr.h 비 MFC 문자열 개체 SpanIncluding은 포함, SpanExcluding은 미포함하는 문자열을 추출합니다.예를 들어 “0123456789”에서 SpanIncluding 함수를 사용하여 0 ~ 4까지 문자열만 추출할 수 있습니다.위 두 함수는 문자열에 … Read more

[WinAPI] 파일 아이콘 가져오기 – 1. Shell_GetImageLists, SHGetFileInfo

이번 글에서는 파일 아이콘을 가져오는 작업을 해보겠습니다. 아이콘을 가져오는건 여러 가지 방법이 있지만 윈도우에서 기본적으로 제공하는 파일 아이콘들, 예를들어 텍스트 파일, 엑셀 파일, 파워포인트 파일 등, 이런 것들을 API를 사용해서 가져오는 방법에 대해 알아보겠습니다. Shell_GetImageLists와 SHGetFileInfo 함수를 사용하여 아이콘을 가져올 것이고, 최종적으로 아래와 같이 탐색기 화면을 만들어 보겠습니다. 참고로 파일 탐색기는 MFC Shell Tree, List … Read more

[WinAPI] 로컬 디스크 – 2. 로컬 디스크 용량 얻기(GetDiskFreeSpaceEx)

저번글에 이어서 이번 글에서는 로컬 디스크의 용량을 얻어오는 작업을 해보겠습니다. 디스크에는 전체 용량, 현재 용량, 사용 용량 등의 정보가 있습니다. 이러한 정보들은 GetDiskFreeSpace 함수를 써서 확인을 할 수 있습니다.GetDiskFreeSpaceEx 함수 사용을 위해 필요한 요구사항은 아래와 같습니다. 지원되는 최소 클라이언트 Windows XP 지원되는 최소 서버 Windows Server 2003 헤더 fileapi.h (Windows.h) 라이브러리 Kernel32.lib DLL Kernel32.dll GetDiskFreeSpaceEx 함수 원형은 … Read more

[WinAPI] 로컬 디스크 – 1. 로컬 디스크 목록 얻기(GetLogicalDriveStrings)

로컬 디스크 관련하여, 이번 글에서는 로컬 디스크 목록 얻는 방법에 대해 알아보겠습니다. 로컬 디스크는 내PC 폴더에서 볼 수 있으며 아래와 같이 C:\, D:\ 경로를 가집니다. USB를 꽂거나 하드를 계속 확장하게 되면 E:\, F:\, … 로 계속 늘어 나게 됩니다.이 목록을 GetLogicalDriveStrings함수를 사용하여 얻어보겠습니다. 함수 원형은 아래와 같습니다. 함수가 실패하면 0을 반환하고 GetLastError를 통해 확인 가능합니다.함수가 성공하면 … Read more

[WinAPI] GetFileVersionInfo 파일 버전 확인

일반적으로 EXE 실행 프로그램에는 파일 버전이 있습니다.프로그램 개발자들은 파일 버전으로 유지보수를 하거나, 업데이트 작업을 할 수 있습니다. 우선 간단하게 파일 버전을 확인하는 방법을 알아보겠습니다보통 C:\Program Files (x86)\Kakao\KakaoTalk 경로에 카카오톡 실행 파일이 있습니다. 해당 파일을 우클릭하여 속성 -> 자세히를 보시면 파일 버전이 적혀있습니다. 이제 코드를 작성하여 파일 버전을 읽어봅시다.필요 헤더 파일은 아래와 같습니다. 함수 원형은 아래와 같습니다. lpData를 … Read more

[WinAPI] TTS(Text To Speech) 만들어보기 – ISpVoice

Windows에서는 문자를 음성으로 출력할 수 있는 TTS(Text To Speech) 기능을 제공합니다.당연히 다른 상용화된 TTS 제품들과 비교하면 매우 낮은 수준이지만, 간단하게 코딩해서 사용할 수 있다는 것에 의미만 두면 되겠습니다.한글 TTS는 Windows 8 이후부터 지원합니다. 필요 헤더 파일은 아래와 같습니다. Visual C++에서 TTS는 COM을 사용하여 간단하게 만들 수 있습니다.COM을 사용하고, 이후 사용하지 않을 때엔 초기화와 해제를 해줘야합니다. … Read more

[WinAPI] FTP 클라이언트 프로그램 만들기(CFtpConnection) – 3

FTP 관련 마지막으로 CFtpConnection를 사용하여 FTP 클라이언트 프로그램을 만들어 보겠습니다. WinAPI에서는 CInternetSession과 CFtpConnection으로 FTP 프로그램을 정말 쉽게 만들 수 있습니다.CFtpConnection의 멤버 함수 설명은 아래와 같습니다. 멤버 함수 설명 Command FTP 서버에 직접 명령을 보냄 SetCurrentDirectory 현재 FTP 디렉터리 설정 GetCurrentDirectory 현재 디렉터리를 가져옴 GetCurrentDirectoryAsURL 현재 디렉터리를 가져옴(URL) CreateDirectory 서버에 디렉터리를 만듦 RemoveDirectory 지정 된 디렉터리를 서버에서 제거 … Read more

[WinAPI] Windows FTP IIS 설정하기 – 2

이번 글에서는 윈도우에서 IIS를 통해 FTP를 구축해보겠습니다. 제어판 – 프로그램 – 프로그램 제거를 클릭합니다. 그 다음 좌측 메뉴 중 Windows 기능 켜기/끄기를 클릭합니다. 그러면 아래와 같은 Windows 기능 켜기끄기 화면이 나오는데, 목록 중 인터넷 정보 서비스 – FTP 서버를 아래와 같이 선택합니다. 그리고 FTP 서버로 쓸 폴더를 하나 생성해줍니다. 저는 C:\에 FTP폴더를 하나 생성하였습니다.(C:\FTP)윈도우 키를 눌러 시작 … Read more