Author: janderwald
Date: Thu Aug 14 03:41:59 2008
New Revision: 35327
URL:
http://svn.reactos.org/svn/reactos?rev=35327&view=rev
Log:
* Implement administrative tools shell folder
Added:
trunk/reactos/dll/win32/shell32/shfldr_admintools.c (with props)
Modified:
trunk/reactos/dll/win32/shell32/classes.c
trunk/reactos/dll/win32/shell32/lang/bg-BG.rc
trunk/reactos/dll/win32/shell32/lang/ca-ES.rc
trunk/reactos/dll/win32/shell32/lang/cs-CZ.rc
trunk/reactos/dll/win32/shell32/lang/da-DK.rc
trunk/reactos/dll/win32/shell32/lang/de-DE.rc
trunk/reactos/dll/win32/shell32/lang/el-GR.rc
trunk/reactos/dll/win32/shell32/lang/en-GB.rc
trunk/reactos/dll/win32/shell32/lang/en-US.rc
trunk/reactos/dll/win32/shell32/lang/es-ES.rc
trunk/reactos/dll/win32/shell32/lang/fi-FI.rc
trunk/reactos/dll/win32/shell32/lang/fr-FR.rc
trunk/reactos/dll/win32/shell32/lang/hu-HU.rc
trunk/reactos/dll/win32/shell32/lang/it-IT.rc
trunk/reactos/dll/win32/shell32/lang/ja-JP.rc
trunk/reactos/dll/win32/shell32/lang/ko-KR.rc
trunk/reactos/dll/win32/shell32/lang/nl-NL.rc
trunk/reactos/dll/win32/shell32/lang/no-NO.rc
trunk/reactos/dll/win32/shell32/lang/pl-PL.rc
trunk/reactos/dll/win32/shell32/lang/pt-BR.rc
trunk/reactos/dll/win32/shell32/lang/pt-PT.rc
trunk/reactos/dll/win32/shell32/lang/ru-RU.rc
trunk/reactos/dll/win32/shell32/lang/sk-SK.rc
trunk/reactos/dll/win32/shell32/lang/sl-SI.rc
trunk/reactos/dll/win32/shell32/lang/sv-SE.rc
trunk/reactos/dll/win32/shell32/lang/tr-TR.rc
trunk/reactos/dll/win32/shell32/lang/uk-UA.rc
trunk/reactos/dll/win32/shell32/lang/zh-CN.rc
trunk/reactos/dll/win32/shell32/lang/zh-TW.rc
trunk/reactos/dll/win32/shell32/pidl.c
trunk/reactos/dll/win32/shell32/pidl.h
trunk/reactos/dll/win32/shell32/regsvr.c
trunk/reactos/dll/win32/shell32/shell32.rbuild
trunk/reactos/dll/win32/shell32/shell32_main.h
trunk/reactos/dll/win32/shell32/shellole.c
trunk/reactos/dll/win32/shell32/shresdef.h
Modified: trunk/reactos/dll/win32/shell32/classes.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/classes.…
==============================================================================
--- trunk/reactos/dll/win32/shell32/classes.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/classes.c [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -386,6 +386,11 @@
if(LoadStringW(shell32_hInstance, IDS_CONTROLPANEL, szDest, buflen))
ret = TRUE;
}
+ else if (IsEqualIID(riid, &CLSID_AdminFolderShortcut))
+ {
+ if(LoadStringW(shell32_hInstance, IDS_ADMINISTRATIVETOOLS, szDest, buflen))
+ ret = TRUE;
+ }
}
TRACE("-- %s\n", debugstr_w(szDest));
Modified: trunk/reactos/dll/win32/shell32/lang/bg-BG.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/bg-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/bg-BG.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/bg-BG.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -613,6 +613,7 @@
IDS_MYCOMPUTER "Ìîÿò êîìïþòúð"
IDS_RECYCLEBIN_FOLDER_NAME "政֌"
IDS_CONTROLPANEL "Êðèëî çà óïðàâëåíèå"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
// context menus
IDS_VIEW_LARGE "&Ãîëåìè çíà÷åòà"
Modified: trunk/reactos/dll/win32/shell32/lang/ca-ES.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/ca-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/ca-ES.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/ca-ES.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -610,6 +610,7 @@
IDS_MYCOMPUTER "My Computer"
IDS_RECYCLEBIN_FOLDER_NAME "Trash"
IDS_CONTROLPANEL "Control Panel"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "Lar&ge Icons"
Modified: trunk/reactos/dll/win32/shell32/lang/cs-CZ.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/cs-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/cs-CZ.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/cs-CZ.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -612,6 +612,7 @@
IDS_MYCOMPUTER "Tento poèítaè"
IDS_RECYCLEBIN_FOLDER_NAME "Ko"
IDS_CONTROLPANEL "Ovládací panely"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "&Vedle sebe"
Modified: trunk/reactos/dll/win32/shell32/lang/da-DK.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/da-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/da-DK.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/da-DK.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -610,6 +610,7 @@
IDS_MYCOMPUTER "My Computer"
IDS_RECYCLEBIN_FOLDER_NAME "Trash"
IDS_CONTROLPANEL "Control Panel"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "Lar&ge Icons"
Modified: trunk/reactos/dll/win32/shell32/lang/de-DE.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/de-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/de-DE.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/de-DE.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -613,6 +613,7 @@
IDS_MYCOMPUTER "Arbeitsplatz"
IDS_RECYCLEBIN_FOLDER_NAME "Papierkorb"
IDS_CONTROLPANEL "Systemsteuerung"
+ IDS_ADMINISTRATIVETOOLS "Verwaltung"
/* context menus */
IDS_VIEW_LARGE "&Große Symbole"
Modified: trunk/reactos/dll/win32/shell32/lang/el-GR.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/el-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/el-GR.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/el-GR.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -610,6 +610,7 @@
IDS_MYCOMPUTER "Ï õðïëïãéóôÞò ìïõ"
IDS_RECYCLEBIN_FOLDER_NAME "ÊÜäïò áíáêýêëùóçò"
IDS_CONTROLPANEL "Ðßíáêáò åëÝã÷ïõ"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "&ÌåãÜëá åéêïíßäéá"
Modified: trunk/reactos/dll/win32/shell32/lang/en-GB.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/en-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/en-GB.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/en-GB.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -610,6 +610,7 @@
IDS_MYCOMPUTER "My Computer"
IDS_RECYCLEBIN_FOLDER_NAME "Recycle Bin"
IDS_CONTROLPANEL "Control Panel"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "Lar&ge Icons"
Modified: trunk/reactos/dll/win32/shell32/lang/en-US.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/en-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/en-US.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/en-US.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -611,6 +611,7 @@
IDS_MYCOMPUTER "My Computer"
IDS_RECYCLEBIN_FOLDER_NAME "Trash"
IDS_CONTROLPANEL "Control Panel"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "Lar&ge Icons"
Modified: trunk/reactos/dll/win32/shell32/lang/es-ES.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/es-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/es-ES.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/es-ES.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -612,6 +612,7 @@
IDS_MYCOMPUTER "Mi PC"
IDS_RECYCLEBIN_FOLDER_NAME "Papelera de reciclaje"
IDS_CONTROLPANEL "Panel de control"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "Iconos &grandes"
Modified: trunk/reactos/dll/win32/shell32/lang/fi-FI.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/fi-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/fi-FI.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/fi-FI.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -610,6 +610,7 @@
IDS_MYCOMPUTER "Oma Tietokone"
IDS_RECYCLEBIN_FOLDER_NAME "Trash"
IDS_CONTROLPANEL "Control Panel"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "&Suuret Kuvakkeet"
Modified: trunk/reactos/dll/win32/shell32/lang/fr-FR.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/fr-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/fr-FR.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/fr-FR.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -614,6 +614,7 @@
IDS_MYCOMPUTER "Poste de travail"
IDS_RECYCLEBIN_FOLDER_NAME "Corbeille"
IDS_CONTROLPANEL "Panneau de configuration"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "&Grandes icônes"
Modified: trunk/reactos/dll/win32/shell32/lang/hu-HU.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/hu-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/hu-HU.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/hu-HU.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -613,6 +613,7 @@
IDS_MYCOMPUTER "Számítógép"
IDS_RECYCLEBIN_FOLDER_NAME "Trash"
IDS_CONTROLPANEL "Control Panel"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "Nagy képek"
Modified: trunk/reactos/dll/win32/shell32/lang/it-IT.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/it-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/it-IT.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/it-IT.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -611,6 +611,7 @@
IDS_MYCOMPUTER "Risorse del Computer"
IDS_RECYCLEBIN_FOLDER_NAME "Cestino"
IDS_CONTROLPANEL "Pannello di controllo"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "&Icone Grandi"
Modified: trunk/reactos/dll/win32/shell32/lang/ja-JP.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/ja-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/ja-JP.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/ja-JP.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -610,6 +610,7 @@
IDS_MYCOMPUTER "}C Rs
[^"
IDS_RECYCLEBIN_FOLDER_NAME "Trash"
IDS_CONTROLPANEL "Control Panel"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "å«¢ACR(&G)"
Modified: trunk/reactos/dll/win32/shell32/lang/ko-KR.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/ko-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/ko-KR.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/ko-KR.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -610,6 +610,7 @@
IDS_MYCOMPUTER "My Computer"
IDS_RECYCLEBIN_FOLDER_NAME "Trash"
IDS_CONTROLPANEL "Control Panel"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "Lar&ge Icons"
Modified: trunk/reactos/dll/win32/shell32/lang/nl-NL.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/nl-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/nl-NL.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/nl-NL.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -610,6 +610,7 @@
IDS_MYCOMPUTER "My Computer"
IDS_RECYCLEBIN_FOLDER_NAME "Trash"
IDS_CONTROLPANEL "Control Panel"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "Lar&ge Icons"
Modified: trunk/reactos/dll/win32/shell32/lang/no-NO.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/no-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/no-NO.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/no-NO.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -589,6 +589,7 @@
IDS_MYCOMPUTER "Min datamaskin"
IDS_RECYCLEBIN_FOLDER_NAME "Papirkurv"
IDS_CONTROLPANEL "Kontrollpanel"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "&Store ikoner"
Modified: trunk/reactos/dll/win32/shell32/lang/pl-PL.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/pl-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/pl-PL.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/pl-PL.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -616,6 +616,7 @@
IDS_MYCOMPUTER "Mój komputer"
IDS_RECYCLEBIN_FOLDER_NAME "Kosz"
IDS_CONTROLPANEL "Panel Sterowania"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "&Du¿e Ikony"
Modified: trunk/reactos/dll/win32/shell32/lang/pt-BR.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/pt-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/pt-BR.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/pt-BR.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -612,6 +612,7 @@
IDS_MYCOMPUTER "Meu computador"
IDS_RECYCLEBIN_FOLDER_NAME "Trash"
IDS_CONTROLPANEL "Control Panel"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "Ícones &grandes"
Modified: trunk/reactos/dll/win32/shell32/lang/pt-PT.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/pt-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/pt-PT.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/pt-PT.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -612,6 +612,7 @@
IDS_MYCOMPUTER "O Meu Computador"
IDS_RECYCLEBIN_FOLDER_NAME "Trash"
IDS_CONTROLPANEL "Control Panel"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "Ícones &grandes"
Modified: trunk/reactos/dll/win32/shell32/lang/ru-RU.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/ru-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/ru-RU.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/ru-RU.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -609,6 +609,7 @@
IDS_MYCOMPUTER "Ìîé êîìïüþòåð"
IDS_RECYCLEBIN_FOLDER_NAME "Êîðçèíà"
IDS_CONTROLPANEL "Ïàíåëü óïðàâëåíèÿ"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "&Áîëüøèå çíà÷êè"
Modified: trunk/reactos/dll/win32/shell32/lang/sk-SK.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/sk-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/sk-SK.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/sk-SK.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -616,6 +616,7 @@
IDS_MYCOMPUTER "Tento poèítaè"
IDS_RECYCLEBIN_FOLDER_NAME "Kô"
IDS_CONTROLPANEL "Ovládací panel"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "&Ve¾ké ikony"
Modified: trunk/reactos/dll/win32/shell32/lang/sl-SI.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/sl-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/sl-SI.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/sl-SI.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -610,6 +610,7 @@
IDS_MYCOMPUTER "My Computer"
IDS_RECYCLEBIN_FOLDER_NAME "Trash"
IDS_CONTROLPANEL "Control Panel"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "Lar&ge Icons"
Modified: trunk/reactos/dll/win32/shell32/lang/sv-SE.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/sv-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/sv-SE.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/sv-SE.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -610,6 +610,7 @@
IDS_MYCOMPUTER "My Computer"
IDS_RECYCLEBIN_FOLDER_NAME "Trash"
IDS_CONTROLPANEL "Control Panel"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "Lar&ge Icons"
Modified: trunk/reactos/dll/win32/shell32/lang/tr-TR.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/tr-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/tr-TR.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/tr-TR.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -610,6 +610,7 @@
IDS_MYCOMPUTER "Bilgisayarým"
IDS_RECYCLEBIN_FOLDER_NAME "Çöp"
IDS_CONTROLPANEL "Control Panel"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "Bü&yük Simgeler"
Modified: trunk/reactos/dll/win32/shell32/lang/uk-UA.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/uk-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/uk-UA.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/uk-UA.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -611,6 +611,7 @@
IDS_MYCOMPUTER "̳é Êîìï'þòåð"
IDS_RECYCLEBIN_FOLDER_NAME "Êîøèê"
IDS_CONTROLPANEL "Ïàíåëü êåðóâàííÿ"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "&Âåëèê³ çíà÷êè"
Modified: trunk/reactos/dll/win32/shell32/lang/zh-CN.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/zh-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/zh-CN.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/zh-CN.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -599,6 +599,7 @@
IDS_MYCOMPUTER "ÎҵĵçÄÔ"
IDS_RECYCLEBIN_FOLDER_NAME "»ØÊÕÕ¾"
IDS_CONTROLPANEL "¿ØÖÆÃæ°å"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "´óͼ±ê(&G)"
Modified: trunk/reactos/dll/win32/shell32/lang/zh-TW.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/zh-…
==============================================================================
--- trunk/reactos/dll/win32/shell32/lang/zh-TW.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/lang/zh-TW.rc [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -611,6 +611,7 @@
IDS_MYCOMPUTER "My Computer"
IDS_RECYCLEBIN_FOLDER_NAME "Trash"
IDS_CONTROLPANEL "Control Panel"
+ IDS_ADMINISTRATIVETOOLS "Administrative Tools"
/* context menus */
IDS_VIEW_LARGE "Lar&ge Icons"
Modified: trunk/reactos/dll/win32/shell32/pidl.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/pidl.c?r…
==============================================================================
--- trunk/reactos/dll/win32/shell32/pidl.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/pidl.c [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -1402,6 +1402,12 @@
return _ILCreateGuid(PT_GUID, &CLSID_RecycleBin);
}
+LPITEMIDLIST _ILCreateAdminTools(void)
+{
+ TRACE("()\n");
+ return _ILCreateGuid(PT_GUID, &CLSID_AdminFolderShortcut);
+}
+
LPITEMIDLIST _ILCreateGuid(PIDLTYPE type, REFIID guid)
{
LPITEMIDLIST pidlOut;
@@ -1655,6 +1661,18 @@
if (iid)
return IsEqualIID(iid, &CLSID_RecycleBin);
return FALSE;
+}
+
+BOOL _ILIsAdminTools(LPCITEMIDLIST pidl)
+{
+ REFIID iid = _ILGetGUIDPointer(pidl);
+
+ TRACE("(%p)\n",pidl);
+
+ if (iid)
+ return IsEqualIID(iid, &CLSID_AdminFolderShortcut);
+ else
+ return FALSE;
}
BOOL _ILIsSpecialFolder (LPCITEMIDLIST pidl)
Modified: trunk/reactos/dll/win32/shell32/pidl.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/pidl.h?r…
==============================================================================
--- trunk/reactos/dll/win32/shell32/pidl.h [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/pidl.h [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -236,6 +236,7 @@
BOOL _ILIsMyDocuments (LPCITEMIDLIST pidl);
BOOL _ILIsControlPanel (LPCITEMIDLIST pidl);
BOOL _ILIsBitBucket (LPCITEMIDLIST pidl);
+BOOL _ILIsAdminTools (LPCITEMIDLIST pidl);
BOOL _ILIsNetHood (LPCITEMIDLIST pidl);
BOOL _ILIsDrive (LPCITEMIDLIST pidl);
BOOL _ILIsFolder (LPCITEMIDLIST pidl);
@@ -285,6 +286,7 @@
LPITEMIDLIST _ILCreatePrinters (void);
LPITEMIDLIST _ILCreateNetwork (void);
LPITEMIDLIST _ILCreateNetHood (void);
+LPITEMIDLIST _ILCreateAdminTools (void);
LPITEMIDLIST _ILCreateFont (void);
LPITEMIDLIST _ILCreateBitBucket (void);
LPITEMIDLIST _ILCreateDrive (LPCWSTR);
Modified: trunk/reactos/dll/win32/shell32/regsvr.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/regsvr.c…
==============================================================================
--- trunk/reactos/dll/win32/shell32/regsvr.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/regsvr.c [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -646,6 +646,19 @@
NULL,
IDI_SHELL_FONTS_FOLDER
},
+ { &CLSID_AdminFolderShortcut,
+ "Administrative Tools",
+ IDS_ADMINISTRATIVETOOLS,
+ NULL,
+ "shell32.dll",
+ "Apartment",
+ SHELLFOLDER_ATTRIBUTES,
+ SFGAO_FOLDER,
+ 0,
+ NULL,
+ NULL,
+ IDI_SHELL_ADMINTOOLS //FIXME
+ },
{ &CLSID_Shortcut,
"Shortcut",
0,
@@ -758,7 +771,7 @@
static const WCHAR wszNethoodFolder[] = {
'N','e','t','h','o','o','d','
','f','o','l','d','e','r',0};
static const WCHAR wszPrinters[] = {
'P','r','i','n','t','e','r','s',0
};
static const WCHAR wszFonts[] = {
'F','o','n','t','s',0 };
-
+static const WCHAR wszAdminTools[] = {
'A','d','m','i','n','T','o','o','l','s',0
};
const GUID CLSID_FolderOptions = { 0x6DFD7C5C, 0x2451, 0x11d3,
{0xa2,0x99,0x00,0xC0,0x4F,0x8e,0xf6,0xaf} };
static struct regsvr_namespace const namespace_extensions_list[] = {
@@ -803,6 +816,11 @@
&CLSID_Printers,
wszControlPanel,
wszPrinters
+ },
+ {
+ &CLSID_AdminFolderShortcut,
+ wszControlPanel,
+ wszAdminTools
},
{ NULL }
};
Modified: trunk/reactos/dll/win32/shell32/shell32.rbuild
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shell32.…
==============================================================================
--- trunk/reactos/dll/win32/shell32/shell32.rbuild [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/shell32.rbuild [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -57,6 +57,7 @@
<file>shfldr_mycomp.c</file>
<file>shfldr_mydocuments.c</file>
<file>shfldr_printers.c</file>
+ <file>shfldr_admintools.c</file>
<file>shlexec.c</file>
<file>shlfileop.c</file>
<file>shlfolder.c</file>
Modified: trunk/reactos/dll/win32/shell32/shell32_main.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shell32_…
==============================================================================
--- trunk/reactos/dll/win32/shell32/shell32_main.h [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/shell32_main.h [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -96,6 +96,7 @@
HRESULT WINAPI ISF_MyDocuments_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID *
ppv);
HRESULT WINAPI ISF_NetworkPlaces_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID *
ppv);
HRESULT WINAPI ISF_Fonts_Constructor (IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv);
+HRESULT WINAPI ISF_AdminTools_Constructor (IUnknown * pUnkOuter, REFIID riid, LPVOID *
ppv);
HRESULT WINAPI IDropTargetHelper_Constructor (IUnknown * pUnkOuter, REFIID riid, LPVOID *
ppv);
HRESULT WINAPI IFileSystemBindData_Constructor(const WIN32_FIND_DATAW *pfd, LPBC *ppV);
HRESULT WINAPI IControlPanel_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID *
ppv);
Modified: trunk/reactos/dll/win32/shell32/shellole.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shellole…
==============================================================================
--- trunk/reactos/dll/win32/shell32/shellole.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/shellole.c [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -78,6 +78,7 @@
{&CLSID_NetworkPlaces, &ISF_NetworkPlaces_Constructor},
{&CLSID_FontsFolderShortcut, &ISF_Fonts_Constructor},
{&CLSID_Printers, &ISF_Printers_Constructor},
+ {&CLSID_AdminFolderShortcut, &ISF_AdminTools_Constructor},
{&CLSID_RecycleBin, &RecycleBin_Constructor},
{&CLSID_OpenWith, &SHEOW_Constructor},
{&dummy1, &INewItem_Constructor},
Added: trunk/reactos/dll/win32/shell32/shfldr_admintools.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shfldr_a…
==============================================================================
--- trunk/reactos/dll/win32/shell32/shfldr_admintools.c (added)
+++ trunk/reactos/dll/win32/shell32/shfldr_admintools.c [iso-8859-1] Thu Aug 14 03:41:59
2008
@@ -1,0 +1,780 @@
+/*
+ * Virtual Admin Tools Folder
+ *
+ * Copyright 2008 Johannes Anderwald
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include "config.h"
+#include "wine/port.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <stdio.h>
+
+#define COBJMACROS
+#define NONAMELESSUNION
+#define NONAMELESSSTRUCT
+
+#include "winerror.h"
+#include "windef.h"
+#include "winbase.h"
+#include "winreg.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "winspool.h"
+
+#include "ole2.h"
+#include "shlguid.h"
+
+#include "enumidlist.h"
+#include "pidl.h"
+#include "undocshell.h"
+#include "shell32_main.h"
+#include "shresdef.h"
+#include "shlwapi.h"
+#include "shellfolder.h"
+#include "wine/debug.h"
+#include "debughlp.h"
+#include "shfldr.h"
+#include "shresdef.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL (shell);
+
+/* List shortcuts of
+ * CSIDL_COMMON_ADMINTOOLS
+ * Note: CSIDL_ADMINTOOLS is ignored, tested with Window XP SP3+
+ */
+
+/***********************************************************************
+ * AdminTools folder implementation
+ */
+
+typedef struct {
+ IShellFolder2Vtbl *lpVtbl;
+ IPersistFolder2Vtbl *lpVtblPersistFolder2;
+
+ LONG ref;
+
+ CLSID *pclsid;
+
+ LPITEMIDLIST pidlRoot; /* absolute pidl */
+ LPWSTR szTarget;
+
+ int dwAttributes; /* attributes returned by GetAttributesOf FIXME: use it */
+} IGenericSFImpl;
+
+static const shvheader AdminToolsSFHeader[] = {
+ {IDS_SHV_COLUMN8, SHCOLSTATE_TYPE_STR | SHCOLSTATE_ONBYDEFAULT, LVCFMT_RIGHT, 15},
+ {IDS_SHV_COLUMN2, SHCOLSTATE_TYPE_STR | SHCOLSTATE_ONBYDEFAULT, LVCFMT_RIGHT, 10},
+ {IDS_SHV_COLUMN3, SHCOLSTATE_TYPE_STR | SHCOLSTATE_ONBYDEFAULT, LVCFMT_RIGHT, 10},
+ {IDS_SHV_COLUMN4, SHCOLSTATE_TYPE_DATE | SHCOLSTATE_ONBYDEFAULT, LVCFMT_RIGHT, 12}
+};
+
+#define COLUMN_NAME 0
+#define COLUMN_SIZE 1
+#define COLUMN_TYPE 2
+#define COLUMN_DATE 3
+
+#define AdminToolsHELLVIEWCOLUMNS (4)
+
+
+#define _IPersistFolder2_Offset
((int)(&(((IGenericSFImpl*)0)->lpVtblPersistFolder2)))
+#define _ICOM_THIS_From_IPersistFolder2(class, name) class* This =
(class*)(((char*)name)-_IPersistFolder2_Offset);
+
+#define _IUnknown_(This) (IShellFolder*)&(This->lpVtbl)
+#define _IShellFolder_(This) (IShellFolder*)&(This->lpVtbl)
+
+#define _IPersist_(This) (IPersist*)&(This->lpVtblPersistFolder2)
+#define _IPersistFolder_(This) (IPersistFolder*)&(This->lpVtblPersistFolder2)
+#define _IPersistFolder2_(This)
(IPersistFolder2*)&(This->lpVtblPersistFolder2)
+
+/**************************************************************************
+ * ISF_AdminTools_fnQueryInterface
+ *
+ * NOTE does not support IPersist/IPersistFolder
+ */
+static HRESULT WINAPI ISF_AdminTools_fnQueryInterface(
+ IShellFolder2 * iface, REFIID riid, LPVOID * ppvObj)
+{
+ IGenericSFImpl *This = (IGenericSFImpl *)iface;
+
+ TRACE ("(%p)->(%s,%p)\n", This, shdebugstr_guid (riid), ppvObj);
+
+ *ppvObj = NULL;
+
+ if (IsEqualIID (riid, &IID_IUnknown) ||
+ IsEqualIID (riid, &IID_IShellFolder) ||
+ IsEqualIID (riid, &IID_IShellFolder2))
+ {
+ *ppvObj = This;
+ }
+
+ else if (IsEqualIID (riid, &IID_IPersist) ||
+ IsEqualIID (riid, &IID_IPersistFolder) ||
+ IsEqualIID (riid, &IID_IPersistFolder2))
+ {
+ *ppvObj = _IPersistFolder2_ (This);
+ }
+
+ if (*ppvObj)
+ {
+ IUnknown_AddRef ((IUnknown *) (*ppvObj));
+ TRACE ("-- Interface: (%p)->(%p)\n", ppvObj, *ppvObj);
+ return S_OK;
+ }
+ TRACE ("-- Interface: E_NOINTERFACE\n");
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI ISF_AdminTools_fnAddRef (IShellFolder2 * iface)
+{
+ IGenericSFImpl *This = (IGenericSFImpl *)iface;
+ ULONG refCount = InterlockedIncrement(&This->ref);
+
+ TRACE ("(%p)->(count=%lu)\n", This, refCount - 1);
+
+ return refCount;
+}
+
+static ULONG WINAPI ISF_AdminTools_fnRelease (IShellFolder2 * iface)
+{
+ IGenericSFImpl *This = (IGenericSFImpl *)iface;
+ ULONG refCount = InterlockedDecrement(&This->ref);
+
+ TRACE ("(%p)->(count=%lu)\n", This, refCount + 1);
+
+ if (!refCount)
+ {
+ TRACE ("-- destroying IShellFolder(%p)\n", This);
+ if (This->pidlRoot)
+ SHFree (This->pidlRoot);
+ LocalFree ((HLOCAL) This);
+ return 0;
+ }
+ return refCount;
+}
+
+/**************************************************************************
+ * ISF_AdminTools_fnParseDisplayName
+ *
+ */
+static HRESULT WINAPI ISF_AdminTools_fnParseDisplayName (IShellFolder2 * iface,
+ HWND hwndOwner, LPBC pbc, LPOLESTR lpszDisplayName,
+ DWORD * pchEaten, LPITEMIDLIST * ppidl, DWORD * pdwAttributes)
+{
+ IGenericSFImpl *This = (IGenericSFImpl *)iface;
+
+ TRACE("(%p)->(HWND=%p,%p,%p=%s,%p,pidl=%p,%p)\n",
+ This, hwndOwner, pbc, lpszDisplayName, debugstr_w(lpszDisplayName),
+ pchEaten, ppidl, pdwAttributes);
+
+ *ppidl = 0;
+ if (pchEaten)
+ *pchEaten = 0;
+
+ return E_NOTIMPL;
+}
+
+/**************************************************************************
+ * CreateAdminToolsEnumList()
+ */
+static BOOL CreateAdminToolsEnumList(IEnumIDList *list, IGenericSFImpl *This, DWORD
dwFlags)
+{
+ TRACE("(%p)->(flags=0x%08x)\n", list, dwFlags);
+ /* enumerate the elements in %windir%\desktop */
+ return CreateFolderEnumList(list, This->szTarget, dwFlags);
+}
+
+/**************************************************************************
+ * ISF_AdminTools_fnEnumObjects
+ */
+static HRESULT WINAPI ISF_AdminTools_fnEnumObjects (IShellFolder2 * iface,
+ HWND hwndOwner, DWORD dwFlags, LPENUMIDLIST * ppEnumIDList)
+{
+ IGenericSFImpl *This = (IGenericSFImpl *)iface;
+
+ TRACE ("(%p)->(HWND=%p flags=0x%08lx pplist=%p)\n",
+ This, hwndOwner, dwFlags, ppEnumIDList);
+
+ if(!ppEnumIDList) return E_OUTOFMEMORY;
+ *ppEnumIDList = IEnumIDList_Constructor();
+ if (*ppEnumIDList)
+ CreateAdminToolsEnumList(*ppEnumIDList, This, dwFlags);
+
+ TRACE ("-- (%p)->(new ID List: %p)\n", This, *ppEnumIDList);
+
+ return (*ppEnumIDList) ? S_OK : E_OUTOFMEMORY;
+}
+
+/**************************************************************************
+ * ISF_AdminTools_fnBindToObject
+ */
+static HRESULT WINAPI ISF_AdminTools_fnBindToObject (IShellFolder2 * iface,
+ LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, LPVOID * ppvOut)
+{
+ IGenericSFImpl *This = (IGenericSFImpl *)iface;
+
+ TRACE ("(%p)->(pidl=%p,%p,%s,%p)\n", This,
+ pidl, pbcReserved, shdebugstr_guid (riid), ppvOut);
+
+ return SHELL32_BindToChild (This->pidlRoot, NULL, pidl, riid, ppvOut);
+}
+
+/**************************************************************************
+ * ISF_AdminTools_fnBindToStorage
+ */
+static HRESULT WINAPI ISF_AdminTools_fnBindToStorage (IShellFolder2 * iface,
+ LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, LPVOID * ppvOut)
+{
+ IGenericSFImpl *This = (IGenericSFImpl *)iface;
+
+ FIXME ("(%p)->(pidl=%p,%p,%s,%p) stub\n",
+ This, pidl, pbcReserved, shdebugstr_guid (riid), ppvOut);
+
+ *ppvOut = NULL;
+ return E_NOTIMPL;
+}
+
+/**************************************************************************
+ * ISF_AdminTools_fnCompareIDs
+ */
+static HRESULT WINAPI ISF_AdminTools_fnCompareIDs (IShellFolder2 * iface,
+ LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
+{
+ IGenericSFImpl *This = (IGenericSFImpl *)iface;
+ int nReturn;
+
+ TRACE ("(%p)->(0x%08lx,pidl1=%p,pidl2=%p)\n", This, lParam, pidl1,
pidl2);
+ nReturn = SHELL32_CompareIDs (_IShellFolder_ (This), lParam, pidl1, pidl2);
+ TRACE ("-- %i\n", nReturn);
+ return nReturn;
+}
+
+/**************************************************************************
+ * ISF_AdminTools_fnCreateViewObject
+ */
+static HRESULT WINAPI ISF_AdminTools_fnCreateViewObject (IShellFolder2 * iface,
+ HWND hwndOwner, REFIID riid, LPVOID * ppvOut)
+{
+
+ LPSHELLVIEW pShellView;
+ HRESULT hr = E_INVALIDARG;
+ IGenericSFImpl *This = (IGenericSFImpl *)iface;
+
+ TRACE ("(%p)->(hwnd=%p,%s,%p)\n", This,
+ hwndOwner, shdebugstr_guid (riid), ppvOut);
+
+ if (!ppvOut)
+ return hr;
+
+ *ppvOut = NULL;
+
+ if (IsEqualIID (riid, &IID_IDropTarget))
+ {
+ WARN ("IDropTarget not implemented\n");
+ hr = E_NOTIMPL;
+ }
+ else if (IsEqualIID (riid, &IID_IShellView))
+ {
+ pShellView = IShellView_Constructor ((IShellFolder *) iface);
+ if (pShellView)
+ {
+ hr = IShellView_QueryInterface (pShellView, riid, ppvOut);
+ IShellView_Release (pShellView);
+ }
+ }
+ TRACE ("-- (%p)->(interface=%p)\n", This, ppvOut);
+ return hr;
+}
+
+/**************************************************************************
+ * ISF_AdminTools_fnGetAttributesOf
+ */
+static HRESULT WINAPI ISF_AdminTools_fnGetAttributesOf (IShellFolder2 * iface,
+ UINT cidl, LPCITEMIDLIST * apidl, DWORD * rgfInOut)
+{
+ IGenericSFImpl *This = (IGenericSFImpl *)iface;
+ HRESULT hr = S_OK;
+ static const DWORD dwAdminToolsAttributes =
+ SFGAO_STORAGE | SFGAO_HASPROPSHEET | SFGAO_STORAGEANCESTOR |
+ SFGAO_FILESYSANCESTOR | SFGAO_FOLDER | SFGAO_FILESYSTEM;
+
+ TRACE ("(%p)->(cidl=%d apidl=%p mask=%p (0x%08x))\n",
+ This, cidl, apidl, rgfInOut, rgfInOut ? *rgfInOut : 0);
+
+ if (!rgfInOut)
+ return E_INVALIDARG;
+ if (cidl && !apidl)
+ return E_INVALIDARG;
+
+ if (*rgfInOut == 0)
+ *rgfInOut = ~0;
+
+ if(cidl == 0) {
+ *rgfInOut &= dwAdminToolsAttributes;
+ } else {
+ while (cidl > 0 && *apidl) {
+ pdump (*apidl);
+ if (_ILIsAdminTools(*apidl)) {
+ *rgfInOut &= dwAdminToolsAttributes;
+ } else {
+ SHELL32_GetItemAttributes (_IShellFolder_ (This), *apidl, rgfInOut);
+ }
+ apidl++;
+ cidl--;
+ }
+ }
+ /* make sure SFGAO_VALIDATE is cleared, some apps depend on that */
+ *rgfInOut &= ~SFGAO_VALIDATE;
+
+ TRACE ("-- result=0x%08x\n", *rgfInOut);
+
+ return hr;
+}
+
+/**************************************************************************
+ * ISF_AdminTools_fnGetUIObjectOf
+ *
+ * PARAMETERS
+ * HWND hwndOwner, //[in ] Parent window for any output
+ * UINT cidl, //[in ] array size
+ * LPCITEMIDLIST* apidl, //[in ] simple pidl array
+ * REFIID riid, //[in ] Requested Interface
+ * UINT* prgfInOut, //[ ] reserved
+ * LPVOID* ppvObject) //[out] Resulting Interface
+ *
+ */
+static HRESULT WINAPI ISF_AdminTools_fnGetUIObjectOf (IShellFolder2 * iface,
+ HWND hwndOwner, UINT cidl, LPCITEMIDLIST * apidl,
+ REFIID riid, UINT * prgfInOut, LPVOID * ppvOut)
+{
+ IGenericSFImpl *This = (IGenericSFImpl *)iface;
+
+ LPITEMIDLIST pidl;
+ IUnknown *pObj = NULL;
+ HRESULT hr = E_INVALIDARG;
+
+ TRACE ("(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n",
+ This, hwndOwner, cidl, apidl, shdebugstr_guid (riid), prgfInOut, ppvOut);
+
+ if (!ppvOut)
+ return hr;
+
+ *ppvOut = NULL;
+
+ if (IsEqualIID (riid, &IID_IContextMenu))
+ {
+ hr = CDefFolderMenu_Create2(This->pidlRoot, hwndOwner, cidl, apidl,
(IShellFolder*)iface, NULL, 0, NULL, (IContextMenu**)&pObj);
+ }
+ else if (IsEqualIID (riid, &IID_IDataObject) && (cidl >= 1))
+ {
+ pObj = (LPUNKNOWN) IDataObject_Constructor( hwndOwner,
+ This->pidlRoot, apidl, cidl);
+ hr = S_OK;
+ }
+ else if (IsEqualIID (riid, &IID_IExtractIconA) && (cidl == 1))
+ {
+ pidl = ILCombine (This->pidlRoot, apidl[0]);
+ pObj = (LPUNKNOWN) IExtractIconA_Constructor (pidl);
+ SHFree (pidl);
+ hr = S_OK;
+ }
+ else if (IsEqualIID (riid, &IID_IExtractIconW) && (cidl == 1))
+ {
+ pidl = ILCombine (This->pidlRoot, apidl[0]);
+ pObj = (LPUNKNOWN) IExtractIconW_Constructor (pidl);
+ SHFree (pidl);
+ hr = S_OK;
+ }
+ else if (IsEqualIID (riid, &IID_IDropTarget) && (cidl >= 1))
+ {
+ hr = IShellFolder_QueryInterface (iface,
+ &IID_IDropTarget, (LPVOID *) & pObj);
+ }
+ else if ((IsEqualIID(riid,&IID_IShellLinkW) ||
+ IsEqualIID(riid,&IID_IShellLinkA)) && (cidl == 1))
+ {
+ pidl = ILCombine (This->pidlRoot, apidl[0]);
+ hr = IShellLink_ConstructFromFile(NULL, riid, pidl, (LPVOID*)&pObj);
+ SHFree (pidl);
+ }
+ else
+ hr = E_NOINTERFACE;
+
+ if (SUCCEEDED(hr) && !pObj)
+ hr = E_OUTOFMEMORY;
+
+ *ppvOut = pObj;
+ TRACE ("(%p)->hr=0x%08x\n", This, hr);
+ return hr;
+}
+
+/**************************************************************************
+ * ISF_AdminTools_fnGetDisplayNameOf
+ *
+ */
+static HRESULT WINAPI ISF_AdminTools_fnGetDisplayNameOf (IShellFolder2 * iface,
+ LPCITEMIDLIST pidl, DWORD dwFlags, LPSTRRET strRet)
+{
+ IGenericSFImpl *This = (IGenericSFImpl *)iface;
+ HRESULT hr = S_OK;
+ LPWSTR pszPath;
+
+ TRACE ("(%p)->(pidl=%p,0x%08x,%p)\n", This, pidl, dwFlags, strRet);
+ pdump (pidl);
+
+ if (!strRet)
+ return E_INVALIDARG;
+
+ pszPath = CoTaskMemAlloc((MAX_PATH +1) * sizeof(WCHAR));
+ if (!pszPath)
+ return E_OUTOFMEMORY;
+
+ ZeroMemory(pszPath, (MAX_PATH +1) * sizeof(WCHAR));
+
+ if (_ILIsAdminTools (pidl))
+ {
+ if ((GET_SHGDN_RELATION (dwFlags) == SHGDN_NORMAL) &&
+ (GET_SHGDN_FOR (dwFlags) & SHGDN_FORPARSING))
+ strcpyW(pszPath, This->szTarget);
+ else
+ HCR_GetClassNameW(&CLSID_AdminFolderShortcut, pszPath, MAX_PATH);
+ }
+ else if (_ILIsPidlSimple(pidl))
+ {
+ _ILSimpleGetTextW(pidl, pszPath, MAX_PATH);
+ }
+ else if (_ILIsSpecialFolder(pidl))
+ {
+ BOOL bSimplePidl = _ILIsPidlSimple(pidl);
+
+ if (bSimplePidl)
+ {
+ _ILSimpleGetTextW(pidl, pszPath, MAX_PATH);
+ }
+ else
+ {
+ FIXME("special pidl\n");
+ }
+
+ if ((dwFlags & SHGDN_FORPARSING) && !bSimplePidl)
+ {
+ int len = 0;
+
+ strcpyW(pszPath, This->szTarget);
+ PathAddBackslashW(pszPath);
+ len = lstrlenW(pszPath);
+
+ if (!SUCCEEDED(SHELL32_GetDisplayNameOfChild(iface, pidl, dwFlags |
SHGDN_INFOLDER, pszPath + len, MAX_PATH + 1 - len)))
+ {
+ CoTaskMemFree(pszPath);
+ return E_OUTOFMEMORY;
+ }
+
+ }
+ }
+
+ if (SUCCEEDED(hr))
+ {
+ strRet->uType = STRRET_WSTR;
+ strRet->u.pOleStr = pszPath;
+ }
+ else
+ CoTaskMemFree(pszPath);
+
+ TRACE ("-- (%p)->(%s,0x%08x)\n", This, debugstr_w(strRet->u.pOleStr),
hr);
+ return hr;
+}
+
+/**************************************************************************
+ * ISF_AdminTools_fnSetNameOf
+ * Changes the name of a file object or subfolder, possibly changing its item
+ * identifier in the process.
+ *
+ * PARAMETERS
+ * HWND hwndOwner, //[in ] Owner window for output
+ * LPCITEMIDLIST pidl, //[in ] simple pidl of item to change
+ * LPCOLESTR lpszName, //[in ] the items new display name
+ * DWORD dwFlags, //[in ] SHGNO formatting flags
+ * LPITEMIDLIST* ppidlOut) //[out] simple pidl returned
+ */
+static HRESULT WINAPI ISF_AdminTools_fnSetNameOf (IShellFolder2 * iface,
+ HWND hwndOwner, LPCITEMIDLIST pidl, /* simple pidl */
+ LPCOLESTR lpName, DWORD dwFlags, LPITEMIDLIST * pPidlOut)
+{
+ IGenericSFImpl *This = (IGenericSFImpl *)iface;
+
+ FIXME ("(%p)->(%p,pidl=%p,%s,%lu,%p)\n", This, hwndOwner, pidl,
+ debugstr_w (lpName), dwFlags, pPidlOut);
+
+ return E_FAIL;
+}
+
+static HRESULT WINAPI ISF_AdminTools_fnGetDefaultSearchGUID(IShellFolder2 *iface,
+ GUID * pguid)
+{
+ IGenericSFImpl *This = (IGenericSFImpl *)iface;
+
+ FIXME ("(%p)\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ISF_AdminTools_fnEnumSearches (IShellFolder2 *iface,
+ IEnumExtraSearch ** ppenum)
+{
+ IGenericSFImpl *This = (IGenericSFImpl *)iface;
+ FIXME ("(%p)\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ISF_AdminTools_fnGetDefaultColumn (IShellFolder2 * iface,
+ DWORD dwRes, ULONG * pSort, ULONG * pDisplay)
+{
+ if (pSort)
+ *pSort = 0;
+ if (pDisplay)
+ *pDisplay = 0;
+
+ return S_OK;
+}
+static HRESULT WINAPI ISF_AdminTools_fnGetDefaultColumnState (
+ IShellFolder2 * iface, UINT iColumn, DWORD * pcsFlags)
+{
+ if (!pcsFlags || iColumn >= AdminToolsHELLVIEWCOLUMNS)
+ return E_INVALIDARG;
+ *pcsFlags = AdminToolsSFHeader[iColumn].pcsFlags;
+ return S_OK;
+
+}
+
+static HRESULT WINAPI ISF_AdminTools_fnGetDetailsEx (IShellFolder2 * iface,
+ LPCITEMIDLIST pidl, const SHCOLUMNID * pscid, VARIANT * pv)
+{
+ IGenericSFImpl *This = (IGenericSFImpl *)iface;
+ FIXME ("(%p): stub\n", This);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ISF_AdminTools_fnGetDetailsOf (IShellFolder2 * iface,
+ LPCITEMIDLIST pidl, UINT iColumn, SHELLDETAILS * psd)
+{
+ IGenericSFImpl *This = (IGenericSFImpl *)iface;
+ WCHAR buffer[MAX_PATH] = {0};
+ HRESULT hr = E_FAIL;
+
+ TRACE("(%p)->(%p %i %p): stub\n", This, pidl, iColumn, psd);
+
+ if (iColumn >= AdminToolsHELLVIEWCOLUMNS)
+ return E_FAIL;
+
+ psd->fmt = AdminToolsSFHeader[iColumn].fmt;
+ psd->cxChar = AdminToolsSFHeader[iColumn].cxChar;
+ if (pidl == NULL)
+ {
+ psd->str.uType = STRRET_WSTR;
+ if (LoadStringW(shell32_hInstance, AdminToolsSFHeader[iColumn].colnameid, buffer,
MAX_PATH))
+ hr = SHStrDupW(buffer, &psd->str.u.pOleStr);
+
+ return hr;
+ }
+
+ psd->str.uType = STRRET_CSTR;
+ switch (iColumn)
+ {
+ case COLUMN_NAME:
+ psd->str.uType = STRRET_WSTR;
+ hr = IShellFolder_GetDisplayNameOf(iface, pidl,
+ SHGDN_NORMAL | SHGDN_INFOLDER, &psd->str);
+ break;
+ case COLUMN_SIZE:
+ _ILGetFileSize (pidl, psd->str.u.cStr, MAX_PATH);
+ break;
+ case COLUMN_TYPE:
+ _ILGetFileType (pidl, psd->str.u.cStr, MAX_PATH);
+ break;
+ case COLUMN_DATE:
+ _ILGetFileDate (pidl, psd->str.u.cStr, MAX_PATH);
+ break;
+ }
+
+ return hr;
+}
+
+static HRESULT WINAPI ISF_AdminTools_fnMapColumnToSCID (
+ IShellFolder2 * iface, UINT column, SHCOLUMNID * pscid)
+{
+ IGenericSFImpl *This = (IGenericSFImpl *)iface;
+ FIXME ("(%p): stub\n", This);
+ return E_NOTIMPL;
+}
+
+static IShellFolder2Vtbl vt_ShellFolder2 =
+{
+ ISF_AdminTools_fnQueryInterface,
+ ISF_AdminTools_fnAddRef,
+ ISF_AdminTools_fnRelease,
+ ISF_AdminTools_fnParseDisplayName,
+ ISF_AdminTools_fnEnumObjects,
+ ISF_AdminTools_fnBindToObject,
+ ISF_AdminTools_fnBindToStorage,
+ ISF_AdminTools_fnCompareIDs,
+ ISF_AdminTools_fnCreateViewObject,
+ ISF_AdminTools_fnGetAttributesOf,
+ ISF_AdminTools_fnGetUIObjectOf,
+ ISF_AdminTools_fnGetDisplayNameOf,
+ ISF_AdminTools_fnSetNameOf,
+ /* ShellFolder2 */
+ ISF_AdminTools_fnGetDefaultSearchGUID,
+ ISF_AdminTools_fnEnumSearches,
+ ISF_AdminTools_fnGetDefaultColumn,
+ ISF_AdminTools_fnGetDefaultColumnState,
+ ISF_AdminTools_fnGetDetailsEx,
+ ISF_AdminTools_fnGetDetailsOf,
+ ISF_AdminTools_fnMapColumnToSCID
+};
+
+/************************************************************************
+ * IPF_AdminTools_QueryInterface
+ */
+static HRESULT WINAPI IPF_AdminTools_QueryInterface (
+ IPersistFolder2 * iface, REFIID iid, LPVOID * ppvObj)
+{
+ _ICOM_THIS_From_IPersistFolder2 (IGenericSFImpl, iface);
+
+ TRACE ("(%p)\n", This);
+
+ return IUnknown_QueryInterface (_IUnknown_ (This), iid, ppvObj);
+}
+
+/************************************************************************
+ * IPF_AdminTools_AddRef
+ */
+static ULONG WINAPI IPF_AdminTools_AddRef (IPersistFolder2 * iface)
+{
+ _ICOM_THIS_From_IPersistFolder2 (IGenericSFImpl, iface);
+
+ TRACE ("(%p)->(count=%lu)\n", This, This->ref);
+
+ return IUnknown_AddRef (_IUnknown_ (This));
+}
+
+/************************************************************************
+ * IPF_AdminTools_Release
+ */
+static ULONG WINAPI IPF_AdminTools_Release (IPersistFolder2 * iface)
+{
+ _ICOM_THIS_From_IPersistFolder2 (IGenericSFImpl, iface);
+
+ TRACE ("(%p)->(count=%lu)\n", This, This->ref);
+
+ return IUnknown_Release (_IUnknown_ (This));
+}
+
+/************************************************************************
+ * IPF_AdminTools_GetClassID
+ */
+static HRESULT WINAPI IPF_AdminTools_GetClassID (
+ IPersistFolder2 * iface, CLSID * lpClassId)
+{
+ _ICOM_THIS_From_IPersistFolder2 (IGenericSFImpl, iface);
+
+ TRACE ("(%p)\n", This);
+
+ memcpy(lpClassId, &CLSID_AdminFolderShortcut, sizeof(CLSID));
+
+ return S_OK;
+}
+
+/************************************************************************
+ * IPF_AdminTools_Initialize
+ *
+ */
+static HRESULT WINAPI IPF_AdminTools_Initialize (
+ IPersistFolder2 * iface, LPCITEMIDLIST pidl)
+{
+ _ICOM_THIS_From_IPersistFolder2 (IGenericSFImpl, iface);
+ FIXME ("(%p)->(%p): stub\n", This, pidl);
+ return E_NOTIMPL;
+}
+
+/**************************************************************************
+ * IPF_AdminTools_fnGetCurFolder
+ */
+static HRESULT WINAPI IPF_AdminTools_GetCurFolder (
+ IPersistFolder2 * iface, LPITEMIDLIST * pidl)
+{
+ _ICOM_THIS_From_IPersistFolder2 (IGenericSFImpl, iface);
+
+ TRACE ("(%p)->(%p)\n", This, pidl);
+
+ *pidl = ILClone (This->pidlRoot);
+ return S_OK;
+}
+
+static IPersistFolder2Vtbl vt_PersistFolder2 =
+{
+ IPF_AdminTools_QueryInterface,
+ IPF_AdminTools_AddRef,
+ IPF_AdminTools_Release,
+ IPF_AdminTools_GetClassID,
+ IPF_AdminTools_Initialize,
+ IPF_AdminTools_GetCurFolder
+};
+
+/**************************************************************************
+ * ISF_AdminTools_Constructor
+ */
+HRESULT WINAPI ISF_AdminTools_Constructor (
+ IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv)
+{
+ IGenericSFImpl *sf;
+ HRESULT hr;
+
+ TRACE ("unkOut=%p %s\n", pUnkOuter, shdebugstr_guid (riid));
+
+ if (pUnkOuter)
+ return CLASS_E_NOAGGREGATION;
+
+ sf = HeapAlloc( GetProcessHeap(), 0, sizeof(*sf) );
+ if (!sf)
+ return E_OUTOFMEMORY;
+
+ sf->szTarget = HeapAlloc( GetProcessHeap(), 0, MAX_PATH * sizeof(WCHAR) );
+ if (!sf->szTarget)
+ {
+ HeapFree(GetProcessHeap(), 0, sf);
+ return E_OUTOFMEMORY;
+ }
+ if (!SHGetSpecialFolderPathW(NULL, sf->szTarget, CSIDL_COMMON_ADMINTOOLS, FALSE))
+ {
+ HeapFree(GetProcessHeap(), 0, sf->szTarget);
+ HeapFree(GetProcessHeap(), 0, sf);
+ }
+
+ sf->ref = 1;
+ sf->lpVtbl = &vt_ShellFolder2;
+ sf->lpVtblPersistFolder2 = &vt_PersistFolder2;
+ sf->pidlRoot = _ILCreateAdminTools(); /* my qualified pidl */
+
+ hr = IUnknown_QueryInterface( _IUnknown_(sf), riid, ppv );
+ IUnknown_Release( _IUnknown_(sf) );
+
+ TRACE ("--(%p)\n", *ppv);
+ return hr;
+}
Propchange: trunk/reactos/dll/win32/shell32/shfldr_admintools.c
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/reactos/dll/win32/shell32/shresdef.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shresdef…
==============================================================================
--- trunk/reactos/dll/win32/shell32/shresdef.h [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/shresdef.h [iso-8859-1] Thu Aug 14 03:41:59 2008
@@ -161,6 +161,7 @@
#define IDS_CUT 323
#define IDS_RESTORE 324
#define IDS_DEFAULT_CLUSTER_SIZE 325
+#define IDS_ADMINISTRATIVETOOLS 326
/* Note: this string is referenced from the registry */
#define IDS_RECYCLEBIN_FOLDER_NAME 8964
@@ -236,6 +237,7 @@
#define IDI_SHELL_CONFIRM_DELETE 161
#define IDI_SHELL_MY_DOCUMENTS 235
#define IDI_SHELL_CONTROL_PANEL1 330
+#define IDI_SHELL_ADMINTOOLS 328
/*
AVI resources, windows shell32 has 14 of them: 150-152 and 160-170
FIXME: Need to add them, but for now just let them use the same: searching.avi