Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
40cb9826
Commit
40cb9826
authored
May 13, 2005
by
Ge van Geldorp
Committed by
Alexandre Julliard
May 13, 2005
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Overlay icons for .lnk files with a small arrow in the lower left
corner.
parent
aeea9833
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
377 additions
and
18 deletions
+377
-18
.cvsignore
dlls/shell32/.cvsignore
+1
-0
Makefile.in
dlls/shell32/Makefile.in
+2
-1
folders.c
dlls/shell32/folders.c
+1
-1
iconcache.c
dlls/shell32/iconcache.c
+199
-11
shell32_main.c
dlls/shell32/shell32_main.c
+2
-2
shell32_main.h
dlls/shell32/shell32_main.h
+1
-1
shres.rc
dlls/shell32/shres.rc
+165
-2
shresdef.h
dlls/shell32/shresdef.h
+1
-0
wine.inf
tools/wine.inf
+5
-0
No files found.
dlls/shell32/.cvsignore
View file @
40cb9826
...
...
@@ -15,5 +15,6 @@ printer.ico
ramdisk.ico
shell.spec.c
shell32.dll.dbg.c
shortcut.ico
shres.res
version16.res
dlls/shell32/Makefile.in
View file @
40cb9826
...
...
@@ -64,7 +64,8 @@ RC_BINARIES = \
netdrive.ico
\
netdrive2.ico
\
printer.ico
\
ramdisk.ico
ramdisk.ico
\
shortcut.ico
C_SRCS16
=
shell.c
RC_SRCS16
=
version16.rc
...
...
dlls/shell32/folders.c
View file @
40cb9826
...
...
@@ -385,7 +385,7 @@ static HRESULT WINAPI IExtractIconW_fnExtract(IExtractIconW * iface, LPCWSTR psz
FIXME
(
"(%p) (file=%p index=%d %p %p size=%08x) semi-stub
\n
"
,
This
,
debugstr_w
(
pszFile
),
(
signed
)
nIconIndex
,
phiconLarge
,
phiconSmall
,
nIconSize
);
index
=
SIC_GetIconIndex
(
pszFile
,
nIconIndex
);
index
=
SIC_GetIconIndex
(
pszFile
,
nIconIndex
,
0
);
if
(
phiconLarge
)
*
phiconLarge
=
ImageList_GetIcon
(
ShellBigIconList
,
index
,
ILD_TRANSPARENT
);
...
...
dlls/shell32/iconcache.c
View file @
40cb9826
...
...
@@ -43,6 +43,7 @@
#include "pidl.h"
#include "shell32_main.h"
#include "undocshell.h"
#include "shresdef.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
shell
);
...
...
@@ -79,7 +80,8 @@ static CRITICAL_SECTION SHELL32_SicCS = { &critsect_debug, -1, 0, 0, 0, 0 };
static
INT
CALLBACK
SIC_CompareEntries
(
LPVOID
p1
,
LPVOID
p2
,
LPARAM
lparam
)
{
TRACE
(
"%p %p %8lx
\n
"
,
p1
,
p2
,
lparam
);
if
(((
LPSIC_ENTRY
)
p1
)
->
dwSourceIndex
!=
((
LPSIC_ENTRY
)
p2
)
->
dwSourceIndex
)
/* first the faster one*/
if
(((
LPSIC_ENTRY
)
p1
)
->
dwSourceIndex
!=
((
LPSIC_ENTRY
)
p2
)
->
dwSourceIndex
||
((
LPSIC_ENTRY
)
p1
)
->
dwFlags
!=
((
LPSIC_ENTRY
)
p2
)
->
dwFlags
)
/* first the faster one*/
return
1
;
if
(
strcmpiW
(((
LPSIC_ENTRY
)
p1
)
->
sSourceFile
,((
LPSIC_ENTRY
)
p2
)
->
sSourceFile
))
...
...
@@ -87,13 +89,148 @@ static INT CALLBACK SIC_CompareEntries( LPVOID p1, LPVOID p2, LPARAM lparam)
return
0
;
}
/*****************************************************************************
* SIC_OverlayShortcutImage [internal]
*
* NOTES
* Creates a new icon as a copy of the passed-in icon, overlayed with a
* shortcut image.
*/
static
HICON
SIC_OverlayShortcutImage
(
HICON
SourceIcon
)
{
ICONINFO
SourceIconInfo
,
ShortcutIconInfo
,
TargetIconInfo
;
HICON
ShortcutIcon
,
TargetIcon
;
BITMAP
SourceBitmapInfo
,
ShortcutBitmapInfo
;
HDC
SourceDC
=
NULL
,
ShortcutDC
=
NULL
,
TargetDC
=
NULL
,
ScreenDC
=
NULL
;
HBITMAP
OldSourceBitmap
=
NULL
,
OldShortcutBitmap
=
NULL
,
OldTargetBitmap
=
NULL
;
/* Get information about the source icon and shortcut overlay */
if
(
!
GetIconInfo
(
SourceIcon
,
&
SourceIconInfo
)
||
0
==
GetObjectW
(
SourceIconInfo
.
hbmColor
,
sizeof
(
BITMAP
),
&
SourceBitmapInfo
))
{
return
NULL
;
}
ShortcutIcon
=
LoadImageW
(
shell32_hInstance
,
MAKEINTRESOURCEW
(
IDI_SHELL_SHORTCUT
),
IMAGE_ICON
,
SourceBitmapInfo
.
bmWidth
,
SourceBitmapInfo
.
bmWidth
,
LR_SHARED
);
if
(
NULL
==
ShortcutIcon
||
!
GetIconInfo
(
ShortcutIcon
,
&
ShortcutIconInfo
)
||
0
==
GetObjectW
(
ShortcutIconInfo
.
hbmColor
,
sizeof
(
BITMAP
),
&
ShortcutBitmapInfo
))
{
return
NULL
;
}
TargetIconInfo
=
SourceIconInfo
;
TargetIconInfo
.
hbmMask
=
NULL
;
TargetIconInfo
.
hbmColor
=
NULL
;
/* Setup the source, shortcut and target masks */
SourceDC
=
CreateCompatibleDC
(
NULL
);
if
(
NULL
==
SourceDC
)
goto
fail
;
OldSourceBitmap
=
SelectObject
(
SourceDC
,
SourceIconInfo
.
hbmMask
);
if
(
NULL
==
OldSourceBitmap
)
goto
fail
;
ShortcutDC
=
CreateCompatibleDC
(
NULL
);
if
(
NULL
==
ShortcutDC
)
goto
fail
;
OldShortcutBitmap
=
SelectObject
(
ShortcutDC
,
ShortcutIconInfo
.
hbmMask
);
if
(
NULL
==
OldShortcutBitmap
)
goto
fail
;
TargetDC
=
CreateCompatibleDC
(
NULL
);
if
(
NULL
==
TargetDC
)
goto
fail
;
TargetIconInfo
.
hbmMask
=
CreateCompatibleBitmap
(
TargetDC
,
SourceBitmapInfo
.
bmWidth
,
SourceBitmapInfo
.
bmHeight
);
if
(
NULL
==
TargetIconInfo
.
hbmMask
)
goto
fail
;
ScreenDC
=
GetDC
(
NULL
);
if
(
NULL
==
ScreenDC
)
goto
fail
;
TargetIconInfo
.
hbmColor
=
CreateCompatibleBitmap
(
ScreenDC
,
SourceBitmapInfo
.
bmWidth
,
SourceBitmapInfo
.
bmHeight
);
ReleaseDC
(
NULL
,
ScreenDC
);
if
(
NULL
==
TargetIconInfo
.
hbmColor
)
goto
fail
;
OldTargetBitmap
=
SelectObject
(
TargetDC
,
TargetIconInfo
.
hbmMask
);
if
(
NULL
==
OldTargetBitmap
)
goto
fail
;
/* Create the target mask by ANDing the source and shortcut masks */
if
(
!
BitBlt
(
TargetDC
,
0
,
0
,
SourceBitmapInfo
.
bmWidth
,
SourceBitmapInfo
.
bmHeight
,
SourceDC
,
0
,
0
,
SRCCOPY
)
||
!
BitBlt
(
TargetDC
,
0
,
SourceBitmapInfo
.
bmHeight
-
ShortcutBitmapInfo
.
bmHeight
,
ShortcutBitmapInfo
.
bmWidth
,
ShortcutBitmapInfo
.
bmHeight
,
ShortcutDC
,
0
,
0
,
SRCAND
))
{
goto
fail
;
}
/* Setup the source and target xor bitmap */
if
(
NULL
==
SelectObject
(
SourceDC
,
SourceIconInfo
.
hbmColor
)
||
NULL
==
SelectObject
(
TargetDC
,
TargetIconInfo
.
hbmColor
))
{
goto
fail
;
}
/* Copy the source xor bitmap to the target and clear out part of it by using
the shortcut mask */
if
(
!
BitBlt
(
TargetDC
,
0
,
0
,
SourceBitmapInfo
.
bmWidth
,
SourceBitmapInfo
.
bmHeight
,
SourceDC
,
0
,
0
,
SRCCOPY
)
||
!
BitBlt
(
TargetDC
,
0
,
SourceBitmapInfo
.
bmHeight
-
ShortcutBitmapInfo
.
bmHeight
,
ShortcutBitmapInfo
.
bmWidth
,
ShortcutBitmapInfo
.
bmHeight
,
ShortcutDC
,
0
,
0
,
SRCAND
))
{
goto
fail
;
}
if
(
NULL
==
SelectObject
(
ShortcutDC
,
ShortcutIconInfo
.
hbmColor
))
goto
fail
;
/* Now put in the shortcut xor mask */
if
(
!
BitBlt
(
TargetDC
,
0
,
SourceBitmapInfo
.
bmHeight
-
ShortcutBitmapInfo
.
bmHeight
,
ShortcutBitmapInfo
.
bmWidth
,
ShortcutBitmapInfo
.
bmHeight
,
ShortcutDC
,
0
,
0
,
SRCINVERT
))
{
goto
fail
;
}
/* Clean up, we're not goto'ing to 'fail' after this so we can be lazy and not set
handles to NULL */
SelectObject
(
TargetDC
,
OldTargetBitmap
);
DeleteObject
(
TargetDC
);
SelectObject
(
ShortcutDC
,
OldShortcutBitmap
);
DeleteObject
(
ShortcutDC
);
SelectObject
(
SourceDC
,
OldSourceBitmap
);
DeleteObject
(
SourceDC
);
/* Create the icon using the bitmaps prepared earlier */
TargetIcon
=
CreateIconIndirect
(
&
TargetIconInfo
);
/* CreateIconIndirect copies the bitmaps, so we can release our bitmaps now */
DeleteObject
(
TargetIconInfo
.
hbmColor
);
DeleteObject
(
TargetIconInfo
.
hbmMask
);
return
TargetIcon
;
fail:
/* Clean up scratch resources we created */
if
(
NULL
!=
OldTargetBitmap
)
SelectObject
(
TargetDC
,
OldTargetBitmap
);
if
(
NULL
!=
TargetIconInfo
.
hbmColor
)
DeleteObject
(
TargetIconInfo
.
hbmColor
);
if
(
NULL
!=
TargetIconInfo
.
hbmMask
)
DeleteObject
(
TargetIconInfo
.
hbmMask
);
if
(
NULL
!=
TargetDC
)
DeleteObject
(
TargetDC
);
if
(
NULL
!=
OldShortcutBitmap
)
SelectObject
(
ShortcutDC
,
OldShortcutBitmap
);
if
(
NULL
!=
ShortcutDC
)
DeleteObject
(
ShortcutDC
);
if
(
NULL
!=
OldSourceBitmap
)
SelectObject
(
SourceDC
,
OldSourceBitmap
);
if
(
NULL
!=
SourceDC
)
DeleteObject
(
SourceDC
);
return
NULL
;
}
/*****************************************************************************
* SIC_IconAppend [internal]
*
* NOTES
* appends an icon pair to the end of the cache
*/
static
INT
SIC_IconAppend
(
LPCWSTR
sSourceFile
,
INT
dwSourceIndex
,
HICON
hSmallIcon
,
HICON
hBigIcon
)
static
INT
SIC_IconAppend
(
LPCWSTR
sSourceFile
,
INT
dwSourceIndex
,
HICON
hSmallIcon
,
HICON
hBigIcon
,
DWORD
dwFlags
)
{
LPSIC_ENTRY
lpsice
;
INT
ret
,
index
,
index1
;
WCHAR
path
[
MAX_PATH
];
...
...
@@ -106,6 +243,7 @@ static INT SIC_IconAppend (LPCWSTR sSourceFile, INT dwSourceIndex, HICON hSmallI
strcpyW
(
lpsice
->
sSourceFile
,
path
);
lpsice
->
dwSourceIndex
=
dwSourceIndex
;
lpsice
->
dwFlags
=
dwFlags
;
EnterCriticalSection
(
&
SHELL32_SicCS
);
...
...
@@ -138,9 +276,11 @@ static INT SIC_IconAppend (LPCWSTR sSourceFile, INT dwSourceIndex, HICON hSmallI
* NOTES
* gets small/big icon by number from a file
*/
static
INT
SIC_LoadIcon
(
LPCWSTR
sSourceFile
,
INT
dwSourceIndex
)
static
INT
SIC_LoadIcon
(
LPCWSTR
sSourceFile
,
INT
dwSourceIndex
,
DWORD
dwFlags
)
{
HICON
hiconLarge
=
0
;
HICON
hiconSmall
=
0
;
HICON
hiconLargeShortcut
;
HICON
hiconSmallShortcut
;
PrivateExtractIconsW
(
sSourceFile
,
dwSourceIndex
,
32
,
32
,
&
hiconLarge
,
0
,
1
,
0
);
PrivateExtractIconsW
(
sSourceFile
,
dwSourceIndex
,
16
,
16
,
&
hiconSmall
,
0
,
1
,
0
);
...
...
@@ -150,7 +290,26 @@ static INT SIC_LoadIcon (LPCWSTR sSourceFile, INT dwSourceIndex)
WARN
(
"failure loading icon %i from %s (%p %p)
\n
"
,
dwSourceIndex
,
debugstr_w
(
sSourceFile
),
hiconLarge
,
hiconSmall
);
return
-
1
;
}
return
SIC_IconAppend
(
sSourceFile
,
dwSourceIndex
,
hiconSmall
,
hiconLarge
);
if
(
0
!=
(
dwFlags
&
GIL_FORSHORTCUT
))
{
hiconLargeShortcut
=
SIC_OverlayShortcutImage
(
hiconLarge
);
hiconSmallShortcut
=
SIC_OverlayShortcutImage
(
hiconSmall
);
if
(
NULL
!=
hiconLargeShortcut
&&
NULL
!=
hiconSmallShortcut
)
{
hiconLarge
=
hiconLargeShortcut
;
hiconSmall
=
hiconSmallShortcut
;
}
else
{
WARN
(
"Failed to create shortcut overlayed icons
\n
"
);
if
(
NULL
!=
hiconLargeShortcut
)
DestroyIcon
(
hiconLargeShortcut
);
if
(
NULL
!=
hiconSmallShortcut
)
DestroyIcon
(
hiconSmallShortcut
);
dwFlags
&=
~
GIL_FORSHORTCUT
;
}
}
return
SIC_IconAppend
(
sSourceFile
,
dwSourceIndex
,
hiconSmall
,
hiconLarge
,
dwFlags
);
}
/*****************************************************************************
* SIC_GetIconIndex [internal]
...
...
@@ -163,7 +322,7 @@ static INT SIC_LoadIcon (LPCWSTR sSourceFile, INT dwSourceIndex)
* look in the cache for a proper icon. if not available the icon is taken
* from the file and cached
*/
INT
SIC_GetIconIndex
(
LPCWSTR
sSourceFile
,
INT
dwSourceIndex
)
INT
SIC_GetIconIndex
(
LPCWSTR
sSourceFile
,
INT
dwSourceIndex
,
DWORD
dwFlags
)
{
SIC_ENTRY
sice
;
INT
ret
,
index
=
INVALID_INDEX
;
...
...
@@ -174,6 +333,7 @@ INT SIC_GetIconIndex (LPCWSTR sSourceFile, INT dwSourceIndex )
GetFullPathNameW
(
sSourceFile
,
MAX_PATH
,
path
,
NULL
);
sice
.
sSourceFile
=
path
;
sice
.
dwSourceIndex
=
dwSourceIndex
;
sice
.
dwFlags
=
dwFlags
;
EnterCriticalSection
(
&
SHELL32_SicCS
);
...
...
@@ -185,7 +345,7 @@ INT SIC_GetIconIndex (LPCWSTR sSourceFile, INT dwSourceIndex )
if
(
INVALID_INDEX
==
index
)
{
ret
=
SIC_LoadIcon
(
sSourceFile
,
dwSourceIndex
);
ret
=
SIC_LoadIcon
(
sSourceFile
,
dwSourceIndex
,
dwFlags
);
}
else
{
...
...
@@ -243,8 +403,8 @@ BOOL SIC_Initialize(void)
hSm
=
LoadImageA
(
shell32_hInstance
,
MAKEINTRESOURCEA
(
1
),
IMAGE_ICON
,
cx_small
,
cy_small
,
LR_SHARED
);
hLg
=
LoadImageA
(
shell32_hInstance
,
MAKEINTRESOURCEA
(
1
),
IMAGE_ICON
,
cx_large
,
cy_large
,
LR_SHARED
);
}
SIC_IconAppend
(
swShell32Name
,
index
-
1
,
hSm
,
hLg
);
SIC_IconAppend
(
swShell32Name
,
-
index
,
hSm
,
hLg
);
SIC_IconAppend
(
swShell32Name
,
index
-
1
,
hSm
,
hLg
,
0
);
SIC_IconAppend
(
swShell32Name
,
-
index
,
hSm
,
hLg
,
0
);
}
TRACE
(
"hIconSmall=%p hIconBig=%p
\n
"
,
ShellSmallIconList
,
ShellBigIconList
);
...
...
@@ -319,24 +479,52 @@ BOOL PidlToSicIndex (
{
IExtractIconW
*
ei
;
WCHAR
szIconFile
[
MAX_PATH
];
/* file containing the icon */
char
szTemp
[
MAX_PATH
];
INT
iSourceIndex
;
/* index or resID(negated) in this file */
BOOL
ret
=
FALSE
;
UINT
dwFlags
=
0
;
HKEY
keyCls
;
int
iShortcutDefaultIndex
=
INVALID_INDEX
;
TRACE
(
"sf=%p pidl=%p %s
\n
"
,
sh
,
pidl
,
bBigIcon
?
"Big"
:
"Small"
);
if
(
SUCCEEDED
(
IShellFolder_GetUIObjectOf
(
sh
,
0
,
1
,
&
pidl
,
&
IID_IExtractIconW
,
0
,
(
void
**
)
&
ei
)))
{
if
(
_ILGetExtension
(
pidl
,
szTemp
,
MAX_PATH
)
&&
HCR_MapTypeToValueA
(
szTemp
,
szTemp
,
MAX_PATH
,
TRUE
))
{
if
(
ERROR_SUCCESS
==
RegOpenKeyExA
(
HKEY_CLASSES_ROOT
,
szTemp
,
0
,
KEY_QUERY_VALUE
,
&
keyCls
))
{
if
(
ERROR_SUCCESS
==
RegQueryValueExA
(
keyCls
,
"IsShortcut"
,
NULL
,
NULL
,
NULL
,
NULL
))
{
uFlags
|=
GIL_FORSHORTCUT
;
}
RegCloseKey
(
keyCls
);
}
}
if
(
SUCCEEDED
(
IExtractIconW_GetIconLocation
(
ei
,
uFlags
,
szIconFile
,
MAX_PATH
,
&
iSourceIndex
,
&
dwFlags
)))
{
*
pIndex
=
SIC_GetIconIndex
(
szIconFile
,
iSourceIndex
);
*
pIndex
=
SIC_GetIconIndex
(
szIconFile
,
iSourceIndex
,
uFlags
);
ret
=
TRUE
;
}
IExtractIconW_Release
(
ei
);
}
if
(
INVALID_INDEX
==
*
pIndex
)
/* default icon when failed */
{
if
(
0
==
(
uFlags
&
GIL_FORSHORTCUT
))
{
*
pIndex
=
0
;
}
else
{
if
(
INVALID_INDEX
==
iShortcutDefaultIndex
)
{
iShortcutDefaultIndex
=
SIC_LoadIcon
(
swShell32Name
,
0
,
GIL_FORSHORTCUT
);
}
*
pIndex
=
(
INVALID_INDEX
!=
iShortcutDefaultIndex
?
iShortcutDefaultIndex
:
0
);
}
}
return
ret
;
...
...
@@ -382,7 +570,7 @@ INT WINAPI Shell_GetCachedImageIndexA(LPCSTR szPath, INT nIndex, BOOL bSimulateD
szTemp
=
HeapAlloc
(
GetProcessHeap
(),
0
,
len
*
sizeof
(
WCHAR
)
);
MultiByteToWideChar
(
CP_ACP
,
0
,
szPath
,
-
1
,
szTemp
,
len
);
ret
=
SIC_GetIconIndex
(
szTemp
,
nIndex
);
ret
=
SIC_GetIconIndex
(
szTemp
,
nIndex
,
0
);
HeapFree
(
GetProcessHeap
(),
0
,
szTemp
);
...
...
@@ -393,7 +581,7 @@ INT WINAPI Shell_GetCachedImageIndexW(LPCWSTR szPath, INT nIndex, BOOL bSimulate
{
WARN
(
"(%s,%08x,%08x) semi-stub.
\n
"
,
debugstr_w
(
szPath
),
nIndex
,
bSimulateDoc
);
return
SIC_GetIconIndex
(
szPath
,
nIndex
);
return
SIC_GetIconIndex
(
szPath
,
nIndex
,
0
);
}
INT
WINAPI
Shell_GetCachedImageIndexAW
(
LPCVOID
szPath
,
INT
nIndex
,
BOOL
bSimulateDoc
)
...
...
dlls/shell32/shell32_main.c
View file @
40cb9826
...
...
@@ -506,7 +506,7 @@ DWORD WINAPI SHGetFileInfoW(LPCWSTR path,DWORD dwFileAttributes,
lstrcpynW
(
sTemp
,
szFullPath
,
MAX_PATH
);
if
(
dwFileAttributes
&
FILE_ATTRIBUTE_DIRECTORY
)
psfi
->
iIcon
=
SIC_GetIconIndex
(
swShell32Name
,
-
IDI_SHELL_FOLDER
);
psfi
->
iIcon
=
SIC_GetIconIndex
(
swShell32Name
,
-
IDI_SHELL_FOLDER
,
0
);
else
{
static
const
WCHAR
p1W
[]
=
{
'%'
,
'1'
,
0
};
...
...
@@ -522,7 +522,7 @@ DWORD WINAPI SHGetFileInfoW(LPCWSTR path,DWORD dwFileAttributes,
if
(
flags
&
SHGFI_SYSICONINDEX
)
{
psfi
->
iIcon
=
SIC_GetIconIndex
(
sTemp
,
dwNr
);
psfi
->
iIcon
=
SIC_GetIconIndex
(
sTemp
,
dwNr
,
0
);
if
(
psfi
->
iIcon
==
-
1
)
psfi
->
iIcon
=
0
;
}
...
...
dlls/shell32/shell32_main.h
View file @
40cb9826
...
...
@@ -53,7 +53,7 @@ BOOL WINAPI Shell_GetImageList(HIMAGELIST * lpBigList, HIMAGELIST * lpSmallList)
BOOL
SIC_Initialize
(
void
);
void
SIC_Destroy
(
void
);
BOOL
PidlToSicIndex
(
IShellFolder
*
sh
,
LPCITEMIDLIST
pidl
,
BOOL
bBigIcon
,
UINT
uFlags
,
int
*
pIndex
);
INT
SIC_GetIconIndex
(
LPCWSTR
sSourceFile
,
INT
dwSourceIndex
);
INT
SIC_GetIconIndex
(
LPCWSTR
sSourceFile
,
INT
dwSourceIndex
,
DWORD
dwFlags
);
/* Classes Root */
BOOL
HCR_MapTypeToValueW
(
LPCWSTR
szExtension
,
LPWSTR
szFileType
,
DWORD
len
,
BOOL
bPrependDot
);
...
...
dlls/shell32/shres.rc
View file @
40cb9826
...
...
@@ -10053,6 +10053,171 @@ IDI_SHELL_PRINTER ICON printer.ico
'00 00 FF FF 00 00'
} */
/* BINRES shortcut.ico */
IDI_SHELL_SHORTCUT ICON shortcut.ico
/* {
'00 00 01 00 02 00 20 20 00 00 00 00 00 00 A8 08'
'00 00 26 00 00 00 10 10 10 00 00 00 00 00 28 01'
'00 00 CE 08 00 00 28 00 00 00 20 00 00 00 40 00'
'00 00 01 00 08 00 00 00 00 00 00 04 00 00 00 00'
'00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00'
'00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00'
'00 00 80 00 80 00 80 80 00 00 C0 C0 C0 00 C0 DC'
'C0 00 F0 CA A6 00 04 04 04 00 08 08 08 00 0C 0C'
'0C 00 11 11 11 00 16 16 16 00 1C 1C 1C 00 22 22'
'22 00 29 29 29 00 55 55 55 00 4D 4D 4D 00 42 42'
'42 00 39 39 39 00 80 7C FF 00 50 50 FF 00 93 00'
'D6 00 FF EC CC 00 C6 D6 EF 00 D6 E7 E7 00 90 A9'
'AD 00 00 00 33 00 00 00 66 00 00 00 99 00 00 00'
'CC 00 00 33 00 00 00 33 33 00 00 33 66 00 00 33'
'99 00 00 33 CC 00 00 33 FF 00 00 66 00 00 00 66'
'33 00 00 66 66 00 00 66 99 00 00 66 CC 00 00 66'
'FF 00 00 99 00 00 00 99 33 00 00 99 66 00 00 99'
'99 00 00 99 CC 00 00 99 FF 00 00 CC 00 00 00 CC'
'33 00 00 CC 66 00 00 CC 99 00 00 CC CC 00 00 CC'
'FF 00 00 FF 66 00 00 FF 99 00 00 FF CC 00 33 00'
'00 00 33 00 33 00 33 00 66 00 33 00 99 00 33 00'
'CC 00 33 00 FF 00 33 33 00 00 33 33 33 00 33 33'
'66 00 33 33 99 00 33 33 CC 00 33 33 FF 00 33 66'
'00 00 33 66 33 00 33 66 66 00 33 66 99 00 33 66'
'CC 00 33 66 FF 00 33 99 00 00 33 99 33 00 33 99'
'66 00 33 99 99 00 33 99 CC 00 33 99 FF 00 33 CC'
'00 00 33 CC 33 00 33 CC 66 00 33 CC 99 00 33 CC'
'CC 00 33 CC FF 00 33 FF 33 00 33 FF 66 00 33 FF'
'99 00 33 FF CC 00 33 FF FF 00 66 00 00 00 66 00'
'33 00 66 00 66 00 66 00 99 00 66 00 CC 00 66 00'
'FF 00 66 33 00 00 66 33 33 00 66 33 66 00 66 33'
'99 00 66 33 CC 00 66 33 FF 00 66 66 00 00 66 66'
'33 00 66 66 66 00 66 66 99 00 66 66 CC 00 66 99'
'00 00 66 99 33 00 66 99 66 00 66 99 99 00 66 99'
'CC 00 66 99 FF 00 66 CC 00 00 66 CC 33 00 66 CC'
'99 00 66 CC CC 00 66 CC FF 00 66 FF 00 00 66 FF'
'33 00 66 FF 99 00 66 FF CC 00 CC 00 FF 00 FF 00'
'CC 00 99 99 00 00 99 33 99 00 99 00 99 00 99 00'
'CC 00 99 00 00 00 99 33 33 00 99 00 66 00 99 33'
'CC 00 99 00 FF 00 99 66 00 00 99 66 33 00 99 33'
'66 00 99 66 99 00 99 66 CC 00 99 33 FF 00 99 99'
'33 00 99 99 66 00 99 99 99 00 99 99 CC 00 99 99'
'FF 00 99 CC 00 00 99 CC 33 00 66 CC 66 00 99 CC'
'99 00 99 CC CC 00 99 CC FF 00 99 FF 00 00 99 FF'
'33 00 99 CC 66 00 99 FF 99 00 99 FF CC 00 99 FF'
'FF 00 CC 00 00 00 99 00 33 00 CC 00 66 00 CC 00'
'99 00 CC 00 CC 00 99 33 00 00 CC 33 33 00 CC 33'
'66 00 CC 33 99 00 CC 33 CC 00 CC 33 FF 00 CC 66'
'00 00 CC 66 33 00 99 66 66 00 CC 66 99 00 CC 66'
'CC 00 99 66 FF 00 CC 99 00 00 CC 99 33 00 CC 99'
'66 00 CC 99 99 00 CC 99 CC 00 CC 99 FF 00 CC CC'
'00 00 CC CC 33 00 CC CC 66 00 CC CC 99 00 CC CC'
'CC 00 CC CC FF 00 CC FF 00 00 CC FF 33 00 99 FF'
'66 00 CC FF 99 00 CC FF CC 00 CC FF FF 00 CC 00'
'33 00 FF 00 66 00 FF 00 99 00 CC 33 00 00 FF 33'
'33 00 FF 33 66 00 FF 33 99 00 FF 33 CC 00 FF 33'
'FF 00 FF 66 00 00 FF 66 33 00 CC 66 66 00 FF 66'
'99 00 FF 66 CC 00 CC 66 FF 00 FF 99 00 00 FF 99'
'33 00 FF 99 66 00 FF 99 99 00 FF 99 CC 00 FF 99'
'FF 00 FF CC 00 00 FF CC 33 00 FF CC 66 00 FF CC'
'99 00 FF CC CC 00 FF CC FF 00 FF FF 33 00 CC FF'
'66 00 FF FF 99 00 FF FF CC 00 66 66 FF 00 66 FF'
'66 00 66 FF FF 00 FF 66 66 00 FF 66 FF 00 FF FF'
'66 00 21 00 A5 00 5F 5F 5F 00 77 77 77 00 86 86'
'86 00 96 96 96 00 CB CB CB 00 B2 B2 B2 00 D7 D7'
'D7 00 DD DD DD 00 E3 E3 E3 00 EA EA EA 00 F1 F1'
'F1 00 F8 F8 F8 00 F0 FB FF 00 A4 A0 A0 00 80 80'
'80 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00'
'00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 07 FF'
'FF FF FF FF FF FF FF FF 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 07 FF'
'0A FF FF FF FF FF FF FF 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 07 FF'
'0A 0A FF FF FF FF FF FF 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 07 FF'
'FF 0A 0A FF FF FF FF FF 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 07 FF'
'FF 0A 0A 0A FF 0A FF FF 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 07 FF'
'FF FF 0A 0A 0A 0A FF FF 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 07 FF'
'FF FF FF 0A 0A 0A FF FF 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 07 FF'
'FF FF 0A 0A 0A 0A FF FF 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 07 FF'
'FF FF FF FF FF FF FF FF 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 07 07'
'07 07 07 07 07 07 07 07 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A'
'0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 00 1F'
'FF FF 00 1F FF FF 00 1F FF FF 00 1F FF FF 00 1F'
'FF FF 00 1F FF FF 00 1F FF FF 00 1F FF FF 00 1F'
'FF FF 00 1F FF FF 00 1F FF FF FF FF FF FF FF FF'
'FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF'
'FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF'
'FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF'
'FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF'
'FF FF FF FF FF FF FF FF FF FF FF FF FF FF 28 00'
'00 00 10 00 00 00 20 00 00 00 01 00 04 00 00 00'
'00 00 C0 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 80'
'00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80'
'00 00 C0 C0 C0 00 80 80 80 00 00 00 FF 00 00 FF'
'00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF'
'00 00 FF FF FF 00 00 00 00 00 00 00 00 00 7F FF'
'FF 00 00 00 00 00 70 FF FF 00 00 00 00 00 7F 00'
'FF 00 00 00 00 00 7F 00 FF 00 00 00 00 00 7F FF'
'FF 00 00 00 00 00 77 77 77 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
'00 00 00 00 00 00 01 FF 00 00 01 FF 00 00 01 FF'
'00 00 01 FF 00 00 01 FF 00 00 01 FF 00 00 01 FF'
'00 00 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF'
'00 00 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF'
'00 00 FF FF 00 00'
} */
/* BINRES desktop.ico */
IDI_SHELL_DESKTOP ICON desktop.ico
/* {
...
...
@@ -10127,8 +10292,6 @@ IDI_SHELL_DESKTOP ICON desktop.ico
} */
/*--------------------- END FIXME ------------------------*/
/*
...
...
dlls/shell32/shresdef.h
View file @
40cb9826
...
...
@@ -110,6 +110,7 @@
#define IDI_SHELL_COMPUTERS_NEAR_ME 19
#define IDI_SHELL_SEARCH 23
#define IDI_SHELL_HELP 24
#define IDI_SHELL_SHORTCUT 30
#define IDI_SHELL_EMPTY_RECYCLE_BIN 32
#define IDI_SHELL_FULL_RECYCLE_BIN 33
#define IDI_SHELL_DESKTOP 35
...
...
tools/wine.inf
View file @
40cb9826
...
...
@@ -69,6 +69,7 @@ HKCR,.jfif,"Content Type",,"image/jpeg"
HKCR,.jpe,"Content Type",,"image/jpeg"
HKCR,.jpeg,"Content Type",,"image/jpeg"
HKCR,.jpg,"Content Type",,"image/jpeg"
HKCR,.lnk,,,"lnkfile"
HKCR,.msi,,,"Msi.Package"
HKCR,.png,"Content Type",,"image/png"
HKCR,.tif,"Content Type",,"image/tiff"
...
...
@@ -84,6 +85,10 @@ HKCR,folder\shell\open\ddeexec,,,"[ViewFolder("%l", %I, %S)]"
HKCR,folder\shell\open\ddeexec,"NoActivateHandler",,""
HKCR,folder\shell\open\ddeexec\application,,,"Folders"
HKCR,htmlfile\shell\open\command,,,"winebrowser %1"
HKCR,lnkfile,"NeverShowExt",,""
HKCR,lnkfile,"IsShortcut",,"yes"
HKCR,lnkfile\CLSID,,,"{00021401-0000-0000-C000-000000000046}"
HKCR,lnkfile\shellex\IconHandler,,,"{00021401-0000-0000-C000-000000000046}"
HKCR,Msi.Package\DefaultIcon,,,"msiexec.exe"
HKCR,Msi.Package\shell\Open\command,,,"msiexec /i %1"
HKCR,Msi.Package\shell\Repair\command,,,"msiexec /f %1"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment