可以实现,不过比较复杂
void WINAPI service_main(DWORD dwArgc, LPTSTR *lpszArgv)
{
// register our service control handler:
ServiceStatusHandle = RegisterServiceCtrlHandler( TEXT(SZSERVICENAME), service_ctrl); if (ServiceStatusHandle)
{
// SERVICE_STATUS members that don't change in example
ServiceStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
ServiceStatus.dwServiceSpecificExitCode = 0;
// report the status to the service control manager.
if ( ReportStatusToSCMgr( SERVICE_START_PENDING, NO_ERROR, 3000) )
{
service_start( dwArgc, lpszArgv );//你的服务在这个函数里实现即可
}
}
// try to report the stopped status to the service control manager.
if (ServiceStatusHandle)
(void)ReportStatusToSCMgr(SERVICE_STOPPED, dwErr, 0); return;
}
void main(int argc, char **argv)
{
SERVICE_TABLE_ENTRY dispatchTable[] =
{
{ TEXT(SZSERVICENAME), (LPSERVICE_MAIN_FUNCTION)service_main },
{ NULL, NULL }//表示服务分派表结束
};
printf("\nStartServiceCtrlDispatcher being called.\n" );
printf("This may take several seconds. Please wait...\n" );
//向服务控制管理器添加一个服务
if (!StartServiceCtrlDispatcher(dispatchTable))
{
AddToMessageLog(TEXT("StartServiceCtrlDispatcher failed!"));
}
}
void WINAPI service_main(DWORD dwArgc, LPTSTR *lpszArgv)
{
// register our service control handler:
ServiceStatusHandle = RegisterServiceCtrlHandler( TEXT(SZSERVICENAME), service_ctrl); if (ServiceStatusHandle)
{
// SERVICE_STATUS members that don't change in example
ServiceStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
ServiceStatus.dwServiceSpecificExitCode = 0;
// report the status to the service control manager.
if ( ReportStatusToSCMgr( SERVICE_START_PENDING, NO_ERROR, 3000) )
{
service_start( dwArgc, lpszArgv );//你的服务在这个函数里实现即可
}
}
// try to report the stopped status to the service control manager.
if (ServiceStatusHandle)
(void)ReportStatusToSCMgr(SERVICE_STOPPED, dwErr, 0); return;
}
void main(int argc, char **argv)
{
SERVICE_TABLE_ENTRY dispatchTable[] =
{
{ TEXT(SZSERVICENAME), (LPSERVICE_MAIN_FUNCTION)service_main },
{ NULL, NULL }//表示服务分派表结束
};
printf("\nStartServiceCtrlDispatcher being called.\n" );
printf("This may take several seconds. Please wait...\n" );
//向服务控制管理器添加一个服务
if (!StartServiceCtrlDispatcher(dispatchTable))
{
AddToMessageLog(TEXT("StartServiceCtrlDispatcher failed!"));
}
}
解决方案 »
- &&问个 线程问题
- DataOutputStream将当于Linux的Socket编程中的哪一个级别?
- java 一个类调用另一个类(想把JFrameTest6.java和JFrameTest7,java这两个类分开,写成两个文件的形式)
- 高分求救一个简单问题
- 讨论static-救救菜鸟们
- 如何一个组件中把一个子组件替换为另一个,保持位置约束完全不变?
- 请问java里边一个截取String的问题
- jboss 3.0 + microsoft sqlserver jdbc driver 的奇怪问题,如能解决,200分相赠
- 请问后缀名为clw的文件要用什么程序打开
- 哪里有JDK for linux下?sun的down不下来
- 到底有谁解决了 JfreeChart 的中文模糊的BUG的?
- JBuilder的逐行检查功能怎么用啊,是在哪个命令栏下?
1 建立个windows服务程序
2 windows服务程序调用JVM
3 JVM调用你的java程序