diff --git a/reactos/base/applications/mscutils/servman/about.c b/reactos/base/applications/mscutils/servman/about.c index f1f89e77b0a..d54eb0afc3c 100644 --- a/reactos/base/applications/mscutils/servman/about.c +++ b/reactos/base/applications/mscutils/servman/about.c @@ -12,43 +12,33 @@ BOOL CALLBACK AboutDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { - HWND hLicenseEditWnd; - HICON hIcon = NULL; - TCHAR strLicense[700]; - switch (message) { case WM_INITDIALOG: - - hIcon = (HICON)LoadImage(hInstance, - MAKEINTRESOURCE(IDI_SM_ICON), - IMAGE_ICON, - 16, - 16, - 0); - if (hIcon) - { - SendMessage(hDlg, - WM_SETICON, - ICON_SMALL, - (LPARAM)hIcon); - DestroyIcon(hIcon); - } + { + HWND hLicenseEditWnd; hLicenseEditWnd = GetDlgItem(hDlg, IDC_LICENSE_EDIT); if (hLicenseEditWnd) { - LoadString(hInstance, - IDS_LICENSE, - strLicense, - sizeof(strLicense) / sizeof(TCHAR)); + LPTSTR lpString; - SetWindowText(hLicenseEditWnd, - strLicense); + if (AllocAndLoadString(&lpString, + hInstance, + IDS_LICENSE)) + { + SetWindowText(hLicenseEditWnd, + lpString); + + HeapFree(GetProcessHeap(), + 0, + lpString); + } } return TRUE; + } case WM_COMMAND: diff --git a/reactos/base/applications/mscutils/servman/control.c b/reactos/base/applications/mscutils/servman/control.c index 4013ba2ef07..e08dafab86a 100644 --- a/reactos/base/applications/mscutils/servman/control.c +++ b/reactos/base/applications/mscutils/servman/control.c @@ -18,117 +18,99 @@ Control(PMAIN_WND_INFO Info, SC_HANDLE hSc; SERVICE_STATUS_PROCESS ServiceStatus; SERVICE_STATUS Status; - LVITEM item; DWORD BytesNeeded = 0; - DWORD dwStartTickCount, dwOldCheckPoint; + BOOL bRet = FALSE; + BOOL bDispErr = TRUE; - item.mask = LVIF_PARAM; - item.iItem = Info->SelectedItem; - SendMessage(Info->hListView, - LVM_GETITEM, - 0, - (LPARAM)&item); - - /* open handle to the SCM */ hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); - if (hSCManager == NULL) + if (hSCManager != NULL) { - GetError(); - return FALSE; - } - - /* open handle to the service */ - hSc = OpenService(hSCManager, - Info->pCurrentService->lpServiceName, - SC_MANAGER_ALL_ACCESS); - if (hSc == NULL) - { - GetError(); - return FALSE; - } - - /* process requested action */ - if (! ControlService(hSc, - Control, - &Status)) - { - GetError(); - CloseServiceHandle(hSc); - return FALSE; - } - - /* query the state of the service */ - if (! QueryServiceStatusEx(hSc, - SC_STATUS_PROCESS_INFO, - (LPBYTE)&ServiceStatus, - sizeof(SERVICE_STATUS_PROCESS), - &BytesNeeded)) - { - GetError(); - return FALSE; - } - - /* Save the tick count and initial checkpoint. */ - dwStartTickCount = GetTickCount(); - dwOldCheckPoint = ServiceStatus.dwCheckPoint; - - /* loop whilst service is not running */ - /* FIXME: needs more control adding. 'Loop' is temparary */ - while (ServiceStatus.dwCurrentState != Control) - { - DWORD dwWaitTime; - - dwWaitTime = ServiceStatus.dwWaitHint / 10; - - if (dwWaitTime < 500) - dwWaitTime = 500; - else if (dwWaitTime > 5000) - dwWaitTime = 5000; - - IncrementProgressBar(hProgDlg); - - /* wait before checking status */ - Sleep(dwWaitTime); - - /* check status again */ - if (! QueryServiceStatusEx(hSc, - SC_STATUS_PROCESS_INFO, - (LPBYTE)&ServiceStatus, - sizeof(SERVICE_STATUS_PROCESS), - &BytesNeeded)) + hSc = OpenService(hSCManager, + Info->pCurrentService->lpServiceName, + SERVICE_ALL_ACCESS); + if (hSc != NULL) { - GetError(); - return FALSE; - } - - if (ServiceStatus.dwCheckPoint > dwOldCheckPoint) - { - IncrementProgressBar(hProgDlg); - dwStartTickCount = GetTickCount(); - dwOldCheckPoint = ServiceStatus.dwCheckPoint; - } - else - { - if(GetTickCount() - dwStartTickCount > ServiceStatus.dwWaitHint) + if (ControlService(hSc, + Control, + &Status)) { - /* No progress made within the wait hint */ - break; - } - } - } + bDispErr = FALSE; - CloseServiceHandle(hSc); + if (QueryServiceStatusEx(hSc, + SC_STATUS_PROCESS_INFO, + (LPBYTE)&ServiceStatus, + sizeof(SERVICE_STATUS_PROCESS), + &BytesNeeded)) + { + DWORD dwStartTickCount = GetTickCount(); + DWORD dwOldCheckPoint = ServiceStatus.dwCheckPoint; + DWORD dwMaxWait = 2000 * 60; // wait for 2 mins + + IncrementProgressBar(hProgDlg); + + while (ServiceStatus.dwCurrentState != Control) + { + DWORD dwWaitTime = ServiceStatus.dwWaitHint / 10; + + if (!QueryServiceStatusEx(hSc, + SC_STATUS_PROCESS_INFO, + (LPBYTE)&ServiceStatus, + sizeof(SERVICE_STATUS_PROCESS), + &BytesNeeded)) + { + break; + } + + if (ServiceStatus.dwCheckPoint > dwOldCheckPoint) + { + /* The service is making progress, increment the progress bar */ + IncrementProgressBar(hProgDlg); + dwStartTickCount = GetTickCount(); + dwOldCheckPoint = ServiceStatus.dwCheckPoint; + } + else + { + if(GetTickCount() >= dwStartTickCount + dwMaxWait) + { + /* give up */ + break; + } + } + + if(dwWaitTime < 200) + dwWaitTime = 200; + else if (dwWaitTime > 10000) + dwWaitTime = 10000; + + Sleep(dwWaitTime); + } + } + } + + CloseServiceHandle(hSc); + } + + CloseServiceHandle(hSCManager); + } if (ServiceStatus.dwCurrentState == Control) { CompleteProgressBar(hProgDlg); - Sleep(1000); - return TRUE; + Sleep(500); + bRet = TRUE; } else - return FALSE; + { + if (bDispErr) + GetError(); + else + DisplayString(_T("The service failed to start")); + } + + return bRet; + } @@ -146,7 +128,7 @@ BOOL DoStop(PMAIN_WND_INFO Info) hProgDlg, SERVICE_CONTROL_STOP); - SendMessage(hProgDlg, WM_DESTROY, 0, 0); + DestroyWindow(hProgDlg); } return ret; @@ -166,7 +148,7 @@ BOOL DoPause(PMAIN_WND_INFO Info) hProgDlg, SERVICE_CONTROL_PAUSE); - SendMessage(hProgDlg, WM_DESTROY, 0, 0); + DestroyWindow(hProgDlg); } return ret; @@ -186,7 +168,7 @@ BOOL DoResume(PMAIN_WND_INFO Info) hProgDlg, SERVICE_CONTROL_CONTINUE); - SendMessage(hProgDlg, WM_DESTROY, 0, 0); + DestroyWindow(hProgDlg); } return ret; diff --git a/reactos/base/applications/mscutils/servman/lang/bg-BG.rc b/reactos/base/applications/mscutils/servman/lang/bg-BG.rc index 9887b0a4e7f..02fa5c02f5c 100644 --- a/reactos/base/applications/mscutils/servman/lang/bg-BG.rc +++ b/reactos/base/applications/mscutils/servman/lang/bg-BG.rc @@ -68,7 +68,7 @@ CAPTION " FONT 8, "MS Shell Dlg",0,0 STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME BEGIN - LTEXT "Service Manager v0.8\nCopyright (C) 2005-2007\nby Ged Murphy (gedmurphy@reactos.org)", IDC_STATIC, 48, 7, 130, 26 + LTEXT "Service Manager v0.8\nCopyright (C) 2005-2007\nby Ged Murphy (gedmurphy@reactos.org)", IDC_STATIC, 48, 7, 135, 26 PUSHBUTTON "Close", IDOK, 75, 162, 44, 15 ICON IDI_SM_ICON, IDC_STATIC, 10, 10, 7, 30 EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE @@ -162,7 +162,7 @@ END IDD_DLG_PROGRESS DIALOGEX 6,6,255,89 CAPTION "Óïðàâëåíèå íà óñëóãèòå" FONT 8, "MS Shell Dlg",0,0 -STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | WS_VISIBLE | DS_MODALFRAME EXSTYLE WS_EX_TOOLWINDOW BEGIN CONTROL "", IDC_SERVCON_PROGRESS, "msctls_progress32", 0x50000000, 8, 46, 238, 13 diff --git a/reactos/base/applications/mscutils/servman/lang/de-DE.rc b/reactos/base/applications/mscutils/servman/lang/de-DE.rc index 2fc4b077c30..422d5cae50a 100644 --- a/reactos/base/applications/mscutils/servman/lang/de-DE.rc +++ b/reactos/base/applications/mscutils/servman/lang/de-DE.rc @@ -68,7 +68,7 @@ CAPTION "Info FONT 8, "MS Shell Dlg",0,0 STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME BEGIN - LTEXT "Dienst-Manager v0.8\nCopyright (C) 2005-2007\nby Ged Murphy (gedmurphy@reactos.org)", IDC_STATIC, 48, 7, 130, 26 + LTEXT "Dienst-Manager v0.8\nCopyright (C) 2005-2007\nby Ged Murphy (gedmurphy@reactos.org)", IDC_STATIC, 48, 7, 135, 26 PUSHBUTTON "Schließen", IDOK, 75, 162, 44, 15 ICON IDI_SM_ICON, IDC_STATIC, 10, 10, 7, 30 EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE @@ -159,7 +159,7 @@ END IDD_DLG_PROGRESS DIALOGEX 6,6,255,89 CAPTION "Dienststeuerung" FONT 8, "MS Shell Dlg",0,0 -STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | WS_VISIBLE | DS_MODALFRAME EXSTYLE WS_EX_TOOLWINDOW BEGIN CONTROL "", IDC_SERVCON_PROGRESS, "msctls_progress32", 0x50000000, 8, 46, 238, 13 diff --git a/reactos/base/applications/mscutils/servman/lang/en-US.rc b/reactos/base/applications/mscutils/servman/lang/en-US.rc index 0a89d25393e..9399ca3ce05 100644 --- a/reactos/base/applications/mscutils/servman/lang/en-US.rc +++ b/reactos/base/applications/mscutils/servman/lang/en-US.rc @@ -68,7 +68,7 @@ CAPTION "About Service Manager" FONT 8, "MS Shell Dlg",0,0 STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME BEGIN - LTEXT "Service Manager v0.8\nCopyright (C) 2005-2007\nby Ged Murphy (gedmurphy@reactos.org)", IDC_STATIC, 48, 7, 130, 26 + LTEXT "Service Manager v0.8\nCopyright (C) 2005-2007\nby Ged Murphy (gedmurphy@reactos.org)", IDC_STATIC, 48, 7, 135, 26 PUSHBUTTON "Close", IDOK, 75, 162, 44, 15 ICON IDI_SM_ICON, IDC_STATIC, 10, 10, 7, 30 EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE @@ -159,7 +159,7 @@ END IDD_DLG_PROGRESS DIALOGEX 6,6,255,89 CAPTION "Service Control" FONT 8, "MS Shell Dlg",0,0 -STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | WS_VISIBLE | DS_MODALFRAME EXSTYLE WS_EX_TOOLWINDOW BEGIN CONTROL "", IDC_SERVCON_PROGRESS, "msctls_progress32", 0x50000000, 8, 46, 238, 13 diff --git a/reactos/base/applications/mscutils/servman/lang/fr-FR.rc b/reactos/base/applications/mscutils/servman/lang/fr-FR.rc index 6a19869f840..09ff234d3a6 100644 --- a/reactos/base/applications/mscutils/servman/lang/fr-FR.rc +++ b/reactos/base/applications/mscutils/servman/lang/fr-FR.rc @@ -69,7 +69,7 @@ CAPTION " FONT 8, "MS Shell Dlg",0,0 STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME BEGIN - LTEXT "Gestionnaire de services v0.8\nCopyright (C) 2005-2007\nby Ged Murphy (gedmurphy@reactos.org)", IDC_STATIC, 48, 7, 130, 26 + LTEXT "Gestionnaire de services v0.8\nCopyright (C) 2005-2007\nby Ged Murphy (gedmurphy@reactos.org)", IDC_STATIC, 48, 7, 135, 26 PUSHBUTTON "Fermer", IDOK, 75, 162, 44, 15 ICON IDI_SM_ICON, IDC_STATIC, 10, 10, 7, 30 EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE @@ -160,7 +160,7 @@ END IDD_DLG_PROGRESS DIALOGEX 6,6,255,89 CAPTION "Contrôle du Service" FONT 8, "MS Shell Dlg",0,0 -STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | WS_VISIBLE | DS_MODALFRAME EXSTYLE WS_EX_TOOLWINDOW BEGIN CONTROL "", IDC_SERVCON_PROGRESS, "msctls_progress32", 0x50000000, 8, 46, 238, 13 diff --git a/reactos/base/applications/mscutils/servman/lang/id-ID.rc b/reactos/base/applications/mscutils/servman/lang/id-ID.rc index c88674c0e22..39844e5da7c 100644 --- a/reactos/base/applications/mscutils/servman/lang/id-ID.rc +++ b/reactos/base/applications/mscutils/servman/lang/id-ID.rc @@ -68,7 +68,7 @@ CAPTION "Tentang Manajer Layanan" FONT 8, "MS Shell Dlg",0,0 STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME BEGIN - LTEXT "Manajer Layanan v0.8\nHak Cipta (C) 2005-2007\noleh Ged Murphy (gedmurphy@reactos.org)", IDC_STATIC, 48, 7, 130, 26 + LTEXT "Manajer Layanan v0.8\nHak Cipta (C) 2005-2007\noleh Ged Murphy (gedmurphy@reactos.org)", IDC_STATIC, 48, 7, 135, 26 PUSHBUTTON "Tutup", IDOK, 75, 162, 44, 15 ICON IDI_SM_ICON, IDC_STATIC, 10, 10, 7, 30 EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE @@ -159,7 +159,7 @@ END IDD_DLG_PROGRESS DIALOGEX 6,6,255,89 CAPTION "Kontrol Layanan" FONT 8, "MS Shell Dlg",0,0 -STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | WS_VISIBLE | DS_MODALFRAME EXSTYLE WS_EX_TOOLWINDOW BEGIN CONTROL "", IDC_SERVCON_PROGRESS, "msctls_progress32", 0x50000000, 8, 46, 238, 13 diff --git a/reactos/base/applications/mscutils/servman/lang/it-IT.rc b/reactos/base/applications/mscutils/servman/lang/it-IT.rc index e9097af3e64..7db581e23e8 100644 --- a/reactos/base/applications/mscutils/servman/lang/it-IT.rc +++ b/reactos/base/applications/mscutils/servman/lang/it-IT.rc @@ -68,7 +68,7 @@ CAPTION "Informazioni su Gestione Servizi" FONT 8, "MS Shell Dlg",0,0 STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME BEGIN - LTEXT "Gestione Servizi v0.8\nCopyright (C) 2005-2007\nby Ged Murphy (gedmurphy@gmail.com)", IDC_STATIC, 48, 7, 130, 26 + LTEXT "Gestione Servizi v0.8\nCopyright (C) 2005-2007\nby Ged Murphy (gedmurphy@gmail.com)", IDC_STATIC, 48, 7, 135, 26 PUSHBUTTON "Chiudi", IDOK, 75, 162, 44, 15 ICON IDI_SM_ICON, IDC_STATIC, 10, 10, 7, 30 EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE @@ -159,7 +159,7 @@ END IDD_DLG_PROGRESS DIALOGEX 6,6,255,89 CAPTION "Service Control" FONT 8, "MS Shell Dlg",0,0 -STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | WS_VISIBLE | DS_MODALFRAME EXSTYLE WS_EX_TOOLWINDOW BEGIN CONTROL "", IDC_SERVCON_PROGRESS, "msctls_progress32", 0x50000000, 8, 46, 238, 13 diff --git a/reactos/base/applications/mscutils/servman/lang/pl-PL.rc b/reactos/base/applications/mscutils/servman/lang/pl-PL.rc index f3374565182..4fc93917f9f 100644 --- a/reactos/base/applications/mscutils/servman/lang/pl-PL.rc +++ b/reactos/base/applications/mscutils/servman/lang/pl-PL.rc @@ -75,7 +75,7 @@ CAPTION "Service Manager - informacje" FONT 8, "MS Shell Dlg",0,0 STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME BEGIN - LTEXT "Service Manager v0.5.1\nCopyright (C) 2005-2006\nby Ged Murphy (gedmurphy@gmail.com)", IDC_STATIC, 48, 7, 130, 26 + LTEXT "Service Manager v0.5.1\nCopyright (C) 2005-2006\nby Ged Murphy (gedmurphy@gmail.com)", IDC_STATIC, 48, 7, 135, 26 PUSHBUTTON "Zamknij", IDOK, 75, 162, 44, 15 ICON IDI_SM_ICON, IDC_STATIC, 10, 10, 7, 30 EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE @@ -165,7 +165,7 @@ END IDD_DLG_PROGRESS DIALOGEX 6,6,255,89 CAPTION "Us³uga kontrolna" FONT 8, "MS Shell Dlg",0,0 -STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | WS_VISIBLE | DS_MODALFRAME EXSTYLE WS_EX_TOOLWINDOW BEGIN CONTROL "", IDC_SERVCON_PROGRESS, "msctls_progress32", 0x50000000, 8, 46, 238, 13 diff --git a/reactos/base/applications/mscutils/servman/lang/ru-RU.rc b/reactos/base/applications/mscutils/servman/lang/ru-RU.rc index 44ecf1d18f6..34a6b5925fd 100644 --- a/reactos/base/applications/mscutils/servman/lang/ru-RU.rc +++ b/reactos/base/applications/mscutils/servman/lang/ru-RU.rc @@ -67,7 +67,7 @@ CAPTION " FONT 8, "MS Shell Dlg",0,0 STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME BEGIN - LTEXT "Ìåíåäæåð ñëóæá v0.8\nCopyright (C) 2005-2007\nîò Ged Murphy (gedmurphy@reactos.org)", IDC_STATIC, 48, 7, 130, 30 + LTEXT "Ìåíåäæåð ñëóæá v0.8\nCopyright (C) 2005-2007\nîò Ged Murphy (gedmurphy@reactos.org)", IDC_STATIC, 48, 7, 135, 26 PUSHBUTTON "Çàêðûòü", IDOK, 75, 162, 44, 15 ICON IDI_SM_ICON, IDC_STATIC, 10, 10, 7, 30 EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE @@ -158,7 +158,7 @@ END IDD_DLG_PROGRESS DIALOGEX 6,6,255,89 CAPTION "Óïðàâëåíèå ñëóæáàìè" FONT 8, "MS Shell Dlg",0,0 -STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | WS_VISIBLE | DS_MODALFRAME EXSTYLE WS_EX_TOOLWINDOW BEGIN CONTROL "",IDC_SERVCON_PROGRESS,"msctls_progress32",0x50000000,8,46,238,13 diff --git a/reactos/base/applications/mscutils/servman/lang/th-TH.rc b/reactos/base/applications/mscutils/servman/lang/th-TH.rc index 8c222a4cbdf..0b6a127a36e 100644 --- a/reactos/base/applications/mscutils/servman/lang/th-TH.rc +++ b/reactos/base/applications/mscutils/servman/lang/th-TH.rc @@ -77,7 +77,7 @@ CAPTION " FONT 8, "MS Shell Dlg",0,0 STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME BEGIN - LTEXT "â»Ãá¡ÃÁ¡ÒúÃÔ¡ÒèѴ¡Òà ÃØè¹ 0.8\nÅÔ¢ÊÔ·¸Ôì (C) 2005-2007\nâ´Â à¡é´ àÁÍÃì¿Õè (gedmurphy@reactos.org)", IDC_STATIC, 48, 7, 130, 26 + LTEXT "â»Ãá¡ÃÁ¡ÒúÃÔ¡ÒèѴ¡Òà ÃØè¹ 0.8\nÅÔ¢ÊÔ·¸Ôì (C) 2005-2007\nâ´Â à¡é´ àÁÍÃì¿Õè (gedmurphy@reactos.org)", IDC_STATIC, 48, 7, 135, 26 PUSHBUTTON "»Ô´", IDOK, 75, 162, 44, 15 ICON IDI_SM_ICON, IDC_STATIC, 10, 10, 7, 30 EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE @@ -168,7 +168,7 @@ END IDD_DLG_PROGRESS DIALOGEX 6,6,255,89 CAPTION "µÑǤǺ¤ØÁºÃÔ¡ÒÃ" FONT 8, "MS Shell Dlg",0,0 -STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | WS_VISIBLE | DS_MODALFRAME EXSTYLE WS_EX_TOOLWINDOW BEGIN CONTROL "", IDC_SERVCON_PROGRESS, "msctls_progress32", 0x50000000, 8, 46, 238, 13 diff --git a/reactos/base/applications/mscutils/servman/lang/uk-UA.rc b/reactos/base/applications/mscutils/servman/lang/uk-UA.rc index d9942c11e97..f5fa8db40d0 100644 --- a/reactos/base/applications/mscutils/servman/lang/uk-UA.rc +++ b/reactos/base/applications/mscutils/servman/lang/uk-UA.rc @@ -76,7 +76,7 @@ CAPTION " FONT 8, "MS Shell Dlg",0,0 STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME BEGIN - LTEXT "Äèñïåò÷åð êåðóâàííÿ ñëóæáàìè v0.8\nCopyright (C) 2005-2007\nby Ged Murphy (gedmurphy@reactos.org)", IDC_STATIC, 48, 7, 130, 26 + LTEXT "Äèñïåò÷åð êåðóâàííÿ ñëóæáàìè v0.8\nCopyright (C) 2005-2007\nby Ged Murphy (gedmurphy@reactos.org)", IDC_STATIC, 48, 7, 135, 26 PUSHBUTTON "Çàêðèòè", IDOK, 75, 162, 44, 15 ICON IDI_SM_ICON, IDC_STATIC, 10, 10, 7, 30 EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE @@ -167,7 +167,7 @@ END IDD_DLG_PROGRESS DIALOGEX 6,6,255,89 CAPTION "Óïðàâë³ííÿ ñëóæáàìè" FONT 8, "MS Shell Dlg",0,0 -STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | WS_VISIBLE | DS_MODALFRAME EXSTYLE WS_EX_TOOLWINDOW BEGIN CONTROL "", IDC_SERVCON_PROGRESS, "msctls_progress32", 0x50000000, 8, 46, 238, 13 diff --git a/reactos/base/applications/mscutils/servman/progress.c b/reactos/base/applications/mscutils/servman/progress.c index 2a9d0024c85..6ecd86c9898 100644 --- a/reactos/base/applications/mscutils/servman/progress.c +++ b/reactos/base/applications/mscutils/servman/progress.c @@ -9,7 +9,7 @@ #include "precomp.h" -#define PROGRESSRANGE 8 +#define PROGRESSRANGE 20 VOID CompleteProgressBar(HWND hProgDlg) @@ -21,10 +21,21 @@ CompleteProgressBar(HWND hProgDlg) if (hProgBar) { - SendMessage(hProgBar, - PBM_DELTAPOS, - PROGRESSRANGE, - 0); + INT pos = 0; + + pos = SendMessage(hProgBar, + PBM_GETPOS, + 0, + 0); + + for (; pos <= PROGRESSRANGE; pos++) + { + SendMessage(hProgBar, + PBM_DELTAPOS, + pos, + 0); + Sleep(15); + } } } @@ -82,10 +93,6 @@ ProgressDialogProc(HWND hDlg, } break; - case WM_DESTROY: - DestroyWindow(hDlg); - break; - default: return FALSE; } @@ -109,9 +116,6 @@ CreateProgressDialog(HWND hParent, (DLGPROC)ProgressDialogProc); if (hProgDlg != NULL) { - ShowWindow(hProgDlg, - SW_SHOW); - /* write the info to the progress dialog */ LoadString(hInstance, Event, diff --git a/reactos/base/applications/mscutils/servman/start.c b/reactos/base/applications/mscutils/servman/start.c index 8fa23687c0e..d97ff96348d 100644 --- a/reactos/base/applications/mscutils/servman/start.c +++ b/reactos/base/applications/mscutils/servman/start.c @@ -18,6 +18,7 @@ DoStartService(PMAIN_WND_INFO Info, SERVICE_STATUS_PROCESS ServiceStatus; DWORD BytesNeeded = 0; BOOL bRet = FALSE; + BOOL bDispErr = TRUE; hSCManager = OpenSCManager(NULL, NULL, @@ -33,6 +34,8 @@ DoStartService(PMAIN_WND_INFO Info, 0, NULL)) { + bDispErr = FALSE; + if (QueryServiceStatusEx(hSc, SC_STATUS_PROCESS_INFO, (LPBYTE)&ServiceStatus, @@ -41,20 +44,14 @@ DoStartService(PMAIN_WND_INFO Info, { DWORD dwStartTickCount = GetTickCount(); DWORD dwOldCheckPoint = ServiceStatus.dwCheckPoint; + DWORD dwMaxWait = 2000 * 60; // wait for 2 mins + + IncrementProgressBar(hProgDlg); while (ServiceStatus.dwCurrentState != SERVICE_RUNNING) { DWORD dwWaitTime = ServiceStatus.dwWaitHint / 10; - if(dwWaitTime < 1000) - dwWaitTime = 500; - else if (dwWaitTime > 10000) - dwWaitTime = 10000; - - IncrementProgressBar(hProgDlg); - Sleep(dwWaitTime ); - IncrementProgressBar(hProgDlg); - if (!QueryServiceStatusEx(hSc, SC_STATUS_PROCESS_INFO, (LPBYTE)&ServiceStatus, @@ -73,12 +70,19 @@ DoStartService(PMAIN_WND_INFO Info, } else { - if(GetTickCount() - dwStartTickCount > ServiceStatus.dwWaitHint) + if(GetTickCount() >= dwStartTickCount + dwMaxWait) { - /* No progress made within the wait hint */ + /* give up */ break; } } + + if(dwWaitTime < 200) + dwWaitTime = 200; + else if (dwWaitTime > 10000) + dwWaitTime = 10000; + + Sleep(dwWaitTime); } } } @@ -92,11 +96,16 @@ DoStartService(PMAIN_WND_INFO Info, if (ServiceStatus.dwCurrentState == SERVICE_RUNNING) { CompleteProgressBar(hProgDlg); - Sleep(1000); + Sleep(500); bRet = TRUE; } else - GetError(); + { + if (bDispErr) + GetError(); + else + DisplayString(_T("The service failed to start")); + } return bRet; } @@ -114,13 +123,12 @@ DoStart(PMAIN_WND_INFO Info) if (hProgDlg) { + IncrementProgressBar(hProgDlg); + bRet = DoStartService(Info, hProgDlg); - SendMessage(hProgDlg, - WM_DESTROY, - 0, - 0); + DestroyWindow(hProgDlg); } return bRet;