设为首页 加入收藏

TOP

如何编写windows服务程序(二)
2014-11-24 00:04:17 来源: 作者: 【 】 浏览:55
Tags:如何 编写 windows 服务 程序
START_PENDING;

servicestatus.dwControlsAccepted = SERVICE_ACCEPT_SHUTDOWN|SERVICE_ACCEPT_STOP;//在本例中只接受系统关机和停止服务两种控制命令

servicestatus.dwWin32ExitCode = 0;

servicestatus.dwServiceSpecificExitCode = 0;

servicestatus.dwCheckPoint = 0;

servicestatus.dwWaitHint = 0;

hstatus = ::RegisterServiceCtrlHandler("testservice", CtrlHandler);

if (hstatus==0)

{

WriteToLog("RegisterServiceCtrlHandler failed");

return;

}

WriteToLog("RegisterServiceCtrlHandler success");

//向SCM 报告运行状态

servicestatus.dwCurrentState = SERVICE_RUNNING;

SetServiceStatus (hstatus, &servicestatus);

//下面就开始任务循环了,你可以添加你自己希望服务做的工作

brun=true;

MEMORYSTATUS memstatus;

char str[100];

memset(str,'\0',100);

while (brun)

{

GlobalMemoryStatus(&memstatus);

int availmb=memstatus.dwAvailPhys/1024/1024;

sprintf_s(str,100,"available memory is %dMB",availmb);

WriteToLog(str);

Sleep(SLEEP_TIME);

}

WriteToLog("service stopped");

}

void WINAPI CtrlHandler(DWORD request)

{

switch (request)

{

case SERVICE_CONTROL_STOP:

brun=false;

servicestatus.dwCurrentState = SERVICE_STOPPED;

break;

case SERVICE_CONTROL_SHUTDOWN:

brun=false;

servicestatus.dwCurrentState = SERVICE_STOPPED;

break;

default:

break;

}

SetServiceStatus (hstatus, &servicestatus);

}

void main()

{

SERVICE_TABLE_ENTRY entrytable[2];

entrytable[0].lpServiceName="testservice";

entrytable[0].lpServiceProc=(LPSERVICE_MAIN_FUNCTION)ServiceMain;

entrytable[1].lpServiceName=NULL;

entrytable[1].lpServiceProc=NULL;

StartServiceCtrlDispatcher(entrytable);

}

如何安装服务:

运行命令提示符cmd.exe

输入sc create testservicename binpath= D:\test.exe

输入sc start testservicename 启动服务

输入sc query 会在最底部显示你的服务当前的状态

输入sc stop testservicename 停止服务

输入sc delete testservicename删除服务,该服务将在下次重启后删除,在重启之前将不能注册同一个名字的服务。

张鹏

HikVision

Zhangpeng_nj@163.com

2011/11/22

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇相对完整的红黑树(经过比较强的测.. 下一篇C语言的另类结构体赋值

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: