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