Compare commits

...

18 Commits

Author SHA1 Message Date
Amine Khaldi
9bc8c8bf66 [0.4.1] Merge the hal fix by Thomas in r71307. CORE-11123
svn path=/branches/ros-branch-0_4_1/; revision=71326
2016-05-12 20:06:21 +00:00
Amine Khaldi
f6bf4a8755 [0.4.1] Merge the explorer fix by Thomas in r71318. CORE-11217
svn path=/branches/ros-branch-0_4_1/; revision=71323
2016-05-12 19:40:49 +00:00
Amine Khaldi
88d4b4ec82 [0.4.1] Merge the uninitialized variable usage fix by Alter in r71309. CORE-11157
svn path=/branches/ros-branch-0_4_1/; revision=71310
2016-05-10 18:20:37 +00:00
Amine Khaldi
55f93cd3df [0.4.1] Merge the SepPropagateAcl() unknown ACE types handling by Thomas in r71296. CORE-10694
svn path=/branches/ros-branch-0_4_1/; revision=71297
2016-05-09 08:56:51 +00:00
Thomas Faber
17fdabf3da [0.4.1]
- Merge the heap user value fix from r71279/r71278
CORE-11196

svn path=/branches/ros-branch-0_4_1/; revision=71281
2016-05-08 08:12:09 +00:00
Thomas Faber
4631e8b017 [0.4.1]
- Merge Mark's UniATA compilation fix from r71262
CORE-11157

svn path=/branches/ros-branch-0_4_1/; revision=71280
2016-05-08 08:10:00 +00:00
Amine Khaldi
a2136f74ca [0.4.1] Merge the fix for enumerating ADS from files with 3+ streams, by Pierre in r71245. CORE-11164
svn path=/branches/ros-branch-0_4_1/; revision=71258
2016-05-03 22:36:26 +00:00
Amine Khaldi
009916f9ef [0.4.1] Merge the scroll bar glitch fix by Herschel Ralston in r71231. CORE-3923 CORE-11155
svn path=/branches/ros-branch-0_4_1/; revision=71257
2016-05-03 22:31:13 +00:00
Amine Khaldi
36c3f0e984 [0.4.1] Merge the UniATA sync in revisions 71252 and 71255. CORE-11157
svn path=/branches/ros-branch-0_4_1/; revision=71256
2016-05-03 22:25:27 +00:00
Amine Khaldi
f2d8ab6186 [0.4.1] Apply the usetup path localization fix by Wim Hueskes. CORE-9656
svn path=/branches/ros-branch-0_4_1/; revision=71254
2016-05-03 21:49:08 +00:00
Amine Khaldi
e2e746c51c [0.4.1] * Disable COMMAND.COM debugging messages. CORE-10710
svn path=/branches/ros-branch-0_4_1/; revision=71253
2016-05-03 21:40:38 +00:00
Amine Khaldi
b6b2076cba [0.4.1] * Apply the wordpad related hack from CORE-5823 by Jared Smudde.
svn path=/branches/ros-branch-0_4_1/; revision=71251
2016-05-03 20:10:13 +00:00
Amine Khaldi
5d640be351 [0.4.1] * Apply the hackfix from CORE-9836 by Joachim Henze.
svn path=/branches/ros-branch-0_4_1/; revision=71250
2016-05-03 20:08:25 +00:00
Amine Khaldi
acd95ece40 [0.4.1] * Apply the patch that allows us to dynamically change the resolution by resizing in VirtualBox. CORE-6742
svn path=/branches/ros-branch-0_4_1/; revision=71249
2016-05-03 20:01:28 +00:00
Amine Khaldi
65674dc182 [0.4.1] Merge the shell fixes by Giannis in r71217 as they addressed "My network places" missing icon. CORE-10943
svn path=/branches/ros-branch-0_4_1/; revision=71247
2016-05-03 19:00:54 +00:00
Thomas Faber
46a0c313d0 [0.4.1]
- Merge the fix to NtSetValueKey in r71232/r71236 (ROSTESTS-200)

svn path=/branches/ros-branch-0_4_1/; revision=71241
2016-05-03 13:07:03 +00:00
Thomas Faber
a161bf7c30 [0.4.1]
- Update start menu bitmap

svn path=/branches/ros-branch-0_4_1/; revision=71218
2016-04-30 15:52:03 +00:00
Amine Khaldi
032a403b1a [0.4.1] Update the version number.
svn path=/branches/ros-branch-0_4_1/; revision=71211
2016-04-30 12:29:15 +00:00
182 changed files with 5959 additions and 13490 deletions

View File

@@ -33,8 +33,8 @@ END
STRINGTABLE
BEGIN
STRING_CLIPBOARD "Inspector de Clipboard"
STRING_CLIPFILE "Element de Clipboard"
STRING_CLIPBOARD "Clipboard Viewer"
STRING_CLIPFILE "Clipboard Element"
STRING_DELETE_MSG "Elimină conținutul din Clipboard?"
STRING_DELETE_TITLE "Curăță Clipboard"
STRING_FORMAT_NT "Fișiere clipboard pentru ReactOS (*.clp)"

View File

@@ -1,4 +1,3 @@
/* Ștefan Fulea (stefan dot fulea at mail dot md) */
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
STRINGTABLE

View File

@@ -18,16 +18,16 @@ STRINGTABLE
STRING_NO_REMOTE, "Eroare: Nu se pot adăuga chei pe calculatorul de la distanță\n"
STRING_CANNOT_FIND, "Eroare: Sistemul nu a putut găsi cheia sau valoarea de registru specificată\n"
STRING_UNSUPPORTED_TYPE, "Eroare: Tip nerecunoscut\n"
STRING_MISSING_INTEGER, "reg: Opțiunea [/d] trebuie să fie urmată de un număr valid întreg\n"
STRING_MISSING_HEXDATA, "reg: Opțiunea [/d] trebuie să fie urmată de o valoare hexezecimală\n"
STRING_UNHANDLED_TYPE, "reg: Tip de dată nerecunoscut [/t 0x%1!x!, /d %2]\n"
STRING_OVERWRITE_VALUE, "Valoarea de registru «%1» deja există. Doriți s-o suprascrieți?"
STRING_YESNO, " (Da|Nu)"
STRING_YES, "D"
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
STRING_YESNO, " (Yes|No)"
STRING_YES, "Y"
STRING_NO, "N"
STRING_CANCELLED, "Operația de registru a fost anulată\n"
STRING_DEFAULT_VALUE, "(Implicită)"
STRING_DELETE_VALUE, "Sigur doriți ștergerea valorii de registru «%1»?"
STRING_DELETE_VALUEALL, "Sigur doriți ștergerea tuturor valorilor de registru din «%1»?"
STRING_DELETE_SUBKEY, "Sigur doriți ștergerea cheii de registru «%1»?"
STRING_CANCELLED, "The registry operation was cancelled\n"
STRING_DEFAULT_VALUE, "(Default)"
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
}

View File

@@ -150,7 +150,7 @@ void UpdateStatusBar(void)
TCHAR szStatusText[128];
TCHAR szTempText[64];
ZeroMemory(szStatusText, sizeof(szStatusText));
ZeroMemory(szStatusText, sizeof(szStatusText) / sizeof(TCHAR));
if (GetScoreMode() != SCORE_NONE)
{

View File

@@ -0,0 +1,142 @@
#
# Makefile for Console Telnet
# Last modified 4/15/2000 by Paul Brannan
#
SRCDIR=./src
OBJDIR=src
RESDIR=resource
SRC=$(wildcard $(SRCDIR)/*.cpp)
RESOURCES=$(wildcard $(RESDIR)/*.rc)
OBJ1=$(SRC:.c=.o)
OBJ=$(OBJ1:.cpp=.o) $(RESOURCES:.rc=.o)
INCLUDES=-I$(RESDIR)
OUT=telnet.exe
# Modify these for your system if necessary
# Note: DJGPP+RDXNTDJ configuration is untested.
# --CYGWIN--
#CC=gcc
#CCC=g++
#LDFLAGS=-lwsock32 -lmsvcrt
#CFLAGS=-O2 -Wall -mwindows -mno-cygwin -D__CYGWIN__
#CCFLAGS=$(CFLAGS)
#RES=
#RC=windres
#RCFLAGS=-O coff
# --MINGW32(+EGCS)--
CC=gcc
CCC=g++
LDFLAGS=-lkernel32 -luser32 -lgdi32 -lshell32 -lwsock32
CFLAGS=-O2 -Wall
CCFLAGS=$(CFLAGS)
RES=
RC=windres
RCFLAGS=
# --DJGPP+RSXNTDJ--
#CC=gcc -Zwin32 -Zmt -Zcrtdll
#CCC=$(CC)
#LDFLAGS=
#CFLAGS= -g
#CCFLAGS=$(CFLAGS)
#RES=rsrc
#RC=grc
#RCFLAGS=-r
# You should not have to modify anything below this line
all: dep $(OUT)
.SUFFIXES: .c .cpp .rc
.c.o:
$(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@
.cpp.o:
$(CCC) $(INCLUDES) $(CCFLAGS) -c $< -o $@
.rc.o:
$(RC) -i $< $(RCFLAGS) -o $@
$(OUT): $(OBJ)
$(CCC) $(OBJ) $(LDFLAGS) $(LIBS) -o $(OUT)
strip $(OUT)
depend: dep
dep:
start /min makedepend -- $(CFLAGS) -- $(INCLUDES) $(SRC)
clean:
del $(OBJDIR)\*.o
del $(OUT)
# DO NOT DELETE
./src/ansiprsr.o: ./src/ansiprsr.h ./src/tnconfig.h ./src/tnerror.h
./src/ansiprsr.o: ./src/tnmsg.h ./src/tparser.h ./src/tconsole.h
./src/ansiprsr.o: ./src/keytrans.h ./src/tkeydef.h ./src/tkeymap.h
./src/ansiprsr.o: ./src/stl_bids.h ./src/tscroll.h ./src/tmouse.h
./src/ansiprsr.o: ./src/tnclip.h ./src/tnetwork.h ./src/tcharmap.h
./src/keytrans.o: ./src/keytrans.h ./src/tkeydef.h ./src/tkeymap.h
./src/keytrans.o: ./src/stl_bids.h ./src/tnerror.h ./src/tnmsg.h
./src/tcharmap.o: ./src/tcharmap.h ./src/tnconfig.h ./src/tnerror.h
./src/tcharmap.o: ./src/tnmsg.h
./src/tconsole.o: ./src/tconsole.h ./src/tnconfig.h ./src/tnerror.h
./src/tconsole.o: ./src/tnmsg.h
./src/tkeydef.o: ./src/tkeydef.h
./src/tkeymap.o: ./src/tkeymap.h ./src/stl_bids.h ./src/tkeydef.h
./src/tmapldr.o: ./src/tmapldr.h ./src/keytrans.h ./src/tkeydef.h
./src/tmapldr.o: ./src/tkeymap.h ./src/stl_bids.h ./src/tcharmap.h
./src/tmapldr.o: ./src/tnerror.h ./src/tnmsg.h ./src/tnconfig.h
./src/tmouse.o: ./src/tmouse.h ./src/tnclip.h ./src/tnetwork.h
./src/tmouse.o: ./src/tconsole.h ./src/tnconfig.h ./src/tnerror.h
./src/tmouse.o: ./src/tnmsg.h
./src/tnclass.o: ./src/tnclass.h ./src/tnconfig.h ./src/tnerror.h
./src/tnclass.o: ./src/tnmsg.h ./src/ttelhndl.h ./src/tparser.h
./src/tnclass.o: ./src/tconsole.h ./src/keytrans.h ./src/tkeydef.h
./src/tnclass.o: ./src/tkeymap.h ./src/stl_bids.h ./src/tscroll.h
./src/tnclass.o: ./src/tmouse.h ./src/tnclip.h ./src/tnetwork.h
./src/tnclass.o: ./src/tcharmap.h ./src/tncon.h ./src/tparams.h
./src/tnclass.o: ./src/ansiprsr.h ./src/tmapldr.h ./src/tnmisc.h
./src/tnclip.o: ./src/tnclip.h ./src/tnetwork.h
./src/tncon.o: ./src/tncon.h ./src/tparams.h ./src/ttelhndl.h ./src/tparser.h
./src/tncon.o: ./src/tconsole.h ./src/tnconfig.h ./src/tnerror.h
./src/tncon.o: ./src/tnmsg.h ./src/keytrans.h ./src/tkeydef.h ./src/tkeymap.h
./src/tncon.o: ./src/stl_bids.h ./src/tscroll.h ./src/tmouse.h ./src/tnclip.h
./src/tncon.o: ./src/tnetwork.h ./src/tcharmap.h
./src/tnconfig.o: ./src/tnconfig.h ./src/tnerror.h ./src/tnmsg.h
./src/tnerror.o: ./src/tnerror.h ./src/tnmsg.h ./src/ttelhndl.h
./src/tnerror.o: ./src/tparser.h ./src/tconsole.h ./src/tnconfig.h
./src/tnerror.o: ./src/keytrans.h ./src/tkeydef.h ./src/tkeymap.h
./src/tnerror.o: ./src/stl_bids.h ./src/tscroll.h ./src/tmouse.h
./src/tnerror.o: ./src/tnclip.h ./src/tnetwork.h ./src/tcharmap.h
./src/tnetwork.o: ./src/tnetwork.h
./src/tnmain.o: ./src/tnmain.h ./src/tncon.h ./src/tparams.h ./src/ttelhndl.h
./src/tnmain.o: ./src/tparser.h ./src/tconsole.h ./src/tnconfig.h
./src/tnmain.o: ./src/tnerror.h ./src/tnmsg.h ./src/keytrans.h
./src/tnmain.o: ./src/tkeydef.h ./src/tkeymap.h ./src/stl_bids.h
./src/tnmain.o: ./src/tscroll.h ./src/tmouse.h ./src/tnclip.h
./src/tnmain.o: ./src/tnetwork.h ./src/tcharmap.h ./src/tnclass.h
./src/tnmain.o: ./src/ansiprsr.h ./src/tmapldr.h ./src/tnmisc.h
./src/tnmisc.o: ./src/tnmisc.h
./src/tscript.o: ./src/tscript.h ./src/tnetwork.h
./src/tscroll.o: ./src/tscroll.h ./src/tconsole.h ./src/tnconfig.h
./src/tscroll.o: ./src/tnerror.h ./src/tnmsg.h ./src/tmouse.h ./src/tnclip.h
./src/tscroll.o: ./src/tnetwork.h ./src/tncon.h ./src/tparams.h
./src/tscroll.o: ./src/ttelhndl.h ./src/tparser.h ./src/keytrans.h
./src/tscroll.o: ./src/tkeydef.h ./src/tkeymap.h ./src/stl_bids.h
./src/tscroll.o: ./src/tcharmap.h
./src/ttelhndl.o: ./src/ttelhndl.h ./src/tparser.h ./src/tconsole.h
./src/ttelhndl.o: ./src/tnconfig.h ./src/tnerror.h ./src/tnmsg.h
./src/ttelhndl.o: ./src/keytrans.h ./src/tkeydef.h ./src/tkeymap.h
./src/ttelhndl.o: ./src/stl_bids.h ./src/tscroll.h ./src/tmouse.h
./src/ttelhndl.o: ./src/tnclip.h ./src/tnetwork.h ./src/tcharmap.h
./src/ttelhndl.o: ./src/telnet.h ./src/tparams.h

View File

@@ -1,4 +1,6 @@
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#include "tnmsg.h"
LANGUAGE 0, 0
STRINGTABLE
BEGIN
@@ -94,3 +96,9 @@ BEGIN
MSG_KEYBADMAP "Bad keymap number - try 'keys display'\n"
MSG_KEYMAPSWITCHED "keymap switched.\n"
END
#if defined(__MINGW32__) || defined(__CYGWIN__)
TelnetIcon ICON "telnet.ico"
#else
TelnetIcon ICON "../telnet.ico"
#endif

View File

@@ -1,18 +1,4 @@
#include <windef.h>
#include "resource.h"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#define REACTOS_STR_FILE_DESCRIPTION "Console Telnet for Win32"
#define REACTOS_STR_INTERNAL_NAME "telnet"
#define REACTOS_STR_ORIGINAL_FILENAME "telnet.exe"
#include <reactos/version.rc>
IDI_APPICON ICON "telnet.ico"
/* UTF-8 */
#pragma code_page(65001)
#ifdef LANGUAGE_EN_US
#include "lang/en-US.rc"
#endif

View File

@@ -207,6 +207,6 @@ BEGIN
IDS_CERT_DOES_NOT_MATCH "Verificarea certificatului SSL a eșuat."
IDS_INTEG_CHECK_TITLE "Se verifică integritatea pachetului…"
IDS_INTEG_CHECK_FAIL "Pachetul nu a trecut de verificarea de integritate. Utilizarea programului nu este recomandată."
IDS_INTERRUPTED_DOWNLOAD "Descărcarea a fost întreruptă. Verificați conexiunea la Internet."
IDS_UNABLE_TO_WRITE "Nu se poate scrie pe disc. Una din cauze poate fi atingerea limitei de capacitate a discului."
IDS_INTERRUPTED_DOWNLOAD "The download was interrupted. Check connection to Internet."
IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity."
END

View File

@@ -207,6 +207,6 @@ BEGIN
IDS_CERT_DOES_NOT_MATCH "Verificarea certificatului SSL a eșuat."
IDS_INTEG_CHECK_TITLE "Se verifică integritatea pachetului…"
IDS_INTEG_CHECK_FAIL "Pachetul nu a trecut de verificarea de integritate. Utilizarea programului nu este recomandată."
IDS_INTERRUPTED_DOWNLOAD "Descărcarea a fost întreruptă. Verificați conexiunea la Internet."
IDS_UNABLE_TO_WRITE "Nu se poate scrie pe disc. Una din cauze poate fi atingerea limitei de capacitate a discului."
IDS_INTERRUPTED_DOWNLOAD "The download was interrupted. Check connection to Internet."
IDS_UNABLE_TO_WRITE "Unable to write to disk. Disk may be at capacity."
END

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -25,9 +25,9 @@ CAPTION "Asistent de instalare ReactOS"
FONT 8, "MS Shell Dlg"
BEGIN
AUTORADIOBUTTON "Instalează ReactOS", IDC_INSTALL, 7, 7, 277, 10
LTEXT "Instalarea unei noi copii a ReactOS. Fișierele, configurațiile și programele existente nu vor fi păstrate. Se pot face ajustări asupra discurilor și partițiilor.", IDC_INSTALLTEXT, 18, 18, 269, 25
LTEXT "Instalarea unei noi copii a ReactOS. Fișierele, configurațiile și programele existente nu vor fi păstrate. Se pot face ajustări asupra discurilor și partițiilor.", IDC_INSTALLTEXT, 18, 18, 269, 25
AUTORADIOBUTTON "Repară sau actualizează ReactOS", IDC_UPDATE, 7, 50, 277, 10
LTEXT "Repararea sau actualizarea ReactOS. Această opțiune menține fișierele, configurațiile și programele existente. Opțiune validă doar dacă ReactOS e deja instalat în calculator.", IDC_UPDATETEXT, 18, 61, 269, 30
LTEXT "Repararea sau actualizarea ReactOS. Această opțiune menține fișierele, configurațiile și programele existente. Opțiune validă doar dacă ReactOS e deja instalat în calculator.", IDC_UPDATETEXT, 18, 61, 269, 30
LTEXT "Apăsați pe „Înainte” pentru configurarea de dispozitive.", IDC_STATIC, 7, 128, 297, 8
END

View File

@@ -428,8 +428,8 @@ CommandDumpSector(
DPRINT1("Sector: %I64u\n", Sector.QuadPart);
SectorCount.QuadPart = DiskGeometry.Cylinders.QuadPart *
(ULONGLONG)DiskGeometry.TracksPerCylinder *
(ULONGLONG)DiskGeometry.SectorsPerTrack;
DiskGeometry.TracksPerCylinder,
DiskGeometry.SectorsPerTrack;
if (Sector.QuadPart >= SectorCount.QuadPart)
{
CONSOLE_ConOutPrintf("Invalid sector number! Valid range: [0 - %I64u]\n", SectorCount.QuadPart - 1);

View File

@@ -916,7 +916,6 @@ SetupStartPage(PINPUT_RECORD Ir)
/* first we hack LanguageList */
ListEntry = GetFirstListEntry(LanguageList);
while (ListEntry != NULL)
{
if (!wcsicmp(LocaleID, GetListEntryUserData(ListEntry)))

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -1052,7 +1052,7 @@ ChangePos:
rcTray.top,
rcTray.right - rcTray.left,
rcTray.bottom - rcTray.top,
SWP_NOZORDER);
SWP_NOZORDER | SWP_NOACTIVATE);
ResizeWorkArea();
@@ -1146,7 +1146,7 @@ ChangePos:
0,
0,
0,
SWP_NOMOVE | SWP_NOSIZE);
SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
/* Determine a minimum tray window rectangle. The "client" height is
zero here since we cannot determine an optimal minimum width when
@@ -1456,7 +1456,7 @@ ChangePos:
{
SetWindowStyle(m_hWnd, WS_THICKFRAME | WS_BORDER, WS_THICKFRAME | WS_BORDER);
}
SetWindowPos(NULL, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER);
SetWindowPos(NULL, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER);
return TRUE;
}
@@ -1825,7 +1825,7 @@ ChangePos:
{
SetWindowStyle(m_hWnd, WS_THICKFRAME | WS_BORDER, WS_THICKFRAME | WS_BORDER);
}
SetWindowPos(NULL, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER);
SetWindowPos(NULL, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER);
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

View File

@@ -58,7 +58,6 @@ HKCR,"anifile\DefaultIcon","",0x00000000,"%1"
; ReactOS Batch Files
HKCR,".bat","",0x00000000,"batfile"
HKCR,"batfile","",0x00000000,"ReactOS Batch File"
HKCR,"batfile","EditFlags",0x00010001,0x00000010
HKCR,"batfile","FriendlyTypeName",0x00020000,"@%SystemRoot%\system32\shell32.dll,-201"
HKCR,"batfile\DefaultIcon","",0x00020000,"%SystemRoot%\system32\shell32.dll,-153"
HKCR,"batfile\shell\edit\command","",0x00020000,"%SystemRoot%\system32\notepad.exe %1"
@@ -67,7 +66,6 @@ HKCR,"batfile\shell\open\command","",0x00000000,"""%1"" %*"
; ReactOS Command Script Files
HKCR,".cmd","",0x00000000,"cmdfile"
HKCR,"cmdfile","",0x00000000,"ReactOS Command Script"
HKCR,"cmdfile","EditFlags",0x00010001,0x00000010
HKCR,"cmdfile","FriendlyTypeName",0x00020000,"@%SystemRoot%\system32\shell32.dll,-202"
HKCR,"cmdfile\DefaultIcon","",0x00020000,"%SystemRoot%\system32\shell32.dll,-153"
HKCR,"cmdfile\shell\edit\command","",0x00020000,"%SystemRoot%\system32\notepad.exe %1"
@@ -76,7 +74,6 @@ HKCR,"cmdfile\shell\open\command","",0x00000000,"""%1"" %*"
; DOS Applications
HKCR,".com","",0x00000000,"comfile"
HKCR,"comfile","",0x00000000,"DOS Application"
HKCR,"comfile","EditFlags",0x00010001,0x00000010
HKCR,"comfile","FriendlyTypeName",0x00020000,"@%SystemRoot%\system32\shell32.dll,-203"
HKCR,"comfile\DefaultIcon","",0x00020000,"%SystemRoot%\system32\shell32.dll,-3"
HKCR,"comfile\shell\open\command","",0x00000000,"""%1"" %*"
@@ -100,7 +97,6 @@ HKCR,"curfile\DefaultIcon","",0x00000000,"%1"
; Dynamic Link Libraries
HKCR,".dll","",0x00000000,"dllfile"
HKCR,"dllfile","",0x00000000,"Application Extension"
HKCR,"dllfile","EditFlags",0x00010001,0x00000001
HKCR,"dllfile","FriendlyTypeName",0x00020000,"@%SystemRoot%\system32\shell32.dll,-206"
HKCR,"dllfile","NoOpen",0x00000000,""
HKCR,"dllfile\DefaultIcon","",0x00020000,"%SystemRoot%\system32\shell32.dll,-154"
@@ -114,7 +110,6 @@ HKCR,"drvfile\DefaultIcon","",0x00020000,"%SystemRoot%\system32\shell32.dll,-154
; Applications
HKCR,".exe","",0x00000000,"exefile"
HKCR,"exefile","",0x00000000,"Application"
HKCR,"exefile","EditFlags",0x00010001,0x00000010
HKCR,"exefile","FriendlyTypeName",0x00020000,"@%SystemRoot%\system32\shell32.dll,-208"
HKCR,"exefile\DefaultIcon","",0x00000000,"%1"
HKCR,"exefile\shell\open\command","",0x00000000,"""%1"" %*"
@@ -266,7 +261,6 @@ HKCR,".lnk","",0x00000000,"lnkfile"
HKCR,".lnk\shellnew","",0x00000000,""
HKCR,".lnk\shellnew","command",0x00020000,"%SystemRoot%\system32\rundll32.exe appwiz.cpl,NewLinkHere %1"
HKCR,"lnkfile","",0x00000000,"Shortcut"
HKCR,"lnkfile","EditFlags",0x00010001,0x00000001
HKCR,"lnkfile","FriendlyTypeName",0x00020000,"@%SystemRoot%\system32\shell32.dll,-215"
HKCR,"lnkfile","IsShortcut",0x00000000,"yes"
HKCR,"lnkfile","NeverShowExt",0x00000000,""
@@ -327,7 +321,6 @@ HKCR,"Msi.Package\shell\Uninstall\command","",0x00020000,"%SystemRoot%\system32\
; Program Information File for NT VDM
HKCR,".pif","",0x00000000,"piffile"
HKCR,"piffile","",0x00000000,"NT VDM Program Information File"
HKCR,"piffile","EditFlags",0x00010001,0x00000001
HKCR,"piffile","FriendlyTypeName",0x00020000,"@%SystemRoot%\system32\shell32.dll,-216"
HKCR,"piffile","IsShortcut",0x00000000,"yes"
HKCR,"piffile","NeverShowExt",0x00000000,""
@@ -727,8 +720,9 @@ CPLFILE_OPENWITH="Otwórz poprzez Panel Sterowania"
CPLFILE_OPENWITH="Deschide în Panoul de control"
CHMFILE="Manual compilat din HTML"
HTMLFILE="Fișier HTML"
XMLFILE="Document XML"
XSLFILE="Foaie de stil XSL"
XSLFILE="Fier de stil XSL"
MSIPACK="Pachet de instalare ReactOS"
MSSTYLESFILE="Fișier de stil vizual"
THEMEFILE="Temă de interfață grafică"
@@ -736,16 +730,6 @@ WAVFILE="Fișier audio Wave"
MIDFILE="Secvență audio MIDI"
CDAFILE="Pistă de CD audio"
AVIFILE="Fișier video"
CSSFILE="Foaie de stiluri în cascadă"
OCXFILE="Extensie de control OLE"
SCFFILE="Comandă de Explorator ReactOS"
WMZFILE="Metafișier îmbunătățit comprimat"
MERGE="Unește"
CONFIGURE="Configurează"
INSTALL="Instalează"
UNINSTALL="Dezinstalează"
REPAIR="Repară"
TEST="Testează"
; LANG_RUSSIAN SUBLANG_NEUTRAL

View File

@@ -129,7 +129,7 @@ EtfspGetDirentNameLength (
PUCHAR Pos;
RealLength = Length = DirEntry->FileIdLen;
for (Pos = DirEntry->FileId + Length - 1; Length; --Pos)
for (Pos = &DirEntry->FileIdLen + Length; Length; --Pos)
{
--Length;
@@ -141,7 +141,7 @@ EtfspGetDirentNameLength (
}
Length = RealLength;
for (Pos = DirEntry->FileId + Length - 1; Length; --Pos)
for (Pos = &DirEntry->FileIdLen + Length; Length; --Pos)
{
--Length;

View File

@@ -132,7 +132,7 @@ RegInitCurrentControlSet(
&DataSize);
if (Error != ERROR_SUCCESS)
{
ERR("RegQueryValue('LastKnownGood') failed (Error %u)\n", (int)Error);
ERR("RegQueryValue('Default') failed (Error %u)\n", (int)Error);
return Error;
}

View File

@@ -3,9 +3,8 @@ spec2def(apphelp.dll apphelp.spec ADD_IMPORTLIB)
list(APPEND SOURCE
apphelp.c
layer.c
sdbapi.c
sdbfileattr.c
layer.c
apphelp.spec
apphelp.h
${CMAKE_CURRENT_BINARY_DIR}/apphelp_stubs.c)
@@ -16,7 +15,6 @@ add_library(apphelp SHARED
set_module_type(apphelp win32dll)
target_link_libraries(apphelp wine)
# When binutils is fixed, we should move imagehlp to delay! CORE-6504
add_delay_importlibs(apphelp version)
add_importlibs(apphelp msvcrt imagehlp kernel32 ntdll)
#add_delay_importlibs(apphelp version imagehlp user32)
add_importlibs(apphelp msvcrt kernel32 ntdll)
add_cd_file(TARGET apphelp DESTINATION reactos/system32 FOR all)

View File

@@ -32,21 +32,6 @@ typedef UINT64 QWORD;
#define TAGREF_NULL (0)
#define TAGREF_ROOT (0)
#define HID_DATABASE_TYPE_MASK 0xF00F0000
#define SDB_DATABASE_MAIN_MSI 0x80020000
#define SDB_DATABASE_MAIN_SHIM 0x80030000
#define SDB_DATABASE_MAIN_DRIVERS 0x80040000
typedef struct tagATTRINFO {
TAG type;
DWORD flags;
union {
QWORD qwattr;
DWORD dwattr;
WCHAR *lpattr;
};
} ATTRINFO, *PATTRINFO;
typedef enum _SHIM_LOG_LEVEL {
SHIM_ERR = 1,
SHIM_WARN = 2,
@@ -87,19 +72,6 @@ void SdbpFree(LPVOID mem);
#endif
typedef struct tagMEMMAPPED {
HANDLE file;
HANDLE section;
PBYTE view;
SIZE_T size;
SIZE_T mapped_size;
} MEMMAPPED, *PMEMMAPPED;
BOOL WINAPI SdbpOpenMemMappedFile(LPCWSTR path, PMEMMAPPED mapping);
void WINAPI SdbpCloseMemMappedFile(PMEMMAPPED mapping);
DWORD SdbpStrlen(LPCWSTR string);
PWSTR SdbpStrDup(LPCWSTR string);
/* layer.c */
BOOL WINAPI AllowPermLayer(PCWSTR path);
@@ -107,9 +79,6 @@ BOOL WINAPI SdbGetPermLayerKeys(PCWSTR wszPath, PWSTR pwszLayers, PDWORD pdwByte
BOOL WINAPI SetPermLayerState(PCWSTR wszPath, PCWSTR wszLayer, DWORD dwFlags, BOOL bMachine, BOOL bEnable);
#define ATTRIBUTE_AVAILABLE 0x1
#define ATTRIBUTE_FAILED 0x2
#define TAGID_NULL 0x0
#define TAGID_ROOT 0x0

View File

@@ -48,7 +48,7 @@
@ stub SdbFindNextTag
@ stub SdbFindNextTagRef
@ stub SdbFreeDatabaseInformation
@ stdcall SdbFreeFileAttributes(ptr)
@ stub SdbFreeFileAttributes
@ stub SdbFreeFileInfo
@ stub SdbFreeFlagInfo
@ stub SdbGetAppCompatDataSize
@@ -61,7 +61,7 @@
@ stub SdbGetDatabaseVersion
@ stub SdbGetDllPath
@ stub SdbGetEntryFlags
@ stdcall SdbGetFileAttributes(wstr ptr ptr)
@ stub SdbGetFileAttributes
@ stub SdbGetFileImageType
@ stub SdbGetFileImageTypeEx
@ stub SdbGetFileInfo
@@ -79,17 +79,17 @@
@ stdcall SdbGetPermLayerKeys(wstr wstr ptr long)
@ stub SdbGetShowDebugInfoOption
@ stub SdbGetShowDebugInfoOptionValue
@ stdcall SdbGetStandardDatabaseGUID(long ptr)
@ stub SdbGetStandardDatabaseGUID
@ stub SdbGetStringTagPtr
@ stub SdbGetTagDataSize
@ stub SdbGetTagFromTagID
@ stub SdbGrabMatchingInfo
@ stub SdbGrabMatchingInfoEx
@ stdcall SdbGUIDFromString(wstr ptr)
@ stdcall SdbGUIDToString(ptr wstr long)
@ stub SdbGUIDFromString
@ stub SdbGUIDToString
@ stub SdbInitDatabase
@ stub SdbInitDatabaseEx
@ stdcall SdbIsNullGUID(ptr)
@ stub SdbIsNullGUID
@ stub SdbIsStandardDatabase
@ stub SdbIsTagrefFromLocalDB
@ stub SdbIsTagrefFromMainDB

View File

@@ -27,10 +27,6 @@
#include "wine/unicode.h"
static const GUID GUID_DATABASE_MSI = {0xd8ff6d16,0x6a3a,0x468a, {0x8b,0x44,0x01,0x71,0x4d,0xdc,0x49,0xea}};
static const GUID GUID_DATABASE_SHIM = {0x11111111,0x1111,0x1111, {0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11}};
static const GUID GUID_DATABASE_DRIVERS = {0xf9ab2228,0x3312,0x4a73, {0xb6,0xf9,0x93,0x6d,0x70,0xe1,0x12,0xef}};
static HANDLE SdbpHeap(void);
#if SDBAPI_DEBUG_ALLOC
@@ -159,6 +155,11 @@ void SdbpHeapDeinit(void)
HeapDestroy(g_Heap);
}
DWORD SdbpStrlen(PCWSTR string)
{
return (lstrlenW(string) + 1) * sizeof(WCHAR);
}
static HANDLE SdbpHeap(void)
{
return g_Heap;
@@ -202,178 +203,6 @@ void SdbpFree(LPVOID mem
HeapFree(SdbpHeap(), 0, mem);
}
DWORD SdbpStrlen(PCWSTR string)
{
return (lstrlenW(string) + 1) * sizeof(WCHAR);
}
PWSTR SdbpStrDup(LPCWSTR string)
{
PWSTR ret = SdbpAlloc(SdbpStrlen(string));
lstrcpyW(ret, string);
return ret;
}
BOOL WINAPI SdbpOpenMemMappedFile(LPCWSTR path, PMEMMAPPED mapping)
{
NTSTATUS Status;
OBJECT_ATTRIBUTES ObjectAttributes;
IO_STATUS_BLOCK IoStatusBlock;
FILE_STANDARD_INFORMATION FileStandard;
UNICODE_STRING FileName;
RtlZeroMemory(mapping, sizeof(*mapping));
if(!RtlDosPathNameToNtPathName_U(path, &FileName, NULL, NULL))
{
RtlFreeUnicodeString(&FileName);
return FALSE;
}
InitializeObjectAttributes(&ObjectAttributes, &FileName, OBJ_CASE_INSENSITIVE, NULL, NULL);
Status = NtOpenFile(&mapping->file, GENERIC_READ | SYNCHRONIZE, &ObjectAttributes, &IoStatusBlock, FILE_SHARE_READ, FILE_SYNCHRONOUS_IO_NONALERT);
RtlFreeUnicodeString(&FileName);
if (!NT_SUCCESS(Status))
{
SHIM_ERR("Failed to open file %S: 0x%lx\n", path, Status);
return FALSE;
}
Status = NtCreateSection(&mapping->section, STANDARD_RIGHTS_REQUIRED | SECTION_QUERY | SECTION_MAP_READ, 0, 0, PAGE_READONLY, SEC_COMMIT, mapping->file);
if (!NT_SUCCESS(Status))
{
/* Special case */
if (Status == STATUS_MAPPED_FILE_SIZE_ZERO)
{
NtClose(mapping->file);
mapping->file = mapping->section = NULL;
return TRUE;
}
SHIM_ERR("Failed to create mapping for file: 0x%lx\n", Status);
goto err_out;
}
Status = NtQueryInformationFile(mapping->file, &IoStatusBlock, &FileStandard, sizeof(FileStandard), FileStandardInformation);
if (!NT_SUCCESS(Status))
{
SHIM_ERR("Failed to read file info for file: 0x%lx\n", Status);
goto err_out;
}
mapping->mapped_size = mapping->size = FileStandard.EndOfFile.LowPart;
Status = NtMapViewOfSection(mapping->section, NtCurrentProcess(), (PVOID*)&mapping->view, 0, 0, 0, &mapping->mapped_size, ViewUnmap, 0, PAGE_READONLY);
if (!NT_SUCCESS(Status))
{
SHIM_ERR("Failed to map view of file: 0x%lx\n", Status);
goto err_out;
}
return TRUE;
err_out:
if (!mapping->view)
{
if (mapping->section)
NtClose(mapping->section);
NtClose(mapping->file);
}
return FALSE;
}
void WINAPI SdbpCloseMemMappedFile(PMEMMAPPED mapping)
{
/* Prevent a VAD warning */
if (mapping->view)
NtUnmapViewOfSection(NtCurrentProcess(), mapping->view);
NtClose(mapping->section);
NtClose(mapping->file);
RtlZeroMemory(mapping, sizeof(*mapping));
}
/**
* Parses a string to retrieve a GUID.
*
* @param [in] GuidString The string to parse.
* @param [out] Guid The resulting GUID.
*
* @return TRUE if it succeeds, FALSE if it fails.
*/
BOOL WINAPI SdbGUIDFromString(PCWSTR GuidString, GUID *Guid)
{
UNICODE_STRING GuidString_u;
RtlInitUnicodeString(&GuidString_u, GuidString);
return NT_SUCCESS(RtlGUIDFromString(&GuidString_u, Guid));
}
/**
* Converts a GUID to a string.
*
* @param [in] Guid The GUID to convert.
* @param [out] GuidString The resulting string representation of Guid.
* @param [in] Length The length of GuidString.
*
* @return TRUE if it succeeds, FALSE if it fails.
*/
BOOL WINAPI SdbGUIDToString(CONST GUID *Guid, PWSTR GuidString, SIZE_T Length)
{
UNICODE_STRING GuidString_u;
if(NT_SUCCESS(RtlStringFromGUID(Guid, &GuidString_u)))
{
HRESULT hr = StringCchCopyNW(GuidString, Length, GuidString_u.Buffer, GuidString_u.Length / 2);
RtlFreeUnicodeString(&GuidString_u);
return SUCCEEDED(hr);
}
return FALSE;
}
/**
* Checks if the specified GUID is a NULL GUID
*
* @param [in] Guid The GUID to check.
*
* @return TRUE if it is a NULL GUID.
*/
BOOL WINAPI SdbIsNullGUID(CONST GUID *Guid)
{
static GUID NullGuid = { 0 };
return !Guid || IsEqualGUID(&NullGuid, Guid);
}
/**
* Get the GUID from one of the standard databases.
*
* @param [in] Flags The ID to retrieve the guid from. (See SDB_DATABASE_MAIN_[xxx])
* @param [out] Guid The resulting GUID.
*
* @return TRUE if a known database ID.
*/
BOOL WINAPI SdbGetStandardDatabaseGUID(DWORD Flags, GUID* Guid)
{
const GUID* copy_from = NULL;
switch(Flags & HID_DATABASE_TYPE_MASK)
{
case SDB_DATABASE_MAIN_MSI:
copy_from = &GUID_DATABASE_MSI;
break;
case SDB_DATABASE_MAIN_SHIM:
copy_from = &GUID_DATABASE_SHIM;
break;
case SDB_DATABASE_MAIN_DRIVERS:
copy_from = &GUID_DATABASE_DRIVERS;
break;
default:
SHIM_ERR("Cannot obtain database guid for databases other than main\n");
return FALSE;
}
if(Guid)
{
memcpy(Guid, copy_from, sizeof(GUID));
}
return TRUE;
}
/**
* Converts specified tag into a string.
*

View File

@@ -1,387 +0,0 @@
/*
* Copyright 2011 Andr<64> Hentschel
* Copyright 2013 Mislav Bla<6C>evic
* Copyright 2015 Mark Jansen
*
* 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "windef.h"
#include "winbase.h"
#include "apphelp.h"
#include "imagehlp.h"
#include "winver.h"
#include "wine/unicode.h"
#define NUM_ATTRIBUTES 28
enum APPHELP_MODULETYPE
{
MODTYPE_UNKNOWN = 0,
MODTYPE_DOS = 1,
MODTYPE_NE = 2,
MODTYPE_PE = 3,
};
static void WINAPI SdbpSetDWORDAttr(PATTRINFO attr, TAG tag, DWORD value)
{
attr->type = tag;
attr->flags = ATTRIBUTE_AVAILABLE;
attr->dwattr = value;
}
static void WINAPI SdbpSetQWORDAttr(PATTRINFO attr, TAG tag, QWORD value)
{
attr->type = tag;
attr->flags = ATTRIBUTE_AVAILABLE;
attr->qwattr = value;
}
static void WINAPI SdbpSetStringAttr(PATTRINFO attr, TAG tag, WCHAR *string)
{
if (!string)
{
attr->flags = ATTRIBUTE_FAILED;
return;
}
attr->type = tag;
attr->flags = ATTRIBUTE_AVAILABLE;
attr->lpattr = SdbpStrDup(string);
}
static void WINAPI SdbpSetAttrFail(PATTRINFO attr)
{
attr->flags = ATTRIBUTE_FAILED;
}
static WCHAR* WINAPI SdbpGetStringAttr(LPWSTR translation, LPCWSTR attr, PVOID file_info)
{
UINT size = 0;
PVOID buffer;
WCHAR value[128] = {0};
if (!file_info)
return NULL;
snprintfW(value, 128, translation, attr);
if (VerQueryValueW(file_info, value, &buffer, &size) && size != 0)
return (WCHAR*)buffer;
return NULL;
}
static void WINAPI SdbpSetStringAttrFromAnsiString(PATTRINFO attr, TAG tag, PBYTE string, BYTE len)
{
WCHAR* dest;
if (!string)
{
attr->flags = ATTRIBUTE_FAILED;
return;
}
attr->type = tag;
attr->flags = ATTRIBUTE_AVAILABLE;
dest = attr->lpattr = SdbpAlloc((len+1) * sizeof(WCHAR));
while (len--)
*(dest++) = *(string++);
*dest = 0;
}
static void WINAPI SdbpSetStringAttrFromPascalString(PATTRINFO attr, TAG tag, PBYTE string)
{
if (!string)
{
attr->flags = ATTRIBUTE_FAILED;
return;
}
SdbpSetStringAttrFromAnsiString(attr, tag, string + 1, *string);
}
static void SdbpReadFileVersion(PATTRINFO attr_info, PVOID file_info)
{
static const WCHAR str_root[] = {'\\',0};
VS_FIXEDFILEINFO* fixed_info;
UINT size;
if (file_info && VerQueryValueW(file_info, str_root, (LPVOID*)&fixed_info, &size) && size)
{
if (fixed_info->dwSignature == VS_FFI_SIGNATURE)
{
LARGE_INTEGER version;
version.HighPart = fixed_info->dwFileVersionMS;
version.LowPart = fixed_info->dwFileVersionLS;
SdbpSetQWORDAttr(&attr_info[2], TAG_BIN_FILE_VERSION, version.QuadPart);
SdbpSetQWORDAttr(&attr_info[21], TAG_UPTO_BIN_FILE_VERSION, version.QuadPart);
version.HighPart = fixed_info->dwProductVersionMS;
version.LowPart = fixed_info->dwProductVersionLS;
SdbpSetQWORDAttr(&attr_info[3], TAG_BIN_PRODUCT_VERSION, version.QuadPart);
SdbpSetQWORDAttr(&attr_info[22], TAG_UPTO_BIN_PRODUCT_VERSION, version.QuadPart);
SdbpSetDWORDAttr(&attr_info[12], TAG_VERDATEHI, fixed_info->dwFileDateMS);
SdbpSetDWORDAttr(&attr_info[13], TAG_VERDATELO, fixed_info->dwFileDateLS);
SdbpSetDWORDAttr(&attr_info[14], TAG_VERFILEOS, fixed_info->dwFileOS); /* 0x000, 0x4, 0x40004, 0x40000, 0x10004, 0x10001*/
SdbpSetDWORDAttr(&attr_info[15], TAG_VERFILETYPE, fixed_info->dwFileType); /* VFT_APP, VFT_DLL, .... */
return;
}
}
SdbpSetAttrFail(&attr_info[2]);
SdbpSetAttrFail(&attr_info[3]);
SdbpSetAttrFail(&attr_info[12]);
SdbpSetAttrFail(&attr_info[13]);
SdbpSetAttrFail(&attr_info[14]);
SdbpSetAttrFail(&attr_info[15]);
SdbpSetAttrFail(&attr_info[21]);
SdbpSetAttrFail(&attr_info[22]);
}
static DWORD WINAPI SdbpCalculateFileChecksum(PMEMMAPPED mapping)
{
size_t n, size;
PDWORD data;
DWORD checks = 0, carry = 0;
if (mapping->size < 4)
return 0;
if (mapping->size >= 0x1000)
{
size = 0x1000;
if (mapping->size < 0x1200)
data = (PDWORD)(mapping->view + mapping->size - size);
else
data = (PDWORD)mapping->view + (0x200 / 4);
}
else
{
data = (PDWORD)mapping->view;
size = mapping->size;
}
for (n = 0; n < size / 4; ++n)
{
checks += *data;
carry = (checks & 1) ? 0x80000000 : 0;
checks >>= 1;
checks |= carry;
++data;
}
return checks;
}
static DWORD WINAPI SdbpGetModuleType(PMEMMAPPED mapping, PIMAGE_NT_HEADERS* nt_headers)
{
PIMAGE_DOS_HEADER dos = (PIMAGE_DOS_HEADER)mapping->view;
PIMAGE_OS2_HEADER os2;
*nt_headers = NULL;
if (mapping->size < 2 || dos->e_magic != IMAGE_DOS_SIGNATURE)
return MODTYPE_UNKNOWN;
if (mapping->size < sizeof(IMAGE_DOS_HEADER) || mapping->size < (dos->e_lfanew+2))
return MODTYPE_DOS;
os2 = (PIMAGE_OS2_HEADER)((PBYTE)dos + dos->e_lfanew);
if (os2->ne_magic == IMAGE_OS2_SIGNATURE || os2->ne_magic == IMAGE_OS2_SIGNATURE_LE)
{
*nt_headers = (PIMAGE_NT_HEADERS)os2;
return MODTYPE_NE;
}
if (mapping->size >= (dos->e_lfanew + 4) && ((PIMAGE_NT_HEADERS)os2)->Signature == IMAGE_NT_SIGNATURE)
{
*nt_headers = (PIMAGE_NT_HEADERS)os2;
return MODTYPE_PE;
}
return MODTYPE_DOS;
}
/**
* Frees attribute data allocated by SdbGetFileAttributes.
*
* @note Unlike Windows, this implementation will not crash if attr_info is NULL.
*
* @param [in] attr_info Pointer to array of ATTRINFO which will be freed.
*
* @return TRUE if it succeeds, FALSE if it fails.
*/
BOOL WINAPI SdbFreeFileAttributes(PATTRINFO attr_info)
{
WORD i;
if (!attr_info)
return FALSE;
for (i = 0; i < NUM_ATTRIBUTES; i++)
if ((attr_info[i].type & TAG_TYPE_MASK) == TAG_TYPE_STRINGREF)
SdbFree(attr_info[i].lpattr);
SdbFree(attr_info);
return TRUE;
}
/**
* Retrieves attribute data shim database requires to match a file with database entry
*
* @note You must free the attr_info allocated by this function by calling SdbFreeFileAttributes.
*
* @param [in] path Path to the file.
* @param [out] attr_info_ret Pointer to array of ATTRINFO. Contains attribute data.
* @param [out] attr_count Number of attributes in attr_info.
*
* @return TRUE if it succeeds, FALSE if it fails.
*/
BOOL WINAPI SdbGetFileAttributes(LPCWSTR path, PATTRINFO *attr_info_ret, LPDWORD attr_count)
{
static const WCHAR str_tinfo[] = {'\\','V','a','r','F','i','l','e','I','n','f','o','\\','T','r','a','n','s','l','a','t','i','o','n',0};
static const WCHAR str_trans[] = {'\\','S','t','r','i','n','g','F','i','l','e','I','n','f','o','\\','%','0','4','x','%','0','4','x','\\','%','%','s',0};
static const WCHAR str_CompanyName[] = {'C','o','m','p','a','n','y','N','a','m','e',0};
static const WCHAR str_FileDescription[] = {'F','i','l','e','D','e','s','c','r','i','p','t','i','o','n',0};
static const WCHAR str_FileVersion[] = {'F','i','l','e','V','e','r','s','i','o','n',0};
static const WCHAR str_InternalName[] = {'I','n','t','e','r','n','a','l','N','a','m','e',0};
static const WCHAR str_LegalCopyright[] = {'L','e','g','a','l','C','o','p','y','r','i','g','h','t',0};
static const WCHAR str_OriginalFilename[] = {'O','r','i','g','i','n','a','l','F','i','l','e','n','a','m','e',0};
static const WCHAR str_ProductName[] = {'P','r','o','d','u','c','t','N','a','m','e',0};
static const WCHAR str_ProductVersion[] = {'P','r','o','d','u','c','t','V','e','r','s','i','o','n',0};
PIMAGE_NT_HEADERS headers;
MEMMAPPED mapped;
PBYTE mapping_end;
PVOID file_info = 0;
DWORD module_type;
WCHAR translation[128] = {0};
PATTRINFO attr_info;
struct LANGANDCODEPAGE {
WORD language;
WORD code_page;
} *lang_page;
if (!SdbpOpenMemMappedFile(path, &mapped))
{
SHIM_ERR("Error retrieving FILEINFO structure\n");
return FALSE;
}
mapping_end = mapped.view + mapped.size;
attr_info = (PATTRINFO)SdbAlloc(NUM_ATTRIBUTES * sizeof(ATTRINFO));
SdbpSetDWORDAttr(&attr_info[0], TAG_SIZE, mapped.size);
if (mapped.size)
SdbpSetDWORDAttr(&attr_info[1], TAG_CHECKSUM, SdbpCalculateFileChecksum(&mapped));
else
SdbpSetAttrFail(&attr_info[1]);
module_type = SdbpGetModuleType(&mapped, &headers);
if (module_type != MODTYPE_UNKNOWN)
SdbpSetDWORDAttr(&attr_info[16], TAG_MODULE_TYPE, module_type);
else
SdbpSetAttrFail(&attr_info[16]); /* TAG_MODULE_TYPE */
if (headers && module_type == MODTYPE_PE && ((PBYTE)(headers+1) <= mapping_end))
{
DWORD info_size;
SIZE_T export_dir_size;
PIMAGE_EXPORT_DIRECTORY export_dir;
info_size = GetFileVersionInfoSizeW(path, NULL);
if (info_size != 0)
{
UINT page_size = 0;
file_info = SdbAlloc(info_size);
GetFileVersionInfoW(path, 0, info_size, file_info);
VerQueryValueW(file_info, str_tinfo, (LPVOID)&lang_page, &page_size);
snprintfW(translation, 128, str_trans, lang_page->language, lang_page->code_page);
}
/* Handles 2, 3, 12, 13, 14, 15, 21, 22 */
SdbpReadFileVersion(attr_info, file_info);
SdbpSetStringAttr(&attr_info[4], TAG_PRODUCT_VERSION, SdbpGetStringAttr(translation, str_ProductVersion, file_info));
SdbpSetStringAttr(&attr_info[5], TAG_FILE_DESCRIPTION, SdbpGetStringAttr(translation, str_FileDescription, file_info));
SdbpSetStringAttr(&attr_info[6], TAG_COMPANY_NAME, SdbpGetStringAttr(translation, str_CompanyName, file_info));
SdbpSetStringAttr(&attr_info[7], TAG_PRODUCT_NAME, SdbpGetStringAttr(translation, str_ProductName, file_info));
SdbpSetStringAttr(&attr_info[8], TAG_FILE_VERSION, SdbpGetStringAttr(translation, str_FileVersion, file_info));
SdbpSetStringAttr(&attr_info[9], TAG_ORIGINAL_FILENAME, SdbpGetStringAttr(translation, str_OriginalFilename, file_info));
SdbpSetStringAttr(&attr_info[10], TAG_INTERNAL_NAME, SdbpGetStringAttr(translation, str_InternalName, file_info));
SdbpSetStringAttr(&attr_info[11], TAG_LEGAL_COPYRIGHT, SdbpGetStringAttr(translation, str_LegalCopyright, file_info));
/* http://msdn.microsoft.com/en-us/library/windows/desktop/ms680339(v=vs.85).aspx */
SdbpSetDWORDAttr(&attr_info[17], TAG_PE_CHECKSUM, headers->OptionalHeader.CheckSum);
SdbpSetDWORDAttr(&attr_info[18], TAG_LINKER_VERSION, /* mislabeled! */
((DWORD)headers->OptionalHeader.MajorImageVersion) << 16 | headers->OptionalHeader.MinorImageVersion);
SdbpSetAttrFail(&attr_info[19]); /* TAG_16BIT_DESCRIPTION */
SdbpSetAttrFail(&attr_info[20]); /* TAG_16BIT_MODULE_NAME */
SdbpSetDWORDAttr(&attr_info[23], TAG_LINK_DATE, headers->FileHeader.TimeDateStamp);
SdbpSetDWORDAttr(&attr_info[24], TAG_UPTO_LINK_DATE, headers->FileHeader.TimeDateStamp);
export_dir = (PIMAGE_EXPORT_DIRECTORY)ImageDirectoryEntryToData(mapped.view, FALSE, IMAGE_DIRECTORY_ENTRY_EXPORT, &export_dir_size);
if (export_dir && ((PBYTE)(export_dir+1) <= mapping_end))
{
PIMAGE_SECTION_HEADER section = NULL;
PBYTE export_name = ImageRvaToVa(headers, mapped.view, export_dir->Name, &section);
if (export_name)
SdbpSetStringAttrFromAnsiString(&attr_info[25], TAG_EXPORT_NAME, export_name, strlen((char*)export_name));
else
SdbpSetAttrFail(&attr_info[25]); /* TAG_EXPORT_NAME */
}
else
{
SdbpSetAttrFail(&attr_info[25]); /* TAG_EXPORT_NAME */
}
if (info_size)
SdbpSetDWORDAttr(&attr_info[26], TAG_VER_LANGUAGE, lang_page->language);
SdbpSetDWORDAttr(&attr_info[27], TAG_EXE_WRAPPER, 0); /* boolean */
}
else
{
int n;
for (n = 2; n < NUM_ATTRIBUTES; ++n)
{
if (n != 16 && n != 26)
SdbpSetAttrFail(&attr_info[n]);
}
if (module_type == MODTYPE_NE)
{
PBYTE ptr;
PIMAGE_OS2_HEADER os2 = (PIMAGE_OS2_HEADER)headers;
if ((PBYTE)(os2 + 1) <= mapping_end)
{
ptr = mapped.view + os2->ne_nrestab;
if (ptr <= mapping_end && (ptr + 1 + *ptr) <= mapping_end)
SdbpSetStringAttrFromPascalString(&attr_info[19], TAG_16BIT_DESCRIPTION, ptr);
ptr = (PBYTE)os2 + os2->ne_restab;
if (ptr <= mapping_end && (ptr + 1 + *ptr) <= mapping_end)
SdbpSetStringAttrFromPascalString(&attr_info[20], TAG_16BIT_MODULE_NAME, ptr);
}
}
}
*attr_info_ret = attr_info;
*attr_count = NUM_ATTRIBUTES; /* As far as I know, this one is always 28 */
SdbFree(file_info);
SdbpCloseMemMappedFile(&mapped);
return TRUE;
}

View File

@@ -49,14 +49,14 @@ END
IDD_CONFIG_STARTMENU DIALOGEX 0, 0, 212, 200
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Eliminare dosare/scurtături"
CAPTION "Remove Shortcuts/Folders"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Pentru a elimina un element din meniul Pornire, selectați elementul și apăsați „Elimină”.", -1, 10, 10, 192, 16
LTEXT "&To remove an item from the Start menu, select the item and click Remove.", -1, 10, 10, 192, 16
CONTROL "List1", IDC_STARTMENU_TREE, "SysListView32", LVS_REPORT | LVS_SHOWSELALWAYS |
LVS_SORTASCENDING | WS_BORDER | WS_TABSTOP, 10, 32, 192, 138
PUSHBUTTON "&Elimină", IDC_REMOVE_ENTRIES, 98, 176, 50, 14, WS_GROUP | WS_TABSTOP
DEFPUSHBUTTON "Î&nchide", IDOK, 152, 176, 50, 14, WS_GROUP | WS_TABSTOP
PUSHBUTTON "&Remove", IDC_REMOVE_ENTRIES, 98, 176, 50, 14, WS_GROUP | WS_TABSTOP
DEFPUSHBUTTON "Close", IDOK, 152, 176, 50, 14, WS_GROUP | WS_TABSTOP
END
ID_DWL_GECKO_DIALOG DIALOGEX 0, 0, 260, 95

View File

@@ -227,9 +227,9 @@ InitApplet(HANDLE hSectionOrWnd)
}
psh.pszCaption = szTitle;
if (pSharedInfo != NULL)
if (/* pSharedInfo != NULL && */ ConInfo->hWnd != NULL)
{
/* We were started from a console window: this is our parent (or ConInfo->hWnd is NULL) */
/* We were started from a console window: this is our parent. */
psh.hwndParent = ConInfo->hWnd;
}
else

View File

@@ -60,11 +60,9 @@ IDR_ACPPAGE REGISTRY "res/acppage.rgs"
#ifdef LANGUAGE_PL_PL
#include "lang/pl-PL.rc"
#endif
*/
#ifdef LANGUAGE_RO_RO
#include "lang/ro-RO.rc"
#endif
/*
#ifdef LANGUAGE_RU_RU
#include "lang/ru-RU.rc"
#endif
@@ -77,11 +75,9 @@ IDR_ACPPAGE REGISTRY "res/acppage.rgs"
#ifdef LANGUAGE_SV_SE
#include "lang/sv-SE.rc"
#endif
*/
#ifdef LANGUAGE_TR_TR
#include "lang/tr-TR.rc"
#endif
/*
#ifdef LANGUAGE_UK_UA
#include "lang/uk-UA.rc"
#endif

View File

@@ -1,40 +0,0 @@
LANGUAGE LANG_ROMANIAN, SUBLANG_DEFAULT
IDD_ACPPAGESHEET DIALOGEX 0, 0, 224, 226
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Compatibilitate"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Dacă aveți probleme cu acest program în ReactOS, selectați un sistem de operare care să fie raportat aplicației.\nConștientizați că această funcționalitate e în dezvoltare și la această etapă nu oferă tot din ce e posibil.", IDC_EXPLANATION, 7, 7, 210, 31
GROUPBOX "Modul de compatibilitate", IDC_COMPATGROUP, 7, 41, 210, 49
CHECKBOX "Lansați acest program în modul de compatibilitate pentru:", IDC_CHKRUNCOMPATIBILITY, 18, 57, 188, 10, BS_AUTOCHECKBOX | WS_TABSTOP
COMBOBOX IDC_COMPATIBILITYMODE, 18, 70, 188, 85, CBS_HASSTRINGS | CBS_DROPDOWNLIST | WS_TABSTOP | WS_DISABLED
GROUPBOX "Configurația de afișare", -1, 7, 99, 210, 61, BS_GROUPBOX | WS_DISABLED
CHECKBOX "Lansează în 256 culori", IDC_CHKRUNIN256COLORS, 18, 114, 188, 10, BS_AUTOCHECKBOX | WS_TABSTOP | WS_DISABLED
CHECKBOX "Lansează în rezoluție de 640x480 pixeli", IDC_CHKRUNIN640480RES, 18, 129, 188, 10, BS_AUTOCHECKBOX | WS_TABSTOP | WS_DISABLED
CHECKBOX "Dezactivează temele vizuale", IDC_CHKDISABLEVISUALTHEMES, 18, 144, 188, 10, BS_AUTOCHECKBOX | WS_TABSTOP | WS_DISABLED
PUSHBUTTON "E&ditează modurile de compatibilitate…", IDC_EDITCOMPATIBILITYMODES, 117, 167, 100, 15
CONTROL "Aflați mai multe despre <A>compatibilitate de program</A>.", IDC_INFOLINK, "SysLink", WS_CHILD | WS_TABSTOP | WS_VISIBLE, 7, 207, 210, 10, WS_EX_NOPARENTNOTIFY
END
IDD_EDITCOMPATIBILITYMODES DIALOGEX 0, 0, 230, 139
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Modurile de compatibilitate"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
EDITTEXT IDC_NEWCOMPATIBILITYMODE, 9, 6, 148, 14, ES_AUTOHSCROLL
LISTBOX IDC_COMPATIBILITYMODE, 9, 25, 148, 86, LBS_NOTIFY | LBS_NOINTEGRALHEIGHT | LBS_WANTKEYBOARDINPUT | WS_BORDER
PUSHBUTTON "&Adăugare…", IDC_ADD, 162, 6, 60, 14, WS_DISABLED
PUSHBUTTON "E&ditare…", IDC_EDIT, 162, 24, 60, 14, WS_DISABLED
PUSHBUTTON "&Elimnă", IDC_DELETE, 162, 42, 60, 14, WS_DISABLED
PUSHBUTTON "Con&firmă", IDOK, 95, 116, 60, 14
PUSHBUTTON "A&nulează", IDCANCEL, 162, 116, 60, 14
END
STRINGTABLE
BEGIN
IDS_TABTITLE "Compatibilitate"
IDS_FAILED_NETWORK "Modurile de compatibilitate nu pot fi instituite pentru acest program deoarece rezidă pe o unitate de stocare în rețea."
IDS_FAILED_PROTECTED "Modurile de compatibilitate nu pot fi instituite pentru acest program deoarece este parte din ReactOS."
END

View File

@@ -1,42 +0,0 @@
/* TRANSLATOR: 2016 Erdem Ersoy (eersoy93) (erdemersoy@live.com) */
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
IDD_ACPPAGESHEET DIALOGEX 0, 0, 224, 226
STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Uyumluluk"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "ReactOS'ta bu izlenceyi çalıştırırken sorunlarınız oluyorsa ReactOS'un uygulamaya bildireceği bir işletim dizgesi seçiniz.\nBunun gelişmekte olan bir iş olduğunu unutmayınız, ve bu aşamada hiçbir şey yapmayacaktır.", IDC_EXPLANATION, 7, 7, 210, 31
GROUPBOX "Uyumluluk Kipi", IDC_COMPATGROUP, 7, 41, 210, 49
CHECKBOX "Bu izlenceyi şu uyumluluk kipinde çalıştır:", IDC_CHKRUNCOMPATIBILITY, 18, 57, 188, 10, BS_AUTOCHECKBOX | WS_TABSTOP
COMBOBOX IDC_COMPATIBILITYMODE, 18, 70, 188, 85, CBS_HASSTRINGS | CBS_DROPDOWNLIST | WS_TABSTOP | WS_DISABLED
GROUPBOX "Görüntü Ayarları", -1, 7, 99, 210, 61, BS_GROUPBOX | WS_DISABLED
CHECKBOX "256 Renkte Çalıştır", IDC_CHKRUNIN256COLORS, 18, 114, 188, 10, BS_AUTOCHECKBOX | WS_TABSTOP | WS_DISABLED
CHECKBOX "640x480 Görüntülük Çözünürlüğünde Çalıştır", IDC_CHKRUNIN640480RES, 18, 129, 188, 10, BS_AUTOCHECKBOX | WS_TABSTOP | WS_DISABLED
CHECKBOX "Görmelik Temaları Edilginleştir", IDC_CHKDISABLEVISUALTHEMES, 18, 144, 188, 10, BS_AUTOCHECKBOX | WS_TABSTOP | WS_DISABLED
PUSHBUTTON "&Uyumluluk Kiplerini Düzenle...", IDC_EDITCOMPATIBILITYMODES, 117, 167, 100, 15
CONTROL "<A>İzlence uyumluluğu</A> konusunda daha çok öğren.", IDC_INFOLINK, "SysLink", WS_CHILD | WS_TABSTOP | WS_VISIBLE, 7, 207, 210, 10, WS_EX_NOPARENTNOTIFY
END
IDD_EDITCOMPATIBILITYMODES DIALOGEX 0, 0, 230, 139
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Uyumluluk Kiplerini Düzenle"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
EDITTEXT IDC_NEWCOMPATIBILITYMODE, 9, 6, 148, 14, ES_AUTOHSCROLL
LISTBOX IDC_COMPATIBILITYMODE, 9, 25, 148, 86, LBS_NOTIFY | LBS_NOINTEGRALHEIGHT | LBS_WANTKEYBOARDINPUT | WS_BORDER
PUSHBUTTON "&Ekle...", IDC_ADD, 162, 6, 60, 14, WS_DISABLED
PUSHBUTTON "&Düzenle...", IDC_EDIT, 162, 24, 60, 14, WS_DISABLED
PUSHBUTTON "&Sil", IDC_DELETE, 162, 42, 60, 14, WS_DISABLED
PUSHBUTTON "Tamam", IDOK, 95, 116, 60, 14
PUSHBUTTON "İptal", IDCANCEL, 162, 116, 60, 14
END
STRINGTABLE
BEGIN
IDS_TABTITLE "Uyumluluk"
IDS_FAILED_NETWORK "Bir ağ sürücüsü üzerinde olduğundan bu izlencede uyumluluk kipleri ayarlanamaz."
IDS_FAILED_PROTECTED "ReactOS'un bir parçası olduğundan bu izlencede uyumluluk kipleri ayarlanamaz."
END

View File

@@ -621,7 +621,7 @@ int COMDLG32_SplitFileNames(LPWSTR lpstrEdit, UINT nStrLen, LPWSTR *lpstrFileLis
if ( lpstrEdit[nStrCharCount]=='"' )
{
nStrCharCount++;
while ((nStrCharCount <= nStrLen) && (lpstrEdit[nStrCharCount]!='"'))
while ((lpstrEdit[nStrCharCount]!='"') && (nStrCharCount <= nStrLen))
{
(*lpstrFileList)[nFileIndex++] = lpstrEdit[nStrCharCount];
nStrCharCount++;

View File

@@ -140,7 +140,7 @@ STRINGTABLE
IDS_SAVE_AS "Păstrare în:"
IDS_OPEN_FILE "Deschidere fișier"
IDS_SELECT_FOLDER "Selecează dosar"
IDS_FONT_SIZE_INPUT "Dimensiunea fontului trebuie să fie un număr."
IDS_FONT_SIZE_INPUT "Font size has to be a number."
}
/*

View File

@@ -17,7 +17,7 @@ int note( char *format, ... ) {
ret = _vsnprintf( buf, sizeof(buf), format, arg_begin );
va_end( arg_begin );
va_end( format );
DPRINT("NOTE: %s\n", buf);
@@ -32,7 +32,7 @@ int debug( char *format, ... ) {
ret = _vsnprintf( buf, sizeof(buf), format, arg_begin );
va_end( arg_begin );
va_end( format );
DPRINT("DEBUG: %s\n", buf);
@@ -47,7 +47,7 @@ int warn( char *format, ... ) {
ret = _vsnprintf( buf, sizeof(buf), format, arg_begin );
va_end( arg_begin );
va_end( format );
DPRINT("WARN: %s\n", buf);
@@ -62,7 +62,7 @@ int warning( char *format, ... ) {
ret = _vsnprintf( buf, sizeof(buf), format, arg_begin );
va_end( arg_begin );
va_end( format );
DPRINT("WARNING: %s\n", buf);
@@ -76,7 +76,7 @@ void error( char *format, ... ) {
_vsnprintf( buf, sizeof(buf), format, arg_begin );
va_end( arg_begin );
va_end( format );
DPRINT1("ERROR: %s\n", buf);
}

View File

@@ -17,9 +17,6 @@ IDI_ICON ICON "res/setup.ico"
#ifdef LANGUAGE_EN_US
#include "lang/en-US.rc"
#endif
#ifdef LANGUAGE_RO_RO
#include "lang/ro-RO.rc"
#endif
#ifdef LANGUAGE_TR_TR
#include "lang/tr-TR.rc"
#endif

View File

@@ -1,27 +0,0 @@
LANGUAGE LANG_ROMANIAN, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_INVALIDFORMAT "Formatul %1 RunEx sau RunOnceEx a fost nevalid. După numele funcției este necesar caracterul bară-verticală („|”) iar funcția trebuie să accepte parametri WinMain()."
IDS_LOADERROR "A survenit o eroare la încărcarea %1. Se poate ca fișierul să nu fi fost instalat sau să fie corupt."
IDS_CALLERROR "A survenit o eroare sau excepție în apelul funcției %1 în %2."
IDS_INCORRECTFORMAT "Formatul comenzii RunEx sau RunOnceEx nu este corect: %1. Comanda de execuție trebuie să înceapă cu „||”."
IDS_NOEXPORT "Nu se poate apela funcția %1 în fișierul %2 deoarece funcția nu există sau nu este exportată."
IDS_EXECUTEERROR "A survenit o eroare sau excepție în execuția %1."
IDS_NOFUNCTION "Nu se poate găsi funcția %1 în fișierul %2."
IDS_NODEPENDENCY "Nu se poate încărca fișierul dependență %1."
IDS_SETUPERROR "A survenit o eroare la configurarea %1. Această eroare a fost înregistrată, instalarea va continua"
IDS_INCOMPLETE "Instalarea precedentă a aplicației nu a fost completă.\n\nAutentificați-vă cu un cont de Administrator pentru a completa instalarea."
IDS_SETUP "Instalare ReactOS"
IDS_SERVICEERROR "Unele servicii nu au fost pornite. Instalarea necesită repornirea sistemului pentru a porni serviciile."
END
IDD_DIALOG DIALOGEX 0, 0, 206, 166
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_POPUP | WS_VISIBLE | WS_CAPTION
CAPTION "Instalare ReactOS"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Se instalează următoarele elemente ale ReactOS:", -1, 36, 13, 163, 11
LISTBOX IDC_LB_ITEMS, 36, 32, 163, 127, LBS_NOTIFY | LBS_OWNERDRAWVARIABLE | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_CHILD | WS_VISIBLE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP
ICON IDI_ICON, -1, 7, 7, 20, 20
END

View File

@@ -4,7 +4,7 @@ LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_INVALIDFORMAT "%1 RunEx veyâ RunOnceEx girişinin biçimi geçersiz oldu. WinMain() değişkenlerini desteklemek için fonksiyondan ve fonksiyon adından sonra dikey bir çubuk (|) gereklidir."
IDS_INVALIDFORMAT "%1 RunEx veyâ RunOnceEx girişinin biçimi geçersiz oldu. WinMain() değişkenlerini desteklemek için işleçten ve işleç adından sonra dikey bir çubuk (|) gereklidir."
IDS_LOADERROR "%1 yüklemede bir sorun oluştu. Kütük, kurulu olmayabilir ya da bozulmuş olabilir."
IDS_CALLERROR "%2 içinde %1 işlecini çağırırken bir yanlışlık ya da ayrıklık oluştu."
IDS_INCORRECTFORMAT "Aşağıdaki RunEx ya da RunOnceEx komutunun biçimi yanlış: %1. Kabuk çalıştırma komutu || ile başlamalıdır."

View File

@@ -155,7 +155,7 @@ static NTSTATUS getInterfaceInfoSet( HANDLE tcpFile,
IFInfo **infoSet,
PDWORD numInterfaces ) {
DWORD numEntities;
TDIEntityID *entIDSet = NULL;
TDIEntityID *entIDSet = 0;
NTSTATUS status = tdiGetEntityIDSet( tcpFile, &entIDSet, &numEntities );
IFInfo *infoSetInt = 0;
int curInterf = 0, i;
@@ -187,7 +187,7 @@ static NTSTATUS getInterfaceInfoSet( HANDLE tcpFile,
if( NT_SUCCESS(status) )
status = tdiGetIpAddrsForIpEntity
( tcpFile, &ip_ent, &addrs, &numAddrs );
for( j = 0; NT_SUCCESS(status) && j < numAddrs; j++ ) {
for( j = 0; j < numAddrs && NT_SUCCESS(status); j++ ) {
TRACE("ADDR %d: index %d (target %d)\n", j, addrs[j].iae_index, infoSetInt[curInterf].if_info.ent.if_index);
if( addrs[j].iae_index ==
infoSetInt[curInterf].if_info.ent.if_index ) {
@@ -198,8 +198,6 @@ static NTSTATUS getInterfaceInfoSet( HANDLE tcpFile,
break;
}
}
if ( NT_SUCCESS(status) )
tdiFreeThingSet(addrs);
}
}
}
@@ -215,7 +213,6 @@ static NTSTATUS getInterfaceInfoSet( HANDLE tcpFile,
return status;
} else {
tdiFreeThingSet(entIDSet);
return STATUS_INSUFFICIENT_RESOURCES;
}
}

View File

@@ -1163,7 +1163,7 @@ NetLocalGroupEnum(
// }
done:
if (ApiStatus == NERR_Success && EnumContext != NULL && EnumContext->Phase != DonePhase)
if (ApiStatus == NERR_Success && EnumContext->Phase != DonePhase)
ApiStatus = ERROR_MORE_DATA;
if (EnumContext != NULL)

View File

@@ -2554,7 +2554,7 @@ NetUserEnum(LPCWSTR servername,
// }
done:
if (ApiStatus == NERR_Success && EnumContext != NULL && EnumContext->Index < EnumContext->Count)
if (ApiStatus == NERR_Success && EnumContext->Index < EnumContext->Count)
ApiStatus = ERROR_MORE_DATA;
if (EnumContext != NULL)

View File

@@ -1790,7 +1790,7 @@ CDefaultContextMenu::GetCommandString(
if (g_StaticInvokeCmdMap[i].IntVerb == idCommand)
{
/* Validation just returns S_OK on a match */
if (uFlags == GCS_VALIDATEA || uFlags == GCS_VALIDATEW)
if (uFlags == GCS_VALIDATEA || uFlags == GCS_VALIDATEA)
return S_OK;
/* Return a copy of the ANSI verb */

View File

@@ -2,7 +2,6 @@ PROJECT(SHELL)
add_subdirectory(shelldesktop)
add_subdirectory(shellmenu)
add_subdirectory(shellrecyclebin)
set_cpp(WITH_RUNTIME)
spec2def(shell32.dll shell32.spec ADD_IMPORTLIB)
@@ -20,6 +19,7 @@ add_definitions(
-D_WINE)
include_directories(
${REACTOS_SOURCE_DIR}/sdk/lib/recyclebin
${REACTOS_SOURCE_DIR}/sdk/lib/atl
${REACTOS_SOURCE_DIR})
@@ -71,10 +71,6 @@ list(APPEND SOURCE
CFolderItemVerbs.cpp
precomp.h)
file(GLOB_RECURSE shell32_rc_deps res/*.*)
list(APPEND shell32_rc_deps ${CMAKE_CURRENT_BINARY_DIR}/shell32_shldisp.tlb)
add_rc_deps(shell32.rc ${shell32_rc_deps})
add_library(shell32 SHARED
${SOURCE}
wine/brsfolder.c

View File

@@ -2231,25 +2231,33 @@ HRESULT WINAPI CShellLink::Drop(IDataObject *pDataObject,
/**************************************************************************
* IShellLink_ConstructFromFile
*/
HRESULT WINAPI IShellLink_ConstructFromPath(WCHAR *path, REFIID riid, LPVOID *ppv)
HRESULT WINAPI IShellLink_ConstructFromFile(IUnknown *pUnkOuter, REFIID riid, LPCITEMIDLIST pidl, LPVOID *ppv)
{
CComPtr<IUnknown> psl;
HRESULT hr = CShellLink::_CreatorClass::CreateInstance(NULL, riid, (void**)&psl);
if (SUCCEEDED(hr))
{
CComPtr<IPersistFile> ppf;
HRESULT hr = CShellLink::_CreatorClass::CreateInstance(NULL, IID_PPV_ARG(IPersistFile, &ppf));
if (FAILED(hr))
return hr;
hr = ppf->Load(path, 0);
if (FAILED(hr))
return hr;
*ppv = NULL;
return ppf->QueryInterface(riid, ppv);
}
hr = psl->QueryInterface(IID_PPV_ARG(IPersistFile, &ppf));
HRESULT WINAPI IShellLink_ConstructFromFile(IShellFolder * psf, LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv)
if (SUCCEEDED(hr))
{
WCHAR path[MAX_PATH];
if (!ILGetDisplayNameExW(psf, pidl, path, 0))
return E_FAIL;
return IShellLink_ConstructFromPath(path, riid, ppv);
if (SHGetPathFromIDListW(pidl, path))
hr = ppf->Load(path, 0);
else
hr = E_FAIL;
if (SUCCEEDED(hr))
*ppv = psl.Detach();
}
}
return hr;
}

View File

@@ -37,7 +37,6 @@ typedef struct
WCHAR FileExtension[30];
WCHAR FileDescription[100];
WCHAR ClassKey[MAX_PATH];
DWORD EditFlags;
} FOLDER_FILE_TYPE_ENTRY, *PFOLDER_FILE_TYPE_ENTRY;
typedef struct
@@ -212,7 +211,6 @@ InsertFileType(HWND hDlgCtrl, WCHAR * szName, PINT iItem, WCHAR * szFile)
HKEY hKey;
LVITEMW lvItem;
DWORD dwSize;
DWORD dwType;
if (szName[0] != L'.')
{
@@ -266,24 +264,9 @@ InsertFileType(HWND hDlgCtrl, WCHAR * szName, PINT iItem, WCHAR * szFile)
RegQueryValueExW(hKey, NULL, NULL, NULL, (LPBYTE)Entry->FileDescription, &dwSize);
}
/* Read the EditFlags value */
Entry->EditFlags = 0;
if (!RegQueryValueExW(hKey, L"EditFlags", NULL, &dwType, NULL, &dwSize))
{
if ((dwType == REG_DWORD || dwType == REG_BINARY) && dwSize == sizeof(DWORD))
RegQueryValueExW(hKey, L"EditFlags", NULL, NULL, (LPBYTE)&Entry->EditFlags, &dwSize);
}
/* close key */
RegCloseKey(hKey);
/* Do not add excluded entries */
if (Entry->EditFlags & 0x00000001) //FTA_Exclude
{
HeapFree(GetProcessHeap(), 0, Entry);
return;
}
/* convert extension to upper case */
wcscpy(Entry->FileExtension, szName);
_wcsupr(Entry->FileExtension);
@@ -309,8 +292,8 @@ InsertFileType(HWND hDlgCtrl, WCHAR * szName, PINT iItem, WCHAR * szFile)
lvItem.pszText = Entry->FileDescription;
lvItem.iItem = *iItem;
lvItem.iSubItem = 1;
ListView_SetItem(hDlgCtrl, &lvItem);
(void)SendMessageW(hDlgCtrl, LVM_SETITEMW, 0, (LPARAM)&lvItem);
(*iItem)++;
}
@@ -320,20 +303,15 @@ CALLBACK
ListViewCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
PFOLDER_FILE_TYPE_ENTRY Entry1, Entry2;
int x;
Entry1 = (PFOLDER_FILE_TYPE_ENTRY)lParam1;
Entry2 = (PFOLDER_FILE_TYPE_ENTRY)lParam2;
x = wcsicmp(Entry1->FileExtension, Entry2->FileExtension);
if (x != 0)
return x;
return wcsicmp(Entry1->FileDescription, Entry2->FileDescription);
return wcsicmp(Entry1->FileExtension, Entry2->FileExtension);
}
static
PFOLDER_FILE_TYPE_ENTRY
BOOL
InitializeFileTypesListCtrl(HWND hwndDlg)
{
HWND hDlgCtrl;
@@ -363,10 +341,6 @@ InitializeFileTypesListCtrl(HWND hwndDlg)
dwName = _countof(szName);
}
/* Leave if the list is empty */
if (iItem == 0)
return NULL;
/* sort list */
ListView_SortItems(hDlgCtrl, ListViewCompareProc, NULL);
@@ -376,12 +350,9 @@ InitializeFileTypesListCtrl(HWND hwndDlg)
lvItem.stateMask = (UINT) - 1;
lvItem.state = LVIS_FOCUSED | LVIS_SELECTED;
lvItem.iItem = 0;
ListView_SetItem(hDlgCtrl, &lvItem);
(void)SendMessageW(hDlgCtrl, LVM_SETITEMW, 0, (LPARAM)&lvItem);
lvItem.mask = LVIF_PARAM;
ListView_GetItem(hDlgCtrl, &lvItem);
return (PFOLDER_FILE_TYPE_ENTRY)lvItem.lParam;
return TRUE;
}
static
@@ -417,7 +388,8 @@ FolderOptionsFileTypesDlg(
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
LPARAM lParam
)
{
LPNMLISTVIEW lppl;
LVITEMW lvItem;
@@ -428,14 +400,8 @@ FolderOptionsFileTypesDlg(
switch(uMsg)
{
case WM_INITDIALOG:
pItem = InitializeFileTypesListCtrl(hwndDlg);
/* Disable the Delete button if the listview is empty or
the selected item should not be deleted by the user */
if (pItem == NULL || (pItem->EditFlags & 0x00000010)) // FTA_NoRemove
EnableWindow(GetDlgItem(hwndDlg, 14002), FALSE);
InitializeFileTypesListCtrl(hwndDlg);
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
@@ -449,8 +415,8 @@ FolderOptionsFileTypesDlg(
}
break;
}
break;
break;
case WM_NOTIFY:
lppl = (LPNMLISTVIEW) lParam;
@@ -489,19 +455,8 @@ FolderOptionsFileTypesDlg(
swprintf(Buffer, FormatBuffer, &pItem->FileExtension[1], &pItem->FileDescription[0], &pItem->FileDescription[0]);
/* update dialog */
SetDlgItemTextW(hwndDlg, 14007, Buffer);
/* Enable the Delete button */
if (pItem->EditFlags & 0x00000010) // FTA_NoRemove
EnableWindow(GetDlgItem(hwndDlg, 14002), FALSE);
else
EnableWindow(GetDlgItem(hwndDlg, 14002), TRUE);
}
}
else if (lppl->hdr.code == PSN_SETACTIVE)
{
/* On page activation, set the focus to the listview */
SetFocus(GetDlgItem(hwndDlg, 14000));
}
break;
}

View File

@@ -24,7 +24,7 @@ WCHAR swShell32Name[MAX_PATH];
DWORD NumIconOverlayHandlers = 0;
IShellIconOverlayIdentifier ** Handlers = NULL;
static HRESULT getIconLocationForFolder(IShellFolder * psf, LPCITEMIDLIST pidl, UINT uFlags,
static HRESULT getIconLocationForFolder(LPCITEMIDLIST pidl, UINT uFlags,
LPWSTR szIconFile, UINT cchMax, int *piIndex, UINT *pwFlags)
{
static const WCHAR shellClassInfo[] = { '.', 'S', 'h', 'e', 'l', 'l', 'C', 'l', 'a', 's', 's', 'I', 'n', 'f', 'o', 0 };
@@ -39,7 +39,7 @@ static HRESULT getIconLocationForFolder(IShellFolder * psf, LPCITEMIDLIST pidl,
{
WCHAR wszFolderPath[MAX_PATH];
if (!ILGetDisplayNameExW(psf, pidl, wszFolderPath, 0))
if (!SHGetPathFromIDListW(pidl, wszFolderPath))
return FALSE;
PathAppendW(wszFolderPath, wszDesktopIni);
@@ -192,20 +192,28 @@ GetIconOverlay(LPCITEMIDLIST pidl, WCHAR * wTemp, int* pIndex)
return FALSE;
}
HRESULT GenericExtractIcon_CreateInstance(IShellFolder * psf, LPCITEMIDLIST pidl, REFIID iid, LPVOID * ppvOut)
/**************************************************************************
* IExtractIconW_Constructor
*/
IExtractIconW* IExtractIconW_Constructor(LPCITEMIDLIST pidl)
{
CComPtr<IDefaultExtractIconInit> initIcon;
CComPtr<IExtractIconW> extractIcon;
GUID const * riid;
int icon_idx;
UINT flags;
CHAR sTemp[MAX_PATH];
WCHAR wTemp[MAX_PATH];
LPCITEMIDLIST pSimplePidl = pidl;
LPITEMIDLIST pSimplePidl = ILFindLastID(pidl);
HRESULT hr;
hr = SHCreateDefaultExtractIcon(IID_PPV_ARG(IDefaultExtractIconInit,&initIcon));
if (FAILED(hr))
return hr;
return NULL;
hr = initIcon->QueryInterface(IID_PPV_ARG(IExtractIconW,&extractIcon));
if (FAILED(hr))
return NULL;
if (_ILIsDesktop(pSimplePidl))
{
@@ -313,7 +321,7 @@ HRESULT GenericExtractIcon_CreateInstance(IShellFolder * psf, LPCITEMIDLIST pidl
else if (_ILIsFolder (pSimplePidl))
{
if (SUCCEEDED(getIconLocationForFolder(psf,
if (SUCCEEDED(getIconLocationForFolder(
pidl, 0, wTemp, MAX_PATH,
&icon_idx,
&flags)))
@@ -324,21 +332,21 @@ HRESULT GenericExtractIcon_CreateInstance(IShellFolder * psf, LPCITEMIDLIST pidl
// the following line removed.
initIcon->SetShortcutIcon(wTemp, icon_idx);
}
if (SUCCEEDED(getIconLocationForFolder(psf,
if (SUCCEEDED(getIconLocationForFolder(
pidl, GIL_DEFAULTICON, wTemp, MAX_PATH,
&icon_idx,
&flags)))
{
initIcon->SetDefaultIcon(wTemp, icon_idx);
}
// if (SUCCEEDED(getIconLocationForFolder(psf,
// if (SUCCEEDED(getIconLocationForFolder(
// pidl, GIL_FORSHORTCUT, wTemp, MAX_PATH,
// &icon_idx,
// &flags)))
// {
// initIcon->SetShortcutIcon(wTemp, icon_idx);
// }
if (SUCCEEDED(getIconLocationForFolder(psf,
if (SUCCEEDED(getIconLocationForFolder(
pidl, GIL_OPENICON, wTemp, MAX_PATH,
&icon_idx,
&flags)))
@@ -350,14 +358,19 @@ HRESULT GenericExtractIcon_CreateInstance(IShellFolder * psf, LPCITEMIDLIST pidl
{
BOOL found = FALSE;
if (_ILGetExtension(pSimplePidl, sTemp, MAX_PATH))
if (_ILIsCPanelStruct(pSimplePidl))
{
if (SUCCEEDED(CPanel_GetIconLocationW(pSimplePidl, wTemp, MAX_PATH, &icon_idx)))
found = TRUE;
}
else if (_ILGetExtension(pSimplePidl, sTemp, MAX_PATH))
{
if (HCR_MapTypeToValueA(sTemp, sTemp, MAX_PATH, TRUE)
&& HCR_GetIconA(sTemp, sTemp, NULL, MAX_PATH, &icon_idx))
{
if (!lstrcmpA("%1", sTemp)) /* icon is in the file */
{
ILGetDisplayNameExW(psf, pidl, wTemp, 0);
SHGetPathFromIDListW(pidl, wTemp);
icon_idx = 0;
}
else
@@ -370,9 +383,12 @@ HRESULT GenericExtractIcon_CreateInstance(IShellFolder * psf, LPCITEMIDLIST pidl
else if (!lstrcmpiA(sTemp, "lnkfile"))
{
/* extract icon from shell shortcut */
CComPtr<IShellFolder> dsf;
CComPtr<IShellLinkW> psl;
HRESULT hr = psf->GetUIObjectOf(NULL, 1, &pidl, IID_NULL_PPV_ARG(IShellLinkW, &psl));
if (SUCCEEDED(SHGetDesktopFolder(&dsf)))
{
HRESULT hr = dsf->GetUIObjectOf(NULL, 1, (LPCITEMIDLIST*) &pidl, IID_NULL_PPV_ARG(IShellLinkW, &psl));
if (SUCCEEDED(hr))
{
@@ -384,6 +400,7 @@ HRESULT GenericExtractIcon_CreateInstance(IShellFolder * psf, LPCITEMIDLIST pidl
}
}
}
}
if (!found)
/* default icon */
@@ -392,5 +409,24 @@ HRESULT GenericExtractIcon_CreateInstance(IShellFolder * psf, LPCITEMIDLIST pidl
initIcon->SetNormalIcon(wTemp, icon_idx);
}
return initIcon->QueryInterface(iid, ppvOut);
return extractIcon.Detach();
}
/**************************************************************************
* IExtractIconA_Constructor
*/
IExtractIconA* IExtractIconA_Constructor(LPCITEMIDLIST pidl)
{
CComPtr<IExtractIconW> extractIconW;
CComPtr<IExtractIconA> extractIconA;
HRESULT hr;
extractIconW = IExtractIconW_Constructor(pidl);
if (!extractIconW)
return NULL;
hr = extractIconW->QueryInterface(IID_PPV_ARG(IExtractIconA, &extractIconA));
if (FAILED(hr))
return NULL;
return extractIconA.Detach();
}

View File

@@ -125,24 +125,6 @@ static PIDLCPanelStruct *_ILGetCPanelPointer(LPCITEMIDLIST pidl)
return NULL;
}
HRESULT CCPLExtractIcon_CreateInstance(IShellFolder * psf, LPCITEMIDLIST pidl, REFIID riid, LPVOID * ppvOut)
{
PIDLCPanelStruct *pData = _ILGetCPanelPointer(pidl);
if (!pData)
{
return GenericExtractIcon_CreateInstance(psf, pidl, riid, ppvOut);
}
CComPtr<IDefaultExtractIconInit> initIcon;
HRESULT hr = SHCreateDefaultExtractIcon(IID_PPV_ARG(IDefaultExtractIconInit, &initIcon));
if (FAILED(hr))
return NULL;
initIcon->SetNormalIcon(pData->szName, (int)pData->iconIdx != -1 ? pData->iconIdx : 0);
return initIcon->QueryInterface(riid, ppvOut);
}
BOOL CControlPanelEnum::RegisterCPanelApp(LPCWSTR wpath)
{
CPlApplet* applet = Control_LoadApplet(0, wpath, NULL);
@@ -472,7 +454,8 @@ HRESULT WINAPI CControlPanelFolder::GetAttributesOf(UINT cidl, PCUITEMID_CHILD_A
HRESULT WINAPI CControlPanelFolder::GetUIObjectOf(HWND hwndOwner,
UINT cidl, PCUITEMID_CHILD_ARRAY apidl, REFIID riid, UINT * prgfInOut, LPVOID * ppvOut)
{
LPVOID pObj = NULL;
LPITEMIDLIST pidl;
IUnknown *pObj = NULL;
HRESULT hr = E_INVALIDARG;
TRACE("(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n",
@@ -499,8 +482,21 @@ HRESULT WINAPI CControlPanelFolder::GetUIObjectOf(HWND hwndOwner,
hr = CDefFolderMenu_Create2(pidlRoot, hwndOwner, cidl, apidl, (IShellFolder*)this, NULL, 0, NULL, (IContextMenu**)&pObj);
} else if (IsEqualIID(riid, IID_IDataObject) && (cidl >= 1)) {
hr = IDataObject_Constructor(hwndOwner, pidlRoot, apidl, cidl, (IDataObject **)&pObj);
} else if ((IsEqualIID(riid, IID_IExtractIconA) || IsEqualIID(riid, IID_IExtractIconW)) && (cidl == 1)) {
hr = CCPLExtractIcon_CreateInstance(this, apidl[0], riid, &pObj);
} else if (IsEqualIID(riid, IID_IExtractIconA) && (cidl == 1)) {
pidl = ILCombine(pidlRoot, apidl[0]);
pObj = IExtractIconA_Constructor(pidl);
SHFree(pidl);
hr = S_OK;
} else if (IsEqualIID(riid, IID_IExtractIconW) && (cidl == 1)) {
pidl = ILCombine(pidlRoot, apidl[0]);
pObj = IExtractIconW_Constructor(pidl);
SHFree(pidl);
hr = S_OK;
} else if ((IsEqualIID(riid, IID_IShellLinkW) || IsEqualIID(riid, IID_IShellLinkA))
&& (cidl == 1)) {
pidl = ILCombine(pidlRoot, apidl[0]);
hr = IShellLink_ConstructFromFile(NULL, riid, pidl, (LPVOID*)&pObj);
SHFree(pidl);
} else {
hr = E_NOINTERFACE;
}
@@ -673,6 +669,20 @@ HRESULT WINAPI CControlPanelFolder::GetCurFolder(LPITEMIDLIST * pidl)
return S_OK;
}
HRESULT CPanel_GetIconLocationW(LPCITEMIDLIST pidl, LPWSTR szIconFile, UINT cchMax, int* piIndex)
{
PIDLCPanelStruct* pcpanel = _ILGetCPanelPointer(pidl);
if (!pcpanel)
return E_INVALIDARG;
wcsncpy(szIconFile, pcpanel->szName, cchMax);
*piIndex = (int)pcpanel->iconIdx != -1 ? pcpanel->iconIdx : 0;
return S_OK;
}
CCPLItemMenu::CCPLItemMenu()
{
m_apidl = NULL;

View File

@@ -266,7 +266,7 @@ HRESULT WINAPI CDesktopFolder::FinalConstruct()
pidlRoot = _ILCreateDesktop();
/* Create the inner fs folder */
hr = SHCoCreateInstance(NULL, &CLSID_ShellFSFolder, NULL, IID_PPV_ARG(IShellFolder2, &m_DesktopFSFolder));
hr = SHCoCreateInstance(NULL, &CLSID_ShellFSFolder, NULL, IID_PPV_ARG(IShellFolder, &m_DesktopFSFolder));
if (FAILED(hr))
return hr;
@@ -280,7 +280,7 @@ HRESULT WINAPI CDesktopFolder::FinalConstruct()
hr = ppf3->InitializeEx(NULL, pidlRoot, &info);
/* Create the inner shared fs folder */
hr = SHCoCreateInstance(NULL, &CLSID_ShellFSFolder, NULL, IID_PPV_ARG(IShellFolder2, &m_SharedDesktopFSFolder));
hr = SHCoCreateInstance(NULL, &CLSID_ShellFSFolder, NULL, IID_PPV_ARG(IShellFolder, &m_SharedDesktopFSFolder));
if (FAILED(hr))
return hr;
@@ -299,23 +299,6 @@ HRESULT WINAPI CDesktopFolder::FinalConstruct()
return S_OK;
}
HRESULT CDesktopFolder::_GetSFFromPidl(LPCITEMIDLIST pidl, IShellFolder2** psf)
{
WCHAR szFileName[MAX_PATH];
lstrcpynW(szFileName, sPathTarget, MAX_PATH - 1);
PathAddBackslashW(szFileName);
int cLen = wcslen(szFileName);
if (!_ILSimpleGetTextW(pidl, szFileName + cLen, MAX_PATH - cLen))
return E_FAIL;
if (GetFileAttributes(szFileName) == INVALID_FILE_ATTRIBUTES)
return m_SharedDesktopFSFolder->QueryInterface(IID_PPV_ARG(IShellFolder2, psf));
else
return m_DesktopFSFolder->QueryInterface(IID_PPV_ARG(IShellFolder2, psf));
}
/**************************************************************************
* CDesktopFolder::ParseDisplayName
*
@@ -411,7 +394,14 @@ HRESULT WINAPI CDesktopFolder::ParseDisplayName(
{
if (pdwAttributes && *pdwAttributes)
{
GetAttributesOf(1, &pidlTemp, pdwAttributes);
if (_ILIsMyComputer(pidlTemp))
*pdwAttributes &= dwMyComputerAttributes;
else if (_ILIsNetHood(pidlTemp))
*pdwAttributes &= dwMyNetPlacesAttributes;
else if (_ILIsSpecialFolder(pidlTemp))
SHELL32_GetGuidItemAttributes(this, pidlTemp, pdwAttributes);
else if(_ILIsFolder(pidlTemp) || _ILIsValue(pidlTemp))
SHELL32_GetFSItemAttributes(this, pidlTemp, pdwAttributes);
}
}
}
@@ -443,18 +433,13 @@ HRESULT WINAPI CDesktopFolder::BindToObject(
REFIID riid,
LPVOID *ppvOut)
{
if (!pidl)
return E_INVALIDARG;
TRACE ("(%p)->(pidl=%p,%p,%s,%p)\n",
this, pidl, pbcReserved, shdebugstr_guid (&riid), ppvOut);
if (_ILIsSpecialFolder(pidl))
return SHELL32_BindToGuidItem(pidlRoot, pidl, pbcReserved, riid, ppvOut);
CComPtr<IShellFolder2> psf;
HRESULT hr = _GetSFFromPidl(pidl, &psf);
if (FAILED_UNEXPECTEDLY(hr))
return hr;
return psf->BindToObject(pidl, pbcReserved, riid, ppvOut);
return m_DesktopFSFolder->BindToObject(pidl, pbcReserved, riid, ppvOut );
}
/**************************************************************************
@@ -571,14 +556,7 @@ HRESULT WINAPI CDesktopFolder::GetAttributesOf(
else if (_ILIsSpecialFolder(apidl[i]))
SHELL32_GetGuidItemAttributes(this, apidl[i], rgfInOut);
else if(_ILIsFolder(apidl[i]) || _ILIsValue(apidl[i]))
{
CComPtr<IShellFolder2> psf;
HRESULT hr = _GetSFFromPidl(apidl[i], &psf);
if (FAILED_UNEXPECTEDLY(hr))
continue;
psf->GetAttributesOf(1, &apidl[i], rgfInOut);
}
SHELL32_GetFSItemAttributes(this, apidl[i], rgfInOut);
else
ERR("Got an unknown pidl type!!!\n");
}
@@ -611,7 +589,8 @@ HRESULT WINAPI CDesktopFolder::GetUIObjectOf(
UINT *prgfInOut,
LPVOID *ppvOut)
{
LPVOID pObj = NULL;
LPITEMIDLIST pidl;
IUnknown *pObj = NULL;
HRESULT hr = E_INVALIDARG;
TRACE ("(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n",
@@ -622,16 +601,6 @@ HRESULT WINAPI CDesktopFolder::GetUIObjectOf(
*ppvOut = NULL;
if (cidl == 1 && !_ILIsSpecialFolder(apidl[0]))
{
CComPtr<IShellFolder2> psf;
HRESULT hr = _GetSFFromPidl(apidl[0], &psf);
if (FAILED_UNEXPECTEDLY(hr))
return hr;
return psf->GetUIObjectOf(hwndOwner, cidl, apidl, riid, prgfInOut, ppvOut);
}
if (IsEqualIID (riid, IID_IContextMenu))
{
hr = CDefFolderMenu_Create2(pidlRoot, hwndOwner, cidl, apidl, (IShellFolder *)this, NULL, 0, NULL, (IContextMenu **)&pObj);
@@ -640,9 +609,34 @@ HRESULT WINAPI CDesktopFolder::GetUIObjectOf(
{
hr = IDataObject_Constructor( hwndOwner, pidlRoot, apidl, cidl, (IDataObject **)&pObj);
}
else if ((IsEqualIID (riid, IID_IExtractIconA) || IsEqualIID (riid, IID_IExtractIconW)) && (cidl == 1))
else if (IsEqualIID (riid, IID_IExtractIconA) && (cidl == 1))
{
hr = GenericExtractIcon_CreateInstance(this, apidl[0], riid, &pObj);
pidl = ILCombine (pidlRoot, apidl[0]);
pObj = IExtractIconA_Constructor (pidl);
SHFree (pidl);
hr = S_OK;
}
else if (IsEqualIID (riid, IID_IExtractIconW) && (cidl == 1))
{
pidl = ILCombine (pidlRoot, apidl[0]);
pObj = IExtractIconW_Constructor (pidl);
SHFree (pidl);
hr = S_OK;
}
else if (IsEqualIID (riid, IID_IDropTarget))
{
/* only interested in attempting to bind to shell folders, not files, semicolon intentionate */
if (cidl > 1)
{
hr = this->_GetDropTarget(apidl[0], (LPVOID*) &pObj);
}
}
else if ((IsEqualIID(riid, IID_IShellLinkW) ||
IsEqualIID(riid, IID_IShellLinkA)) && (cidl == 1))
{
pidl = ILCombine (pidlRoot, apidl[0]);
hr = IShellLink_ConstructFromFile(NULL, riid, pidl, (LPVOID*)&pObj);
SHFree (pidl);
}
else
hr = E_NOINTERFACE;
@@ -663,6 +657,9 @@ HRESULT WINAPI CDesktopFolder::GetUIObjectOf(
*/
HRESULT WINAPI CDesktopFolder::GetDisplayNameOf(PCUITEMID_CHILD pidl, DWORD dwFlags, LPSTRRET strRet)
{
HRESULT hr = S_OK;
LPWSTR pszPath;
TRACE ("(%p)->(pidl=%p,0x%08x,%p)\n", this, pidl, dwFlags, strRet);
pdump (pidl);
@@ -677,21 +674,77 @@ HRESULT WINAPI CDesktopFolder::GetDisplayNameOf(PCUITEMID_CHILD pidl, DWORD dwFl
{
return SHELL32_GetDisplayNameOfGUIDItem(this, L"", pidl, dwFlags, strRet);
}
else if (_ILIsDesktop(pidl))
pszPath = (LPWSTR)CoTaskMemAlloc((MAX_PATH + 1) * sizeof(WCHAR));
if (!pszPath)
return E_OUTOFMEMORY;
if (_ILIsDesktop (pidl))
{
if ((GET_SHGDN_RELATION(dwFlags) == SHGDN_NORMAL) && (GET_SHGDN_FOR(dwFlags) & SHGDN_FORPARSING))
return SHSetStrRet(strRet, sPathTarget);
if ((GET_SHGDN_RELATION (dwFlags) == SHGDN_NORMAL) &&
(GET_SHGDN_FOR (dwFlags) & SHGDN_FORPARSING))
wcscpy(pszPath, sPathTarget);
else
return HCR_GetClassName(CLSID_ShellDesktop, strRet);
HCR_GetClassNameW(CLSID_ShellDesktop, pszPath, MAX_PATH);
}
else
{
int cLen = 0;
/* file system folder or file rooted at the desktop */
CComPtr<IShellFolder2> psf;
HRESULT hr = _GetSFFromPidl(pidl, &psf);
if (FAILED_UNEXPECTEDLY(hr))
return hr;
if ((GET_SHGDN_FOR(dwFlags) == SHGDN_FORPARSING) &&
(GET_SHGDN_RELATION(dwFlags) != SHGDN_INFOLDER))
{
lstrcpynW(pszPath, sPathTarget, MAX_PATH - 1);
PathAddBackslashW(pszPath);
cLen = wcslen(pszPath);
}
return psf->GetDisplayNameOf(pidl, dwFlags, strRet);
_ILSimpleGetTextW(pidl, pszPath + cLen, MAX_PATH - cLen);
if (!_ILIsFolder(pidl))
SHELL_FS_ProcessDisplayFilename(pszPath, dwFlags);
if (GetFileAttributes(pszPath) == INVALID_FILE_ATTRIBUTES)
{
/* file system folder or file rooted at the AllUsers desktop */
if ((GET_SHGDN_FOR(dwFlags) == SHGDN_FORPARSING) &&
(GET_SHGDN_RELATION(dwFlags) != SHGDN_INFOLDER))
{
SHGetSpecialFolderPathW(0, pszPath, CSIDL_COMMON_DESKTOPDIRECTORY, FALSE);
PathAddBackslashW(pszPath);
cLen = wcslen(pszPath);
}
_ILSimpleGetTextW(pidl, pszPath + cLen, MAX_PATH - cLen);
if (!_ILIsFolder(pidl))
SHELL_FS_ProcessDisplayFilename(pszPath, dwFlags);
}
}
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->cStr, MAX_PATH,
NULL, NULL))
strRet->cStr[0] = '\0';
CoTaskMemFree(pszPath);
}
else
{
strRet->uType = STRRET_WSTR;
strRet->pOleStr = pszPath;
}
}
else
CoTaskMemFree(pszPath);
TRACE ("-- (%p)->(%s,0x%08x)\n", this,
strRet->uType == STRRET_CSTR ? strRet->cStr :
debugstr_w(strRet->pOleStr), hr);
return hr;
}
/**************************************************************************
@@ -713,15 +766,65 @@ HRESULT WINAPI CDesktopFolder::SetNameOf(
DWORD dwFlags,
PITEMID_CHILD *pPidlOut)
{
CComPtr<IShellFolder2> psf;
HRESULT hr;
WCHAR szSrc[MAX_PATH + 1], szDest[MAX_PATH + 1];
LPWSTR ptr;
BOOL bIsFolder = _ILIsFolder (ILFindLastID (pidl));
TRACE ("(%p)->(%p,pidl=%p,%s,%u,%p)\n", this, hwndOwner, pidl,
debugstr_w (lpName), dwFlags, pPidlOut);
if (_ILGetGUIDPointer(pidl))
return SHELL32_SetNameOfGuidItem(pidl, lpName, dwFlags, pPidlOut);
CComPtr<IShellFolder2> psf;
HRESULT hr = _GetSFFromPidl(pidl, &psf);
if (FAILED_UNEXPECTEDLY(hr))
return hr;
/* build source path */
lstrcpynW(szSrc, sPathTarget, MAX_PATH);
ptr = PathAddBackslashW (szSrc);
if (ptr)
_ILSimpleGetTextW (pidl, ptr, MAX_PATH + 1 - (ptr - szSrc));
return psf->SetNameOf(hwndOwner, pidl, lpName, dwFlags, pPidlOut);
/* build destination path */
if (dwFlags == SHGDN_NORMAL || dwFlags & SHGDN_INFOLDER) {
lstrcpynW(szDest, sPathTarget, MAX_PATH);
ptr = PathAddBackslashW (szDest);
if (ptr)
lstrcpynW(ptr, lpName, MAX_PATH + 1 - (ptr - szDest));
} else
lstrcpynW(szDest, lpName, MAX_PATH);
if(!(dwFlags & SHGDN_FORPARSING) && SHELL_FS_HideExtension(szSrc)) {
WCHAR *ext = PathFindExtensionW(szSrc);
if(*ext != '\0') {
INT len = wcslen(szDest);
lstrcpynW(szDest + len, ext, MAX_PATH - len);
}
}
if (!memcmp(szSrc, szDest, (wcslen(szDest) + 1) * sizeof(WCHAR)))
{
/* src and destination is the same */
hr = S_OK;
if (pPidlOut)
hr = _ILCreateFromPathW(szDest, pPidlOut);
return hr;
}
TRACE ("src=%s dest=%s\n", debugstr_w(szSrc), debugstr_w(szDest));
if (MoveFileW (szSrc, szDest))
{
hr = S_OK;
if (pPidlOut)
hr = _ILCreateFromPathW(szDest, pPidlOut);
SHChangeNotify (bIsFolder ? SHCNE_RENAMEFOLDER : SHCNE_RENAMEITEM,
SHCNF_PATHW, szSrc, szDest);
return hr;
}
return E_FAIL;
}
HRESULT WINAPI CDesktopFolder::GetDefaultSearchGUID(GUID *pguid)
@@ -775,6 +878,10 @@ HRESULT WINAPI CDesktopFolder::GetDetailsOf(
UINT iColumn,
SHELLDETAILS *psd)
{
HRESULT hr = S_OK;
TRACE ("(%p)->(%p %i %p)\n", this, pidl, iColumn, psd);
if (!psd || iColumn >= DESKTOPSHELLVIEWCOLUMNS)
return E_INVALIDARG;
@@ -782,21 +889,37 @@ HRESULT WINAPI CDesktopFolder::GetDetailsOf(
{
psd->fmt = DesktopSFHeader[iColumn].fmt;
psd->cxChar = DesktopSFHeader[iColumn].cxChar;
return SHSetStrRet(&psd->str, DesktopSFHeader[iColumn].colnameid);
psd->str.uType = STRRET_CSTR;
LoadStringA (shell32_hInstance, DesktopSFHeader[iColumn].colnameid,
psd->str.cStr, MAX_PATH);
return S_OK;
}
else if (_ILIsSpecialFolder(pidl))
{
return SHELL32_GetDetailsOfGuidItem(this, pidl, iColumn, psd);
}
CComPtr<IShellFolder2> psf;
HRESULT hr = _GetSFFromPidl(pidl, &psf);
if (FAILED_UNEXPECTEDLY(hr))
return hr;
hr = psf->GetDetailsOf(pidl, iColumn, psd);
if (FAILED_UNEXPECTEDLY(hr))
return hr;
/* the data from the pidl */
psd->str.uType = STRRET_CSTR;
switch (iColumn)
{
case 0: /* name */
hr = GetDisplayNameOf(pidl,
SHGDN_NORMAL | SHGDN_INFOLDER, &psd->str);
break;
case 1: /* size */
_ILGetFileSize (pidl, psd->str.cStr, MAX_PATH);
break;
case 2: /* type */
_ILGetFileType (pidl, psd->str.cStr, MAX_PATH);
break;
case 3: /* date */
_ILGetFileDate (pidl, psd->str.cStr, MAX_PATH);
break;
case 4: /* attributes */
_ILGetFileAttributes (pidl, psd->str.cStr, MAX_PATH);
break;
}
return hr;
}
@@ -835,6 +958,54 @@ HRESULT WINAPI CDesktopFolder::GetCurFolder(LPITEMIDLIST * pidl)
return S_OK;
}
HRESULT WINAPI CDesktopFolder::_GetDropTarget(LPCITEMIDLIST pidl, LPVOID *ppvOut) {
HRESULT hr;
TRACE("CFSFolder::_GetDropTarget entered\n");
if (_ILGetGUIDPointer (pidl) || _ILIsFolder (pidl))
return this->BindToObject(pidl, NULL, IID_IDropTarget, ppvOut);
LPITEMIDLIST pidlNext = NULL;
STRRET strFile;
hr = this->GetDisplayNameOf(pidl, SHGDN_FORPARSING, &strFile);
if (SUCCEEDED(hr))
{
WCHAR wszPath[MAX_PATH];
hr = StrRetToBufW(&strFile, pidl, wszPath, _countof(wszPath));
if (SUCCEEDED(hr))
{
PathRemoveFileSpecW (wszPath);
hr = this->ParseDisplayName(NULL, NULL, wszPath, NULL, &pidlNext, NULL);
if (SUCCEEDED(hr))
{
CComPtr<IShellFolder> psf;
hr = this->BindToObject(pidlNext, NULL, IID_PPV_ARG(IShellFolder, &psf));
CoTaskMemFree(pidlNext);
if (SUCCEEDED(hr))
{
hr = psf->GetUIObjectOf(NULL, 1, &pidl, IID_IDropTarget, NULL, ppvOut);
if (FAILED(hr))
ERR("FS GetUIObjectOf failed: %x\n", hr);
}
else
ERR("BindToObject failed: %x\n", hr);
}
else
ERR("ParseDisplayName failed: %x\n", hr);
}
else
ERR("StrRetToBufW failed: %x\n", hr);
}
else
ERR("GetDisplayNameOf failed: %x\n", hr);
return hr;
}
/*************************************************************************
* SHGetDesktopFolder [SHELL32.@]
*/

View File

@@ -31,13 +31,13 @@ class CDesktopFolder :
{
private:
/* both paths are parsible from the desktop */
CComPtr<IShellFolder2> m_DesktopFSFolder;
CComPtr<IShellFolder2> m_SharedDesktopFSFolder;
CComPtr<IShellFolder> m_DesktopFSFolder;
CComPtr<IShellFolder> m_SharedDesktopFSFolder;
LPWSTR sPathTarget; /* complete path to target used for enumeration and ChangeNotify */
LPITEMIDLIST pidlRoot; /* absolute pidl */
HRESULT _GetSFFromPidl(LPCITEMIDLIST pidl, IShellFolder2** psf);
virtual HRESULT WINAPI _GetDropTarget(LPCITEMIDLIST pidl, LPVOID *ppvOut);
public:
CDesktopFolder();

View File

@@ -164,6 +164,7 @@ BOOL CDrivesFolderEnum::CreateMyCompEnumList(DWORD dwFlags)
CDrivesFolder::CDrivesFolder()
{
pidlRoot = NULL;
sName = NULL;
}
CDrivesFolder::~CDrivesFolder()
@@ -174,10 +175,26 @@ CDrivesFolder::~CDrivesFolder()
HRESULT WINAPI CDrivesFolder::FinalConstruct()
{
DWORD dwSize;
WCHAR szName[MAX_PATH];
WCHAR wszMyCompKey[256];
INT i;
pidlRoot = _ILCreateMyComputer(); /* my qualified pidl */
if (pidlRoot == NULL)
return E_OUTOFMEMORY;
i = swprintf(wszMyCompKey, L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CLSID\\");
StringFromGUID2(CLSID_MyComputer, wszMyCompKey + i, sizeof(wszMyCompKey) / sizeof(wszMyCompKey[0]) - i);
dwSize = sizeof(szName);
if (RegGetValueW(HKEY_CURRENT_USER, wszMyCompKey,
NULL, RRF_RT_REG_SZ, NULL, szName, &dwSize) == ERROR_SUCCESS)
{
sName = (LPWSTR)SHAlloc((wcslen(szName) + 1) * sizeof(WCHAR));
if (sName)
wcscpy(sName, szName);
TRACE("sName %s\n", debugstr_w(sName));
}
return S_OK;
}
@@ -189,6 +206,7 @@ HRESULT WINAPI CDrivesFolder::ParseDisplayName(HWND hwndOwner, LPBC pbc, LPOLEST
{
HRESULT hr = E_INVALIDARG;
LPCWSTR szNext = NULL;
WCHAR szElement[MAX_PATH];
LPITEMIDLIST pidlTemp = NULL;
TRACE("(%p)->(HWND=%p,%p,%p=%s,%p,pidl=%p,%p)\n", this,
@@ -201,18 +219,17 @@ HRESULT WINAPI CDrivesFolder::ParseDisplayName(HWND hwndOwner, LPBC pbc, LPOLEST
/* handle CLSID paths */
if (lpszDisplayName[0] == ':' && lpszDisplayName[1] == ':')
return SH_ParseGuidDisplayName(this, hwndOwner, pbc, lpszDisplayName, pchEaten, ppidl, pdwAttributes);
if (PathGetDriveNumberW(lpszDisplayName) < 0)
return E_INVALIDARG;
pidlTemp = _ILCreateDrive(lpszDisplayName);
if (!pidlTemp)
return E_OUTOFMEMORY;
if (lpszDisplayName[2] == L'\\')
{
szNext = &lpszDisplayName[3];
return SH_ParseGuidDisplayName(this, hwndOwner, pbc, lpszDisplayName, pchEaten, ppidl, pdwAttributes);
}
/* do we have an absolute path name ? */
else if (PathGetDriveNumberW (lpszDisplayName) >= 0 &&
lpszDisplayName[2] == (WCHAR) '\\')
{
szNext = GetNextElementW (lpszDisplayName, szElement, MAX_PATH);
/* make drive letter uppercase to enable PIDL comparison */
szElement[0] = toupper(szElement[0]);
pidlTemp = _ILCreateDrive (szElement);
}
if (szNext && *szNext)
@@ -435,7 +452,8 @@ HRESULT WINAPI CDrivesFolder::GetUIObjectOf(HWND hwndOwner,
UINT cidl, PCUITEMID_CHILD_ARRAY apidl,
REFIID riid, UINT *prgfInOut, LPVOID *ppvOut)
{
LPVOID pObj = NULL;
LPITEMIDLIST pidl;
IUnknown *pObj = NULL;
HRESULT hr = E_INVALIDARG;
TRACE("(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n", this,
@@ -455,9 +473,19 @@ HRESULT WINAPI CDrivesFolder::GetUIObjectOf(HWND hwndOwner,
hr = IDataObject_Constructor (hwndOwner,
pidlRoot, apidl, cidl, (IDataObject **)&pObj);
}
else if ((IsEqualIID (riid, IID_IExtractIconA) || IsEqualIID (riid, IID_IExtractIconW)) && (cidl == 1))
else if (IsEqualIID (riid, IID_IExtractIconA) && (cidl == 1))
{
hr = GenericExtractIcon_CreateInstance(this, apidl[0], riid, &pObj);
pidl = ILCombine (pidlRoot, apidl[0]);
pObj = IExtractIconA_Constructor (pidl);
SHFree (pidl);
hr = S_OK;
}
else if (IsEqualIID (riid, IID_IExtractIconW) && (cidl == 1))
{
pidl = ILCombine (pidlRoot, apidl[0]);
pObj = IExtractIconW_Constructor (pidl);
SHFree (pidl);
hr = S_OK;
}
else if (IsEqualIID (riid, IID_IDropTarget) && (cidl >= 1))
{
@@ -465,6 +493,13 @@ HRESULT WINAPI CDrivesFolder::GetUIObjectOf(HWND hwndOwner,
hr = this->QueryInterface(IID_PPV_ARG(IDropTarget, &pDt));
pObj = pDt;
}
else if ((IsEqualIID(riid, IID_IShellLinkW) ||
IsEqualIID(riid, IID_IShellLinkA)) && (cidl == 1))
{
pidl = ILCombine (pidlRoot, apidl[0]);
hr = IShellLink_ConstructFromFile(NULL, riid, pidl, (LPVOID*) &pObj);
SHFree (pidl);
}
else
hr = E_NOINTERFACE;
@@ -661,7 +696,10 @@ HRESULT WINAPI CDrivesFolder::GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, S
{
psd->fmt = MyComputerSFHeader[iColumn].fmt;
psd->cxChar = MyComputerSFHeader[iColumn].cxChar;
return SHSetStrRet(&psd->str, MyComputerSFHeader[iColumn].colnameid);
psd->str.uType = STRRET_CSTR;
LoadStringA(shell32_hInstance, MyComputerSFHeader[iColumn].colnameid,
psd->str.cStr, MAX_PATH);
return S_OK;
}
else if (_ILIsSpecialFolder(pidl))
{

View File

@@ -32,6 +32,7 @@ class CDrivesFolder :
private:
/* both paths are parsible from the desktop */
LPITEMIDLIST pidlRoot; /* absolute pidl */
LPWSTR sName;
public:
CDrivesFolder();
~CDrivesFolder();

View File

@@ -487,7 +487,8 @@ HRESULT WINAPI CFSFolder::GetUIObjectOf(HWND hwndOwner,
REFIID riid, UINT * prgfInOut,
LPVOID * ppvOut)
{
LPVOID pObj = NULL;
LPITEMIDLIST pidl;
IUnknown *pObj = NULL;
HRESULT hr = E_INVALIDARG;
TRACE ("(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n",
@@ -514,9 +515,19 @@ HRESULT WINAPI CFSFolder::GetUIObjectOf(HWND hwndOwner,
hr = IDataObject_Constructor (hwndOwner, pidlRoot, (LPCITEMIDLIST*)&pidlRoot, 1, (IDataObject **)&pObj);
}
}
else if ((IsEqualIID (riid, IID_IExtractIconA) || IsEqualIID (riid, IID_IExtractIconW)) && (cidl == 1))
else if (IsEqualIID (riid, IID_IExtractIconA) && (cidl == 1))
{
hr = GenericExtractIcon_CreateInstance(this, apidl[0], riid, &pObj);
pidl = ILCombine (pidlRoot, apidl[0]);
pObj = IExtractIconA_Constructor (pidl);
SHFree (pidl);
hr = S_OK;
}
else if (IsEqualIID (riid, IID_IExtractIconW) && (cidl == 1))
{
pidl = ILCombine (pidlRoot, apidl[0]);
pObj = IExtractIconW_Constructor (pidl);
SHFree (pidl);
hr = S_OK;
}
else if (IsEqualIID (riid, IID_IDropTarget))
{
@@ -531,7 +542,9 @@ HRESULT WINAPI CFSFolder::GetUIObjectOf(HWND hwndOwner,
else if ((IsEqualIID(riid, IID_IShellLinkW) ||
IsEqualIID(riid, IID_IShellLinkA)) && (cidl == 1))
{
hr = IShellLink_ConstructFromFile(this, apidl[0], riid, &pObj);
pidl = ILCombine (pidlRoot, apidl[0]);
hr = IShellLink_ConstructFromFile(NULL, riid, pidl, (LPVOID*)&pObj);
SHFree (pidl);
}
else
hr = E_NOINTERFACE;
@@ -800,7 +813,10 @@ HRESULT WINAPI CFSFolder::GetDetailsOf(PCUITEMID_CHILD pidl,
/* the header titles */
psd->fmt = GenericSFHeader[iColumn].fmt;
psd->cxChar = GenericSFHeader[iColumn].cxChar;
return SHSetStrRet(&psd->str, GenericSFHeader[iColumn].colnameid);
psd->str.uType = STRRET_CSTR;
LoadStringA(shell32_hInstance, GenericSFHeader[iColumn].colnameid,
psd->str.cStr, MAX_PATH);
return S_OK;
}
else
{
@@ -1423,7 +1439,7 @@ HRESULT WINAPI CFSFolder::_DoDrop(IDataObject *pDataObject,
hr = E_FAIL;
break;
}
hr = IShellLink_ConstructFromFile(this, apidl[i], IID_PPV_ARG(IPersistFile, &ppf));
hr = IShellLink_ConstructFromFile(NULL, IID_IPersistFile, ILCombine(pidl, apidl[i]), (LPVOID*)&ppf);
if (FAILED(hr)) {
ERR("Error constructing link from file");
break;
@@ -1585,7 +1601,7 @@ HRESULT WINAPI CFSFolder::_GetDropTarget(LPCITEMIDLIST pidl, LPVOID *ppvOut) {
TRACE("CFSFolder::_GetDropTarget entered\n");
if (_ILIsFolder (pidl))
if (_ILGetGUIDPointer (pidl) || _ILIsFolder (pidl))
return this->BindToObject(pidl, NULL, IID_IDropTarget, ppvOut);
STRRET strFile;

View File

@@ -465,14 +465,43 @@ HRESULT WINAPI CNetFolder::GetUIObjectOf(HWND hwndOwner, UINT cidl, PCUITEMID_CH
*/
HRESULT WINAPI CNetFolder::GetDisplayNameOf(PCUITEMID_CHILD pidl, DWORD dwFlags, LPSTRRET strRet)
{
LPWSTR pszName;
TRACE ("(%p)->(pidl=%p,0x%08lx,%p)\n", this, pidl, dwFlags, strRet);
pdump (pidl);
if (!strRet)
return E_INVALIDARG;
if (!pidl->mkid.cb)
return SHSetStrRet(strRet, IDS_NETWORKPLACE);
{
pszName = (LPWSTR)CoTaskMemAlloc(MAX_PATH * sizeof(WCHAR));
if (!pszName)
return E_OUTOFMEMORY;
if (LoadStringW(shell32_hInstance, IDS_NETWORKPLACE, pszName, MAX_PATH))
{
pszName[MAX_PATH-1] = L'\0';
strRet->uType = STRRET_WSTR;
strRet->pOleStr = pszName;
return S_OK;
}
CoTaskMemFree(pszName);
return E_FAIL;
}
#ifdef HACKY_UNC_PATHS
else
return SHSetStrRet(strRet, (LPCWSTR)pidl->mkid.abID);
{
LPCWSTR pstr = (LPCWSTR)pidl->mkid.abID;
pszName = (LPWSTR)CoTaskMemAlloc(MAX_PATH * sizeof(WCHAR));
if (!pszName)
return E_OUTOFMEMORY;
wcscpy(pszName, pstr);
strRet->pOleStr = pszName;
strRet->uType = STRRET_WSTR;
return S_OK;
}
#endif
return E_NOTIMPL;
}
@@ -539,13 +568,22 @@ HRESULT WINAPI CNetFolder::GetDetailsEx(PCUITEMID_CHILD pidl, const SHCOLUMNID *
HRESULT WINAPI CNetFolder::GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS *psd)
{
WCHAR buffer[MAX_PATH] = {0};
HRESULT hr = E_FAIL;
if (iColumn >= NETWORKPLACESSHELLVIEWCOLUMNS)
return E_FAIL;
psd->fmt = NetworkPlacesSFHeader[iColumn].fmt;
psd->cxChar = NetworkPlacesSFHeader[iColumn].cxChar;
if (pidl == NULL)
return SHSetStrRet(&psd->str, NetworkPlacesSFHeader[iColumn].colnameid);
{
psd->str.uType = STRRET_WSTR;
if (LoadStringW(shell32_hInstance, NetworkPlacesSFHeader[iColumn].colnameid, buffer, _countof(buffer)))
hr = SHStrDupW(buffer, &psd->str.pOleStr);
return hr;
}
if (iColumn == COLUMN_NAME)
return GetDisplayNameOf(pidl, SHGDN_NORMAL, &psd->str);

View File

@@ -364,6 +364,7 @@ HRESULT WINAPI CPrinterFolder::GetUIObjectOf(HWND hwndOwner, UINT cidl, PCUITEMI
*/
HRESULT WINAPI CPrinterFolder::GetDisplayNameOf(PCUITEMID_CHILD pidl, DWORD dwFlags, LPSTRRET strRet)
{
LPWSTR pszName;
PIDLPrinterStruct * p;
TRACE ("(%p)->(pidl=%p,0x%08lx,%p)\n", this, pidl, dwFlags, strRet);
@@ -376,7 +377,21 @@ HRESULT WINAPI CPrinterFolder::GetDisplayNameOf(PCUITEMID_CHILD pidl, DWORD dwFl
}
if (!pidl->mkid.cb)
return SHSetStrRet(strRet, IDS_PRINTERS);
{
pszName = (LPWSTR)CoTaskMemAlloc(MAX_PATH * sizeof(WCHAR));
if (!pszName)
return E_OUTOFMEMORY;
if (LoadStringW(shell32_hInstance, IDS_PRINTERS, pszName, MAX_PATH))
{
pszName[MAX_PATH-1] = L'\0';
strRet->uType = STRRET_WSTR;
strRet->pOleStr = pszName;
return S_OK;
}
CoTaskMemFree(pszName);
return E_FAIL;
}
p = _ILGetPrinterStruct(pidl);
if (!p)
@@ -384,8 +399,14 @@ HRESULT WINAPI CPrinterFolder::GetDisplayNameOf(PCUITEMID_CHILD pidl, DWORD dwFl
WARN("no printer struct\n");
return E_INVALIDARG;
}
strRet->pOleStr = (LPWSTR)SHAlloc(p->offsServer * sizeof(WCHAR));
if (!strRet->pOleStr)
return E_OUTOFMEMORY;
return SHSetStrRet(strRet, p->szName);
memcpy((LPVOID)strRet->pOleStr, (LPVOID)p->szName, p->offsServer * sizeof(WCHAR));
TRACE("ret %s\n", debugstr_w(strRet->pOleStr));
return S_OK;
}
/**************************************************************************
@@ -449,6 +470,9 @@ HRESULT WINAPI CPrinterFolder::GetDetailsEx(PCUITEMID_CHILD pidl, const SHCOLUMN
HRESULT WINAPI CPrinterFolder::GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS *psd)
{
WCHAR buffer[MAX_PATH] = {0};
HRESULT hr = E_FAIL;
TRACE("(%p)->(%p %i %p): stub\n", this, pidl, iColumn, psd);
if (iColumn >= PrinterSHELLVIEWCOLUMNS)
@@ -457,10 +481,19 @@ HRESULT WINAPI CPrinterFolder::GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn,
psd->fmt = PrinterSFHeader[iColumn].fmt;
psd->cxChar = PrinterSFHeader[iColumn].cxChar;
if (pidl == NULL)
return SHSetStrRet(&psd->str, PrinterSFHeader[iColumn].colnameid);
{
psd->str.uType = STRRET_WSTR;
if (LoadStringW(shell32_hInstance, PrinterSFHeader[iColumn].colnameid, buffer, MAX_PATH))
hr = SHStrDupW(buffer, &psd->str.pOleStr);
return hr;
}
if (iColumn == COLUMN_NAME)
{
psd->str.uType = STRRET_WSTR;
return GetDisplayNameOf(pidl, SHGDN_NORMAL, &psd->str);
}
psd->str.uType = STRRET_CSTR;
psd->str.cStr[0] = '\0';

View File

@@ -743,7 +743,11 @@ HRESULT WINAPI CRecycleBin::GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, LPS
pDetails->fmt = RecycleBinColumns[iColumn].fmt;
pDetails->cxChar = RecycleBinColumns[iColumn].cxChars;
if (pidl == NULL)
return SHSetStrRet(&pDetails->str, RecycleBinColumns[iColumn].column_name_id);
{
pDetails->str.uType = STRRET_WSTR;
LoadStringW(shell32_hInstance, RecycleBinColumns[iColumn].column_name_id, buffer, MAX_PATH);
return SHStrDupW(buffer, &pDetails->str.pOleStr);
}
if (iColumn == COLUMN_NAME)
return GetDisplayNameOf(pidl, SHGDN_NORMAL, &pDetails->str);
@@ -779,12 +783,15 @@ HRESULT WINAPI CRecycleBin::GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, LPS
if (LoadStringW(shell32_hInstance, IDS_SHV_COLUMN1, &szTypeName[Length], (sizeof(szTypeName) / sizeof(WCHAR)) - Length))
szTypeName[(sizeof(szTypeName)/sizeof(WCHAR))-1] = L'\0';
}
return SHSetStrRet(&pDetails->str, szTypeName);
pDetails->str.uType = STRRET_WSTR;
return SHStrDupW(szTypeName, &pDetails->str.pOleStr);
break;
default:
return E_FAIL;
}
return SHSetStrRet(&pDetails->str, buffer);
pDetails->str.uType = STRRET_WSTR;
return SHStrDupW(buffer, &pDetails->str.pOleStr);
}
HRESULT WINAPI CRecycleBin::MapColumnToSCID(UINT iColumn, SHCOLUMNID *pscid)

View File

@@ -442,7 +442,7 @@ CAPTION "Видове файлове"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Вписани &видове файлове:", -1, 7, 10, 170, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&Нов", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "Из&триване", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Подробности за разширение '%s'", 14003, 7, 130, 249, 70

View File

@@ -442,7 +442,7 @@ CAPTION "File Types"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Registered file &types:", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&New", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "&Delete", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Details for '%s' extension", 14003, 7, 130, 249, 70

View File

@@ -448,7 +448,7 @@ CAPTION "Typy souborů"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Registrované &typy souborů:", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&Nový", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "O&dstranit", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Podrobnosti pro typ souborů '%s'", 14003, 7, 130, 249, 70

View File

@@ -448,7 +448,7 @@ CAPTION "File Types"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Registered file &types:", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&Ny", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "&Delete", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Details for '%s' extension", 14003, 7, 130, 249, 70

View File

@@ -442,7 +442,7 @@ CAPTION "Dateitypen"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "&Registrierte Dateitypen:", -1, 7, 10, 80, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 115
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 115
PUSHBUTTON "&Neu", 14001, 140, 140, 55, 14, WS_TABSTOP
PUSHBUTTON "&Löschen", 14002, 200, 140, 55, 14, WS_TABSTOP
GROUPBOX "Details zum Dateityp '%s'", 14003, 7, 170, 249, 70

View File

@@ -442,7 +442,7 @@ CAPTION "File Types"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Registered file &types:", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&New", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "&Delete", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Details for '%s' extension", 14003, 7, 130, 249, 70

View File

@@ -442,7 +442,7 @@ CAPTION "File Types"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Registered file &types:", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&New", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "&Delete", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Details for '%s' extension", 14003, 7, 130, 249, 70

View File

@@ -442,7 +442,7 @@ CAPTION "File Types"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Registered file &types:", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&New", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "&Delete", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Details for '%s' extension", 14003, 7, 130, 249, 70

View File

@@ -444,7 +444,7 @@ CAPTION "Tipos de Archivo"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "&Tipos de archivo registrados:", -1, 7, 10, 120, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 279, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 279, 80
PUSHBUTTON "&Nueva", 14001, 170, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "Eli&minar", 14002, 230, 110, 50, 14, WS_TABSTOP
GROUPBOX "Detalles para el tipo de archivo «%s»", 14003, 7, 130, 279, 100

View File

@@ -442,7 +442,7 @@ CAPTION "File Types"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Registered file &types:", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&New", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "&Delete", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Details for '%s' extension", 14003, 7, 130, 249, 70

View File

@@ -442,7 +442,7 @@ CAPTION "Types de fichiers"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "&Types de fichiers enregistrés :", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&Nouveau", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "Supprimer", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Détails concernant l'extension '%s'", 14003, 7, 130, 249, 70

View File

@@ -442,7 +442,7 @@ CAPTION "File Types"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Registered file &types:", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&New", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "&Delete", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Details for '%s' extension", 14003, 7, 130, 249, 70

View File

@@ -442,7 +442,7 @@ CAPTION "File Types"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Registered file &types:", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&New", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "&Delete", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Details for '%s' extension", 14003, 7, 130, 249, 70

View File

@@ -442,7 +442,7 @@ CAPTION "Tipi dei File"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "&Tipi di file Registrati:", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&Nuovo", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "&Cancella", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Dettagli per l'estensione '%s'", 14003, 7, 130, 249, 70

View File

@@ -442,7 +442,7 @@ CAPTION "ファイルの種類"
FONT 9, "MS UI Gothic", 0, 0, 0x0
BEGIN
LTEXT "登録されているファイルの種類(&T):", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "新規(&N)", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "削除(&D)", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "拡張子 '%s' の詳細", 14003, 7, 130, 249, 70

View File

@@ -442,7 +442,7 @@ CAPTION "File Types"
FONT 9, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Registered file &types:", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&New", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "&Delete", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Details for '%s' extension", 14003, 7, 130, 249, 70

View File

@@ -442,7 +442,7 @@ CAPTION "File Types"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Registered file &types:", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&New", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "&Delete", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Details for '%s' extension", 14003, 7, 130, 249, 70

View File

@@ -442,7 +442,7 @@ CAPTION "Filtyper"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Registerert fil&typer:", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&Ny", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "&Slett", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Detailjer for '%s' utvidelser", 14003, 7, 130, 249, 70

View File

@@ -446,7 +446,7 @@ CAPTION "Typy plików"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Zarejestrowane &typy plików:", -1, 7, 10, 196, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&Nowy", 14001, 120, 110, 60, 14, WS_TABSTOP
PUSHBUTTON "&Skasuj", 14002, 180, 110, 60, 14, WS_TABSTOP
GROUPBOX "Szczegóły dla rozszerzenia '%s'", 14003, 7, 130, 249, 70

View File

@@ -442,7 +442,7 @@ CAPTION "Tipos de Arquivo"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "&Tipos de arquivo registrado:", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&Novo", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "&Apagar", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Detalhes para extensão '%s'", 14003, 7, 130, 249, 70

View File

@@ -442,7 +442,7 @@ CAPTION "Tipos de Ficheiros"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "&Tipos de ficheiros registados:", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&Novo", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "&Apagar", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Detalhes para '%s' extensão", 14003, 7, 130, 249, 70

View File

@@ -1,6 +1,6 @@
/* Ștefan Fulea (stefan dot fulea at mail dot md) */
LANGUAGE LANG_ROMANIAN, SUBLANG_DEFAULT
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
MENU_001 MENU
BEGIN
@@ -444,7 +444,7 @@ CAPTION "Tipuri de fișier"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Tipurile de fișier înregistrate:", -1, 7, 10, 120, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "N&ou…", 14001, 140, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "&Elimină", 14002, 200, 110, 50, 14, WS_TABSTOP
GROUPBOX "Detalii pentru extensia „%s”", 14003, 7, 130, 249, 70
@@ -733,9 +733,9 @@ BEGIN
IDS_DESKTOPDIRECTORY "Birou"
IDS_NETHOOD "Rețele"
IDS_TEMPLATES "Șabloane"
IDS_APPDATA "Date de aplicație"
IDS_APPDATA "Date aplicații"
IDS_PRINTHOOD "Imprimante"
IDS_LOCAL_APPDATA "Preferințe locale\\Date de aplicație"
IDS_LOCAL_APPDATA "Preferințe locale\\Date aplicații"
IDS_INTERNET_CACHE "Preferințe locale\\Fișiere de Internet temporare"
IDS_COOKIES "Cookies"
IDS_HISTORY "Preferințe locale\\Istoric"
@@ -747,7 +747,7 @@ BEGIN
IDS_COMMON_MUSIC "Documentele mele\\Audio"
IDS_COMMON_PICTURES "Documentele mele\\Imagini"
IDS_COMMON_VIDEO "Documentele mele\\Video"
IDS_CDBURN_AREA "Preferințe locale\\Date de aplicație\\Microsoft\\Inscripționare CD"
IDS_CDBURN_AREA "Preferințe locale\\Date aplicații\\Microsoft\\Inscripționare CD"
IDS_NETWORKPLACE "Locații în rețea"
IDS_NEWFOLDER "Dosar nou"
@@ -823,7 +823,7 @@ BEGIN
/* As in 'INI File' or 'WAV File', fallback string for no-name extensions
used in the _File type_ tab of the _Folder Options_ dialog */
IDS_FILE_EXT_TYPE "Fișier %s"
IDS_FILE_EXT_TYPE "%s File"
IDS_BYTES_FORMAT "octeți"
IDS_UNKNOWN_APP "Aplicație nespecificată"

View File

@@ -444,7 +444,7 @@ CAPTION "Типы файлов"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "&Зарегистрированные типы файлов:", -1, 7, 10, 125, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&Создать", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "&Удалить", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Описание расширения '%s'", 14003, 7, 130, 249, 70

View File

@@ -442,7 +442,7 @@ CAPTION "Typy súborov"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Registrované &typy súborov:", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&Nový", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "O&dstrániť", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Details for '%s' extension", 14003, 7, 130, 249, 70

View File

@@ -442,7 +442,7 @@ CAPTION "File Types"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Registered file &types:", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&New", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "&Delete", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Details for '%s' extension", 14003, 7, 130, 249, 70

View File

@@ -446,7 +446,7 @@ CAPTION "Tipe Dokumenti"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Dokumentat e regjistruar dhe lloji:", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "E're", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "&Fshi", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Detaje për '%s' zgjerim", 14003, 7, 130, 249, 70

View File

@@ -442,7 +442,7 @@ CAPTION "File Types"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Registered file &types:", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&New", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "&Delete", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Details for '%s' extension", 14003, 7, 130, 249, 70

View File

@@ -442,7 +442,7 @@ CAPTION "Dosya Türleri"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "&Kayıtlı dosya türleri:", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&Yeni", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "&Sil", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "'%s'", 14003, 7, 130, 249, 70

View File

@@ -442,7 +442,7 @@ CAPTION "Типи файлів"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Зареєстровані &типи файлів:", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&Створити", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "В&идалити", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Подробиці для розширення '%s'", 14003, 7, 130, 249, 70

View File

@@ -451,7 +451,7 @@ CAPTION "文件类型"
FONT 9, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "已注册的文件类型(&T):", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "新建(&N)", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "删除(&D)", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "'%S' 扩展的详细信息", 14003, 7, 130, 249, 70

View File

@@ -450,7 +450,7 @@ CAPTION "File Types"
FONT 9, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "Registered file &types:", -1, 7, 10, 70, 10
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80
PUSHBUTTON "&New", 14001, 120, 110, 50, 14, WS_TABSTOP
PUSHBUTTON "&Delete", 14002, 180, 110, 50, 14, WS_TABSTOP
GROUPBOX "Details for '%s' extension", 14003, 7, 130, 249, 70

View File

@@ -20,6 +20,7 @@
#include <shlwapi.h>
#include <shlobj.h>
#include <shobjidl.h>
#include <recyclebin.h>
#include <ndk/rtlfuncs.h>
#include <fmifs/fmifs.h>
#include <tchar.h>
@@ -40,7 +41,6 @@
#include <shellutils.h>
#include "shellrecyclebin/recyclebin.h"
#include "wine/pidl.h"
#include "debughlp.h"
#include "wine/shell32_main.h"

View File

@@ -104,13 +104,4 @@ static __inline int SHELL32_GUIDToStringW (REFGUID guid, LPWSTR str)
void SHELL_FS_ProcessDisplayFilename(LPWSTR szPath, DWORD dwFlags);
BOOL SHELL_FS_HideExtension(LPWSTR pwszPath);
#ifdef __cplusplus
HRESULT inline SHSetStrRet(LPSTRRET pStrRet, DWORD resId)
{
return SHSetStrRet(pStrRet, shell32_hInstance, resId);
}
#endif
#endif /* _SHFLDR_H_ */

View File

@@ -399,7 +399,7 @@ HRESULT SHELL32_GetDisplayNameOfGUIDItem(IShellFolder2* psf, LPCWSTR pszFolderPa
if (GET_SHGDN_FOR (dwFlags) == SHGDN_FORPARSING &&
GET_SHGDN_RELATION (dwFlags) == SHGDN_NORMAL)
{
int bWantsForParsing = FALSE;
int bWantsForParsing;
/*
* We can only get a filesystem path from a shellfolder if the

View File

@@ -74,13 +74,14 @@ HRESULT WINAPI CDefView_Constructor(IShellFolder *pFolder, REFIID riid, LPVOID *
HRESULT WINAPI CDefViewDual_Constructor(REFIID riid, LPVOID * ppvOut);
HRESULT WINAPI CShell_Constructor(REFIID riid, LPVOID * ppvOut);
HRESULT WINAPI IShellLink_ConstructFromPath(WCHAR *path, REFIID riid, LPVOID *ppv);
HRESULT WINAPI IShellLink_ConstructFromFile(IShellFolder * psf, LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv);
HRESULT WINAPI IShellLink_ConstructFromFile(IUnknown * pUnkOuter, REFIID riid, LPCITEMIDLIST pidl, LPVOID * ppv);
HRESULT WINAPI IFileSystemBindData_Constructor(const WIN32_FIND_DATAW *pfd, LPBC *ppV);
extern HRESULT CPanel_GetIconLocationW(LPCITEMIDLIST, LPWSTR, UINT, int*) DECLSPEC_HIDDEN;
HRESULT WINAPI CPanel_ExtractIconA(LPITEMIDLIST pidl, LPCSTR pszFile, UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize) DECLSPEC_HIDDEN;
HRESULT WINAPI CPanel_ExtractIconW(LPITEMIDLIST pidl, LPCWSTR pszFile, UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize) DECLSPEC_HIDDEN;
HRESULT GenericExtractIcon_CreateInstance(IShellFolder * psf, LPCITEMIDLIST pidl, REFIID iid, LPVOID * ppvOut);
LPEXTRACTICONA IExtractIconA_Constructor(LPCITEMIDLIST) DECLSPEC_HIDDEN;
LPEXTRACTICONW IExtractIconW_Constructor(LPCITEMIDLIST) DECLSPEC_HIDDEN;
/* initialisation for FORMATETC */
#define InitFormatEtc(fe, cf, med) \

View File

@@ -34,7 +34,7 @@
#include <shlwapi.h>
#include <commdlg.h>
#include <commoncontrols.h>
#include "../shellrecyclebin/recyclebin.h"
#include <recyclebin.h>
#include <wine/debug.h>
#include <wine/unicode.h>
@@ -823,13 +823,8 @@ void WINAPI SHAddToRecentDocs (UINT uFlags,LPCVOID pv)
ext = strrchr(doc_name, '.');
if (!lstrcmpiA(ext, ".lnk"))
{
WCHAR doc_nameW[MAX_PATH];
IShellLinkA* ShellLink;
int nLength = MultiByteToWideChar(CP_ACP, 0, doc_name, -1, doc_nameW, MAX_PATH);
if (nLength == 0)
return;
IShellLink_ConstructFromPath(doc_nameW, &IID_IShellLinkA, (LPVOID*)&ShellLink);
IShellLink_ConstructFromFile(NULL, &IID_IShellLinkA, (LPCITEMIDLIST)SHSimpleIDListFromPathA(doc_name), (LPVOID*)&ShellLink);
IShellLinkA_GetPath(ShellLink, doc_name, MAX_PATH, NULL, 0);
IShellLinkA_Release(ShellLink);
}

View File

@@ -1518,7 +1518,6 @@ static HRESULT _SHGetDefaultValue(HANDLE hToken, BYTE folder, LPWSTR pszPath)
; /* no corresponding env. var, do nothing */
}
hr = S_OK;
if (CSIDL_Data[folder].szDefaultPath)
{
if (IS_INTRESOURCE(CSIDL_Data[folder].szDefaultPath))
@@ -1526,6 +1525,7 @@ static HRESULT _SHGetDefaultValue(HANDLE hToken, BYTE folder, LPWSTR pszPath)
if (LoadStringW(shell32_hInstance,
LOWORD(CSIDL_Data[folder].szDefaultPath), resourcePath, MAX_PATH))
{
hr = S_OK;
PathAppendW(pszPath, resourcePath);
}
else
@@ -1537,6 +1537,7 @@ static HRESULT _SHGetDefaultValue(HANDLE hToken, BYTE folder, LPWSTR pszPath)
}
else
{
hr = S_OK;
PathAppendW(pszPath, CSIDL_Data[folder].szDefaultPath);
}
}

View File

@@ -9,7 +9,7 @@ LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_PROFILEPATH "%SystemDrive%\\Documente și preferințe"
IDS_APPDATA "Date de aplicație"
IDS_APPDATA "Date aplicații"
IDS_DESKTOP "Birou"
IDS_FAVORITES "Favorite"
IDS_STARTMENU "Meniul Pornire"
@@ -26,7 +26,7 @@ BEGIN
IDS_PRINTHOOD "Imprimante"
IDS_NETHOOD "Rețele"
IDS_LOCALSETTINGS "Preferințe locale"
IDS_LOCALAPPDATA "Preferințe locale\\Date de aplicație"
IDS_LOCALAPPDATA "Preferințe locale\\Date aplicații"
IDS_TEMP "Preferințe locale\\Temp"
IDS_CACHE "Preferințe locale\\Fișiere de Internet temporare"
IDS_HISTORY "Preferințe locale\\Istoric"

View File

@@ -937,7 +937,7 @@ getnameinfo(const struct sockaddr FAR *sa,
{
/* Setup the data for it */
ServiceString = ServiceBuffer;
ServLength = sizeof(ServiceBuffer) / sizeof(WCHAR);
ServLength = sizeof(ServiceBuffer) - 1;
}
/* Now call the unicode function */

Some files were not shown because too many files have changed in this diff Show More