안녕하세요, 이번에는 정해진 시간에 컴퓨터 명령을 실행하도록 하는 코드를 짜보았습니다.
개발환경
VisualStudio 2019
C++
제작동기
주변에서 자녀의 컴퓨터 시간을 조절하고자 하는데, 자녀분이 컴퓨터에 관심이 있어서인지 잘 찾아낸다는 말을 듣게 되었습니다. 그래서 백그라운드에서 이를 수행하는 프로그램을 만들어봤습니다.
코드
#include <iostream>
#include <windows.h>
#include <ctime>
using namespace std;
int main() {
//콘솔창 표시 여부결정 . SW_SHOW : 표시 SW_HIDE : 숨김
ShowWindow(GetConsoleWindow(), SW_HIDE);
//현재 시간 가져오기
time_t timer = time(NULL);
struct tm t;
localtime_s(&t, &timer);
int hour = t.tm_hour;
bool service = true;
//10분 뒤 프로그램 시작
Sleep(60000);
while (1) {
//F10을 누르면 서비스 시작/종료 , 프로그램 실행 시 자동 시작
if (GetAsyncKeyState(VK_F10)&& 0x8000) {
cout << "F10 Clicked!" << endl;
if (service) {
cout << "작동중지" << endl;
service = false;
}
else {
cout << "작동시작. 작동중" << endl;
service = true;
}
}
//명령 실행 조건 설정
//아래의 경우 2시와 6시 사이이면 계속 명령을 실행하게 됨.
if ((hour > 2 && hour < 6) && service) {
cout << "경고, 규칙 위반" << endl;
//실행할 명령 작성
system("notepad");
//1초 멈춤
Sleep(1000);
}
Sleep(100);
}
return 0;
}
설명
결론부터 말하자면 현재는 자동으로 꺼지도록 설정되어 있지 않습니다.
다만 컴퓨터 이용에 불편을 주도록 메모장을 켜도록 되어 있습니다.
프로그램이 실행중이라면 정해진 시간에 반복해서
메모장 실행 -> 1초 멈춤 -> 메모장실행 ... 을 하게 됩니다.
system("")부분을 통해 cmd명령어를 입력하여 얼마든지 변경이 가능합니다.
또한if ((hour > 2 && hour < 6) && service) 안의 숫자를 변경하여
명령을 수행하는 시간을 설정할 수 있습니다.
다만 if ((hour > a && hour < b) && service) 의 상황에서
a < b 가 되어야 합니다.
예를 들어
23시부터 6시까지는 23 < 6이 아니므로 오류가 발생합니다.
(보완이 된다면 추후 포스팅하겠습니다.)
사용 시 유의사항
지인의 고민을 동기로 시작한 만큼 자녀를 이용자로 두고 만들었습니다.
(본 목적외의 사용으로 인한 문제는 책임지지 않습니다.).
혹시나 exe파일을 배포할 경우 생길 문제를 대비하여 따로 파일을 올리진 않을 계획입니다.
exe 파일을 만드는 법은 검색창에
"visual studio exe 파일 만들기" 키워드를 통해 도움 받으시길 추천드립니다.
도움이 필요하신 분은 댓글이나 이메일남겨 주시면 답드리겠습니다!
코딩을 하시는 분들께
window.h와 ctime만 잘 활용할 수 있다면 금방 만들 수 있을 간단한 프로그램입니다.
window.h에 대해 거의 모르던 상태에서 시작한 만큼 좋은 공부가 되었습니다.
또한 ctime에서 현재 시간을 가져오는 방법이 localtime_s(&t, &timer);으로
기존의 localtime을 쓰지 않았다는 점이 새로웠습니다.
조금이나마 도움이 되었으면 합니다.
오류가 있다면 알려주시면 감사하겠습니다.