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