资源描述:
《用vc建立services服务应用程序》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、用VC++建立Service服务应用程序收藏为什么要使用服务应该程序呢?服务程序就像系统的一些服务一样,能够自动地启动,并执行相应的操作;而且因为服务程序的在层次上和一般的应用程序不同,其能够在系统启动时就自动地运行,而不像一般的应用程序那样一定要在登陆后才能运行,这些就是服务的一些好处了,如果你也想你的程序具有这样的功能,那么你就可以建立一个服务应用程序了。 下面就跟着我一步一步地教你怎么去创建一个服务应用程序吧。 本文主要介绍了OpenSCManager、CreateService、OpenService、ControlService、DeleteService、R
2、egisterServiceCtrlHandler、SetServiceStatus、StartServiceCtrlDispatcher等操作服务程序的主要几个API的用法,具体的函数参数大家可以查阅MSDN。 一、建立Win32Application应用程序(当然你也可以建立其它的应用程序,但服务一般是没有用户界面的),并命名为ServiceTest。 二、定义全局函数变量//定义全局函数变量voidInit();BOOLIsInstalled();BOOLInstall();BOOLUninstall();voidLogEvent(LPCTSTRpszFormat
3、,...);voidWINAPIServiceMain();voidWINAPIServiceStrl(DWORDdwOpcode);TCHARszServiceName[]=_T("ServiceTest");BOOLbInstall;SERVICE_STATUS_HANDLEhServiceStatus;SERVICE_STATUSstatus;DWORDdwThreadID; 三、添加Init初始化函数 这里主要是设置服务句柄和状态。hServiceStatus=NULL;status.dwServiceType=SERVICE_WIN32_OWN_PROCESS
4、;status.dwCurrentState=SERVICE_STOPPED;tatus.dwControlsAccepted=SERVICE_ACCEPT_STOP;status.dwWin32ExitCode=0;status.dwServiceSpecificExitCode=0;status.dwCheckPoint=0;status.dwWaitHint=0; 四、添加安装和删除服务函数 这里主要是用到了五个函数OpenSCManager、CreateService、OpenService、ControlService、DeleteService。OpenSC
5、Manager用于打开服务控制管理器;CreateService用于创建服务;OpenService用于打开已有的服务,返回该服务的句柄;ControlService则用于控制已打开的服务状态,这里是让服务停止后才删除;DeleteService用于删除指定服务。BOOLInstall();{ //这里列出主要的两个函数,其它的可以在代码里找。 //打开服务控制管理器 OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS); //创建服务 SC_HANDLEhService=::CreateService( hSCM,szServi
6、ceName,szServiceName, SERVICE_ALL_ACCESS,SERVICE_WIN32_OWN_PROCESS, SERVICE_DEMAND_START,SERVICE_ERROR_NORMAL, szFilePath,NULL,NULL,_T(""),NULL,NULL); ::CloseServiceHandle(hService); ::CloseServiceHandle(hSCM);}BOOLUninstall();{ //这里列出主要的两个函数,其它的可以在代码里找。 //打开服务控制管理器 OpenSCManager(NULL,N
7、ULL,SC_MANAGER_ALL_ACCESS); //打开服务 OpenService(hSCM,szServiceName,SERVICE_STOP
8、DELETE); //停止服务 ControlService(hService,SERVICE_CONTROL_STOP,&status); //删除服务 DeleteService(hService); …}五、添加服务主线程函数和控制函数 这里调用RegisterServiceCtrlHandler来注册服务的控制函数,这里要设置status.dwCon