mirror of
https://github.com/gnustep/libs-back.git
synced 2025-04-25 00:40:55 +00:00
Add gui/backend support for checking running service - windows only
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/branches/gnustep_testplant_branch@38436 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
6796519eb2
commit
3e1df4d6ef
1 changed files with 99 additions and 0 deletions
|
@ -680,6 +680,9 @@ BOOL CALLBACK LoadDisplayMonitorInfo(HMONITOR hMonitor,
|
|||
[self setHandlesWindowDecorations: YES];
|
||||
[self setUsesNativeTaskbar: YES];
|
||||
|
||||
[self isDiscoveryServiceInstalled];
|
||||
[self isDiscoveryServiceRunning];
|
||||
|
||||
[GSTheme theme];
|
||||
{ // Check user defaults
|
||||
NSUserDefaults *defs;
|
||||
|
@ -1924,7 +1927,103 @@ LRESULT CALLBACK windowEnumCallback(HWND hwnd, LPARAM lParam)
|
|||
|
||||
@end
|
||||
|
||||
@implementation WIN32Server (ServiceOps)
|
||||
|
||||
- (BOOL)isServiceInstalled: (NSString*)serviceName
|
||||
{
|
||||
BOOL result = NO;
|
||||
SC_HANDLE serviceControlManager = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT);
|
||||
|
||||
if (serviceControlManager == NULL)
|
||||
{
|
||||
NSDebugMLLog(@"WIN32", @"cannot connect to service control manager - status: %ld", GetLastError());
|
||||
NSWarnMLog(@"cannot connect to service control manager - status: %ld", GetLastError());
|
||||
}
|
||||
else
|
||||
{
|
||||
// CHeck for service running...
|
||||
SC_HANDLE serviceHandle = OpenService(serviceControlManager, TEXT("Bonjour Service"), SERVICE_QUERY_STATUS);
|
||||
|
||||
if (serviceHandle == NULL)
|
||||
{
|
||||
NSDebugMLLog(@"WIN32", @"cannot open service 'Bonjour' - status: %ld", GetLastError());
|
||||
NSWarnMLog(@"cannot open service 'Bonjour' - status: %ld", GetLastError());
|
||||
}
|
||||
else
|
||||
{
|
||||
NSDebugMLLog(@"WIN32", @"service 'Bonjour' is installed");
|
||||
NSWarnMLog(@"service 'Bonjour' is installed");
|
||||
result = YES;
|
||||
|
||||
// Cleanup...
|
||||
CloseServiceHandle(serviceHandle);
|
||||
CloseServiceHandle(serviceControlManager);
|
||||
}
|
||||
}
|
||||
|
||||
// return our result...
|
||||
return result;
|
||||
}
|
||||
|
||||
- (BOOL)isServiceRunning: (NSString*)serviceName
|
||||
{
|
||||
BOOL result = NO;
|
||||
SC_HANDLE serviceControlManager = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT);
|
||||
|
||||
if (serviceControlManager == NULL)
|
||||
{
|
||||
NSDebugMLLog(@"WIN32", @"cannot connect to service control manager - status: %ld", GetLastError());
|
||||
NSWarnMLog(@"cannot connect to service control manager - status: %ld", GetLastError());
|
||||
}
|
||||
else
|
||||
{
|
||||
// Check for service running...
|
||||
//TCHAR *name = TEXT([serviceName UTF8String]);
|
||||
SC_HANDLE serviceHandle = OpenService(serviceControlManager, TEXT("Bonjour Service"), SERVICE_QUERY_STATUS);
|
||||
|
||||
if (serviceHandle == NULL)
|
||||
{
|
||||
NSDebugMLLog(@"WIN32", @"cannot open service 'Bonjour' - status: %ld", GetLastError());
|
||||
NSWarnMLog(@"cannot open service 'Bonjour' - status: %ld", GetLastError());
|
||||
}
|
||||
else
|
||||
{
|
||||
SERVICE_STATUS_PROCESS serviceStatusInfo;
|
||||
DWORD ssiSize;
|
||||
|
||||
if (0 == QueryServiceStatusEx(serviceHandle, SC_STATUS_PROCESS_INFO, (LPBYTE)&serviceStatusInfo, sizeof(serviceStatusInfo), &ssiSize))
|
||||
{
|
||||
NSDebugMLLog(@"WIN32", @"cannot query service 'Bonjour' - status: %ld", GetLastError());
|
||||
NSWarnMLog(@"cannot query service 'Bonjour' - status: %ld", GetLastError());
|
||||
}
|
||||
else
|
||||
{
|
||||
NSDebugMLLog(@"WIN32", @"service 'Bonjour' current state: %ld", serviceStatusInfo.dwCurrentState);
|
||||
NSWarnMLog(@"service 'Bonjour' current state: %ld", serviceStatusInfo.dwCurrentState);
|
||||
result = (serviceStatusInfo.dwCurrentState == SERVICE_RUNNING);
|
||||
}
|
||||
|
||||
// Cleanup...
|
||||
CloseServiceHandle(serviceHandle);
|
||||
CloseServiceHandle(serviceControlManager);
|
||||
}
|
||||
}
|
||||
|
||||
// return our result...
|
||||
return result;
|
||||
}
|
||||
|
||||
- (BOOL) isDiscoveryServiceInstalled
|
||||
{
|
||||
return [self isServiceInstalled: @"Bonjour Service"];
|
||||
}
|
||||
|
||||
- (BOOL) isDiscoveryServiceRunning
|
||||
{
|
||||
return [self isServiceRunning: @"Bonjour Service"];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation WIN32Server (WindowOps)
|
||||
|
||||
|
|
Loading…
Reference in a new issue