⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 apachemonitor.c

📁 Apache官方在今天放出产品系列2.2的最新版本2.2.11的源码包 最流行的HTTP服务器软件之一
💻 C
📖 第 1 页 / 共 5 页
字号:
            bi.lpszTitle      = _T("ApacheMonitor :\nSelect Network Computer!");            bi.pszDisplayName = szCmp;            bi.hwndOwner =      hDlg;            bi.ulFlags =        BIF_BROWSEFORCOMPUTER;            bi.lpfn =           NULL;            bi.lParam =         0;            bi.iImage =         0;            bi.pidlRoot =       il;            if (SHBrowseForFolder(&bi) != NULL) {                SendMessage(GetDlgItem(hDlg, IDC_COMPUTER),                            WM_SETTEXT,                            (WPARAM) NULL, (LPARAM) szCmp);            }            if (SHGetMalloc(&pMalloc)) {                pMalloc->lpVtbl->Free(pMalloc, il);                pMalloc->lpVtbl->Release(pMalloc);            }            return TRUE;        }        }        break;    case WM_QUIT:    case WM_CLOSE:        EndDialog(hDlg, TRUE);        return TRUE;    default:        return FALSE;    }    return FALSE;}LRESULT CALLBACK ServiceDlgProc(HWND hDlg, UINT message,                                WPARAM wParam, LPARAM lParam){    TCHAR szBuf[MAX_PATH];    HWND hListBox;    static HWND hStatusBar;    TEXTMETRIC tm;    int i, y;    HDC hdcMem;    RECT rcBitmap;    LRESULT nItem;    LPMEASUREITEMSTRUCT lpmis;    LPDRAWITEMSTRUCT lpdis;    memset(szBuf, 0, sizeof(szBuf));    switch (message)    {    case WM_INITDIALOG:        ShowWindow(hDlg, SW_HIDE);        g_hwndServiceDlg = hDlg;        SetWindowText(hDlg, g_szTitle);        Button_Enable(GetDlgItem(hDlg, IDC_SSTART), FALSE);        Button_Enable(GetDlgItem(hDlg, IDC_SSTOP), FALSE);        Button_Enable(GetDlgItem(hDlg, IDC_SRESTART), FALSE);        Button_Enable(GetDlgItem(hDlg, IDC_SDISCONN), FALSE);        SetWindowText(GetDlgItem(hDlg, IDC_SSTART),                      g_lpMsg[IDS_MSG_SSTART - IDS_MSG_FIRST]);        SetWindowText(GetDlgItem(hDlg, IDC_SSTOP),                      g_lpMsg[IDS_MSG_SSTOP - IDS_MSG_FIRST]);        SetWindowText(GetDlgItem(hDlg, IDC_SRESTART),                      g_lpMsg[IDS_MSG_SRESTART - IDS_MSG_FIRST]);        SetWindowText(GetDlgItem(hDlg, IDC_SMANAGER),                      g_lpMsg[IDS_MSG_SERVICES - IDS_MSG_FIRST]);        SetWindowText(GetDlgItem(hDlg, IDC_SCONNECT),                      g_lpMsg[IDS_MSG_CONNECT - IDS_MSG_FIRST]);        SetWindowText(GetDlgItem(hDlg, IDC_SEXIT),                      g_lpMsg[IDS_MSG_MNUEXIT - IDS_MSG_FIRST]);        if (g_dwOSVersion < OS_VERSION_WINNT)        {            ShowWindow(GetDlgItem(hDlg, IDC_SMANAGER), SW_HIDE);            ShowWindow(GetDlgItem(hDlg, IDC_SCONNECT), SW_HIDE);            ShowWindow(GetDlgItem(hDlg, IDC_SDISCONN), SW_HIDE);        }        hListBox = GetDlgItem(hDlg, IDL_SERVICES);        g_hwndStdoutList = GetDlgItem(hDlg, IDL_STDOUT);        hStatusBar = CreateStatusWindow(0x0800 /* SBT_TOOLTIPS */                                      | WS_CHILD | WS_VISIBLE,                                        _T(""), hDlg, IDC_STATBAR);        if (GetApacheServicesStatus())        {            i = 0;            while (g_stServices[i].szServiceName != NULL)            {                addListBoxItem(hListBox, g_stServices[i].szDisplayName,                               g_stServices[i].dwPid == 0 ? g_hBmpStop                                                          : g_hBmpStart);                ++i;            }        }        CenterWindow(hDlg);        ShowWindow(hDlg, SW_SHOW);        SetFocus(hListBox);        SendMessage(hListBox, LB_SETCURSEL, 0, 0);        return TRUE;        break;    case WM_MANAGEMESSAGE:        ApacheManageService(g_stServices[LOWORD(wParam)].szServiceName,                    g_stServices[LOWORD(wParam)].szImagePath,                    g_stServices[LOWORD(wParam)].szComputerName,                    LOWORD(lParam));        return TRUE;        break;    case WM_UPDATEMESSAGE:        hListBox = GetDlgItem(hDlg, IDL_SERVICES);        SendMessage(hListBox, LB_RESETCONTENT, 0, 0);        SendMessage(hStatusBar, SB_SETTEXT, 0, (LPARAM)_T(""));        Button_Enable(GetDlgItem(hDlg, IDC_SSTART), FALSE);        Button_Enable(GetDlgItem(hDlg, IDC_SSTOP), FALSE);        Button_Enable(GetDlgItem(hDlg, IDC_SRESTART), FALSE);        Button_Enable(GetDlgItem(hDlg, IDC_SDISCONN), FALSE);        i = 0;        while (g_stServices[i].szServiceName != NULL)        {            addListBoxItem(hListBox, g_stServices[i].szDisplayName,                g_stServices[i].dwPid == 0 ? g_hBmpStop : g_hBmpStart);            ++i;        }        SendMessage(hListBox, LB_SETCURSEL, 0, 0);        /* Dirty hack to bring the window to the foreground */        SetWindowPos(hDlg, HWND_TOPMOST, 0, 0, 0, 0,                                SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW);        SetWindowPos(hDlg, HWND_NOTOPMOST, 0, 0, 0, 0,                                SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW);        SetFocus(hListBox);        return TRUE;        break;    case WM_MEASUREITEM:        lpmis = (LPMEASUREITEMSTRUCT) lParam;        lpmis->itemHeight = YBITMAP;        return TRUE;    case WM_SETCURSOR:        if (g_bConsoleRun) {            SetCursor(g_hCursorHourglass);        }        else {            SetCursor(g_hCursorArrow);        }        return TRUE;    case WM_DRAWITEM:        lpdis = (LPDRAWITEMSTRUCT) lParam;        if (lpdis->itemID == -1) {            break;        }        switch (lpdis->itemAction)        {        case ODA_SELECT:        case ODA_DRAWENTIRE:            g_hBmpPicture = (HBITMAP)SendMessage(lpdis->hwndItem,                                                 LB_GETITEMDATA,                                                 lpdis->itemID, (LPARAM) 0);            hdcMem = CreateCompatibleDC(lpdis->hDC);            g_hBmpOld = SelectObject(hdcMem, g_hBmpPicture);            BitBlt(lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top,                   lpdis->rcItem.right - lpdis->rcItem.left,                   lpdis->rcItem.bottom - lpdis->rcItem.top,                   hdcMem, 0, 0, SRCCOPY);            SendMessage(lpdis->hwndItem, LB_GETTEXT,                        lpdis->itemID, (LPARAM) szBuf);            GetTextMetrics(lpdis->hDC, &tm);            y = (lpdis->rcItem.bottom + lpdis->rcItem.top - tm.tmHeight) / 2;            SelectObject(hdcMem, g_hBmpOld);            DeleteDC(hdcMem);            rcBitmap.left = lpdis->rcItem.left + XBITMAP + 2;            rcBitmap.top = lpdis->rcItem.top;            rcBitmap.right = lpdis->rcItem.right;            rcBitmap.bottom = lpdis->rcItem.top + YBITMAP;            if (lpdis->itemState & ODS_SELECTED)            {                if (g_hBmpPicture == g_hBmpStop)                {                    Button_Enable(GetDlgItem(hDlg, IDC_SSTART), TRUE);                    Button_Enable(GetDlgItem(hDlg, IDC_SSTOP), FALSE);                    Button_Enable(GetDlgItem(hDlg, IDC_SRESTART), FALSE);                }                else if (g_hBmpPicture == g_hBmpStart)                {                    Button_Enable(GetDlgItem(hDlg, IDC_SSTART), FALSE);                    Button_Enable(GetDlgItem(hDlg, IDC_SSTOP), TRUE);                    Button_Enable(GetDlgItem(hDlg, IDC_SRESTART), TRUE);                }                else {                    Button_Enable(GetDlgItem(hDlg, IDC_SSTART), FALSE);                    Button_Enable(GetDlgItem(hDlg, IDC_SSTOP), FALSE);                    Button_Enable(GetDlgItem(hDlg, IDC_SRESTART), FALSE);                }                if (_tcscmp(g_stServices[lpdis->itemID].szComputerName,                           g_szLocalHost) == 0) {                    Button_Enable(GetDlgItem(hDlg, IDC_SDISCONN), FALSE);                }                else {                    Button_Enable(GetDlgItem(hDlg, IDC_SDISCONN), TRUE);                }                if (g_stServices[lpdis->itemID].szDescription) {                    SendMessage(hStatusBar, SB_SETTEXT, 0,                            (LPARAM)g_stServices[lpdis->itemID].szDescription);                }                else {                    SendMessage(hStatusBar, SB_SETTEXT, 0, (LPARAM)_T(""));                }                SetTextColor(lpdis->hDC, GetSysColor(COLOR_HIGHLIGHTTEXT));                SetBkColor(lpdis->hDC, GetSysColor(COLOR_HIGHLIGHT));                FillRect(lpdis->hDC, &rcBitmap, (HBRUSH)(COLOR_HIGHLIGHTTEXT));            }            else            {               SetTextColor(lpdis->hDC, GetSysColor(COLOR_MENUTEXT));               SetBkColor(lpdis->hDC, GetSysColor(COLOR_WINDOW));               FillRect(lpdis->hDC, &rcBitmap, (HBRUSH)(COLOR_WINDOW+1));            }            TextOut(lpdis->hDC, XBITMAP + 6, y, szBuf, (int)_tcslen(szBuf));            break;        case ODA_FOCUS:            break;        }        return TRUE;    case WM_COMMAND:        switch (LOWORD(wParam))        {        case IDL_SERVICES:            switch (HIWORD(wParam))            {            case LBN_DBLCLK:                /* if started then stop, if stopped then start */                hListBox = GetDlgItem(hDlg, IDL_SERVICES);                nItem = SendMessage(hListBox, LB_GETCURSEL, 0, 0);                if (nItem != LB_ERR)                {                    g_hBmpPicture = (HBITMAP)SendMessage(hListBox,                                                         LB_GETITEMDATA,                                                         nItem, (LPARAM) 0);                    if (g_hBmpPicture == g_hBmpStop) {                        SendMessage(hDlg, WM_MANAGEMESSAGE, nItem,                                    SERVICE_CONTROL_CONTINUE);                    }                    else {                        SendMessage(hDlg, WM_MANAGEMESSAGE, nItem,                                    SERVICE_CONTROL_STOP);                    }                }                return TRUE;            }            break;        case IDOK:            EndDialog(hDlg, TRUE);            return TRUE;        case IDC_SSTART:            Button_Enable(GetDlgItem(hDlg, IDC_SSTART), FALSE);            hListBox = GetDlgItem(hDlg, IDL_SERVICES);            nItem = SendMessage(hListBox, LB_GETCURSEL, 0, 0);            if (nItem != LB_ERR) {                SendMessage(hDlg, WM_MANAGEMESSAGE, nItem,                            SERVICE_CONTROL_CONTINUE);            }            Button_Enable(GetDlgItem(hDlg, IDC_SSTART), TRUE);            return TRUE;        case IDC_SSTOP:            Button_Enable(GetDlgItem(hDlg, IDC_SSTOP), FALSE);            hListBox = GetDlgItem(hDlg, IDL_SERVICES);            nItem = SendMessage(hListBox, LB_GETCURSEL, 0, 0);            if (nItem != LB_ERR) {                SendMessage(hDlg, WM_MANAGEMESSAGE, nItem,                            SERVICE_CONTROL_STOP);            }            Button_Enable(GetDlgItem(hDlg, IDC_SSTOP), TRUE);            return TRUE;        case IDC_SRESTART:            Button_Enable(GetDlgItem(hDlg, IDC_SRESTART), FALSE);            hListBox = GetDlgItem(hDlg, IDL_SERVICES);            nItem = SendMessage(hListBox, LB_GETCURSEL, 0, 0);            if (nItem != LB_ERR) {                SendMessage(hDlg, WM_MANAGEMESSAGE, nItem,                            SERVICE_APACHE_RESTART);            }            Button_Enable(GetDlgItem(hDlg, IDC_SRESTART), TRUE);            return TRUE;        case IDC_SMANAGER:            if (g_dwOSVersion >= OS_VERSION_WIN2K) {                ShellExecute(hDlg, _T("open"), _T("services.msc"), _T("/s"),                             NULL, SW_NORMAL);            }            else {                WinExec("Control.exe SrvMgr.cpl Services", SW_NORMAL);            }            return TRUE;        case IDC_SEXIT:            EndDialog(hDlg, TRUE);            SendMessage(g_hwndMain, WM_COMMAND, (WPARAM)IDM_EXIT, 0);            return TRUE;        case IDC_SCONNECT:            DialogBox(g_hInstance, MAKEINTRESOURCE(IDD_DLGCONNECT),                      hDlg, (DLGPROC)ConnectDlgProc);            return TRUE;        case IDC_SDISCONN:            hListBox = GetDlgItem(hDlg, IDL_SERVICES);            nItem = SendMessage(hListBox, LB_GETCURSEL, 0, 0);            if (nItem != LB_ERR) {                am_DisconnectComputer(g_stServices[nItem].szComputerName);                SendMessage(g_hwndMain, WM_TIMER, WM_TIMER_RESCAN, 0);            }            return TRUE;        }        break;    case WM_SIZE:        switch (LOWORD(wParam))        {        case SIZE_MINIMIZED:            EndDialog(hDlg, TRUE);            return TRUE;            break;        }        break;    case WM_QUIT:    case WM_CLOSE:        EndDialog(hDlg, TRUE);        return TRUE;    default:        return FALSE;    }    return FALSE;}LRESULT CALLBACK WndProc(HWND hWnd, UINT message,                          WPARAM wParam, LPARAM lParam){    if (message == g_bUiTaskbarCreated)    {        /* restore the tray icon on shell restart */        ShowNotifyIcon(hWnd, NIM_ADD);        return DefWindowProc(hWnd, message, wParam, lParam);    }    switch (message)    {    case WM_CREATE:        GetApacheServicesStatus();        ShowNotifyIcon(hWnd, NIM_ADD);        SetTimer(hWnd, WM_TIMER_REFRESH, REFRESH_TIME, NULL);        SetTimer(hWnd, WM_TIMER_RESCAN,  RESCAN_TIME, NULL);        break;    case WM_TIMER:        switch (wParam)        {        case WM_TIMER_RESCAN:        {            int nPrev = 0, nNew = 0;            EnterCriticalSection(&g_stcSection);            if (FindRunningServices() || g_bRescanServices)            {                ShowNotifyIcon(hWnd, NIM_MODIFY);                if (g_hwndServiceDlg)                    PostMessage(g_hwndServiceDlg, WM_UPDATEMESSAGE, 0, 0);            }            /* check if services list changed */            while (g_stServices[nPrev].szServiceName != NULL)                ++nPrev;            GetApacheServicesStatus();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -