做一个服务程序:其服务主函数sericemain代码如下:
void __stdcall ServiceMain( int argc, wchar_t* argv[] )
{
char svcname[256];
strncpy(svcname, (char*)argv[0], sizeof svcname);
wcstombs(svcname, argv[0], sizeof svcname);
hSrv = RegisterServiceCtrlHandler( svcname, (LPHANDLER_FUNCTION)ServiceHandler );
if( hSrv == NULL )
{
return;
}else FreeConsole();
TellSCM( SERVICE_START_PENDING, 0, 1 );
TellSCM( SERVICE_RUNNING, 0, 0 );hThread=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)MainFn, (LPVOID)0, 0, &dwThreadId);do{
Sleep(10);//not quit until receive stop command, otherwise the service will stop
}while(dwCurrState != SERVICE_STOP_PENDING && dwCurrState != SERVICE_STOPPED);
return;
}我在mainfn线程功能里面就加了一句代码
while(1)
{
Sleep(100);
}
但在运行安装后,我一启动服务,就直接关闭!根本就不持续运行!
但我觉得我的代码没有什么问题呀!
void __stdcall ServiceMain( int argc, wchar_t* argv[] )
{
char svcname[256];
strncpy(svcname, (char*)argv[0], sizeof svcname);
wcstombs(svcname, argv[0], sizeof svcname);
hSrv = RegisterServiceCtrlHandler( svcname, (LPHANDLER_FUNCTION)ServiceHandler );
if( hSrv == NULL )
{
return;
}else FreeConsole();
TellSCM( SERVICE_START_PENDING, 0, 1 );
TellSCM( SERVICE_RUNNING, 0, 0 );hThread=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)MainFn, (LPVOID)0, 0, &dwThreadId);do{
Sleep(10);//not quit until receive stop command, otherwise the service will stop
}while(dwCurrState != SERVICE_STOP_PENDING && dwCurrState != SERVICE_STOPPED);
return;
}我在mainfn线程功能里面就加了一句代码
while(1)
{
Sleep(100);
}
但在运行安装后,我一启动服务,就直接关闭!根本就不持续运行!
但我觉得我的代码没有什么问题呀!
解决方案 »
- 输入中文被OnChar获取显示乱码
- [Help]子线程中如何想主窗体发消息?
- 使用DSound play wave,CreateSoundBuffer failed
- 如何获取ppt中插入符所在的一行文本
- 各位高手讨论个问题
- 我想将Web浏览器控件的3D边框改为平面或去掉边框,有什么好办法啊?
- 编译程序时遇到endthreadex的问题?
- 请教怎么做记事本
- CRecordset::GetRecordCount()不能返回正确的记录总行数,怎么解决,谢谢
- MessageBox(...)的问题,简单的很,大家快来拿分!!!
- VC界面高手来指教3个问题!!!
- 怎样把类型为long的变量的值赋给某个指针
do{
Sleep(10);//not quit until receive stop command, otherwise the service will stop
}while(dwCurrState != SERVICE_STOP_PENDING && dwCurrState != SERVICE_STOPPED);
换成
while(1)
{Sleep(10);
}
安装服务后启动照样一启动就关闭!