shell32: Add a custom icon for the trash folder.
This commit is contained in:
parent
76a20d38f3
commit
4bb595e4c6
|
@ -73,6 +73,7 @@ struct regsvr_coclass
|
||||||
DWORD dwCallForAttributes;
|
DWORD dwCallForAttributes;
|
||||||
LPCSTR clsid_str; /* can be NULL to omit */
|
LPCSTR clsid_str; /* can be NULL to omit */
|
||||||
LPCSTR progid; /* can be NULL to omit */
|
LPCSTR progid; /* can be NULL to omit */
|
||||||
|
UINT idDefaultIcon; /* can be 0 to omit */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* flags for regsvr_coclass.flags */
|
/* flags for regsvr_coclass.flags */
|
||||||
|
@ -127,6 +128,8 @@ static WCHAR const shellfolder_keyname[12] = {
|
||||||
static WCHAR const mcdm_keyname[21] = {
|
static WCHAR const mcdm_keyname[21] = {
|
||||||
'M', 'a', 'y', 'C', 'h', 'a', 'n', 'g', 'e', 'D', 'e', 'f',
|
'M', 'a', 'y', 'C', 'h', 'a', 'n', 'g', 'e', 'D', 'e', 'f',
|
||||||
'a', 'u', 'l', 't', 'M', 'e', 'n', 'u', 0 };
|
'a', 'u', 'l', 't', 'M', 'e', 'n', 'u', 0 };
|
||||||
|
static WCHAR const defaulticon_keyname[] = {
|
||||||
|
'D','e','f','a','u','l','t','I','c','o','n',0};
|
||||||
static char const tmodel_valuename[] = "ThreadingModel";
|
static char const tmodel_valuename[] = "ThreadingModel";
|
||||||
static char const wfparsing_valuename[] = "WantsFORPARSING";
|
static char const wfparsing_valuename[] = "WantsFORPARSING";
|
||||||
static char const attributes_valuename[] = "Attributes";
|
static char const attributes_valuename[] = "Attributes";
|
||||||
|
@ -276,6 +279,21 @@ static HRESULT register_coclasses(struct regsvr_coclass const *list)
|
||||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (list->idDefaultIcon) {
|
||||||
|
HKEY icon_key;
|
||||||
|
char buffer[64] = "%SYSTEMROOT%\\system32\\shell32.dll,-";
|
||||||
|
|
||||||
|
res = RegCreateKeyExW(clsid_key, defaulticon_keyname, 0, NULL, 0,
|
||||||
|
KEY_READ | KEY_WRITE, NULL, &icon_key, NULL);
|
||||||
|
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||||
|
|
||||||
|
sprintf(buffer+strlen(buffer), "%u", list->idDefaultIcon);
|
||||||
|
res = RegSetValueExA(icon_key, NULL, 0, REG_EXPAND_SZ,
|
||||||
|
(CONST BYTE*)(buffer), strlen(buffer)+1);
|
||||||
|
RegCloseKey(icon_key);
|
||||||
|
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||||
|
}
|
||||||
|
|
||||||
if (list->ips) {
|
if (list->ips) {
|
||||||
res = register_key_defvalueA(clsid_key, ips_keyname, list->ips);
|
res = register_key_defvalueA(clsid_key, ips_keyname, list->ips);
|
||||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||||
|
@ -668,7 +686,10 @@ static struct regsvr_coclass const coclass_list[] = {
|
||||||
"Apartment",
|
"Apartment",
|
||||||
SHELLFOLDER_ATTRIBUTES,
|
SHELLFOLDER_ATTRIBUTES,
|
||||||
SFGAO_FOLDER|SFGAO_DROPTARGET|SFGAO_HASPROPSHEET,
|
SFGAO_FOLDER|SFGAO_DROPTARGET|SFGAO_HASPROPSHEET,
|
||||||
0
|
0,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
IDI_SHELL_FULL_RECYCLE_BIN
|
||||||
},
|
},
|
||||||
{ NULL } /* list terminator */
|
{ NULL } /* list terminator */
|
||||||
};
|
};
|
||||||
|
|
|
@ -10531,6 +10531,8 @@ IDI_SHELL_DESKTOP ICON desktop.ico
|
||||||
'FF FF FF FF FF FF'
|
'FF FF FF FF FF FF'
|
||||||
} */
|
} */
|
||||||
|
|
||||||
|
IDI_SHELL_FULL_RECYCLE_BIN ICON trash_file.ico
|
||||||
|
|
||||||
/* BINRES trash_file.ico */
|
/* BINRES trash_file.ico */
|
||||||
IDI_SHELL_TRASH_FILE ICON trash_file.ico
|
IDI_SHELL_TRASH_FILE ICON trash_file.ico
|
||||||
/* {
|
/* {
|
||||||
|
|
Loading…
Reference in New Issue