[CPP] Windows Service 간단하게 만들기
Service 클래스 추가
stdafx.h 에 필요한 헤더파일 추가
#include <iostream>
#include <conio.h>
#include <WinSvc.h>
main.cpp 에 필요한 내용 추가
// ConsoleApplication5.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.
//
#include "stdafx.h"
#include "Service.h"
#include "ConsoleApplication5.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
UINT MTServerThread(LPVOID pParam);
class CUpdateService : public CService{
public:
CWinThread *_thread;
void main(void){
CService::Begin(_T("ConsoleApplication5"));
// TODO : 서비스에서 실행 할 작업을 아래에 작성합니다.
CService::End();
}
protected:
void OnStarted(){
_thread = AfxBeginThread(MTServerThread, 0);
}
void OnStopped(){
DWORD dwExitCode;
GetExitCodeThread(_thread->m_hThread, &dwExitCode);
WSACleanup();
}
};
UINT MTServerThread(LPVOID pParam){
return 0;
}
// 유일한 응용 프로그램 개체입니다.
CWinApp theApp;
using namespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
HMODULE hModule = ::GetModuleHandle(NULL);
if (hModule != NULL)
{
// MFC를 초기화합니다. 초기화하지 못한 경우 오류를 인쇄합니다.
if (!AfxWinInit(hModule, NULL, ::GetCommandLine(), 0))
{
// TODO: 오류 코드를 필요에 따라 수정합니다.
_tprintf(_T("심각한 오류: MFC를 초기화하지 못했습니다.\n"));
nRetCode = 1;
}
else
{
// TODO: 응용 프로그램의 동작은 여기에서 코딩합니다.
CUpdateService upServ;
if (argc == 2){
if (_tcscmp(argv[1], _T("-i")) == 0){
upServ.Install(_T("ConsoleApplication5"));
}
else if (_tcscmp(argv[1], _T("-u")) == 0){
upServ.Uninstall(_T("ConsoleApplication5"));
}
return true;
}
upServ.main();
}
}
else
{
// TODO: 오류 코드를 필요에 따라 수정합니다.
_tprintf(_T("심각한 오류: GetModuleHandle 실패\n"));
nRetCode = 1;
}
return nRetCode;
}
'Programming > C,CPP,CS' 카테고리의 다른 글
WAVE form wFormatTag IDs (0) | 2018.04.04 |
---|---|
CString Tokenize (0) | 2017.10.19 |
WaitForMultipleObjects (0) | 2017.04.19 |
How do I add my domain name to my computers host file? (0) | 2017.04.06 |
[VS2013] 힙이 손상되었습니다. (0) | 2017.04.05 |