xref: /reactos/dll/cpl/appwiz/appwiz.c (revision 69931a4a)
1 /*
2  * PROJECT:                 ReactOS Software Control Panel
3  * FILE:                    dll/cpl/appwiz/appwiz.c
4  * PURPOSE:                 ReactOS Software Control Panel
5  * PROGRAMMERS:             Gero Kuehn (reactos.filter@gkware.com)
6  *                          Dmitry Chapyshev (dmitry@reactos.org)
7  */
8 
9 #include "appwiz.h"
10 
11 #include <shellapi.h>
12 #include <cpl.h>
13 #include <wine/unicode.h>
14 
15 HINSTANCE hApplet = NULL;
16 
17 static LONG start_params(const WCHAR *params, HWND hwnd_parent)
18 {
19     if (!params)
20         return FALSE;
21 
22     if (!strcmpW(params, L"install_gecko"))
23     {
24         install_addon(ADDON_GECKO, hwnd_parent);
25         return TRUE;
26     }
27 
28     if (!strcmpW(params, L"install_mono"))
29     {
30         install_addon(ADDON_MONO, hwnd_parent);
31         return TRUE;
32     }
33 
34     WARN("unknown param %s\n", debugstr_w(params));
35     return FALSE;
36 }
37 
38 /* Control Panel Callback */
39 LONG CALLBACK
40 CPlApplet(HWND hwndCPl, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
41 {
42     CPLINFO *CPlInfo;
43 
44     switch (uMsg)
45     {
46         case CPL_INIT:
47             return TRUE;
48 
49         case CPL_GETCOUNT:
50             return 1;
51 
52         case CPL_STARTWPARMSW:
53             return start_params((const WCHAR *)lParam2, hwndCPl);
54 
55         case CPL_INQUIRE:
56             CPlInfo = (CPLINFO*)lParam2;
57             CPlInfo->lData = 0;
58             CPlInfo->idIcon = IDI_CPLSYSTEM;
59             CPlInfo->idName = IDS_CPLSYSTEMNAME;
60             CPlInfo->idInfo = IDS_CPLSYSTEMDESCRIPTION;
61             break;
62 
63         case CPL_DBLCLK:
64             ShellExecuteW(NULL,
65                           NULL,
66                           L"rapps.exe",
67                           L"/appwiz",
68                           NULL,
69                           SW_SHOWNORMAL);
70             break;
71     }
72 
73     return FALSE;
74 }
75 
76 BOOL WINAPI
77 DllMain(HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpvReserved)
78 {
79     UNREFERENCED_PARAMETER(lpvReserved);
80 
81     switch (dwReason)
82     {
83         case DLL_PROCESS_ATTACH:
84         case DLL_THREAD_ATTACH:
85             CoInitialize(NULL);
86             hApplet = hinstDLL;
87             break;
88     }
89 
90     return TRUE;
91 }
92