Windoes Service Status ?
-
First of all, this is no Qt related question.
You can use the windows service api.If you follow this "link":http://www.lmgtfy.com/?q=windows+service+api , you come to this "result":http://msdn.microsoft.com/en-us/library/ms685141(v=vs.85).aspx
-
The C# code uses the "Win32 Service api":http://msdn.microsoft.com/en-us/library/ms685942(v=VS.85).aspx , that can be done.
like this:@
SC_HANDLE hScManager = OpenSCManager(0, // local computer or add computer name here
0, // SERVICES_ACTIVE_DATABASE database is opened by default.
GENERIC_READ); // onyl read info
if(0 != hScManager)
{
SC_HANDLE hSvc = OpenService(hScManager, // service manager
"Spooler", // service name
GENERIC_READ); // onyl read info
if(0 != hSvc)
{
SERVICE_STATUS_PROCESS sInfo;
DWORD bytesNeeded = 0;if(QueryServiceStatusEx(hSvc, // A handle to the service. SC_STATUS_PROCESS_INFO, // info requested &sInfo, // structure to load info to sizeof(sInfo), // size of the buffer &bytesNeeded)) { if(sInfo.dwCurrentState == SERVICE_RUNNING) { QMessageBox::information(0, tr("MyApp"), tr("Service is running")); } } } }
@
Warning: the code is not tested, just build from the documentation without compilation. Might need some adjustments.
-
Thanks alot,
i have it. This is the working code.
@LPCWSTR ServiceName = L"My ServiceName";
SC_HANDLE hScManager = OpenSCManager(0, // local computer or add computer name here
0, // SERVICES_ACTIVE_DATABASE database is opened by default.
GENERIC_READ); // onyl read info
if(0 != hScManager)
{
SC_HANDLE hSvc = OpenService(hScManager, // service manager
ServiceName, // service name
GENERIC_READ); // onyl read info
if(0 != hSvc)
{
SERVICE_STATUS_PROCESS sInfo;DWORD bytesNeeded = 0; if(QueryServiceStatusEx(hSvc, // A handle to the service. SC_STATUS_PROCESS_INFO, // info requested (LPBYTE)&sInfo, // structure to load info to sizeof(sInfo), // size of the buffer &bytesNeeded)) { if(sInfo.dwCurrentState == SERVICE_RUNNING) { traymessage("test", "start!!!", 3); } else { traymessage("test", "stop!!!", 3); } } }
}@