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