1 #ifndef __SERVMAN_PRECOMP_H 2 #define __SERVMAN_PRECOMP_H 3 4 #define WIN32_NO_STATUS 5 #define _INC_WINDOWS 6 #define COM_NO_WINDOWS_H 7 8 #include <windef.h> 9 #include <winbase.h> 10 #include <wingdi.h> 11 #include <winsvc.h> 12 #include <wincon.h> 13 #include <shlobj.h> 14 #include <commdlg.h> 15 #include <strsafe.h> 16 #include <process.h> 17 18 #include "resource.h" 19 20 #ifdef _MSC_VER 21 #pragma warning(disable : 4100) 22 #endif 23 24 #define NO_ITEM_SELECTED -1 25 #define MAX_KEY_LENGTH 256 26 27 #define LVNAME 0 28 #define LVDESC 1 29 #define LVSTATUS 2 30 #define LVSTARTUP 3 31 #define LVLOGONAS 4 32 33 #define IMAGE_UNKNOWN 0 34 #define IMAGE_SERVICE 1 35 #define IMAGE_DRIVER 2 36 37 #define ACTION_START 1 38 #define ACTION_STOP 2 39 #define ACTION_PAUSE 3 40 #define ACTION_RESUME 4 41 #define ACTION_RESTART 5 42 43 #define ORD_ASCENDING 1 44 #define ORD_DESCENDING -1 45 46 typedef struct _MAIN_WND_INFO 47 { 48 HWND hMainWnd; 49 HWND hListView; 50 HWND hStatus; 51 HWND hTool; 52 HWND hHeader; 53 HMENU hShortcutMenu; 54 int nCmdShow; 55 56 ENUM_SERVICE_STATUS_PROCESS *pAllServices; 57 ENUM_SERVICE_STATUS_PROCESS *pCurrentService; 58 DWORD NumServices; 59 60 INT SelectedItem;/* selection number in the list view */ 61 INT SortSelection; 62 INT SortDirection; 63 64 BOOL bDlgOpen; 65 BOOL bInMenuLoop; 66 BOOL bIsUserAnAdmin; 67 68 PVOID pTag; 69 70 } MAIN_WND_INFO, *PMAIN_WND_INFO; 71 72 73 INT_PTR CALLBACK AboutDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); 74 INT_PTR CALLBACK CreateDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); 75 INT_PTR CALLBACK DeleteDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); 76 INT_PTR CALLBACK ProgressDialogProc(HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam); 77 78 79 /* servman.c */ 80 extern HINSTANCE hInstance; 81 extern HANDLE ProcessHeap; 82 83 /* mainwnd.c */ 84 typedef struct _MENU_HINT 85 { 86 WORD CmdId; 87 UINT HintId; 88 } MENU_HINT, *PMENU_HINT; 89 90 VOID SetMenuAndButtonStates(PMAIN_WND_INFO Info); 91 VOID UpdateServiceCount(PMAIN_WND_INFO Info); 92 VOID ChangeListViewText(PMAIN_WND_INFO Info, ENUM_SERVICE_STATUS_PROCESS* pService, UINT Column); 93 BOOL InitMainWindowImpl(VOID); 94 VOID UninitMainWindowImpl(VOID); 95 HWND CreateMainWindow(LPCTSTR lpCaption, int nCmdShow); 96 97 /* listview.c */ 98 VOID SetListViewStyle(HWND hListView, DWORD View); 99 VOID ListViewSelectionChanged(PMAIN_WND_INFO Info, LPNMLISTVIEW pnmv); 100 BOOL CreateListView(PMAIN_WND_INFO Info); 101 102 /* start / stop / control */ 103 BOOL DoStartService(LPWSTR ServiceName, HANDLE hProgress, LPWSTR lpStartParams); 104 BOOL DoStopService(LPWSTR ServiceName, HANDLE hProgress); 105 BOOL DoControlService(LPWSTR ServiceName, HWND hProgress, DWORD Control); 106 107 /* progress.c */ 108 #define DEFAULT_STEP 0 109 BOOL RunActionWithProgress(HWND hParent, LPWSTR ServiceName, LPWSTR DisplayName, UINT Action, PVOID Param); 110 VOID IncrementProgressBar(HANDLE hProgress, UINT NewPos); 111 VOID CompleteProgressBar(HANDLE hProgress); 112 113 /* query.c */ 114 ENUM_SERVICE_STATUS_PROCESS* GetSelectedService(PMAIN_WND_INFO Info); 115 LPQUERY_SERVICE_CONFIG GetServiceConfig(LPWSTR lpServiceName); 116 BOOL SetServiceConfig(LPQUERY_SERVICE_CONFIG pServiceConfig, LPWSTR lpServiceName, LPWSTR lpPassword); 117 LPWSTR GetServiceDescription(LPWSTR lpServiceName); 118 BOOL SetServiceDescription(LPWSTR lpServiceName, LPWSTR lpDescription); 119 LPWSTR GetExecutablePath(LPWSTR lpServiceName); 120 VOID FreeServiceList(PMAIN_WND_INFO Info); 121 BOOL RefreshServiceList(PMAIN_WND_INFO Info); 122 BOOL UpdateServiceStatus(ENUM_SERVICE_STATUS_PROCESS* pService); 123 BOOL GetServiceList(PMAIN_WND_INFO Info); 124 125 126 /* propsheet.c */ 127 typedef struct _SERVICEPROPSHEET 128 { 129 PMAIN_WND_INFO Info; 130 ENUM_SERVICE_STATUS_PROCESS *pService; 131 132 } SERVICEPROPSHEET, *PSERVICEPROPSHEET; 133 134 typedef struct _DEPENDDATA 135 { 136 PSERVICEPROPSHEET pDlgInfo; 137 HIMAGELIST hDependsImageList; 138 HWND hDependsWnd; 139 HWND hDependsTreeView1; 140 HWND hDependsTreeView2; 141 142 } DEPENDDATA, *PDEPENDDATA; 143 144 145 HTREEITEM AddItemToTreeView(HWND hTreeView, HTREEITEM hRoot, LPWSTR lpDisplayName, LPWSTR lpServiceName, ULONG serviceType, BOOL bHasChildren); 146 147 /* stop_dependencies */ 148 INT_PTR CALLBACK StopDependsDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); 149 LPWSTR GetListOfServicesToStop(LPWSTR lpServiceName); 150 BOOL 151 CreateStopDependsDialog(HWND hParent, 152 LPWSTR ServiceName, 153 LPWSTR DisplayName, 154 LPWSTR ServiceList); 155 156 /* tv1_dependencies */ 157 BOOL TV1_Initialize(PDEPENDDATA pDependData, LPWSTR lpServiceName); 158 VOID TV1_AddDependantsToTree(PDEPENDDATA pDependData, HTREEITEM hParent, LPWSTR lpServiceName); 159 160 /* tv2_dependencies */ 161 BOOL TV2_Initialize(PDEPENDDATA pDependData, LPWSTR lpServiceName); 162 VOID TV2_AddDependantsToTree(PDEPENDDATA pDependData, HTREEITEM hParent, LPWSTR lpServiceName); 163 BOOL TV2_HasDependantServices(LPWSTR lpServiceName); 164 LPENUM_SERVICE_STATUS TV2_GetDependants(LPWSTR lpServiceName, LPDWORD lpdwCount); 165 166 VOID OpenPropSheet(PMAIN_WND_INFO Info); 167 168 /* propsheet window procs */ 169 INT_PTR CALLBACK DependenciesPageProc(HWND hwndDlg, 170 UINT uMsg, 171 WPARAM wParam, 172 LPARAM lParam); 173 INT_PTR CALLBACK GeneralPageProc(HWND hwndDlg, 174 UINT uMsg, 175 WPARAM wParam, 176 LPARAM lParam); 177 INT_PTR CALLBACK LogonPageProc(HWND hwndDlg, 178 UINT uMsg, 179 WPARAM wParam, 180 LPARAM lParam); 181 INT_PTR CALLBACK RecoveryPageProc(HWND hwndDlg, 182 UINT uMsg, 183 WPARAM wParam, 184 LPARAM lParam); 185 186 /* export.c */ 187 VOID ExportFile(PMAIN_WND_INFO Info); 188 189 /* misc.c */ 190 INT AllocAndLoadString(OUT LPWSTR *lpTarget, 191 IN HINSTANCE hInst, 192 IN UINT uID); 193 DWORD LoadAndFormatString(IN HINSTANCE hInstance, 194 IN UINT uID, 195 OUT LPWSTR *lpTarget, 196 ...); 197 BOOL StatusBarLoadAndFormatString(IN HWND hStatusBar, 198 IN INT PartId, 199 IN HINSTANCE hInstance, 200 IN UINT uID, 201 ...); 202 BOOL StatusBarLoadString(IN HWND hStatusBar, 203 IN INT PartId, 204 IN HINSTANCE hInstance, 205 IN UINT uID); 206 INT GetTextFromEdit(OUT LPWSTR lpString, 207 IN HWND hDlg, 208 IN UINT Res); 209 VOID GetError(VOID); 210 VOID DisplayString(PWCHAR); 211 HIMAGELIST InitImageList(UINT StartResource, 212 UINT EndResource, 213 UINT Width, 214 UINT Height, 215 ULONG type); 216 VOID 217 ResourceMessageBox( 218 HINSTANCE hInstance, 219 HWND hwnd, 220 UINT uType, 221 UINT uCaptionId, 222 UINT uMessageId); 223 224 #endif /* __SERVMAN_PRECOMP_H */ 225