[c++] C++에서의 윈도우 자원 관리 프로그래밍
C++에서는 Windows API를 사용하여 윈도우 시스템 자원을 관리할 수 있습니다. 이를 통해 파일 및 폴더를 생성, 수정, 삭제하고, 프로세스 또는 서비스를 제어할 수 있습니다.
파일 및 폴더 처리
C++에서는 Windows API 함수인 CreateFile
, ReadFile
, WriteFile
, DeleteFile
등을 사용하여 파일을 생성하고, 읽고, 쓰며, 삭제할 수 있습니다. 또한, CreateDirectory
, RemoveDirectory
함수를 사용하여 폴더를 생성하고 삭제할 수 있습니다.
#include <windows.h>
int main() {
HANDLE hFile = CreateFile("example.txt", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != INVALID_HANDLE_VALUE) {
// 파일에 쓰기
CloseHandle(hFile);
}
return 0;
}
프로세스 관리
C++에서는 Windows API 함수인 CreateProcess
를 사용하여 외부 프로그램을 실행할 수 있고, TerminateProcess
를 사용하여 프로세스를 종료할 수 있습니다.
#include <windows.h>
int main() {
PROCESS_INFORMATION pi;
STARTUPINFO si = { sizeof(si) };
if (CreateProcess(NULL, "notepad.exe", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
// 프로세스 생성 성공
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
return 0;
}
서비스 관리
C++에서는 Windows API 함수인 OpenSCManager
, CreateService
, StartService
, ControlService
등을 사용하여 서비스를 관리할 수 있습니다.
#include <windows.h>
#include <tchar.h>
int _tmain(int argc, TCHAR *argv[]) {
SC_HANDLE schSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
if (schSCManager != NULL) {
SC_HANDLE schService = CreateService(schSCManager, "MyService", "MyService",
SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_NORMAL,
"C:\\Path\\To\\MyService.exe", NULL, NULL, NULL, NULL, NULL);
if (schService != NULL) {
// 서비스 생성 성공
CloseServiceHandle(schService);
}
CloseServiceHandle(schSCManager);
}
return 0;
}
프로그램에서 Windows API를 사용하여 자원을 관리하는 방법에 대한 자세한 내용은 Microsoft 공식 문서를 참고하세요.