* Sync up to trunk head (r60691).
[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 #include <stdarg.h>
8 #include <windef.h>
9 #include <winbase.h>
10 #include <wingdi.h>
11 #include <winnls.h>
12 #include <winsvc.h>
13 #include <winuser.h>
14 #include <windowsx.h> /* GET_X/Y_LPARAM */
15 #include <wincon.h>
16 #include <tchar.h>
17 #include <commdlg.h>
18 #include <cderr.h>
19 #include <shlobj.h>
20
21 #include "resource.h"
22
23 #ifdef _MSC_VER
24 #pragma warning(disable : 4100)
25 #endif
26
27 #define NO_ITEM_SELECTED -1
28 #define MAX_KEY_LENGTH 256
29
30 #define LVNAME 0
31 #define LVDESC 1
32 #define LVSTATUS 2
33 #define LVSTARTUP 3
34 #define LVLOGONAS 4
35
36 #define IMAGE_UNKNOWN 0
37 #define IMAGE_SERVICE 1
38 #define IMAGE_DRIVER 2
39
40 typedef struct _MAIN_WND_INFO
41 {
42 HWND hMainWnd;
43 HWND hListView;
44 HWND hStatus;
45 HWND hTool;
46 HMENU hShortcutMenu;
47 int nCmdShow;
48
49 ENUM_SERVICE_STATUS_PROCESS *pAllServices;
50 ENUM_SERVICE_STATUS_PROCESS *pCurrentService;
51
52 INT SelectedItem;/* selection number in the list view */
53 BOOL bDlgOpen;
54 BOOL bInMenuLoop;
55 BOOL bIsUserAnAdmin;
56
57 PVOID pTag;
58
59 } MAIN_WND_INFO, *PMAIN_WND_INFO;
60
61
62 INT_PTR CALLBACK AboutDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
63 INT_PTR CALLBACK CreateDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
64 INT_PTR CALLBACK DeleteDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
65 INT_PTR CALLBACK ProgressDialogProc(HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam);
66
67
68 /* servman.c */
69 extern HINSTANCE hInstance;
70 extern HANDLE ProcessHeap;
71
72 /* mainwnd.c */
73 typedef struct _MENU_HINT
74 {
75 WORD CmdId;
76 UINT HintId;
77 } MENU_HINT, *PMENU_HINT;
78
79 VOID SetMenuAndButtonStates(PMAIN_WND_INFO Info);
80 VOID UpdateServiceCount(PMAIN_WND_INFO Info);
81 VOID ChangeListViewText(PMAIN_WND_INFO Info, ENUM_SERVICE_STATUS_PROCESS* pService, UINT Column);
82 BOOL InitMainWindowImpl(VOID);
83 VOID UninitMainWindowImpl(VOID);
84 HWND CreateMainWindow(LPCTSTR lpCaption, int nCmdShow);
85
86 /* listview.c */
87 VOID SetListViewStyle(HWND hListView, DWORD View);
88 VOID ListViewSelectionChanged(PMAIN_WND_INFO Info, LPNMLISTVIEW pnmv);
89 BOOL CreateListView(PMAIN_WND_INFO Info);
90
91 /* start */
92 BOOL DoStart(PMAIN_WND_INFO Info, LPWSTR lpStartParams);
93
94 /* stop */
95 typedef struct _STOP_INFO
96 {
97 PMAIN_WND_INFO pInfo;
98 SC_HANDLE hSCManager;
99 SC_HANDLE hMainService;
100 } STOP_INFO, *PSTOP_INFO;
101
102 /* control */
103 BOOL Control(PMAIN_WND_INFO Info, HWND hProgress, DWORD Control);
104 BOOL DoStop(PMAIN_WND_INFO Info);
105 BOOL DoPause(PMAIN_WND_INFO Info);
106 BOOL DoResume(PMAIN_WND_INFO Info);
107
108 /* progress.c */
109 #define DEFAULT_STEP 0
110 HWND CreateProgressDialog(HWND hParent, UINT LabelId);
111 BOOL DestroyProgressDialog(HWND hProgress, BOOL bComplete);
112 VOID InitializeProgressDialog(HWND hProgress, LPWSTR lpServiceName);
113 VOID IncrementProgressBar(HWND hProgress, UINT NewPos);
114 VOID CompleteProgressBar(HWND hProgress);
115
116 /* query.c */
117 ENUM_SERVICE_STATUS_PROCESS* GetSelectedService(PMAIN_WND_INFO Info);
118 LPQUERY_SERVICE_CONFIG GetServiceConfig(LPTSTR lpServiceName);
119 BOOL SetServiceConfig(LPQUERY_SERVICE_CONFIG pServiceConfig, LPTSTR lpServiceName, LPTSTR lpPassword);
120 LPTSTR GetServiceDescription(LPTSTR lpServiceName);
121 BOOL SetServiceDescription(LPTSTR lpServiceName, LPTSTR lpDescription);
122 LPTSTR GetExecutablePath(LPTSTR lpServiceName);
123 BOOL RefreshServiceList(PMAIN_WND_INFO Info);
124 BOOL UpdateServiceStatus(ENUM_SERVICE_STATUS_PROCESS* pService);
125 BOOL GetServiceList(PMAIN_WND_INFO Info, DWORD *NumServices);
126
127
128 /* propsheet.c */
129 typedef struct _SERVICEPROPSHEET
130 {
131 PMAIN_WND_INFO Info;
132 ENUM_SERVICE_STATUS_PROCESS *pService;
133 HIMAGELIST hDependsImageList;
134 HWND hDependsWnd;
135 HWND hDependsTreeView1;
136 HWND hDependsTreeView2;
137 } SERVICEPROPSHEET, *PSERVICEPROPSHEET;
138
139
140 HTREEITEM AddItemToTreeView(HWND hTreeView, HTREEITEM hRoot, LPTSTR lpDisplayName, LPTSTR lpServiceName, ULONG serviceType, BOOL bHasChildren);
141
142 /* stop_dependencies */
143 INT_PTR CALLBACK StopDependsDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
144 LPWSTR GetListOfServicesToStop(LPWSTR lpServiceName);
145
146 /* tv1_dependencies */
147 BOOL TV1_Initialize(PSERVICEPROPSHEET pDlgInfo, LPTSTR lpServiceName);
148 VOID TV1_AddDependantsToTree(PSERVICEPROPSHEET pDlgInfo, HTREEITEM hParent, LPTSTR lpServiceName);
149
150 /* tv2_dependencies */
151 BOOL TV2_Initialize(PSERVICEPROPSHEET pDlgInfo, LPTSTR lpServiceName);
152 VOID TV2_AddDependantsToTree(PSERVICEPROPSHEET pDlgInfo, HTREEITEM hParent, LPTSTR 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
168 /* export.c */
169 VOID ExportFile(PMAIN_WND_INFO Info);
170
171 /* misc.c */
172 INT AllocAndLoadString(OUT LPTSTR *lpTarget,
173 IN HINSTANCE hInst,
174 IN UINT uID);
175 DWORD LoadAndFormatString(IN HINSTANCE hInstance,
176 IN UINT uID,
177 OUT LPTSTR *lpTarget,
178 ...);
179 BOOL StatusBarLoadAndFormatString(IN HWND hStatusBar,
180 IN INT PartId,
181 IN HINSTANCE hInstance,
182 IN UINT uID,
183 ...);
184 BOOL StatusBarLoadString(IN HWND hStatusBar,
185 IN INT PartId,
186 IN HINSTANCE hInstance,
187 IN UINT uID);
188 INT GetTextFromEdit(OUT LPTSTR lpString,
189 IN HWND hDlg,
190 IN UINT Res);
191 VOID GetError(VOID);
192 VOID DisplayString(PTCHAR);
193 HIMAGELIST InitImageList(UINT StartResource,
194 UINT EndResource,
195 UINT Width,
196 UINT Height,
197 ULONG type);
198
199 #endif /* __SERVMAN_PRECOMP_H */