2 * PROJECT: ReactOS Applications
3 * LICENSE: LGPL - See COPYING in the top level directory
4 * FILE: base/applications/toolspage.c
5 * PURPOSE: Tools page message handler
6 * COPYRIGHT: Copyright 2005-2006 Christoph von Wittich <Christoph@ApiViewer.de>
16 void AddItem ( DWORD
, DWORD
, DWORD
, DWORD
, int );
17 void FillListView ( void );
19 DWORD ListItems_Cmds
[20];
20 DWORD ListItems_Params
[20];
21 DWORD ListItems_Locations
[20];
23 void AddItem ( DWORD name_id
, DWORD descr_id
, DWORD cmd_id
, DWORD param_id
, int csidl
) {
27 LoadString(hInst
, name_id
, szTemp
, 256);
28 memset(&item
, 0, sizeof(LV_ITEM
));
29 item
.mask
= LVIF_TEXT
;
31 item
.pszText
= szTemp
;
32 item
.iItem
= ListView_GetItemCount(hToolsListCtrl
);
34 (void)ListView_InsertItem(hToolsListCtrl
, &item
);
36 ListItems_Cmds
[item
.iItem
] = cmd_id
;
37 ListItems_Params
[item
.iItem
] = param_id
;
38 ListItems_Locations
[item
.iItem
] = csidl
;
40 LoadString(hInst
, descr_id
, szTemp
, 256);
41 item
.pszText
= szTemp
;
43 SendMessage(hToolsListCtrl
, LVM_SETITEMTEXT
, item
.iItem
, (LPARAM
) &item
);
46 void FillListView ( void ) {
47 AddItem(IDS_TOOLS_CMD_NAME
, IDS_TOOLS_CMD_DESCR
, IDS_TOOLS_CMD_CMD
, IDS_TOOLS_CMD_PARAM
, CSIDL_SYSTEM
);
48 AddItem(IDS_TOOLS_REGEDIT_NAME
, IDS_TOOLS_REGEDIT_DESCR
, IDS_TOOLS_REGEDIT_CMD
,IDS_TOOLS_REGEDIT_PARAM
, CSIDL_WINDOWS
);
49 AddItem(IDS_TOOLS_SYSDM_NAME
, IDS_TOOLS_SYSDM_DESCR
, IDS_TOOLS_SYSDM_CMD
, IDS_TOOLS_SYSDM_PARAM
, CSIDL_SYSTEM
);
50 AddItem(IDS_TOOLS_INFO_NAME
, IDS_TOOLS_INFO_DESCR
, IDS_TOOLS_INFO_CMD
, IDS_TOOLS_INFO_PARAM
, CSIDL_SYSTEM
);
54 ToolsPageWndProc(HWND hDlg
, UINT message
, WPARAM wParam
, LPARAM lParam
)
57 TCHAR szTemp
[MAX_PATH
*2];
60 LPNMITEMACTIVATE lpnmitem
;
63 PROCESS_INFORMATION pi
;
70 hToolsListCtrl
= GetDlgItem(hDlg
, IDC_TOOLS_LIST
);
73 dwStyle
= (DWORD
) SendMessage(hToolsListCtrl
, LVM_GETEXTENDEDLISTVIEWSTYLE
, 0, 0);
74 dwStyle
= dwStyle
| LVS_EX_FULLROWSELECT
;
75 SendMessage(hToolsListCtrl
, LVM_SETEXTENDEDLISTVIEWSTYLE
, 0, dwStyle
);
77 SetWindowPos(hDlg
, NULL
, 10, 32, 0, 0, SWP_NOACTIVATE
| SWP_NOOWNERZORDER
| SWP_NOSIZE
| SWP_NOZORDER
);
79 // Initialize the application page's controls
80 column
.mask
= LVCF_TEXT
| LVCF_WIDTH
;
82 LoadString(hInst
, IDS_TOOLS_COLUMN_NAME
, szTemp
, 256);
83 column
.pszText
= szTemp
;
85 (void)ListView_InsertColumn(hToolsListCtrl
, 0, &column
);
87 column
.mask
= LVCF_TEXT
| LVCF_WIDTH
;
88 LoadString(hInst
, IDS_TOOLS_COLUMN_DESCR
, szTemp
, 256);
89 column
.pszText
= szTemp
;
91 (void)ListView_InsertColumn(hToolsListCtrl
, 1, &column
);
98 switch (LOWORD(wParam
))
102 if (ListView_GetSelectionMark(hToolsListCtrl
) != -1)
104 if (SHGetSpecialFolderPath(NULL
, szTemp
, ListItems_Locations
[ListView_GetSelectionMark(hToolsListCtrl
)], FALSE
))
105 Ptr
= PathAddBackslash(szTemp
);
110 szTemp2
[0] = _T('\0');
111 LoadString(hInst
, ListItems_Cmds
[ListView_GetSelectionMark(hToolsListCtrl
)], Ptr
, 256);
112 LoadString(hInst
, ListItems_Params
[ListView_GetSelectionMark(hToolsListCtrl
)], szTemp2
, 256);
113 if (_tcslen(szTemp2
))
115 _tcscat(szTemp
, _T(" "));
116 _tcscat(Ptr
, szTemp2
);
118 ZeroMemory(&si
, sizeof(STARTUPINFO
));
119 si
.cb
= sizeof(STARTUPINFO
);
120 if (CreateProcess(NULL
, szTemp
, NULL
, NULL
, FALSE
, 0, NULL
, NULL
, &si
, &pi
))
122 CloseHandle(pi
.hThread
);
123 CloseHandle(pi
.hProcess
);
132 nmh
= (LPNMHDR
) lParam
;
133 if (nmh
->hwndFrom
== hToolsListCtrl
)
139 lpnmitem
= (LPNMITEMACTIVATE
) lParam
;
140 if (lpnmitem
->iItem
> -1)
142 LoadString(hInst
, ListItems_Cmds
[lpnmitem
->iItem
], szTemp
, 256);
143 szTemp2
[0] = _T('\0');
144 LoadString(hInst
, ListItems_Params
[lpnmitem
->iItem
], szTemp2
, 256);
145 _tcscat(szTemp
, _T(" "));
146 _tcscat(szTemp
, szTemp2
);
147 SendDlgItemMessage(hToolsDialog
, IDC_TOOLS_CMDLINE
, WM_SETTEXT
, 0, (LPARAM
) szTemp
);
153 lpnmitem
= (LPNMITEMACTIVATE
) lParam
;
154 if (lpnmitem
->iItem
> -1)
156 if (SHGetSpecialFolderPath(NULL
, szTemp
, ListItems_Locations
[ListView_GetSelectionMark(hToolsListCtrl
)], FALSE
))
157 Ptr
= PathAddBackslash(szTemp
);
162 szTemp2
[0] = _T('\0');
163 LoadString(hInst
, ListItems_Cmds
[lpnmitem
->iItem
], Ptr
, 256);
164 LoadString(hInst
, ListItems_Params
[lpnmitem
->iItem
], szTemp2
, 256);
165 if (_tcslen(szTemp2
))
167 _tcscat(szTemp
, _T(" "));
168 _tcscat(Ptr
, szTemp2
);
170 ZeroMemory(&si
, sizeof(STARTUPINFO
));
171 si
.cb
= sizeof(STARTUPINFO
);
172 if (CreateProcess(NULL
, szTemp
, NULL
, NULL
, FALSE
, 0, NULL
, NULL
, &si
, &pi
))
174 CloseHandle(pi
.hThread
);
175 CloseHandle(pi
.hProcess
);