mirror of
https://github.com/reactos/reactos.git
synced 2024-07-10 22:55:05 +00:00
- rewrite the Control code
- smooth the progress bar movement - clean up various other bits svn path=/trunk/; revision=29018
This commit is contained in:
parent
8732a04d4a
commit
9fdc73bf65
|
@ -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:
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue