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