Author: gedmurphy Date: Thu Oct 11 14:29:02 2007 New Revision: 29496
URL: http://svn.reactos.org/svn/reactos?rev=29496&view=rev Log: a better fix for bug 2519
Modified: trunk/reactos/base/applications/mscutils/servman/mainwnd.c trunk/reactos/base/applications/mscutils/servman/propsheet.c
Modified: trunk/reactos/base/applications/mscutils/servman/mainwnd.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils/... ============================================================================== --- trunk/reactos/base/applications/mscutils/servman/mainwnd.c (original) +++ trunk/reactos/base/applications/mscutils/servman/mainwnd.c Thu Oct 11 14:29:02 2007 @@ -151,8 +151,8 @@
VOID SetMenuAndButtonStates(PMAIN_WND_INFO Info) { + LPQUERY_SERVICE_CONFIG lpServiceConfig; HMENU hMainMenu; - DWORD Flags, State; UINT i;
/* get handle to menu */ @@ -178,39 +178,47 @@ EnableMenuItem(GetSubMenu(Info->hShortcutMenu, 0), ID_DELETE, MF_ENABLED); }
- Flags = Info->pCurrentService->ServiceStatusProcess.dwControlsAccepted; - State = Info->pCurrentService->ServiceStatusProcess.dwCurrentState; - - if (State == SERVICE_STOPPED) - { - EnableMenuItem(hMainMenu, ID_START, MF_ENABLED); - EnableMenuItem(GetSubMenu(Info->hShortcutMenu, 0), ID_START, MF_ENABLED); - SendMessage(Info->hTool, TB_SETSTATE, ID_START, - (LPARAM)MAKELONG(TBSTATE_ENABLED, 0)); - } - - if ( (Flags & SERVICE_ACCEPT_STOP) && (State == SERVICE_RUNNING) ) - { - EnableMenuItem(hMainMenu, ID_STOP, MF_ENABLED); - EnableMenuItem(GetSubMenu(Info->hShortcutMenu, 0), ID_STOP, MF_ENABLED); - SendMessage(Info->hTool, TB_SETSTATE, ID_STOP, - (LPARAM)MAKELONG(TBSTATE_ENABLED, 0)); - } - - if ( (Flags & SERVICE_ACCEPT_PAUSE_CONTINUE) && (State == SERVICE_RUNNING) ) - { - EnableMenuItem(hMainMenu, ID_PAUSE, MF_ENABLED); - EnableMenuItem(GetSubMenu(Info->hShortcutMenu, 0), ID_PAUSE, MF_ENABLED); - SendMessage(Info->hTool, TB_SETSTATE, ID_PAUSE, - (LPARAM)MAKELONG(TBSTATE_ENABLED, 0)); - } - - if ( (Flags & SERVICE_ACCEPT_STOP) && (State == SERVICE_RUNNING) ) - { - EnableMenuItem(hMainMenu, ID_RESTART, MF_ENABLED); - EnableMenuItem(GetSubMenu(Info->hShortcutMenu, 0), ID_RESTART, MF_ENABLED); - SendMessage(Info->hTool, TB_SETSTATE, ID_RESTART, - (LPARAM)MAKELONG(TBSTATE_ENABLED, 0)); + lpServiceConfig = GetServiceConfig(Info->pCurrentService->lpServiceName); + if (lpServiceConfig && lpServiceConfig->dwStartType != SERVICE_DISABLED) + { + DWORD Flags, State; + + Flags = Info->pCurrentService->ServiceStatusProcess.dwControlsAccepted; + State = Info->pCurrentService->ServiceStatusProcess.dwCurrentState; + + if (State == SERVICE_STOPPED) + { + EnableMenuItem(hMainMenu, ID_START, MF_ENABLED); + EnableMenuItem(GetSubMenu(Info->hShortcutMenu, 0), ID_START, MF_ENABLED); + SendMessage(Info->hTool, TB_SETSTATE, ID_START, + (LPARAM)MAKELONG(TBSTATE_ENABLED, 0)); + } + + if ( (Flags & SERVICE_ACCEPT_STOP) && (State == SERVICE_RUNNING) ) + { + EnableMenuItem(hMainMenu, ID_STOP, MF_ENABLED); + EnableMenuItem(GetSubMenu(Info->hShortcutMenu, 0), ID_STOP, MF_ENABLED); + SendMessage(Info->hTool, TB_SETSTATE, ID_STOP, + (LPARAM)MAKELONG(TBSTATE_ENABLED, 0)); + } + + if ( (Flags & SERVICE_ACCEPT_PAUSE_CONTINUE) && (State == SERVICE_RUNNING) ) + { + EnableMenuItem(hMainMenu, ID_PAUSE, MF_ENABLED); + EnableMenuItem(GetSubMenu(Info->hShortcutMenu, 0), ID_PAUSE, MF_ENABLED); + SendMessage(Info->hTool, TB_SETSTATE, ID_PAUSE, + (LPARAM)MAKELONG(TBSTATE_ENABLED, 0)); + } + + if ( (Flags & SERVICE_ACCEPT_STOP) && (State == SERVICE_RUNNING) ) + { + EnableMenuItem(hMainMenu, ID_RESTART, MF_ENABLED); + EnableMenuItem(GetSubMenu(Info->hShortcutMenu, 0), ID_RESTART, MF_ENABLED); + SendMessage(Info->hTool, TB_SETSTATE, ID_RESTART, + (LPARAM)MAKELONG(TBSTATE_ENABLED, 0)); + } + + HeapFree(GetProcessHeap(), 0, lpServiceConfig); } } else
Modified: trunk/reactos/base/applications/mscutils/servman/propsheet.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils/... ============================================================================== --- trunk/reactos/base/applications/mscutils/servman/propsheet.c (original) +++ trunk/reactos/base/applications/mscutils/servman/propsheet.c Thu Oct 11 14:29:02 2007 @@ -21,13 +21,12 @@ HWND hwndDlg) { HWND hButton; + LPQUERY_SERVICE_CONFIG lpServiceConfig; DWORD Flags, State; UINT i; - LPQUERY_SERVICE_CONFIG lpServiceConfig;
Flags = dlgInfo->pService->ServiceStatusProcess.dwControlsAccepted; State = dlgInfo->pService->ServiceStatusProcess.dwCurrentState; - lpServiceConfig = GetServiceConfig(dlgInfo->pService->lpServiceName);
for (i = IDC_START; i <= IDC_RESUME; i++) { @@ -35,26 +34,27 @@ EnableWindow (hButton, FALSE); }
- if ( (State == SERVICE_STOPPED) && (lpServiceConfig->dwStartType != SERVICE_DISABLED) ) - { - hButton = GetDlgItem(hwndDlg, IDC_START); - EnableWindow (hButton, TRUE); - } - else if ( (Flags & SERVICE_ACCEPT_STOP) && (State == SERVICE_RUNNING) ) - { - hButton = GetDlgItem(hwndDlg, IDC_STOP); - EnableWindow (hButton, TRUE); - } - else if ( (Flags & SERVICE_ACCEPT_PAUSE_CONTINUE) && (State == SERVICE_RUNNING) ) - { - hButton = GetDlgItem(hwndDlg, IDC_PAUSE); - EnableWindow (hButton, TRUE); - } - - HeapFree(ProcessHeap, - 0, - lpServiceConfig); - + lpServiceConfig = GetServiceConfig(dlgInfo->pService->lpServiceName); + if (lpServiceConfig && lpServiceConfig->dwStartType != SERVICE_DISABLED) + { + if (State == SERVICE_STOPPED) + { + hButton = GetDlgItem(hwndDlg, IDC_START); + EnableWindow (hButton, TRUE); + } + else if ( (Flags & SERVICE_ACCEPT_STOP) && (State == SERVICE_RUNNING) ) + { + hButton = GetDlgItem(hwndDlg, IDC_STOP); + EnableWindow (hButton, TRUE); + } + else if ( (Flags & SERVICE_ACCEPT_PAUSE_CONTINUE) && (State == SERVICE_RUNNING) ) + { + hButton = GetDlgItem(hwndDlg, IDC_PAUSE); + EnableWindow (hButton, TRUE); + } + + HeapFree(GetProcessHeap(), 0, lpServiceConfig); + } }
@@ -492,4 +492,3 @@ return Ret; }
-