336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
[CPP] Windows Service 간단하게 만들기
Service.cpp
Service.h
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;
}