完善目录结构
完善了目录结构,添加了以前的web段com组件调用的代码(在/测试目录下)(部署没有使用到)
This commit is contained in:
57
测试/单独功能测试/Service服务测试/Main.cpp
Normal file
57
测试/单独功能测试/Service服务测试/Main.cpp
Normal file
@@ -0,0 +1,57 @@
|
||||
// Main.cpp : Defines the entry point for the console application.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "Service.h"
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#define SLEEP_TIME 5000 //两次查询的间隔
|
||||
#define LOGFILE "D:\\HWCVServices\\memstatus.txt" //日志目录
|
||||
|
||||
SERVICE_STATUS ServiceStatus;
|
||||
SERVICE_STATUS_HANDLE hStatus;
|
||||
|
||||
void ServiceMain(int argc, char** argv);
|
||||
void ControlHandler(DWORD request);
|
||||
int InitService();
|
||||
int WriteToLog(char* str);
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
_Module.Init("Service","Service");
|
||||
if (argc > 1)
|
||||
{
|
||||
char seps[] = "-/";
|
||||
char *pToken;
|
||||
|
||||
pToken = strtok(argv[1],seps);
|
||||
while (pToken)
|
||||
{
|
||||
if (!stricmp(pToken,"Install"))
|
||||
{
|
||||
_Module.Install();
|
||||
}
|
||||
else if (!stricmp(pToken,"Uninstall"))
|
||||
{
|
||||
_Module.Uninstall();
|
||||
}
|
||||
pToken = strtok( NULL, seps );
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
_Module.m_bService = TRUE;
|
||||
_Module.Start();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int WriteToLog(char* str)
|
||||
{
|
||||
FILE* log;
|
||||
log = fopen(LOGFILE, "a+");
|
||||
if (log == NULL)
|
||||
return -1;
|
||||
fprintf(log, "%s\n", str);
|
||||
fclose(log);
|
||||
return 0;
|
||||
}
|
||||
263
测试/单独功能测试/Service服务测试/Service.cpp
Normal file
263
测试/单独功能测试/Service服务测试/Service.cpp
Normal file
@@ -0,0 +1,263 @@
|
||||
// Service.cpp: implementation of the CService class.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "stdafx.h"
|
||||
#include <stdio.h>
|
||||
#include "Service.h"
|
||||
|
||||
CService _Module;
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Construction/Destruction
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
CService::CService()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CService::~CService()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CService::Init(LPCTSTR pServiceName,LPCTSTR pServiceDisplayedName)
|
||||
{
|
||||
lstrcpy(m_szServiceName,pServiceName);
|
||||
lstrcpy(m_szServiceDisplayedName,pServiceDisplayedName);
|
||||
|
||||
// set up the initial service status
|
||||
m_hServiceStatus = NULL;
|
||||
m_status.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
|
||||
m_status.dwCurrentState = SERVICE_STOPPED;
|
||||
m_status.dwControlsAccepted = SERVICE_ACCEPT_STOP;
|
||||
m_status.dwWin32ExitCode = 0;
|
||||
m_status.dwServiceSpecificExitCode = 0;
|
||||
m_status.dwCheckPoint = 0;
|
||||
m_status.dwWaitHint = 0;
|
||||
}
|
||||
|
||||
void CService::Start()
|
||||
{
|
||||
SERVICE_TABLE_ENTRY st[] =
|
||||
{
|
||||
{ m_szServiceName, _ServiceMain },
|
||||
{ NULL, NULL }
|
||||
};
|
||||
if (!::StartServiceCtrlDispatcher(st) && m_bService)
|
||||
{
|
||||
DWORD dw = GetLastError();
|
||||
LogEvent("StartServiceCtrlDispatcher Error=%d",dw);
|
||||
m_bService = FALSE;
|
||||
}
|
||||
|
||||
if (m_bService == FALSE)
|
||||
Run();
|
||||
}
|
||||
|
||||
void CService::ServiceMain()
|
||||
{
|
||||
// Register the control request handler
|
||||
m_status.dwCurrentState = SERVICE_START_PENDING;
|
||||
m_hServiceStatus = RegisterServiceCtrlHandler(m_szServiceName, _Handler);
|
||||
if (m_hServiceStatus == NULL)
|
||||
{
|
||||
LogEvent("Handler not installed");
|
||||
return;
|
||||
}
|
||||
SetServiceStatus(SERVICE_START_PENDING);
|
||||
|
||||
m_status.dwWin32ExitCode = S_OK;
|
||||
m_status.dwCheckPoint = 0;
|
||||
m_status.dwWaitHint = 0;
|
||||
|
||||
// When the Run function returns, the service has stopped.
|
||||
Run();
|
||||
|
||||
SetServiceStatus(SERVICE_STOPPED);
|
||||
LogEvent("Service stopped");
|
||||
}
|
||||
|
||||
inline void CService::Handler(DWORD dwOpcode)
|
||||
{
|
||||
switch (dwOpcode)
|
||||
{
|
||||
case SERVICE_CONTROL_STOP:
|
||||
LogEvent("Request to stop...");
|
||||
SetServiceStatus(SERVICE_STOP_PENDING);
|
||||
PostThreadMessage(m_dwThreadID, WM_QUIT, 0, 0);
|
||||
break;
|
||||
case SERVICE_CONTROL_PAUSE:
|
||||
break;
|
||||
case SERVICE_CONTROL_CONTINUE:
|
||||
break;
|
||||
case SERVICE_CONTROL_INTERROGATE:
|
||||
break;
|
||||
case SERVICE_CONTROL_SHUTDOWN:
|
||||
break;
|
||||
default:
|
||||
LogEvent("Bad service request");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void WINAPI CService::_ServiceMain(DWORD dwArgc, LPTSTR* lpszArgv)
|
||||
{
|
||||
_Module.ServiceMain();
|
||||
}
|
||||
void WINAPI CService::_Handler(DWORD dwOpcode)
|
||||
{
|
||||
_Module.Handler(dwOpcode);
|
||||
}
|
||||
|
||||
void CService::SetServiceStatus(DWORD dwState)
|
||||
{
|
||||
m_status.dwCurrentState = dwState;
|
||||
::SetServiceStatus(m_hServiceStatus, &m_status);
|
||||
}
|
||||
|
||||
void CService::Run()
|
||||
{
|
||||
LogEvent("Service started");
|
||||
m_dwThreadID = GetCurrentThreadId();
|
||||
|
||||
if (m_bService)
|
||||
SetServiceStatus(SERVICE_RUNNING);
|
||||
|
||||
// The service is running.
|
||||
|
||||
// TODO: Add code here
|
||||
|
||||
MSG msg;
|
||||
while (GetMessage(&msg,NULL,NULL,NULL))
|
||||
{
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
|
||||
|
||||
// The service is going to be stopped.
|
||||
|
||||
// TODO: Add code here
|
||||
}
|
||||
|
||||
BOOL CService::Install()
|
||||
{
|
||||
if (IsInstalled())
|
||||
return TRUE;
|
||||
|
||||
SC_HANDLE hSCM = ::OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
|
||||
if (hSCM == NULL)
|
||||
{
|
||||
MessageBox(NULL, "Couldn't open service manager", m_szServiceName, MB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// Get the executable file path
|
||||
TCHAR szFilePath[_MAX_PATH];
|
||||
::GetModuleFileName(NULL, szFilePath, _MAX_PATH);
|
||||
|
||||
SC_HANDLE hService = ::CreateService(
|
||||
hSCM, m_szServiceName, m_szServiceDisplayedName,
|
||||
SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS ,
|
||||
SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL,
|
||||
szFilePath, NULL, NULL, NULL, NULL, NULL);
|
||||
|
||||
if (hService == NULL)
|
||||
{
|
||||
::CloseServiceHandle(hSCM);
|
||||
MessageBox(NULL, "Couldn't create service", m_szServiceName, MB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
::CloseServiceHandle(hService);
|
||||
::CloseServiceHandle(hSCM);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL CService::Uninstall()
|
||||
{
|
||||
if (!IsInstalled())
|
||||
return TRUE;
|
||||
|
||||
SC_HANDLE hSCM = ::OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
|
||||
|
||||
if (hSCM == NULL)
|
||||
{
|
||||
MessageBox(NULL, "Couldn't open service manager", m_szServiceName, MB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
SC_HANDLE hService = ::OpenService(hSCM, m_szServiceName, SERVICE_STOP | DELETE);
|
||||
|
||||
if (hService == NULL)
|
||||
{
|
||||
::CloseServiceHandle(hSCM);
|
||||
MessageBox(NULL, "Couldn't open service", m_szServiceName, MB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
SERVICE_STATUS status;
|
||||
::ControlService(hService, SERVICE_CONTROL_STOP, &status);
|
||||
|
||||
BOOL bDelete = ::DeleteService(hService);
|
||||
::CloseServiceHandle(hService);
|
||||
::CloseServiceHandle(hSCM);
|
||||
|
||||
if (bDelete)
|
||||
return TRUE;
|
||||
|
||||
MessageBox(NULL, "Service could not be deleted", m_szServiceName, MB_OK);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL CService::IsInstalled()
|
||||
{
|
||||
BOOL bResult = FALSE;
|
||||
|
||||
SC_HANDLE hSCM = ::OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
|
||||
|
||||
if (hSCM != NULL)
|
||||
{
|
||||
SC_HANDLE hService = ::OpenService(hSCM, m_szServiceName, SERVICE_QUERY_CONFIG);
|
||||
if (hService != NULL)
|
||||
{
|
||||
bResult = TRUE;
|
||||
::CloseServiceHandle(hService);
|
||||
}
|
||||
::CloseServiceHandle(hSCM);
|
||||
}
|
||||
return bResult;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////
|
||||
// Logging functions
|
||||
void CService::LogEvent(LPCSTR pFormat, ...)
|
||||
{
|
||||
TCHAR chMsg[256];
|
||||
HANDLE hEventSource;
|
||||
LPTSTR lpszStrings[1];
|
||||
va_list pArg;
|
||||
|
||||
va_start(pArg, pFormat);
|
||||
vsprintf(chMsg, pFormat, pArg);
|
||||
va_end(pArg);
|
||||
|
||||
lpszStrings[0] = chMsg;
|
||||
|
||||
if (m_bService)
|
||||
{
|
||||
/* Get a handle to use with ReportEvent(). */
|
||||
hEventSource = RegisterEventSource(NULL, m_szServiceName);
|
||||
if (hEventSource != NULL)
|
||||
{
|
||||
/* Write to event log. */
|
||||
ReportEvent(hEventSource, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, (LPCTSTR*) &lpszStrings[0], NULL);
|
||||
DeregisterEventSource(hEventSource);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// As we are not running as a service, just write the error to the console.
|
||||
printf(chMsg);
|
||||
}
|
||||
}
|
||||
122
测试/单独功能测试/Service服务测试/Service.dsp
Normal file
122
测试/单独功能测试/Service服务测试/Service.dsp
Normal file
@@ -0,0 +1,122 @@
|
||||
# Microsoft Developer Studio Project File - Name="Service" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Application" 0x0101
|
||||
|
||||
CFG=Service - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "Service.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "Service.mak" CFG="Service - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "Service - Win32 Release" (based on "Win32 (x86) Application")
|
||||
!MESSAGE "Service - Win32 Debug" (based on "Win32 (x86) Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
MTL=midl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "Service - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /FD /c
|
||||
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /FD /c
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x804 /d "NDEBUG"
|
||||
# ADD RSC /l 0x804 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib advapi32.lib /nologo /machine:I386
|
||||
|
||||
!ELSEIF "$(CFG)" == "Service - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c
|
||||
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x804 /d "_DEBUG"
|
||||
# ADD RSC /l 0x804 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 kernel32.lib user32.lib advapi32.lib /nologo /debug /machine:I386 /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "Service - Win32 Release"
|
||||
# Name "Service - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Main.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Service.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Stdafx.cpp
|
||||
# ADD CPP /Yc"stdafx.h"
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Service.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Stdafx.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
29
测试/单独功能测试/Service服务测试/Service.dsw
Normal file
29
测试/单独功能测试/Service服务测试/Service.dsw
Normal file
@@ -0,0 +1,29 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# 警告: 不能编辑或删除该工作区文件!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "Service"=.\Service.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
44
测试/单独功能测试/Service服务测试/Service.h
Normal file
44
测试/单独功能测试/Service服务测试/Service.h
Normal file
@@ -0,0 +1,44 @@
|
||||
// Service.h: interface for the CService class.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#if !defined(AFX_SERVICE_H__CCA2ED69_EC91_11D5_966E_000347A347FE__INCLUDED_)
|
||||
#define AFX_SERVICE_H__CCA2ED69_EC91_11D5_966E_000347A347FE__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
class CService
|
||||
{
|
||||
public:
|
||||
CService();
|
||||
virtual ~CService();
|
||||
|
||||
void Init(LPCTSTR pServiceName,LPCTSTR pServiceDisplayedName);
|
||||
void Start();
|
||||
void ServiceMain();
|
||||
void Handler(DWORD dwOpcode);
|
||||
void Run();
|
||||
BOOL IsInstalled();
|
||||
BOOL Install();
|
||||
BOOL Uninstall();
|
||||
void LogEvent(LPCSTR pszFormat, ...);
|
||||
void SetServiceStatus(DWORD dwState);
|
||||
|
||||
private:
|
||||
static void WINAPI _ServiceMain(DWORD dwArgc, LPTSTR* lpszArgv);
|
||||
static void WINAPI _Handler(DWORD dwOpcode);
|
||||
|
||||
DWORD m_dwThreadID;
|
||||
|
||||
public:
|
||||
TCHAR m_szServiceName[256];
|
||||
TCHAR m_szServiceDisplayedName[256];
|
||||
SERVICE_STATUS_HANDLE m_hServiceStatus;
|
||||
SERVICE_STATUS m_status;
|
||||
BOOL m_bService;
|
||||
};
|
||||
|
||||
extern CService _Module;
|
||||
#endif // !defined(AFX_SERVICE_H__CCA2ED69_EC91_11D5_966E_000347A347FE__INCLUDED_)
|
||||
BIN
测试/单独功能测试/Service服务测试/Service.opt
Normal file
BIN
测试/单独功能测试/Service服务测试/Service.opt
Normal file
Binary file not shown.
19
测试/单独功能测试/Service服务测试/Service.plg
Normal file
19
测试/单独功能测试/Service服务测试/Service.plg
Normal file
@@ -0,0 +1,19 @@
|
||||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: Service - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating command line "link.exe kernel32.lib user32.lib advapi32.lib /nologo /incremental:yes /pdb:"Debug/Service.pdb" /debug /machine:I386 /out:"Debug/Service.exe" /pdbtype:sept .\Debug\Main.obj .\Debug\Service.obj .\Debug\Stdafx.obj "
|
||||
<h3>Output Window</h3>
|
||||
Linking...
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
Service.exe - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
8
测试/单独功能测试/Service服务测试/Stdafx.cpp
Normal file
8
测试/单独功能测试/Service服务测试/Stdafx.cpp
Normal file
@@ -0,0 +1,8 @@
|
||||
// stdafx.cpp : source file that includes just the standard includes
|
||||
// MouseRemoteControl.pch will be the pre-compiled header
|
||||
// stdafx.obj will contain the pre-compiled type information
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
// TODO: reference any additional headers you need in STDAFX.H
|
||||
// and not in this file
|
||||
20
测试/单独功能测试/Service服务测试/Stdafx.h
Normal file
20
测试/单独功能测试/Service服务测试/Stdafx.h
Normal file
@@ -0,0 +1,20 @@
|
||||
// stdafx.h : include file for standard system include files,
|
||||
// or project specific include files that are used frequently, but
|
||||
// are changed infrequently
|
||||
//
|
||||
|
||||
#if !defined(AFX_STDAFX_H__EE061F45_98C0_11D6_96CB_000347A347FE__INCLUDED_)
|
||||
#define AFX_STDAFX_H__EE061F45_98C0_11D6_96CB_000347A347FE__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
|
||||
// TODO: reference additional headers your program requires here
|
||||
#include <windows.h>
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_STDAFX_H__EE061F45_98C0_11D6_96CB_000347A347FE__INCLUDED_)
|
||||
Reference in New Issue
Block a user