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