Compare commits
18 Commits
GSoC_2016/
...
ReactOS-0.
Author | SHA1 | Date | |
---|---|---|---|
|
9bc8c8bf66 | ||
|
f6bf4a8755 | ||
|
88d4b4ec82 | ||
|
55f93cd3df | ||
|
17fdabf3da | ||
|
4631e8b017 | ||
|
a2136f74ca | ||
|
009916f9ef | ||
|
36c3f0e984 | ||
|
f2d8ab6186 | ||
|
e2e746c51c | ||
|
b6b2076cba | ||
|
5d640be351 | ||
|
acd95ece40 | ||
|
65674dc182 | ||
|
46a0c313d0 | ||
|
a161bf7c30 | ||
|
032a403b1a |
@@ -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)"
|
||||
|
@@ -1,4 +1,3 @@
|
||||
/* Ștefan Fulea (stefan dot fulea at mail dot md) */
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
|
||||
STRINGTABLE
|
||||
|
@@ -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'?"
|
||||
}
|
||||
|
@@ -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)
|
||||
{
|
||||
|
142
reactos/base/applications/network/telnet/Makefile.mingw
Normal 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
|
@@ -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
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
@@ -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
|
||||
|
||||
|
@@ -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);
|
||||
|
@@ -916,7 +916,6 @@ SetupStartPage(PINPUT_RECORD Ir)
|
||||
|
||||
/* first we hack LanguageList */
|
||||
ListEntry = GetFirstListEntry(LanguageList);
|
||||
|
||||
while (ListEntry != NULL)
|
||||
{
|
||||
if (!wcsicmp(LocaleID, GetListEntryUserData(ListEntry)))
|
||||
|
BIN
reactos/base/shell/explorer/res/bmp/158-rc1.bmp
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
reactos/base/shell/explorer/res/bmp/158-rc2.bmp
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
reactos/base/shell/explorer/res/bmp/158-rc3.bmp
Normal file
After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 8.8 KiB |
Before Width: | Height: | Size: 8.8 KiB |
Before Width: | Height: | Size: 8.8 KiB |
Before Width: | Height: | Size: 9.9 KiB |
Before Width: | Height: | Size: 25 KiB |
@@ -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="Fișier 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
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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)
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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.
|
||||
*
|
||||
|
@@ -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, §ion);
|
||||
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;
|
||||
}
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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++;
|
||||
|
@@ -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."
|
||||
}
|
||||
|
||||
/*
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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
|
@@ -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."
|
||||
|
@@ -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;
|
||||
@@ -183,23 +183,21 @@ static NTSTATUS getInterfaceInfoSet( HANDLE tcpFile,
|
||||
TDIEntityID ip_ent;
|
||||
int j;
|
||||
|
||||
status = getNthIpEntity( tcpFile, curInterf, &ip_ent );
|
||||
if( NT_SUCCESS(status) )
|
||||
status = tdiGetIpAddrsForIpEntity
|
||||
( tcpFile, &ip_ent, &addrs, &numAddrs );
|
||||
for( j = 0; NT_SUCCESS(status) && j < numAddrs; 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 ) {
|
||||
memcpy( &infoSetInt[curInterf].ip_addr,
|
||||
&addrs[j],
|
||||
sizeof( addrs[j] ) );
|
||||
curInterf++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ( NT_SUCCESS(status) )
|
||||
tdiFreeThingSet(addrs);
|
||||
status = getNthIpEntity( tcpFile, curInterf, &ip_ent );
|
||||
if( NT_SUCCESS(status) )
|
||||
status = tdiGetIpAddrsForIpEntity
|
||||
( tcpFile, &ip_ent, &addrs, &numAddrs );
|
||||
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 ) {
|
||||
memcpy( &infoSetInt[curInterf].ip_addr,
|
||||
&addrs[j],
|
||||
sizeof( addrs[j] ) );
|
||||
curInterf++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -215,7 +213,6 @@ static NTSTATUS getInterfaceInfoSet( HANDLE tcpFile,
|
||||
|
||||
return status;
|
||||
} else {
|
||||
tdiFreeThingSet(entIDSet);
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
}
|
||||
}
|
||||
@@ -246,7 +243,7 @@ static DWORD getNumInterfacesInt(BOOL onlyNonLoopback)
|
||||
for( i = 0; i < numEntities; i++ ) {
|
||||
if( isInterface( &entitySet[i] ) &&
|
||||
(!onlyNonLoopback ||
|
||||
(onlyNonLoopback && !isLoopback( tcpFile, &entitySet[i] ))) )
|
||||
(onlyNonLoopback && !isLoopback( tcpFile, &entitySet[i] ))) )
|
||||
numInterfaces++;
|
||||
}
|
||||
|
||||
@@ -409,9 +406,9 @@ InterfaceIndexTable *getInterfaceIndexTableInt( BOOL nonLoopbackOnly ) {
|
||||
status = getInterfaceInfoSet( tcpFile, &ifInfo, &numInterfaces );
|
||||
|
||||
TRACE("InterfaceInfoSet: %08x, %04x:%08x\n",
|
||||
status,
|
||||
ifInfo->entity_id.tei_entity,
|
||||
ifInfo->entity_id.tei_instance);
|
||||
status,
|
||||
ifInfo->entity_id.tei_entity,
|
||||
ifInfo->entity_id.tei_instance);
|
||||
|
||||
if( NT_SUCCESS(status) ) {
|
||||
ret = (InterfaceIndexTable *)
|
||||
@@ -421,13 +418,13 @@ InterfaceIndexTable *getInterfaceIndexTableInt( BOOL nonLoopbackOnly ) {
|
||||
|
||||
if (ret) {
|
||||
ret->numAllocated = numInterfaces;
|
||||
TRACE("NumInterfaces = %d\n", numInterfaces);
|
||||
TRACE("NumInterfaces = %d\n", numInterfaces);
|
||||
|
||||
for( i = 0; i < numInterfaces; i++ ) {
|
||||
TRACE("Examining interface %d\n", i);
|
||||
TRACE("Examining interface %d\n", i);
|
||||
if( !nonLoopbackOnly ||
|
||||
!isLoopback( tcpFile, &ifInfo[i].entity_id ) ) {
|
||||
TRACE("Interface %d matches (%d)\n", i, curInterface);
|
||||
TRACE("Interface %d matches (%d)\n", i, curInterface);
|
||||
ret->indexes[curInterface++] =
|
||||
ifInfo[i].if_info.ent.if_index;
|
||||
}
|
||||
@@ -636,7 +633,7 @@ char *toIPAddressString(unsigned int addr, char string[16])
|
||||
|
||||
if (string)
|
||||
strncpy(string, inet_ntoa(iAddr), 16);
|
||||
|
||||
|
||||
return inet_ntoa(iAddr);
|
||||
}
|
||||
|
||||
|
@@ -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)
|
||||
|
@@ -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)
|
||||
|
@@ -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 */
|
||||
|
@@ -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
|
||||
|
@@ -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<IPersistFile> ppf;
|
||||
HRESULT hr = CShellLink::_CreatorClass::CreateInstance(NULL, IID_PPV_ARG(IPersistFile, &ppf));
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
CComPtr<IUnknown> psl;
|
||||
|
||||
hr = ppf->Load(path, 0);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
HRESULT hr = CShellLink::_CreatorClass::CreateInstance(NULL, riid, (void**)&psl);
|
||||
|
||||
return ppf->QueryInterface(riid, ppv);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
CComPtr<IPersistFile> ppf;
|
||||
|
||||
*ppv = NULL;
|
||||
|
||||
hr = psl->QueryInterface(IID_PPV_ARG(IPersistFile, &ppf));
|
||||
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
WCHAR path[MAX_PATH];
|
||||
|
||||
if (SHGetPathFromIDListW(pidl, path))
|
||||
hr = ppf->Load(path, 0);
|
||||
else
|
||||
hr = E_FAIL;
|
||||
|
||||
if (SUCCEEDED(hr))
|
||||
*ppv = psl.Detach();
|
||||
}
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IShellLink_ConstructFromFile(IShellFolder * psf, LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv)
|
||||
{
|
||||
WCHAR path[MAX_PATH];
|
||||
if (!ILGetDisplayNameExW(psf, pidl, path, 0))
|
||||
return E_FAIL;
|
||||
|
||||
return IShellLink_ConstructFromPath(path, riid, ppv);
|
||||
}
|
@@ -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;
|
||||
@@ -353,35 +331,28 @@ InitializeFileTypesListCtrl(HWND hwndDlg)
|
||||
/* default to english */
|
||||
wcscpy(szFile, L"%s File");
|
||||
}
|
||||
szFile[(_countof(szFile)) - 1] = 0;
|
||||
szFile[(_countof(szFile))-1] = 0;
|
||||
|
||||
dwName = _countof(szName);
|
||||
|
||||
while (RegEnumKeyExW(HKEY_CLASSES_ROOT, dwIndex++, szName, &dwName, NULL, NULL, NULL, NULL) == ERROR_SUCCESS)
|
||||
while(RegEnumKeyExW(HKEY_CLASSES_ROOT, dwIndex++, szName, &dwName, NULL, NULL, NULL, NULL) == ERROR_SUCCESS)
|
||||
{
|
||||
InsertFileType(hDlgCtrl, szName, &iItem, szFile);
|
||||
dwName = _countof(szName);
|
||||
}
|
||||
|
||||
/* Leave if the list is empty */
|
||||
if (iItem == 0)
|
||||
return NULL;
|
||||
|
||||
/* sort list */
|
||||
ListView_SortItems(hDlgCtrl, ListViewCompareProc, NULL);
|
||||
|
||||
/* select first item */
|
||||
ZeroMemory(&lvItem, sizeof(LVITEMW));
|
||||
lvItem.mask = LVIF_STATE;
|
||||
lvItem.stateMask = (UINT)-1;
|
||||
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;
|
||||
}
|
||||
|
||||
|
@@ -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,17 +383,21 @@ 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(hr))
|
||||
if (SUCCEEDED(SHGetDesktopFolder(&dsf)))
|
||||
{
|
||||
hr = psl->GetIconLocation(wTemp, MAX_PATH, &icon_idx);
|
||||
HRESULT hr = dsf->GetUIObjectOf(NULL, 1, (LPCITEMIDLIST*) &pidl, IID_NULL_PPV_ARG(IShellLinkW, &psl));
|
||||
|
||||
if (SUCCEEDED(hr) && *sTemp)
|
||||
found = TRUE;
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
hr = psl->GetIconLocation(wTemp, MAX_PATH, &icon_idx);
|
||||
|
||||
if (SUCCEEDED(hr) && *sTemp)
|
||||
found = TRUE;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
@@ -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;
|
||||
|
@@ -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 );
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
@@ -570,15 +555,8 @@ HRESULT WINAPI CDesktopFolder::GetAttributesOf(
|
||||
*rgfInOut &= dwMyNetPlacesAttributes;
|
||||
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);
|
||||
}
|
||||
else if(_ILIsFolder(apidl[i]) || _ILIsValue(apidl[i]))
|
||||
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 */
|
||||
if ((GET_SHGDN_FOR(dwFlags) == SHGDN_FORPARSING) &&
|
||||
(GET_SHGDN_RELATION(dwFlags) != SHGDN_INFOLDER))
|
||||
{
|
||||
lstrcpynW(pszPath, sPathTarget, MAX_PATH - 1);
|
||||
PathAddBackslashW(pszPath);
|
||||
cLen = wcslen(pszPath);
|
||||
}
|
||||
|
||||
_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);
|
||||
}
|
||||
}
|
||||
|
||||
/* file system folder or file rooted at the desktop */
|
||||
CComPtr<IShellFolder2> psf;
|
||||
HRESULT hr = _GetSFFromPidl(pidl, &psf);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
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);
|
||||
|
||||
return psf->GetDisplayNameOf(pidl, dwFlags, strRet);
|
||||
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.@]
|
||||
*/
|
||||
|
@@ -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();
|
||||
|
@@ -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))
|
||||
{
|
||||
|
@@ -32,6 +32,7 @@ class CDrivesFolder :
|
||||
private:
|
||||
/* both paths are parsible from the desktop */
|
||||
LPITEMIDLIST pidlRoot; /* absolute pidl */
|
||||
LPWSTR sName;
|
||||
public:
|
||||
CDrivesFolder();
|
||||
~CDrivesFolder();
|
||||
|
@@ -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;
|
||||
|
@@ -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);
|
||||
|
@@ -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';
|
||||
|
@@ -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)
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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ă"
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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"
|
||||
|
@@ -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_ */
|
||||
|
@@ -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
|
||||
|
@@ -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) \
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
@@ -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"
|
||||
|
@@ -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 */
|
||||
|