Author: cfinck Date: Thu May 15 08:55:26 2008 New Revision: 33527
URL: http://svn.reactos.org/svn/reactos?rev=33527&view=rev Log: Remove old leftovers from the time when shell32 was still synchronized with Wine
Removed: trunk/reactos/dll/win32/shell32/Makefile.in trunk/reactos/dll/win32/shell32/shell32_ros.diff
Removed: trunk/reactos/dll/win32/shell32/Makefile.in URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/Makefile.... ============================================================================== --- trunk/reactos/dll/win32/shell32/Makefile.in [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/Makefile.in (removed) @@ -1,97 +1,0 @@ -EXTRADEFS = -D_SHELL32_ -DCOM_NO_WINDOWS_H -TOPSRCDIR = @top_srcdir@ -TOPOBJDIR = ../.. -SRCDIR = @srcdir@ -VPATH = @srcdir@ -MODULE = shell32.dll -IMPORTLIB = libshell32.$(IMPLIBEXT) -IMPORTS = shlwapi comctl32 user32 gdi32 advapi32 kernel32 ntdll -DELAYIMPORTS = ole32 oleaut32 -EXTRALIBS = -luuid $(LIBUNICODE) - -C_SRCS = \ - authors.c \ - autocomplete.c \ - brsfolder.c \ - changenotify.c \ - classes.c \ - clipboard.c \ - control.c \ - cpanelfolder.c \ - dde.c \ - dataobject.c \ - debughlp.c \ - dialogs.c \ - dragdrophelper.c \ - enumidlist.c \ - folders.c \ - iconcache.c \ - pidl.c \ - regsvr.c \ - shell32_main.c \ - shelllink.c \ - shellole.c \ - shellord.c \ - shellpath.c \ - shellreg.c \ - shellstring.c \ - shfldr_desktop.c \ - shfldr_fs.c \ - shfldr_mycomp.c \ - shfldr_unixfs.c \ - shlexec.c \ - shlfileop.c \ - shlfolder.c \ - shlfsbind.c \ - shlmenu.c \ - shlview.c \ - shpolicy.c \ - shv_bg_cmenu.c \ - shv_item_cmenu.c \ - ros-systray.c - -RC_SRCS = shres.rc -RC_BINSRC = shres.rc -RC_BINARIES = \ - cdrom.ico \ - desktop.ico \ - document.ico \ - drive.ico \ - floppy.ico \ - folder.ico \ - folder_open.ico \ - mycomputer.ico \ - mydocs.ico \ - netdrive.ico \ - netdrive2.ico \ - printer.ico \ - ramdisk.ico \ - shortcut.ico - -C_SRCS16 = shell.c -RC_SRCS16 = version16.rc -SPEC_SRCS16 = shell.spec - -SUBDIRS = tests - -@MAKE_DLL_RULES@ - -# Special rules for 16-bit resource files - -version16.res: version16.rc - $(LDPATH) $(RC16) $(RC16FLAGS) -fo$@ $(SRCDIR)/version16.rc - -shell.spec.o: shell.spec version16.res - $(WINEBUILD) $(WINEBUILDFLAGS) --dll -o $@ --main-module $(MODULE) --res version16.res --export $(SRCDIR)/shell.spec - -authors.c: $(TOPSRCDIR)/AUTHORS - (LC_ALL=C; export LC_ALL; echo 'const char * const SHELL_Authors[] = {' && \ - sed -e '1,2d' -e 's/(.*)/ "\1",/' $(TOPSRCDIR)/AUTHORS && \ - echo ' 0 };') >$@ || ($(RM) $@ && false) - -depend: authors.c - -clean:: - $(RM) authors.c - -### Dependencies:
Removed: trunk/reactos/dll/win32/shell32/shell32_ros.diff URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shell32_r... ============================================================================== --- trunk/reactos/dll/win32/shell32/shell32_ros.diff [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/shell32_ros.diff (removed) @@ -1,1516 +1,0 @@ -Index: autocomplete.c -=================================================================== ---- autocomplete.c (revision 29513) -+++ autocomplete.c (working copy) -@@ -38,7 +38,7 @@ - #include <stdarg.h> - #include <stdlib.h> - #include <string.h> -- -+#include <stdio.h> - #define COBJMACROS - - #include "wine/debug.h" -Index: changenotify.c -=================================================================== ---- changenotify.c (revision 29513) -+++ changenotify.c (working copy) -@@ -178,7 +178,7 @@ - - LeaveCriticalSection(&SHELL32_ChangenotifyCS); - -- DeleteCriticalSection(&SHELL32_ChangenotifyCS); -+ // DeleteCriticalSection(&SHELL32_ChangenotifyCS); // static - } - - /************************************************************************* -Index: control.c -=================================================================== ---- control.c (revision 29513) -+++ control.c (working copy) -@@ -464,6 +464,7 @@ - void WINAPI RunDLL_CallEntry16( DWORD proc, HWND hwnd, HINSTANCE inst, - LPCSTR cmdline, INT cmdshow ) - { -+#if !defined(__CYGWIN__) && !defined (__MINGW32__) && !defined(_MSC_VER) - WORD args[5]; - SEGPTR cmdline_seg; - -@@ -478,6 +479,10 @@ - args[0] = cmdshow; - WOWCallback16Ex( proc, WCB16_PASCAL, sizeof(args), args, NULL ); - UnMapLS( cmdline_seg ); -+#else -+ FIXME( "proc %lx hwnd %p inst %p cmdline %s cmdshow %d\n", -+ proc, hwnd, inst, debugstr_a(cmdline), cmdshow ); -+#endif - } - - /************************************************************************* -Index: iconcache.c -=================================================================== ---- iconcache.c (revision 29513) -+++ iconcache.c (working copy) -@@ -306,9 +306,23 @@ - HICON hiconLargeShortcut; - HICON hiconSmallShortcut; - -- PrivateExtractIconsW( sSourceFile, dwSourceIndex, 32, 32, &hiconLarge, 0, 1, 0 ); -- PrivateExtractIconsW( sSourceFile, dwSourceIndex, 16, 16, &hiconSmall, 0, 1, 0 ); -+#if defined(__CYGWIN__) || defined (__MINGW32__) || defined(_MSC_VER) -+ static UINT (WINAPI*PrivateExtractIconExW)(LPCWSTR,int,HICON*,HICON*,UINT) = NULL; - -+ if (!PrivateExtractIconExW) { -+ HMODULE hUser32 = GetModuleHandleA("user32"); -+ PrivateExtractIconExW = (UINT(WINAPI*)(LPCWSTR,int,HICON*,HICON*,UINT)) GetProcAddress(hUser32, "PrivateExtractIconExW"); -+ } -+ -+ if (PrivateExtractIconExW) -+ PrivateExtractIconExW(sSourceFile, dwSourceIndex, &hiconLarge, &hiconSmall, 1); -+ else -+#endif -+ { -+ PrivateExtractIconsW(sSourceFile, dwSourceIndex, 32, 32, &hiconLarge, NULL, 1, 0); -+ PrivateExtractIconsW(sSourceFile, dwSourceIndex, 16, 16, &hiconSmall, NULL, 1, 0); -+ } -+ - if ( !hiconLarge || !hiconSmall) - { - WARN("failure loading icon %i from %s (%p %p)\n", dwSourceIndex, debugstr_w(sSourceFile), hiconLarge, hiconSmall); -@@ -458,7 +472,7 @@ - ShellBigIconList = 0; - - LeaveCriticalSection(&SHELL32_SicCS); -- DeleteCriticalSection(&SHELL32_SicCS); -+ //DeleteCriticalSection(&SHELL32_SicCS); //static - } - - /***************************************************************************** -@@ -672,6 +686,19 @@ - */ - UINT WINAPI ExtractIconExW(LPCWSTR lpszFile, INT nIconIndex, HICON * phiconLarge, HICON * phiconSmall, UINT nIcons) - { -+ /* get entry point of undocumented function PrivateExtractIconExW() in user32 */ -+#if defined(__CYGWIN__) || defined (__MINGW32__) || defined(_MSC_VER) -+ static UINT (WINAPI*PrivateExtractIconExW)(LPCWSTR,int,HICON*,HICON*,UINT) = NULL; -+ -+ if (!PrivateExtractIconExW) { -+ HMODULE hUser32 = GetModuleHandleA("user32"); -+ PrivateExtractIconExW = (UINT(WINAPI*)(LPCWSTR,int,HICON*,HICON*,UINT)) GetProcAddress(hUser32, "PrivateExtractIconExW"); -+ -+ if (!PrivateExtractIconExW) -+ return 0; -+ } -+#endif -+ - TRACE("%s %i %p %p %i\n", debugstr_w(lpszFile), nIconIndex, phiconLarge, phiconSmall, nIcons); - - return PrivateExtractIconExW(lpszFile, nIconIndex, phiconLarge, phiconSmall, nIcons); -Index: regsvr.c -=================================================================== ---- regsvr.c (revision 29513) -+++ regsvr.c (working copy) -@@ -669,6 +669,7 @@ - static const WCHAR wszRecycleBin[] = { 'T','r','a','s','h', 0 }; - - static struct regsvr_namespace const namespace_extensions_list[] = { -+#if 0 - { - &CLSID_UnixDosFolder, - wszDesktop, -@@ -684,6 +685,7 @@ - wszDesktop, - wszRecycleBin - }, -+#endif - { NULL } - }; - -Index: shell32.spec -=================================================================== ---- shell32.spec (revision 29513) -+++ shell32.spec (working copy) -@@ -247,7 +247,7 @@ - 654 stdcall @(long long) shell32_654 # ReadCabinetState@8 - - 660 stdcall -noname FileIconInit(long) -- 680 stdcall -noname IsUserAdmin() -+ 680 stdcall IsUserAnAdmin() - - 714 stdcall @(ptr) SHELL32_714 # PathIsTemporaryW - 730 stdcall -noname RestartDialogEx(long wstr long long) -@@ -368,7 +368,7 @@ - @ stdcall SHQueryRecycleBinA(str ptr) - @ stdcall SHQueryRecycleBinW(wstr ptr) - @ stdcall SHSetLocalizedName(wstr wstr long) --@ stdcall SHUpdateRecycleBinIcon() -+@ stub SHUpdateRecycleBinIcon - @ stdcall SheChangeDirA(str) - @ stub SheChangeDirExA - @ stub SheChangeDirExW -Index: shell32_De.rc -=================================================================== ---- shell32_De.rc (revision 29513) -+++ shell32_De.rc (working copy) -@@ -128,7 +128,7 @@ - ICON "", 1088, 10, 10, 14, 16 - LTEXT "", 100, 30, 10, 137, 10 - LTEXT "", 101, 30, 22, 137, 10 -- LTEXT "WINE wurde für Sie gekeltert von:", 98, 8, 55, 137, 10 -+ LTEXT "ReactOS wurde Ihnen zur Verfügung gestellt von:", 98, 8, 55, 170, 10 - } - - SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 -@@ -137,14 +137,178 @@ - FONT 8, "MS Shell Dlg" - { - ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE -- LTEXT "Geben sie den Namen eines Programmes, eines Ordners, eines Dokumentes oder einer Internet-Ressource ein, die geöffnet werden soll", 12289, 36, 11, 182, 18 -- LTEXT "Ö&ffnen:", 12305, 7, 39, 24, 10 -+ LTEXT "Geben Sie den Namen eines Programms, eines Ordners, eines Dokuments oder einer Internetressource an.", 12289, 36, 11, 182, 18 -+ LTEXT "&Öffnen:", 12305, 7, 39, 24, 10 - CONTROL "", 12298, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100 - DEFPUSHBUTTON "OK", IDOK, 62, 63, 50, 14, WS_TABSTOP - PUSHBUTTON "Abbrechen", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP - PUSHBUTTON "&Durchsuchen...", 12288, 170, 63, 50, 14, WS_TABSTOP - } - -+SHELL_GENERAL_SHORTCUT_DLG DIALOGEX 0, 0, 240, 130 -+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION -+CAPTION "Verknüpfung" -+FONT 8, "MS Shell Dlg", 0, 0, 0x0 -+{ -+ ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE -+ LTEXT "Zeiltyp:", 14004, 10, 30, 50, 10 -+ LTEXT "", 14005, 70, 30, 150, 10 -+ LTEXT "Zielpfad:", 14006, 10, 40, 70, 10 -+ LTEXT "", 14007, 70, 40, 150, 10 -+ LTEXT "Ziel:", 14008, 10, 55, 45, 10 -+ EDITTEXT 14009, 70, 55, 150, 10, ES_LEFT -+ LTEXT "&Starten in:",14010, 10, 65, 45, 10 -+ EDITTEXT 14011, 70, 65, 150, 10, ES_LEFT -+ LTEXT "&Tastenkombination:", 14014, 10, 80, 45, 10 -+ EDITTEXT 14015, 70, 80, 150, 10, ES_LEFT -+ LTEXT "Ausführen:", 14016, 10, 90, 45, 10 -+ EDITTEXT 14017, 70, 90, 150, 10 -+ LTEXT "K&ommentar:", 14018, 10, 100, 45, 10 -+ EDITTEXT 14019, 70, 100, 150, 10, ES_LEFT -+ PUSHBUTTON "&Ziel finden...", 14020, 10, 115, 60, 14, ES_LEFT -+ PUSHBUTTON "I&con wechseln...", 14021, 80, 115, 60, 14, ES_LEFT -+ PUSHBUTTON "Er&weitert...", 14022, 150, 115, 60, 14, ES_LEFT -+} -+ -+SHELL_EXTENDED_SHORTCUT_DLG DIALOGEX 0, 0, 230, 150 -+STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -+CAPTION "Erweiterte Einstellungen" -+FONT 8, "MS Shell Dlg", 0, 0, 0x0 -+{ -+LTEXT "Wählen Sie die erweiterten Einstellungen für diese Verknüpfung.", -1, 5, 30, 190, 10 -+ CHECKBOX "Als anderer Benutzer ausführen", 14000, 30, 50, 150, 10 -+ LTEXT "Diese Einstellung ermöglicht es, diese Verknüpfung unter\neinem anderen oder Ihrem eingenen Bentzerkonto auszuführen\nwährend der Computer und Ihre Daten vor unautorisierten\nProgrammaktivitäten geschützt werden können.", -1, 50, 60, 200, 40 -+ CHECKBOX "In getrennten Speicherbereich ausführen", 14001, 30, 100, 90, 10, WS_DISABLED -+ PUSHBUTTON "OK", IDOK, 25, 120, 40, 15, WS_VISIBLE -+ PUSHBUTTON "Abbrechen", IDCANCEL, 120, 120, 50, 15, WS_VISIBLE -+} -+ -+SHELL_FILE_GENERAL_DLG DIALOGEX 0, 0, 240, 130 -+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION -+CAPTION "Allgemein" -+FONT 8, "MS Shell Dlg", 0, 0, 0x0 -+{ -+ ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE -+ EDITTEXT 14001, 70, 5, 100, 10, ES_LEFT | ES_READONLY -+ LTEXT "Dateityp:", 14004, 10, 30, 50, 10 -+ LTEXT "Datei", 14005, 70, 30, 150, 10 -+ LTEXT "Öffnen mit:", 14006, 10, 40, 50, 10 -+ LTEXT "", 14007, 70, 40, 150, 10 -+ LTEXT "Pfad:", 14008, 10, 55, 45, 10 -+ LTEXT "", 14009, 70, 55, 200, 10 -+ LTEXT "Größe:",14010, 10, 65, 45, 10 -+ LTEXT "", 14011, 70, 65, 150, 10 -+ LTEXT "Erstellt:", 14014, 10, 80, 45, 10 -+ LTEXT "", 14015, 70, 80, 150, 10 -+ LTEXT "Geändert:", 14016, 10, 90, 45, 10 -+ LTEXT "", 14017, 70, 90, 150, 10 -+ LTEXT "Zugegriffen:", 14018, 10, 100, 45, 10 -+ LTEXT "", 14019, 70, 100, 150, 10 -+ LTEXT "Attribute:", 14020, 10, 115, 45, 10 -+ CHECKBOX "&Schreibgeschützt", 14021, 70, 115, 45, 10 -+ CHECKBOX "&Versteckt", 14022, 130, 115, 50, 10 -+ CHECKBOX "&Archiv", 14023, 180, 115, 45, 10 -+} -+ -+SHELL_FILE_VERSION_DLG DIALOGEX 0, 0, 240, 130 -+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION -+CAPTION "Version" -+FONT 8, "MS Shell Dlg", 0, 0, 0x0 -+{ -+ LTEXT "Dateiversion: ", 14000, 10, 10, 45, 10 -+ LTEXT "", 14001, 70, 10, 150, 10 -+ LTEXT "Beschreibung: ", 14002, 10, 20, 45, 10 -+ LTEXT "", 14003, 70, 20, 150, 10 -+ LTEXT "Copyright: ", 14004, 10, 30, 45, 10 -+ LTEXT "", 14005, 70, 30, 150, 10 -+ GROUPBOX "Weitere Versionsinformationen: ", 14006, 10, 45, 220, 90 -+ LTEXT "Elementname: ", 14007, 20, 55, 50, 10 -+ LTEXT "Wert: ", 14008, 130, 55, 45, 10 -+ LISTBOX 14009,20,65,95,60, LBS_STANDARD | WS_TABSTOP | LBS_NOTIFY -+ EDITTEXT 14010, 130, 65, 95, 60, ES_LEFT|WS_BORDER|WS_VSCROLL|WS_GROUP|ES_MULTILINE|ES_READONLY -+ -+} -+ -+DRIVE_GENERAL_DLG DIALOGEX 0, 0, 240, 230 -+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION -+CAPTION "Allgemein" -+FONT 8, "MS Shell Dlg", 0, 0, 0x0 -+{ -+ EDITTEXT 14001, 40, 20, 190, 10, ES_LEFT|WS_BORDER|WS_GROUP -+ LTEXT "Typ:", -1, 15, 55, 40, 10 -+ LTEXT "", 14002, 110, 55, 100, 10 -+ -+ -+ LTEXT "Dateisystem:", -1, 15, 70, 100, 10 -+ LTEXT "", 14003, 110, 70, 100, 10 -+ -+ CONTROL "", 14013, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 90, 10, 10 -+ LTEXT "Belegter Speicher:", -1, 25, 90, 120, 10 -+ LTEXT "", 14004, 110, 90, 120, 10 -+ LTEXT "", 14005, 200, 90, 40, 10 -+ -+ CONTROL "", 14014, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 105, 10, 10 -+ LTEXT "Freier Speicher:", -1, 25, 105, 70, 10 -+ LTEXT "", 14006, 110, 105, 120, 10 -+ LTEXT "", 14007, 200, 105, 40, 10 -+ -+ LTEXT "Speicherkapazität:", -1, 25, 125, 80, 10 -+ LTEXT "", 14008, 110, 125, 120, 10 -+ LTEXT "", 14009, 200, 125, 40, 10 -+ -+ CONTROL "", 14015, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 20, 140, 200, 20 -+ -+ LTEXT "Laufwerk %s", 14010, 100, 170, 40, 10 -+ PUSHBUTTON "Bereinigen", 14011, 180, 175, 50, 15, WS_TABSTOP -+ CHECKBOX "Laufwerk komprimieren, um Speicherplatz zu sparen", 14012, 15, 205, 165, 10, WS_DISABLED -+ CHECKBOX "Laufwerk für schnelle Dateisuche indizieren", 14012, 15, 220, 165, 10, WS_DISABLED -+} -+ -+DRIVE_EXTRA_DLG DIALOGEX 0, 0, 240, 230 -+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION -+CAPTION "Extras" -+FONT 8, "MS Shell Dlg", 0, 0, 0x0 -+{ -+ GROUPBOX "Fehlerüberprüfung", -1, 5, 5, 230, 60 -+ LTEXT "Bei Wahl dieser Option wird das Volume\nauf Fehler überprüft.", -1, 40, 25, 160, 20 -+ PUSHBUTTON "Jetzt &prüfen", 14000, 130, 45, 90, 15, WS_TABSTOP -+ GROUPBOX "Defragmentierung", -1, 5, 65, 230, 60 -+ LTEXT "Bei Wahl dieser Option werden die Dateien auf\ndem Volume defragmentiert.", -1, 40, 85, 160, 20 -+ PUSHBUTTON "Jetzt &defragmentieren", 14001, 130, 105, 90, 15, WS_TABSTOP -+ GROUPBOX "Sicherung", -1, 5, 130, 230, 60 -+ LTEXT "Bei Wahl dieser Option werden die auf dem\nVolume gespeicherten Dateien gesichert.", -1, 40, 150, 160, 20 -+ PUSHBUTTON "Jetzt &sichern", 14002, 130, 170, 90, 15, WS_TABSTOP -+} -+ -+DRIVE_HARDWARE_DLG DIALOGEX 0, 0, 240, 230 -+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION -+CAPTION "Hardware" -+FONT 8, "MS Shell Dlg", 0, 0, 0x0 -+{ -+} -+ -+RUN_AS_DIALOG DIALOGEX 0, 0, 240, 190 -+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION -+CAPTION "Ausführen als" -+FONT 8, "MS Shell Dlg", 0, 0, 0x0 -+{ -+ LTEXT "Which user account do you want to use to run this program?", -1, 30, 30, 170, 10 -+ CHECKBOX "Aktueller Benutzer %s", 14000, 5, 45, 150, 10 -+ LTEXT "Computer vor unauthorisierten Programmaktiviäten schützen", -1, 40, 65, 150, 10, WS_DISABLED -+ CHECKBOX "Diese Einstellung kann Computerviren daran hindern, ihrem\nComputer und/oder Ihren persönlichen Daten zu schaden, aber\nes kann auch Programme daran hindern, Ordnungsgemäß zu arbeiten.", 14001, 40, 80, 150, 10, WS_DISABLED -+ CHECKBOX "Folgender Benutzer:", 14002, 5, 100, 90, 10 -+ LTEXT "Benutzername:", -1, 15, 115, 60, 10 -+ COMBOBOX 14003, 70, 115, 100, 15, CBS_DROPDOWNLIST | WS_VSCROLL | WS_VISIBLE | WS_TABSTOP -+ -+ PUSHBUTTON "...", 14004, 180, 115, 30, 10, WS_TABSTOP -+ LTEXT "Passwort:", -1, 15, 140, 60, 10 -+ EDITTEXT 14005, 70, 140, 100, 10, ES_LEFT | WS_BORDER | WS_GROUP -+ PUSHBUTTON "...", 14006, 180, 140, 30, 10, WS_TABSTOP -+ PUSHBUTTON "OK", 14007, 70, 170, 60, 15, WS_TABSTOP -+ PUSHBUTTON "Abbrechen", 14008, 140, 170, 60, 15, WS_TABSTOP -+} -+ -+ - STRINGTABLE DISCARDABLE - { - /* columns in the shellview */ -@@ -194,10 +358,10 @@ - "the folder?" - - /* message box strings */ -- IDS_RESTART_TITLE "Neustarten" -- IDS_RESTART_PROMPT "Möchten Sie, dass ein simulierter Windows Neustart durchgeführt wird ?" -- IDS_SHUTDOWN_TITLE "Anhalten" -- IDS_SHUTDOWN_PROMPT "Möchten Sie die aktuelle Wine Sitzung beenden ?" -+ IDS_RESTART_TITLE "Neu starten" -+ IDS_RESTART_PROMPT "Möchten Sie das System neu starten?" -+ IDS_SHUTDOWN_TITLE "Herunterfahren" -+ IDS_SHUTDOWN_PROMPT "Möchten Sie das System herunterfahren?" - - /* shell folder path default values */ - IDS_PROGRAMS "Startmenü\Programme" -@@ -227,4 +391,7 @@ - IDS_COMMON_PICTURES "Dokumente\Eigene Bilder" - IDS_COMMON_VIDEO "Dokumente\Eigene Videos" - IDS_CDBURN_AREA "Lokale Einstellungen\Anwendungsdaten\Microsoft\CD Burning" -+ IDS_DRIVE_FIXED "Lokaler Datenträger" -+ IDS_DRIVE_CDROM "CD-Laufwerk" -+ IDS_DRIVE_NETWORK "Netzwerklaufwerk" - } -Index: shell32_En.rc -=================================================================== ---- shell32_En.rc (revision 29513) -+++ shell32_En.rc (working copy) -@@ -16,7 +16,7 @@ - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - --LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT -+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US - - MENU_001 MENU DISCARDABLE - BEGIN -@@ -145,7 +145,7 @@ - ICON "", 1088, 10, 10, 14, 16 - LTEXT "", 100, 30, 10, 137, 10 - LTEXT "", 101, 30, 22, 137, 10 -- LTEXT "Wine was brought to you by:", 98, 8, 55, 137, 10 -+ LTEXT "ReactOS was brought to you by:", 98, 8, 55, 137, 10 - } - - SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95 -@@ -154,7 +154,7 @@ - FONT 8, "MS Shell Dlg" - { - ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE -- LTEXT "Type the name of a program, folder, document, or Internet resource, and Wine will open it for you.", 12289, 36, 11, 182, 18 -+ LTEXT "Type the name of a program, folder, document, or Internet resource, and ReactOS will open it for you.", 12289, 36, 11, 182, 18 - LTEXT "&Open:", 12305, 7, 39, 24, 10 - CONTROL "", 12298, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100 - DEFPUSHBUTTON "OK", IDOK, 62, 63, 50, 14, WS_TABSTOP -@@ -162,6 +162,172 @@ - PUSHBUTTON "&Browse...", 12288, 170, 63, 50, 14, WS_TABSTOP - } - -+SHELL_GENERAL_SHORTCUT_DLG DIALOGEX 0, 0, 240, 130 -+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION -+CAPTION "Shortcut" -+FONT 8, "MS Shell Dlg", 0, 0, 0x0 -+{ -+ ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE -+ LTEXT "Target type:", 14004, 10, 30, 50, 10 -+ LTEXT "", 14005, 70, 30, 150, 10 -+ LTEXT "Target location:", 14006, 10, 40, 70, 10 -+ LTEXT "", 14007, 70, 40, 150, 10 -+ LTEXT "Target:", 14008, 10, 55, 45, 10 -+ EDITTEXT 14009, 70, 55, 150, 10, ES_LEFT -+ LTEXT "&Start in:",14010, 10, 65, 45, 10 -+ EDITTEXT 14011, 70, 65, 150, 10, ES_LEFT -+ LTEXT "Shortcut &key:", 14014, 10, 80, 45, 10 -+ EDITTEXT 14015, 70, 80, 150, 10, ES_LEFT -+ LTEXT "Run:", 14016, 10, 90, 45, 10 -+ EDITTEXT 14017, 70, 90, 150, 10 -+ LTEXT "C&omment:", 14018, 10, 100, 45, 10 -+ EDITTEXT 14019, 70, 100, 150, 10, ES_LEFT -+ PUSHBUTTON "&Find Target...", 14020, 10, 115, 60, 14, ES_LEFT -+ PUSHBUTTON "&Change Icon...", 14021, 80, 115, 60, 14, ES_LEFT -+ PUSHBUTTON "A&dvanced...", 14022, 150, 115, 60, 14, ES_LEFT -+} -+ -+SHELL_EXTENDED_SHORTCUT_DLG DIALOGEX 0, 0, 260, 150 -+STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION -+CAPTION "Extended Properties" -+FONT 8, "MS Shell Dlg", 0, 0, 0x0 -+{ -+ LTEXT "Choose the advanced properties you want for this shortcut.", -1, 5, 30, 190, 10 -+ CHECKBOX "Run with different credentials", 14000, 30, 50, 150, 10 -+ LTEXT "This option can allow you to run the this shortcut as another\nuser, or continue as yourself while protecting your computer\nand data from unauthorized program activity.", -1, 50, 60, 200, 40 -+ CHECKBOX "Run in seperate memory space", 14001, 30, 100, 90, 10, WS_DISABLED -+ PUSHBUTTON "OK", IDOK, 25, 120, 40, 15, WS_VISIBLE -+ PUSHBUTTON "Abort", IDCANCEL, 120, 120, 50, 15, WS_VISIBLE -+} -+ -+SHELL_FILE_GENERAL_DLG DIALOGEX 0, 0, 240, 130 -+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION -+CAPTION "General" -+FONT 8, "MS Shell Dlg", 0, 0, 0x0 -+{ -+ ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE -+ EDITTEXT 14001, 70, 5, 100, 10, ES_LEFT | ES_READONLY -+ LTEXT "Type of file:", 14004, 10, 30, 50, 10 -+ LTEXT "File", 14005, 70, 30, 150, 10 -+ LTEXT "Opens with:", 14006, 10, 40, 50, 10 -+ LTEXT "", 14007, 70, 40, 150, 10 -+ LTEXT "Location:", 14008, 10, 55, 45, 10 -+ LTEXT "", 14009, 70, 55, 200, 10 -+ LTEXT "Size:",14010, 10, 65, 45, 10 -+ LTEXT "", 14011, 70, 65, 150, 10 -+ LTEXT "Created:", 14014, 10, 80, 45, 10 -+ LTEXT "", 14015, 70, 80, 150, 10 -+ LTEXT "Modified:", 14016, 10, 90, 45, 10 -+ LTEXT "", 14017, 70, 90, 150, 10 -+ LTEXT "Accessed:", 14018, 10, 100, 45, 10 -+ LTEXT "", 14019, 70, 100, 150, 10 -+ LTEXT "Attributes:", 14020, 10, 115, 45, 10 -+ CHECKBOX "&Read-only", 14021, 70, 115, 45, 10 -+ CHECKBOX "&Hidden", 14022, 130, 115, 50, 10 -+ CHECKBOX "&Archive", 14023, 180, 115, 45, 10 -+} -+ -+SHELL_FILE_VERSION_DLG DIALOGEX 0, 0, 240, 130 -+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION -+CAPTION "Version" -+FONT 8, "MS Shell Dlg", 0, 0, 0x0 -+{ -+ LTEXT "File version: ", 14000, 10, 10, 45, 10 -+ LTEXT "", 14001, 70, 10, 150, 10 -+ LTEXT "Description: ", 14002, 10, 20, 45, 10 -+ LTEXT "", 14003, 70, 20, 150, 10 -+ LTEXT "Copyright: ", 14004, 10, 30, 45, 10 -+ LTEXT "", 14005, 70, 30, 150, 10 -+ GROUPBOX "Other version information: ", 14006, 10, 45, 220, 90 -+ LTEXT "Item name: ", 14007, 20, 55, 50, 10 -+ LTEXT "Value: ", 14008, 130, 55, 45, 10 -+ LISTBOX 14009,20,65,95,60, LBS_STANDARD | WS_TABSTOP | LBS_NOTIFY -+ EDITTEXT 14010, 130, 65, 95, 60, ES_LEFT|WS_BORDER|WS_VSCROLL|WS_GROUP|ES_MULTILINE|ES_READONLY -+ -+} -+ -+DRIVE_GENERAL_DLG DIALOGEX 0, 0, 240, 230 -+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION -+CAPTION "General" -+FONT 8, "MS Shell Dlg", 0, 0, 0x0 -+{ -+ EDITTEXT 14001, 40, 20, 190, 10, ES_LEFT|WS_BORDER|WS_GROUP -+ LTEXT "Type:", -1, 15, 55, 40, 10 -+ LTEXT "", 14002, 110, 55, 100, 10 -+ -+ -+ LTEXT "File system:", -1, 15, 70, 100, 10 -+ LTEXT "", 14003, 110, 70, 100, 10 -+ -+ CONTROL "", 14013, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 90, 10, 10 -+ LTEXT "Used space:", -1, 25, 90, 120, 10 -+ LTEXT "", 14004, 110, 90, 120, 10 -+ LTEXT "", 14005, 200, 90, 40, 10 -+ -+ CONTROL "", 14014, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 105, 10, 10 -+ LTEXT "Free space:", -1, 25, 105, 70, 10 -+ LTEXT "", 14006, 110, 105, 120, 10 -+ LTEXT "", 14007, 200, 105, 40, 10 -+ -+ LTEXT "Capacity:", -1, 25, 125, 80, 10 -+ LTEXT "", 14008, 110, 125, 120, 10 -+ LTEXT "", 14009, 200, 125, 40, 10 -+ -+ CONTROL "", 14015, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 20, 140, 200, 20 -+ -+ LTEXT "Drive %s", 14010, 100, 170, 40, 10 -+ PUSHBUTTON "Disk Cleanup", 14011, 180, 175, 50, 15, WS_TABSTOP -+ CHECKBOX "Compress drive to save disk space", 14012, 15, 205, 165, 10, WS_DISABLED -+ CHECKBOX "Allow Indexing Service to index this disk for fast file searching", 14012, 15, 220, 200, 10, WS_DISABLED -+} -+ -+DRIVE_EXTRA_DLG DIALOGEX 0, 0, 240, 230 -+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION -+CAPTION "Tools" -+FONT 8, "MS Shell Dlg", 0, 0, 0x0 -+{ -+ GROUPBOX "Error-checking", -1, 5, 5, 230, 60 -+ LTEXT "This option will check the volume for\nerrors.", -1, 40, 25, 160, 20 -+ PUSHBUTTON "Check Now...", 14000, 130, 45, 90, 15, WS_TABSTOP -+ GROUPBOX "Defragmentation", -1, 5, 65, 230, 60 -+ LTEXT "This option will defragment files on the volume", -1, 40, 85, 160, 20 -+ PUSHBUTTON "Defragment Now...", 14001, 130, 105, 90, 15, WS_TABSTOP -+ GROUPBOX "Backup", -1, 5, 130, 230, 60 -+ LTEXT "This option will back up files on the volume.", -1, 40, 150, 160, 20 -+ PUSHBUTTON "Backup Now...", 14002, 130, 170, 90, 15, WS_TABSTOP -+} -+ -+ -+ -+DRIVE_HARDWARE_DLG DIALOGEX 0, 0, 240, 130 -+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION -+CAPTION "Hardware" -+FONT 8, "MS Shell Dlg", 0, 0, 0x0 -+{ -+} -+ -+RUN_AS_DIALOG DIALOGEX 0, 0, 240, 190 -+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION -+CAPTION "Run As" -+FONT 8, "MS Shell Dlg", 0, 0, 0x0 -+{ -+ LTEXT "Which user account do you want to use to run this program?", -1, 30, 30, 170, 10 -+ CHECKBOX "Current User %s", 14000, 5, 45, 150, 10 -+ LTEXT "Protect my computer and data from unauthorized program activity", -1, 40, 65, 150, 10, WS_DISABLED -+ CHECKBOX "This option can prevent computer viruses from harming your\ncomputer or personal data, but selecting it might cause the\nprogram to function improperly.", 14001, 40, 80, 150, 10, WS_DISABLED -+ CHECKBOX "The following user:", 14002, 5, 100, 90, 10 -+ LTEXT "User name:", -1, 15, 115, 60, 10 -+ COMBOBOX 14003, 70, 115, 100, 15, CBS_DROPDOWNLIST | WS_VSCROLL | WS_VISIBLE | WS_TABSTOP -+ -+ PUSHBUTTON "...", 14004, 180, 115, 30, 10, WS_TABSTOP -+ LTEXT "Password:", -1, 15, 140, 60, 10 -+ EDITTEXT 14005, 70, 140, 100, 10, ES_LEFT | WS_BORDER | WS_GROUP -+ PUSHBUTTON "...", 14006, 180, 140, 30, 10, WS_TABSTOP -+ PUSHBUTTON "OK", 14007, 70, 170, 60, 15, WS_TABSTOP -+ PUSHBUTTON "Cancel", 14008, 140, 170, 60, 15, WS_TABSTOP -+} -+ -+ - STRINGTABLE DISCARDABLE - { - /* columns in the shellview */ -@@ -211,10 +377,10 @@ - "the folder?" - - /* message box strings */ -- IDS_RESTART_TITLE "Restart" -- IDS_RESTART_PROMPT "Do you want to simulate a Windows reboot?" -- IDS_SHUTDOWN_TITLE "Shutdown" -- IDS_SHUTDOWN_PROMPT "Do you want to shutdown your Wine session?" -+ IDS_RESTART_TITLE "Restart" -+ IDS_RESTART_PROMPT "Do you want to restart the system?" -+ IDS_SHUTDOWN_TITLE "Shutdown" -+ IDS_SHUTDOWN_PROMPT "Do you want to shutdown?" - - /* shell folder path default values */ - IDS_PROGRAMS "Start Menu\Programs" -@@ -244,4 +410,7 @@ - IDS_COMMON_PICTURES "Documents\My Pictures" - IDS_COMMON_VIDEO "Documents\My Video" - IDS_CDBURN_AREA "Local Settings\Application Data\Microsoft\CD Burning" -+ IDS_DRIVE_FIXED "Local Disk" -+ IDS_DRIVE_CDROM "CDROM" -+ IDS_DRIVE_NETWORK "Network Disk" - } -Index: shell32_main.h -=================================================================== ---- shell32_main.h (revision 29513) -+++ shell32_main.h (working copy) -@@ -239,4 +239,8 @@ - /* Detect Shell Links */ - BOOL SHELL_IsShortcut(LPCITEMIDLIST); - -+INT_PTR CALLBACK SH_FileGeneralDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); -+INT_PTR CALLBACK SH_FileVersionDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); -+HPROPSHEETPAGE SH_CreatePropertySheetPage(LPSTR resname, DLGPROC dlgproc, LPARAM lParam); -+BOOL SH_ShowDriveProperties(WCHAR * drive); - #endif -Index: shelllink.c -=================================================================== ---- shelllink.c (revision 29513) -+++ shelllink.c (working copy) -@@ -53,8 +53,9 @@ - #include "shlwapi.h" - #include "msi.h" - #include "appmgmt.h" -- -+#include "prsht.h" - #include "initguid.h" -+#include "shresdef.h" - - WINE_DEFAULT_DEBUG_CHANNEL(shell); - -@@ -86,6 +87,7 @@ - - #define SHLINK_LOCAL 0 - #define SHLINK_REMOTE 1 -+#define MAX_PROPERTY_SHEET_PAGE 32 - - typedef struct _LOCATION_INFO - { -@@ -157,9 +159,11 @@ - LPWSTR sProduct; - LPWSTR sComponent; - volume_info volume; -- -+ LPWSTR sLinkPath; -+ BOOL bRunAs; - BOOL bDirty; - INT iIdOpen; /* id of the "Open" entry in the context menu */ -+ INT iIdProperties; /* id of the "Properties" entry in the context menu */ - IUnknown *site; - } IShellLinkImpl; - -@@ -304,6 +308,7 @@ - HeapFree(GetProcessHeap(), 0, This->sWorkDir); - HeapFree(GetProcessHeap(), 0, This->sDescription); - HeapFree(GetProcessHeap(),0,This->sPath); -+ HeapFree(GetProcessHeap(),0,This->sLinkPath); - - if (This->site) - IUnknown_Release( This->site ); -@@ -386,6 +391,8 @@ - r = SHCreateStreamOnFileW(pszFileName, dwMode, &stm); - if( SUCCEEDED( r ) ) - { -+ HeapFree(GetProcessHeap(), 0, This->sLinkPath); -+ This->sLinkPath = _wcsdup(pszFileName); - r = IPersistStream_Load(StreamThis, stm); - ShellLink_UpdatePath(This->sPathRel, pszFileName, This->sWorkDir, &This->sPath); - IStream_Release( stm ); -@@ -919,6 +926,15 @@ - r = Stream_LoadAdvertiseInfo( stm, &This->sComponent ); - TRACE("Component -> %s\n",debugstr_w(This->sComponent)); - } -+ if( hdr.dwFlags & SLDF_RUNAS_USER ) -+ { -+ This->bRunAs = TRUE; -+ } -+ else -+ { -+ This->bRunAs = FALSE; -+ } -+ - if( FAILED( r ) ) - goto end; - -@@ -1089,6 +1105,8 @@ - header.dwFlags |= SLDF_HAS_LOGO3ID; - if( This->sComponent ) - header.dwFlags |= SLDF_HAS_DARWINID; -+ if( This->bRunAs ) -+ header.dwFlags |= SLDF_RUNAS_USER; - - SystemTimeToFileTime ( &This->time1, &header.Time1 ); - SystemTimeToFileTime ( &This->time2, &header.Time2 ); -@@ -1204,6 +1222,7 @@ - sl->bDirty = FALSE; - sl->iIdOpen = -1; - sl->site = NULL; -+ sl->bRunAs = FALSE; - - TRACE("(%p)->()\n",sl); - -@@ -2452,6 +2471,7 @@ - { - IShellLinkImpl *This = impl_from_IContextMenu(iface); - static WCHAR szOpen[] = { 'O','p','e','n',0 }; -+ static WCHAR szProperties[] = { 'P','r','o','p','e','r','t','i','e','s',0 }; - MENUITEMINFOW mii; - int id = 1; - -@@ -2461,10 +2481,10 @@ - if ( !hmenu ) - return E_INVALIDARG; - -- memset( &mii, 0, sizeof mii ); -- mii.cbSize = sizeof mii; -+ memset( &mii, 0, sizeof(mii) ); -+ mii.cbSize = sizeof (mii); - mii.fMask = MIIM_TYPE | MIIM_ID | MIIM_STATE; -- mii.dwTypeData = szOpen; -+ mii.dwTypeData = (LPWSTR)szOpen; - mii.cch = strlenW( mii.dwTypeData ); - mii.wID = idCmdFirst + id++; - mii.fState = MFS_DEFAULT | MFS_ENABLED; -@@ -2473,6 +2493,18 @@ - return E_FAIL; - This->iIdOpen = 0; - -+ mii.fState = MFS_ENABLED; -+ mii.dwTypeData = (LPWSTR)szProperties; -+ mii.cch = strlenW( mii.dwTypeData ); -+ mii.wID = idCmdFirst + id++; -+ if (!InsertMenuItemW( hmenu, idCmdLast, TRUE, &mii )) -+ { -+ TRACE("ShellLink_QueryContextMenu failed to insert item properties"); -+ return E_FAIL; -+ } -+ This->iIdProperties = 1; -+ id++; -+ - return MAKE_HRESULT( SEVERITY_SUCCESS, 0, id ); - } - -@@ -2500,7 +2532,223 @@ - return path; - } - -+INT_PTR CALLBACK ExtendedShortcutProc( -+ HWND hwndDlg, -+ UINT uMsg, -+ WPARAM wParam, -+ LPARAM lParam -+) -+{ -+ HWND hDlgCtrl; -+ -+ switch(uMsg) -+ { -+ case WM_INITDIALOG: -+ if (lParam) -+ { -+ hDlgCtrl = GetDlgItem(hwndDlg, 14000); -+ SendMessage(hDlgCtrl, BM_SETCHECK, BST_CHECKED, 0); -+ } -+ return TRUE; -+ case WM_COMMAND: -+ hDlgCtrl = GetDlgItem(hwndDlg, 14000); -+ if (LOWORD(wParam) == IDOK) -+ { -+ if ( SendMessage(hDlgCtrl, BM_GETCHECK, 0, 0) == BST_CHECKED ) -+ EndDialog(hwndDlg, 1); -+ else -+ EndDialog(hwndDlg, 0); -+ } -+ else if (LOWORD(wParam) == IDCANCEL) -+ { -+ EndDialog(hwndDlg, -1); -+ } -+ else if (LOWORD(wParam) == 14000) -+ { -+ if ( SendMessage(hDlgCtrl, BM_GETCHECK, 0, 0) == BST_CHECKED) -+ SendMessage(hDlgCtrl, BM_SETCHECK, BST_UNCHECKED, 0); -+ else -+ SendMessage(hDlgCtrl, BM_SETCHECK, BST_CHECKED, 0); -+ -+ } -+ } -+ return FALSE; -+} -+ -+/************************************************************************** -+ * SH_ShellLinkDlgProc -+ * -+ * dialog proc of the shortcut property dialog -+ */ -+ -+INT_PTR -+CALLBACK -+SH_ShellLinkDlgProc( -+ HWND hwndDlg, -+ UINT uMsg, -+ WPARAM wParam, -+ LPARAM lParam -+) -+{ -+ LPPROPSHEETPAGEW ppsp; -+ LPPSHNOTIFY lppsn; -+ IShellLinkImpl *This; -+ HWND hDlgCtrl; -+ WCHAR szBuffer[MAX_PATH]; -+ int IconIndex; -+ INT_PTR result; -+ -+ This = (IShellLinkImpl *)GetWindowLongPtr(hwndDlg, DWLP_USER); -+ -+ switch(uMsg) -+ { -+ case WM_INITDIALOG: -+ ppsp = (LPPROPSHEETPAGEW)lParam; -+ if (ppsp == NULL) -+ break; -+ -+ TRACE("ShellLink_DlgProc (WM_INITDIALOG hwnd %p lParam %p ppsplParam %x)\n",hwndDlg, lParam, ppsp->lParam); -+ -+ This = (IShellLinkImpl *)ppsp->lParam; -+ SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)This); -+ -+ TRACE("sArgs: %S sComponent: %S sDescription: %S sIcoPath: %S sPath: %S sPathRel: %S sProduct: %S sWorkDir: %S\n", This->sArgs, This->sComponent ,This->sDescription, -+ This->sIcoPath, This->sPath, This->sPathRel, This->sProduct, This->sWorkDir); -+ -+ /* target path */ -+ hDlgCtrl = GetDlgItem( hwndDlg, 14009 ); -+ if ( hDlgCtrl != NULL ) -+ SendMessageW( hDlgCtrl, WM_SETTEXT, (WPARAM)NULL, (LPARAM)This->sPath ); -+ -+ /* working dir */ -+ hDlgCtrl = GetDlgItem( hwndDlg, 14011 ); -+ if ( hDlgCtrl != NULL ) -+ SendMessageW( hDlgCtrl, WM_SETTEXT, (WPARAM)NULL, (LPARAM)This->sWorkDir ); -+ -+ /* description */ -+ hDlgCtrl = GetDlgItem( hwndDlg, 14019 ); -+ if ( hDlgCtrl != NULL ) -+ SendMessageW( hDlgCtrl, WM_SETTEXT, (WPARAM)NULL, (LPARAM)This->sDescription ); -+ return TRUE; -+ case WM_NOTIFY: -+ lppsn = (LPPSHNOTIFY) lParam; -+ if ( lppsn->hdr.code == PSN_APPLY ) -+ { -+ /* set working directory */ -+ hDlgCtrl = GetDlgItem( hwndDlg, 14011 ); -+ SendMessageW( hDlgCtrl, WM_GETTEXT, (WPARAM)MAX_PATH, (LPARAM)szBuffer ); -+ IShellLinkW_fnSetWorkingDirectory((IShellLinkW*)&This->lpvtblw, szBuffer); -+ /* set link destination */ -+ hDlgCtrl = GetDlgItem( hwndDlg, 14009 ); -+ SendMessageW( hDlgCtrl, WM_GETTEXT, (WPARAM)MAX_PATH, (LPARAM)szBuffer); -+ if ( !SHELL_ExistsFileW(szBuffer) ) -+ { -+ MessageBoxW( hwndDlg, L"file not existing", szBuffer, MB_OK ); -+ SetWindowLong( hwndDlg, DWL_MSGRESULT, PSNRET_INVALID_NOCHANGEPAGE ); -+ return TRUE; -+ } -+ IShellLinkW_fnSetPath((IShellLinkW*)&This->lpvtblw, szBuffer); -+ -+ TRACE("This %p sLinkPath %S\n", This, This->sLinkPath); -+ IPersistFile_fnSave( (IPersistFile*)&This->lpvtblPersistFile, This->sLinkPath, TRUE ); -+ SetWindowLong( hwndDlg, DWL_MSGRESULT, PSNRET_NOERROR ); -+ return TRUE; -+ } -+ break; -+ case WM_COMMAND: -+ switch(LOWORD(wParam)) -+ { -+ case 14020: -+ /// -+ /// FIXME -+ /// open target directory -+ /// -+ return TRUE; -+ case 14021: -+ if (PickIconDlg(hwndDlg, szBuffer, MAX_PATH, &IconIndex)) -+ { -+ IShellLinkW_fnSetIconLocation((IShellLinkW*)&This->lpvtblw, szBuffer, IconIndex); -+ /// -+ /// FIXME redraw icon -+ } -+ return TRUE; -+ case 14022: -+ result = DialogBoxParamW(shell32_hInstance, MAKEINTRESOURCEW(SHELL_EXTENDED_SHORTCUT_DLG), hwndDlg, ExtendedShortcutProc, (LPARAM)This->bRunAs); -+ if (result == 1 || result == 0) -+ { -+ if ( This->bRunAs != result ) -+ { -+ PropSheet_Changed(GetParent(hwndDlg), hwndDlg); -+ } -+ -+ This->bRunAs = result; -+ } -+ return TRUE; -+ } -+ switch(HIWORD(wParam)) -+ { -+ case EN_CHANGE: -+ PropSheet_Changed(GetParent(hwndDlg), hwndDlg); -+ break; -+ } -+ break; -+ default: -+ break; -+ } -+ return FALSE; -+} -+ -+/************************************************************************** -+ * ShellLink_ShortcutDialog [Internal] -+ * -+ * creates a shortcut property dialog -+ */ -+ - static HRESULT WINAPI -+ShellLink_ShowProperties( IShellLinkImpl *This ) -+{ -+ PROPSHEETHEADERW pinfo; -+ HPROPSHEETPAGE hppages[MAX_PROPERTY_SHEET_PAGE]; -+ HPROPSHEETPAGE hpage; -+ UINT numpages = 0; -+ -+ TRACE("ShellLink_ShortcutDialog entered\n"); -+ -+ memset(hppages, 0x0, sizeof(HPROPSHEETPAGE) * MAX_PROPERTY_SHEET_PAGE); -+ -+ hpage = SH_CreatePropertySheetPage("SHELL_FILE_GENERAL_DLG", SH_FileGeneralDlgProc, (LPARAM)This->sLinkPath); -+ if ( hpage == NULL ) -+ return E_FAIL; -+ else -+ hppages[numpages++] = hpage; -+ -+ hpage = SH_CreatePropertySheetPage("SHELL_GENERAL_SHORTCUT_DLG", SH_ShellLinkDlgProc, (LPARAM)This); -+ if ( hpage == NULL ) -+ { -+ ERR("SH_CreatePropertySheetPage failed\n"); -+ DestroyPropertySheetPage(hppages[0]); -+ return E_FAIL; -+ } -+ hppages[numpages++] = hpage; -+ -+ ///FIXME -+ /// load extensions -+ -+ memset(&pinfo, 0x0, sizeof(PROPSHEETHEADERW)); -+ pinfo.dwSize = sizeof(PROPSHEETHEADERW); -+ pinfo.dwFlags = PSH_NOCONTEXTHELP | PSH_PROPTITLE; -+ pinfo.nPages = numpages; -+ pinfo.u3.phpage = hppages; -+ pinfo.pszCaption = This->sDescription; -+ pinfo.u2.nStartPage = 1; -+ -+ if ( PropertySheetW(&pinfo) < 0 ) -+ return E_FAIL; -+ else -+ return S_OK; -+} -+ -+static HRESULT WINAPI - ShellLink_InvokeCommand( IContextMenu* iface, LPCMINVOKECOMMANDINFO lpici ) - { - IShellLinkImpl *This = impl_from_IContextMenu(iface); -@@ -2516,6 +2764,12 @@ - if ( lpici->cbSize < sizeof (CMINVOKECOMMANDINFO) ) - return E_INVALIDARG; - -+ if ( lpici->lpVerb == MAKEINTRESOURCEA(This->iIdProperties)) -+ { -+ ShellLink_ShowProperties(This); -+ return S_OK; -+ } -+ - if ( lpici->lpVerb != MAKEINTRESOURCEA(This->iIdOpen) ) - { - ERR("Unknown id %d != %d\n", (INT)lpici->lpVerb, This->iIdOpen ); -Index: shellole.c -=================================================================== ---- shellole.c (revision 29513) -+++ shellole.c (working copy) -@@ -69,11 +69,13 @@ - {&CLSID_DragDropHelper, &IDropTargetHelper_Constructor}, - {&CLSID_ControlPanel, &IControlPanel_Constructor}, - {&CLSID_AutoComplete, &IAutoComplete_Constructor}, -+#if 0 - {&CLSID_UnixFolder, &UnixFolder_Constructor}, - {&CLSID_UnixDosFolder, &UnixDosFolder_Constructor}, - {&CLSID_FolderShortcut, &FolderShortcut_Constructor}, - {&CLSID_MyDocuments, &MyDocuments_Constructor}, - {&CLSID_RecycleBin, &RecycleBin_Constructor}, -+#endif - {NULL,NULL} - }; - -Index: shellord.c -=================================================================== ---- shellord.c (revision 29513) -+++ shellord.c (working copy) -@@ -1265,9 +1265,70 @@ - * IsUserAdmin [SHELL32.680] NT 4.0 - * - */ --HRESULT WINAPI IsUserAdmin(void) --{ FIXME("stub\n"); -- return TRUE; -+ -+BOOL WINAPI IsUserAnAdmin(VOID) -+{ -+ SID_IDENTIFIER_AUTHORITY Authority = {SECURITY_NT_AUTHORITY}; -+ HANDLE hToken; -+ DWORD dwSize; -+ PTOKEN_GROUPS lpGroups; -+ PSID lpSid; -+ DWORD i; -+ BOOL bResult = FALSE; -+ -+ TRACE("\n"); -+ -+ if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken)) -+ { -+ return FALSE; -+ } -+ -+ if (!GetTokenInformation(hToken, TokenGroups, NULL, 0, &dwSize)) -+ { -+ if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) -+ { -+ CloseHandle(hToken); -+ return FALSE; -+ } -+ } -+ -+ lpGroups = HeapAlloc(GetProcessHeap(), 0, dwSize); -+ if (lpGroups == NULL) -+ { -+ CloseHandle(hToken); -+ return FALSE; -+ } -+ -+ if (!GetTokenInformation(hToken, TokenGroups, lpGroups, dwSize, &dwSize)) -+ { -+ HeapFree(GetProcessHeap(), 0, lpGroups); -+ CloseHandle(hToken); -+ return FALSE; -+ } -+ -+ CloseHandle(hToken); -+ -+ if (!AllocateAndInitializeSid(&Authority, 2, SECURITY_BUILTIN_DOMAIN_RID, -+ DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, -+ &lpSid)) -+ { -+ HeapFree(GetProcessHeap(), 0, lpGroups); -+ return FALSE; -+ } -+ -+ for (i = 0; i < lpGroups->GroupCount; i++) -+ { -+ if (EqualSid(lpSid, lpGroups->Groups[i].Sid)) -+ { -+ bResult = TRUE; -+ break; -+ } -+ } -+ -+ FreeSid(lpSid); -+ HeapFree(GetProcessHeap(), 0, lpGroups); -+ -+ return bResult; - } - - /************************************************************************* -@@ -1584,14 +1645,6 @@ - } - - /************************************************************************* -- * SHCreatePropSheetExtArray [SHELL32.168] -- */ --HPSXA WINAPI SHCreatePropSheetExtArray(HKEY hKey, LPCWSTR pszSubKey, UINT max_iface) --{ -- return SHCreatePropSheetExtArrayEx(hKey, pszSubKey, max_iface, NULL); --} -- --/************************************************************************* - * SHCreatePropSheetExtArrayEx [SHELL32.194] - */ - HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY hKey, LPCWSTR pszSubKey, UINT max_iface, IDataObject *pDataObj) -@@ -1695,6 +1748,15 @@ - } - - /************************************************************************* -+ * SHCreatePropSheetExtArray [SHELL32.168] -+ */ -+HPSXA WINAPI SHCreatePropSheetExtArray(HKEY hKey, LPCWSTR pszSubKey, UINT max_iface) -+{ -+ return SHCreatePropSheetExtArrayEx(hKey, pszSubKey, max_iface, NULL); -+} -+ -+ -+/************************************************************************* - * SHReplaceFromPropSheetExtArray [SHELL32.170] - */ - UINT WINAPI SHReplaceFromPropSheetExtArray(HPSXA hpsxa, UINT uPageID, LPFNADDPROPSHEETPAGE lpfnReplaceWith, LPARAM lParam) -Index: shellpath.c -=================================================================== ---- shellpath.c (revision 29513) -+++ shellpath.c (working copy) -@@ -24,6 +24,7 @@ - * - */ - -+#define symlink(A, B) - #include "config.h" - #include "wine/port.h" - -@@ -1977,7 +1978,7 @@ - - if (szBasePath[cLen-1] != '/') szBasePath[cLen++] = '/'; - -- if (!WideCharToMultiByte(CP_UNIXCP, 0, wszSubPath, -1, szBasePath + cLen, -+ if (!WideCharToMultiByte(CP_ACP, 0, wszSubPath, -1, szBasePath + cLen, - FILENAME_MAX - cLen, NULL, NULL)) - { - return FALSE; -@@ -1988,7 +1989,7 @@ - - return TRUE; - } -- -+#if 0 - /****************************************************************************** - * _SHCreateSymbolicLinks [Internal] - * -@@ -2040,7 +2041,7 @@ - for (i = 0; i < sizeof(aidsMyStuff)/sizeof(aidsMyStuff[0]); i++) { - strcpy(szMyStuffTarget, szPersonalTarget); - if (_SHAppendToUnixPath(szMyStuffTarget, MAKEINTRESOURCEW(aidsMyStuff[i]))) -- mkdir(szMyStuffTarget, 0777); -+ mkdir(szMyStuffTarget); - } - } - else -@@ -2061,7 +2062,7 @@ - for (i = 0; i < sizeof(aidsMyStuff)/sizeof(aidsMyStuff[0]); i++) { - strcpy(szMyStuffTarget, szPersonalTarget); - if (_SHAppendToUnixPath(szMyStuffTarget, MAKEINTRESOURCEW(aidsMyStuff[i]))) -- mkdir(szMyStuffTarget, 0777); -+ mkdir(szMyStuffTarget); - } - } - -@@ -2108,6 +2109,7 @@ - } - } - } -+#endif - - /* Register the default values in the registry, as some apps seem to depend - * on their presence. The set registered was taken from Windows XP. -@@ -2120,7 +2122,9 @@ - * 'My Video', 'My Music' and 'Desktop' in advance, so that the - * _SHRegister*ShellFolders() functions will find everything nice and clean - * and thus will not attempt to create them in the profile directory. */ -+#if 0 - _SHCreateSymbolicLinks(); -+#endif - - hr = _SHRegisterUserShellFolders(TRUE); - if (SUCCEEDED(hr)) -Index: shfldr_desktop.c -=================================================================== ---- shfldr_desktop.c (revision 29513) -+++ shfldr_desktop.c (working copy) -@@ -165,9 +165,11 @@ - else if (PathGetDriveNumberW (lpszDisplayName) >= 0) - { - /* it's a filesystem path with a drive. Let MyComputer/UnixDosFolder parse it */ -+#if 0 - if (UNIXFS_is_rooted_at_desktop()) - pidlTemp = _ILCreateGuid(PT_GUID, &CLSID_UnixDosFolder); - else -+#endif - pidlTemp = _ILCreateMyComputer (); - szNext = lpszDisplayName; - } -Index: shfldr_mycomp.c -=================================================================== ---- shfldr_mycomp.c (revision 29513) -+++ shfldr_mycomp.c (working copy) -@@ -695,20 +695,8 @@ - - if (SUCCEEDED (hr)) - { -- /* Win9x always returns ANSI strings, NT always returns Unicode strings */ -- if (GetVersion() & 0x80000000) -- { -- strRet->uType = STRRET_CSTR; -- if (!WideCharToMultiByte(CP_ACP, 0, pszPath, -1, strRet->u.cStr, MAX_PATH, -- NULL, NULL)) -- strRet->u.cStr[0] = '\0'; -- CoTaskMemFree(pszPath); -- } -- else -- { -- strRet->uType = STRRET_WSTR; -- strRet->u.pOleStr = pszPath; -- } -+ strRet->uType = STRRET_WSTR; -+ strRet->u.pOleStr = pszPath; - } - else - CoTaskMemFree(pszPath); -Index: shlexec.c -=================================================================== ---- shlexec.c (revision 29513) -+++ shlexec.c (working copy) -@@ -1300,6 +1300,7 @@ - static const WCHAR wFile[] = {'f','i','l','e',0}; - static const WCHAR wHttp[] = {'h','t','t','p',':','/','/',0}; - static const WCHAR wExplorer[] = {'e','x','p','l','o','r','e','r','.','e','x','e',0}; -+ static const WCHAR wProperties[] = { 'p','r','o','p','e','r','t','i','e','s',0 }; - static const DWORD unsupportedFlags = - SEE_MASK_INVOKEIDLIST | SEE_MASK_ICON | SEE_MASK_HOTKEY | - SEE_MASK_CONNECTNETDRV | SEE_MASK_FLAG_DDEWAIT | SEE_MASK_FLAG_NO_UI | -@@ -1405,6 +1406,13 @@ - return TRUE; - } - -+ if (sei_tmp.lpVerb && !wcscmp(sei_tmp.lpVerb, wProperties)) -+ { -+ SH_ShowPropertiesDialog(sei_tmp.lpFile); -+ sei->hInstApp = (HINSTANCE) 33; -+ return TRUE; -+ } -+ - if (sei_tmp.fMask & SEE_MASK_CLASSALL) - { - /* launch a document by fileclass like 'WordPad.Document.1' */ -Index: shlfileop.c -=================================================================== ---- shlfileop.c (revision 29513) -+++ shlfileop.c (working copy) -@@ -1696,16 +1696,6 @@ - } - - /*********************************************************************** -- * SHPathPrepareForWriteA (SHELL32.@) -- */ --HRESULT WINAPI SHPathPrepareForWriteA(HWND hwnd, IUnknown *modless, LPCSTR path, DWORD flags) --{ -- WCHAR wpath[MAX_PATH]; -- MultiByteToWideChar( CP_ACP, 0, path, -1, wpath, MAX_PATH); -- return SHPathPrepareForWriteW(hwnd, modless, wpath, flags); --} -- --/*********************************************************************** - * SHPathPrepareForWriteW (SHELL32.@) - */ - HRESULT WINAPI SHPathPrepareForWriteW(HWND hwnd, IUnknown *modless, LPCWSTR path, DWORD flags) -@@ -1767,3 +1757,13 @@ - else - return HRESULT_FROM_WIN32(ERROR_DIRECTORY); - } -+ -+/*********************************************************************** -+ * SHPathPrepareForWriteA (SHELL32.@) -+ */ -+HRESULT WINAPI SHPathPrepareForWriteA(HWND hwnd, IUnknown *modless, LPCSTR path, DWORD flags) -+{ -+ WCHAR wpath[MAX_PATH]; -+ MultiByteToWideChar( CP_ACP, 0, path, -1, wpath, MAX_PATH); -+ return SHPathPrepareForWriteW(hwnd, modless, wpath, flags); -+} -Index: shlview.c -=================================================================== ---- shlview.c (revision 29513) -+++ shlview.c (working copy) -@@ -68,6 +68,8 @@ - - WINE_DEFAULT_DEBUG_CHANNEL(shell); - -+#undef SV_CLASS_NAME -+ - static const WCHAR SV_CLASS_NAME[] = {'S','H','E','L','L','D','L','L','_','D','e','f','V','i','e','w',0}; - - typedef struct -Index: shres.rc -=================================================================== ---- shres.rc (revision 29513) -+++ shres.rc (working copy) -@@ -35,88 +35,8 @@ - VK_F5, FCIDM_SHVIEW_REFRESH, VIRTKEY - END - --/* @makedep: document.ico */ --IDI_SHELL_DOCUMENT ICON document.ico - --/* @makedep: folder.ico */ --IDI_SHELL_FOLDER ICON folder.ico - --/* @makedep: folder_open.ico */ --IDI_SHELL_FOLDER_OPEN ICON folder_open.ico -- --/* FIXME: Following three resources are not yet added */ --/* @makedep: folder_open.ico */ --IDI_SHELL_FOLDER_OPEN_SMALL ICON folder_open.ico --/* @makedep: folder_open.ico */ --IDI_SHELL_FOLDER_OPEN_LARGE ICON folder_open.ico --/* @makedep: folder_open.ico */ --IDI_SHELL_FOLDER_SMALL_XP ICON folder_open.ico -- --/* @makedep: floppy.ico */ --IDI_SHELL_FLOPPY ICON floppy.ico -- --/* @makedep: drive.ico */ --IDI_SHELL_DRIVE ICON drive.ico -- --/* @makedep: netdrive.ico */ --IDI_SHELL_NETDRIVE ICON netdrive.ico -- --/* @makedep: netdrive2.ico */ --IDI_SHELL_NETDRIVE2 ICON netdrive2.ico -- --/* @makedep: cdrom.ico */ --IDI_SHELL_CDROM ICON cdrom.ico -- --/* @makedep: ramdisk.ico */ --IDI_SHELL_RAMDISK ICON ramdisk.ico -- --/* @makedep: mycomputer.ico */ --IDI_SHELL_MY_COMPUTER ICON mycomputer.ico -- --/* @makedep: printer.ico */ --IDI_SHELL_PRINTER ICON printer.ico -- --/* @makedep: shortcut.ico */ --IDI_SHELL_SHORTCUT ICON shortcut.ico -- --/* @makedep: desktop.ico */ --IDI_SHELL_DESKTOP ICON desktop.ico -- --/* @makedep: trash_file.ico */ --IDI_SHELL_FULL_RECYCLE_BIN ICON trash_file.ico -- --/* @makedep: trash_file.ico */ --IDI_SHELL_TRASH_FILE ICON trash_file.ico -- --/* @makedep: delete.ico */ --IDI_SHELL_CONFIRM_DELETE ICON delete.ico -- --/* @makedep: mydocs.ico */ --IDI_SHELL_MY_DOCUMENTS ICON mydocs.ico -- --/* @makedep: searching.avi */ --IDR_AVI_SEARCHING AVI searching.avi -- --/* @makedep: searching.avi */ --IDR_AVI_SEARCH AVI searching.avi -- --/* @makedep: searching.avi */ --IDR_AVI_FILEMOVE AVI searching.avi -- --/* @makedep: searching.avi */ --IDR_AVI_FILECOPY AVI searching.avi -- --/* @makedep: searching.avi */ --IDR_AVI_FINDCOMPUTER AVI searching.avi -- --/* @makedep: searching.avi */ --IDR_AVI_FILENUKE AVI searching.avi -- --/* @makedep: searching.avi */ --IDR_AVI_FILEDELETE AVI searching.avi -- --/*--------------------- END FIXME ------------------------*/ -- - /* - * Everything that does not depend on language, - * like textless bitmaps etc, go into the -@@ -125,7 +45,20 @@ - */ - #include "shell32_xx.rc" - -+ -+ -+ - /* -+ * This include a set of Shell32 icons, -+ * bitmaps and avi files. Licence's can be -+ * found in the corresponding directorys -+ */ -+#include "icon_res.rc" -+//#include "bitmap_res.rc" -+#include "avi_res.rc" -+ -+ -+/* - * Everything specific to any language goes - * in one of the specific files. - * Note that you can and may override resources -Index: shresdef.h -=================================================================== ---- shresdef.h (revision 29513) -+++ shresdef.h (working copy) -@@ -78,6 +78,9 @@ - #define IDS_COMMON_PICTURES 69 - #define IDS_COMMON_VIDEO 70 - #define IDS_CDBURN_AREA 71 -+#define IDS_DRIVE_FIXED 72 -+#define IDS_DRIVE_CDROM 73 -+#define IDS_DRIVE_NETWORK 74 - - #define IDS_CREATEFOLDER_DENIED 128 - #define IDS_CREATEFOLDER_CAPTION 129 -@@ -109,6 +112,7 @@ - #define IDD_STATUS 0x3743 - #define IDD_TITLE 0x3742 - #define IDD_TREEVIEW 0x3741 -+#define SHELL_EXTENDED_SHORTCUT_DLG 0x4000 - - #define IDI_SHELL_DOCUMENT 1 - #define IDI_SHELL_FOLDER 4 -Index: shv_item_cmenu.c -=================================================================== ---- shv_item_cmenu.c (revision 29513) -+++ shv_item_cmenu.c (working copy) -@@ -38,6 +38,9 @@ - - WINE_DEFAULT_DEBUG_CHANNEL(shell); - -+/* ugly hack for cut&paste files */ -+BOOL fileMoving = FALSE; -+ - /************************************************************************** - * IContextMenu Implementation - */ -@@ -254,6 +257,9 @@ - if(uFlags & CMF_CANRENAME) - _InsertMenuItem(hmenu, indexMenu++, TRUE, FCIDM_SHVIEW_RENAME, MFT_STRING, "&Rename", ISvItemCm_CanRenameItems(This) ? MFS_ENABLED : MFS_DISABLED); - -+ _InsertMenuItem(hmenu, indexMenu++, TRUE, 0, MFT_SEPARATOR, NULL, 0); -+ _InsertMenuItem(hmenu, indexMenu++, TRUE, FCIDM_SHVIEW_PROPERTIES, MFT_STRING, "&Properties", MFS_ENABLED); -+ - return MAKE_HRESULT(SEVERITY_SUCCESS, 0, (FCIDM_SHVIEWLAST)); - } - return MAKE_HRESULT(SEVERITY_SUCCESS, 0, 0); -@@ -294,7 +300,7 @@ - - ZeroMemory(&sei, sizeof(sei)); - sei.cbSize = sizeof(sei); -- sei.fMask = SEE_MASK_IDLIST | SEE_MASK_CLASSNAME; -+ sei.fMask = SEE_MASK_INVOKEIDLIST | SEE_MASK_CLASSNAME; - sei.lpIDList = pidlFQ; - sei.lpClass = "Folder"; - sei.hwnd = hwnd; -@@ -382,6 +388,54 @@ - } - return TRUE; - } -+static void DoProperties( -+ IContextMenu2 *iface, -+ HWND hwnd) -+{ -+ ItemCmImpl *This = (ItemCmImpl *)iface; -+ LPITEMIDLIST pidlFQ = NULL; -+ SHELLEXECUTEINFOA sei; -+ -+ if (_ILIsMyComputer(This->apidl[0])) -+ { -+ ShellExecuteA(hwnd, "open", "rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl", NULL, NULL, SW_SHOWNORMAL); -+ return; -+ } -+ else if (_ILIsDesktop(This->apidl[0])) -+ { -+ ShellExecuteA(hwnd, "open", "rundll32.exe shell32.dll,Control_RunDLL desk.cpl", NULL, NULL, SW_SHOWNORMAL); -+ return; -+ } -+ else if (_ILIsDrive(This->apidl[0])) -+ { -+ WCHAR buffer[111]; -+ ILGetDisplayName(This->apidl[0], buffer); -+ SH_ShowDriveProperties(buffer); -+ return; -+ } -+ else -+ { -+ pidlFQ = ILCombine(This->pidl, This->apidl[0]); -+ } -+ -+ ZeroMemory(&sei, sizeof(sei)); -+ sei.cbSize = sizeof(sei); -+ sei.fMask = SEE_MASK_INVOKEIDLIST; -+ sei.lpIDList = pidlFQ; -+ sei.hwnd = hwnd; -+ sei.nShow = SW_SHOWNORMAL; -+ sei.lpVerb = "properties"; -+ -+ TRACE("DoProperties before ShellExecuteEx\n"); -+ ShellExecuteExA(&sei); -+ TRACE("DoProperties after ShellExecuteEx\n"); -+ -+ if (pidlFQ) -+ { -+ SHFree(pidlFQ); -+ } -+} -+ - /************************************************************************** - * ISvItemCm_fnInvokeCommand() - */ -@@ -430,6 +484,10 @@ - TRACE("Verb FCIDM_SHVIEW_CUT\n"); - DoCopyOrCut(iface, lpcmi->hwnd, TRUE); - break; -+ case FCIDM_SHVIEW_PROPERTIES: -+ TRACE("Verb FCIDM_SHVIEW_PROPERTIES\n"); -+ DoProperties(iface, lpcmi->hwnd); -+ break; - default: - FIXME("Unhandled Verb %xl\n",LOWORD(lpcmi->lpVerb)); - }