[KSPROXY]
[reactos.git] / reactos / dll / cpl / sysdm / hardware.c
1 /*
2 * PROJECT: ReactOS System Control Panel Applet
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: dll/cpl/sysdm/hardware.c
5 * PURPOSE: Hardware devices
6 * COPYRIGHT: Copyright Thomas Weidenmueller <w3seek@reactos.org>
7 * Copyright 2006 Ged Murphy <gedmurphy@gmail.com>
8 *
9 */
10
11 #include "precomp.h"
12
13 typedef BOOL (WINAPI *PDEVMGREXEC)(HWND hWndParent, HINSTANCE hInst, PVOID Unknown, int nCmdShow);
14
15 static BOOL
16 LaunchDeviceManager(HWND hWndParent)
17 {
18 /* hack for ROS to start our devmgmt until we have mmc */
19 #ifdef __REACTOS__
20 return ((INT_PTR)ShellExecuteW(NULL, L"open", L"devmgmt.exe", NULL, NULL, SW_SHOWNORMAL) > 32);
21 #else
22 HMODULE hDll;
23 PDEVMGREXEC DevMgrExec;
24 BOOL Ret;
25
26 hDll = LoadLibrary(_TEXT("devmgr.dll"));
27 if(!hDll)
28 return FALSE;
29
30 DevMgrExec = (PDEVMGREXEC)GetProcAddress(hDll, "DeviceManager_ExecuteW");
31 if(!DevMgrExec)
32 {
33 FreeLibrary(hDll);
34 return FALSE;
35 }
36
37 /* run the Device Manager */
38 Ret = DevMgrExec(hWndParent, hApplet, NULL /* ??? */, SW_SHOW);
39 FreeLibrary(hDll);
40 return Ret;
41 #endif /* __REACTOS__ */
42 }
43
44 static VOID
45 LaunchHardwareWizard(HWND hWndParent)
46 {
47 SHELLEXECUTEINFO shInputDll;
48
49 memset(&shInputDll, 0x0, sizeof(SHELLEXECUTEINFO));
50
51 shInputDll.cbSize = sizeof(shInputDll);
52 shInputDll.hwnd = hWndParent;
53 shInputDll.lpVerb = _T("open");
54 shInputDll.lpFile = _T("rundll32.exe");
55 shInputDll.lpParameters = _T("shell32.dll,Control_RunDLL hdwwiz.cpl");
56
57 if (ShellExecuteEx(&shInputDll) == 0)
58 {
59 MessageBox(NULL,
60 _T("Can't start hdwwiz.cpl"),
61 NULL,
62 MB_OK | MB_ICONERROR);
63 }
64 }
65
66 /* Property page dialog callback */
67 INT_PTR CALLBACK
68 HardwarePageProc(HWND hwndDlg,
69 UINT uMsg,
70 WPARAM wParam,
71 LPARAM lParam)
72 {
73 UNREFERENCED_PARAMETER(lParam);
74
75 switch (uMsg)
76 {
77 case WM_INITDIALOG:
78 break;
79
80 case WM_COMMAND:
81 switch (LOWORD(wParam))
82 {
83 case IDC_HARDWARE_DEVICE_MANAGER:
84 if (!LaunchDeviceManager(hwndDlg))
85 {
86 /* FIXME */
87 }
88 return TRUE;
89
90 case IDC_HARDWARE_WIZARD:
91 LaunchHardwareWizard(hwndDlg);
92 return TRUE;
93
94 case IDC_HARDWARE_PROFILE:
95 DialogBox(hApplet,
96 MAKEINTRESOURCE(IDD_HARDWAREPROFILES),
97 hwndDlg,
98 (DLGPROC)HardProfDlgProc);
99 return TRUE;
100 }
101 break;
102 }
103
104 return FALSE;
105 }