[INTL]
[reactos.git] / base / applications / mscutils / servman / precomp.h
1 #ifndef __SERVMAN_PRECOMP_H
2 #define __SERVMAN_PRECOMP_H
3
4 #include <stdarg.h>
5
6 #define WIN32_NO_STATUS
7 #define _INC_WINDOWS
8 #define COM_NO_WINDOWS_H
9
10 #include <windef.h>
11 #include <winbase.h>
12 #include <wingdi.h>
13 #include <winsvc.h>
14 #include <wincon.h>
15 #include <tchar.h>
16 #include <shlobj.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 typedef struct _MAIN_WND_INFO
38 {
39 HWND hMainWnd;
40 HWND hListView;
41 HWND hStatus;
42 HWND hTool;
43 HMENU hShortcutMenu;
44 int nCmdShow;
45
46 ENUM_SERVICE_STATUS_PROCESS *pAllServices;
47 ENUM_SERVICE_STATUS_PROCESS *pCurrentService;
48
49 INT SelectedItem;/* selection number in the list view */
50 BOOL bDlgOpen;
51 BOOL bInMenuLoop;
52 BOOL bIsUserAnAdmin;
53
54 PVOID pTag;
55
56 } MAIN_WND_INFO, *PMAIN_WND_INFO;
57
58
59 INT_PTR CALLBACK AboutDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
60 INT_PTR CALLBACK CreateDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
61 INT_PTR CALLBACK DeleteDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
62 INT_PTR CALLBACK ProgressDialogProc(HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam);
63
64
65 /* servman.c */
66 extern HINSTANCE hInstance;
67 extern HANDLE ProcessHeap;
68
69 /* mainwnd.c */
70 typedef struct _MENU_HINT
71 {
72 WORD CmdId;
73 UINT HintId;
74 } MENU_HINT, *PMENU_HINT;
75
76 VOID SetMenuAndButtonStates(PMAIN_WND_INFO Info);
77 VOID UpdateServiceCount(PMAIN_WND_INFO Info);
78 VOID ChangeListViewText(PMAIN_WND_INFO Info, ENUM_SERVICE_STATUS_PROCESS* pService, UINT Column);
79 BOOL InitMainWindowImpl(VOID);
80 VOID UninitMainWindowImpl(VOID);
81 HWND CreateMainWindow(LPCTSTR lpCaption, int nCmdShow);
82
83 /* listview.c */
84 VOID SetListViewStyle(HWND hListView, DWORD View);
85 VOID ListViewSelectionChanged(PMAIN_WND_INFO Info, LPNMLISTVIEW pnmv);
86 BOOL CreateListView(PMAIN_WND_INFO Info);
87
88 /* start */
89 BOOL DoStart(PMAIN_WND_INFO Info, LPWSTR lpStartParams);
90
91 /* stop */
92 typedef struct _STOP_INFO
93 {
94 PMAIN_WND_INFO pInfo;
95 SC_HANDLE hSCManager;
96 SC_HANDLE hMainService;
97 } STOP_INFO, *PSTOP_INFO;
98
99 /* control */
100 BOOL Control(PMAIN_WND_INFO Info, HWND hProgress, DWORD Control);
101 BOOL DoStop(PMAIN_WND_INFO Info);
102 BOOL DoPause(PMAIN_WND_INFO Info);
103 BOOL DoResume(PMAIN_WND_INFO Info);
104
105 /* progress.c */
106 #define DEFAULT_STEP 0
107 HWND CreateProgressDialog(HWND hParent, UINT LabelId);
108 BOOL DestroyProgressDialog(HWND hProgress, BOOL bComplete);
109 VOID InitializeProgressDialog(HWND hProgress, LPWSTR lpServiceName);
110 VOID IncrementProgressBar(HWND hProgress, UINT NewPos);
111 VOID CompleteProgressBar(HWND hProgress);
112
113 /* query.c */
114 ENUM_SERVICE_STATUS_PROCESS* GetSelectedService(PMAIN_WND_INFO Info);
115 LPQUERY_SERVICE_CONFIG GetServiceConfig(LPTSTR lpServiceName);
116 BOOL SetServiceConfig(LPQUERY_SERVICE_CONFIG pServiceConfig, LPTSTR lpServiceName, LPTSTR lpPassword);
117 LPTSTR GetServiceDescription(LPTSTR lpServiceName);
118 BOOL SetServiceDescription(LPTSTR lpServiceName, LPTSTR lpDescription);
119 LPTSTR GetExecutablePath(LPTSTR lpServiceName);
120 BOOL RefreshServiceList(PMAIN_WND_INFO Info);
121 BOOL UpdateServiceStatus(ENUM_SERVICE_STATUS_PROCESS* pService);
122 BOOL GetServiceList(PMAIN_WND_INFO Info, DWORD *NumServices);
123
124
125 /* propsheet.c */
126 typedef struct _SERVICEPROPSHEET
127 {
128 PMAIN_WND_INFO Info;
129 ENUM_SERVICE_STATUS_PROCESS *pService;
130 HIMAGELIST hDependsImageList;
131 HWND hDependsWnd;
132 HWND hDependsTreeView1;
133 HWND hDependsTreeView2;
134 } SERVICEPROPSHEET, *PSERVICEPROPSHEET;
135
136
137 HTREEITEM AddItemToTreeView(HWND hTreeView, HTREEITEM hRoot, LPTSTR lpDisplayName, LPTSTR lpServiceName, ULONG serviceType, BOOL bHasChildren);
138
139 /* stop_dependencies */
140 INT_PTR CALLBACK StopDependsDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
141 LPWSTR GetListOfServicesToStop(LPWSTR lpServiceName);
142
143 /* tv1_dependencies */
144 BOOL TV1_Initialize(PSERVICEPROPSHEET pDlgInfo, LPTSTR lpServiceName);
145 VOID TV1_AddDependantsToTree(PSERVICEPROPSHEET pDlgInfo, HTREEITEM hParent, LPTSTR lpServiceName);
146
147 /* tv2_dependencies */
148 BOOL TV2_Initialize(PSERVICEPROPSHEET pDlgInfo, LPTSTR lpServiceName);
149 VOID TV2_AddDependantsToTree(PSERVICEPROPSHEET pDlgInfo, HTREEITEM hParent, LPTSTR lpServiceName);
150 BOOL TV2_HasDependantServices(LPWSTR lpServiceName);
151 LPENUM_SERVICE_STATUS TV2_GetDependants(LPWSTR lpServiceName, LPDWORD lpdwCount);
152
153 LONG APIENTRY OpenPropSheet(PMAIN_WND_INFO Info);
154
155 /* propsheet window procs */
156 INT_PTR CALLBACK DependenciesPageProc(HWND hwndDlg,
157 UINT uMsg,
158 WPARAM wParam,
159 LPARAM lParam);
160 INT_PTR CALLBACK GeneralPageProc(HWND hwndDlg,
161 UINT uMsg,
162 WPARAM wParam,
163 LPARAM lParam);
164
165 /* export.c */
166 VOID ExportFile(PMAIN_WND_INFO Info);
167
168 /* misc.c */
169 INT AllocAndLoadString(OUT LPTSTR *lpTarget,
170 IN HINSTANCE hInst,
171 IN UINT uID);
172 DWORD LoadAndFormatString(IN HINSTANCE hInstance,
173 IN UINT uID,
174 OUT LPTSTR *lpTarget,
175 ...);
176 BOOL StatusBarLoadAndFormatString(IN HWND hStatusBar,
177 IN INT PartId,
178 IN HINSTANCE hInstance,
179 IN UINT uID,
180 ...);
181 BOOL StatusBarLoadString(IN HWND hStatusBar,
182 IN INT PartId,
183 IN HINSTANCE hInstance,
184 IN UINT uID);
185 INT GetTextFromEdit(OUT LPTSTR lpString,
186 IN HWND hDlg,
187 IN UINT Res);
188 VOID GetError(VOID);
189 VOID DisplayString(PTCHAR);
190 HIMAGELIST InitImageList(UINT StartResource,
191 UINT EndResource,
192 UINT Width,
193 UINT Height,
194 ULONG type);
195
196 #endif /* __SERVMAN_PRECOMP_H */