051634dc954e8bc880285562a3e5afcd73c0fb9d
[reactos.git] / base / applications / mscutils / servman / precomp.h
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 HIMAGELIST hDependsImageList;
132 HWND hDependsWnd;
133 HWND hDependsTreeView1;
134 HWND hDependsTreeView2;
135 } SERVICEPROPSHEET, *PSERVICEPROPSHEET;
136
137
138 HTREEITEM AddItemToTreeView(HWND hTreeView, HTREEITEM hRoot, LPWSTR lpDisplayName, LPWSTR lpServiceName, ULONG serviceType, BOOL bHasChildren);
139
140 /* stop_dependencies */
141 INT_PTR CALLBACK StopDependsDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
142 LPWSTR GetListOfServicesToStop(LPWSTR lpServiceName);
143 BOOL
144 CreateStopDependsDialog(HWND hParent,
145 LPWSTR ServiceName,
146 LPWSTR DisplayName,
147 LPWSTR ServiceList);
148
149 /* tv1_dependencies */
150 BOOL TV1_Initialize(PSERVICEPROPSHEET pDlgInfo, LPWSTR lpServiceName);
151 VOID TV1_AddDependantsToTree(PSERVICEPROPSHEET pDlgInfo, HTREEITEM hParent, LPWSTR lpServiceName);
152
153 /* tv2_dependencies */
154 BOOL TV2_Initialize(PSERVICEPROPSHEET pDlgInfo, LPWSTR lpServiceName);
155 VOID TV2_AddDependantsToTree(PSERVICEPROPSHEET pDlgInfo, HTREEITEM hParent, LPWSTR lpServiceName);
156 BOOL TV2_HasDependantServices(LPWSTR lpServiceName);
157 LPENUM_SERVICE_STATUS TV2_GetDependants(LPWSTR lpServiceName, LPDWORD lpdwCount);
158
159 VOID OpenPropSheet(PMAIN_WND_INFO Info);
160
161 /* propsheet window procs */
162 INT_PTR CALLBACK DependenciesPageProc(HWND hwndDlg,
163 UINT uMsg,
164 WPARAM wParam,
165 LPARAM lParam);
166 INT_PTR CALLBACK GeneralPageProc(HWND hwndDlg,
167 UINT uMsg,
168 WPARAM wParam,
169 LPARAM lParam);
170 INT_PTR CALLBACK LogonPageProc(HWND hwndDlg,
171 UINT uMsg,
172 WPARAM wParam,
173 LPARAM lParam);
174 INT_PTR CALLBACK RecoveryPageProc(HWND hwndDlg,
175 UINT uMsg,
176 WPARAM wParam,
177 LPARAM lParam);
178
179 /* export.c */
180 VOID ExportFile(PMAIN_WND_INFO Info);
181
182 /* misc.c */
183 INT AllocAndLoadString(OUT LPWSTR *lpTarget,
184 IN HINSTANCE hInst,
185 IN UINT uID);
186 DWORD LoadAndFormatString(IN HINSTANCE hInstance,
187 IN UINT uID,
188 OUT LPWSTR *lpTarget,
189 ...);
190 BOOL StatusBarLoadAndFormatString(IN HWND hStatusBar,
191 IN INT PartId,
192 IN HINSTANCE hInstance,
193 IN UINT uID,
194 ...);
195 BOOL StatusBarLoadString(IN HWND hStatusBar,
196 IN INT PartId,
197 IN HINSTANCE hInstance,
198 IN UINT uID);
199 INT GetTextFromEdit(OUT LPWSTR lpString,
200 IN HWND hDlg,
201 IN UINT Res);
202 VOID GetError(VOID);
203 VOID DisplayString(PWCHAR);
204 HIMAGELIST InitImageList(UINT StartResource,
205 UINT EndResource,
206 UINT Width,
207 UINT Height,
208 ULONG type);
209 VOID
210 ResourceMessageBox(
211 HINSTANCE hInstance,
212 HWND hwnd,
213 UINT uType,
214 UINT uCaptionId,
215 UINT uMessageId);
216
217 #endif /* __SERVMAN_PRECOMP_H */