mirror of
https://github.com/reactos/reactos.git
synced 2024-06-23 14:31:47 +00:00
- sync rest of shell32 excluding resources to wine
svn path=/trunk/; revision=29507
This commit is contained in:
parent
b817f334af
commit
7f50b9b826
|
@ -18,6 +18,9 @@
|
|||
* FIXME:
|
||||
* - many memory leaks
|
||||
* - many flags unimplemented
|
||||
* - implement new dialog style "make new folder" button
|
||||
* - implement editbox
|
||||
* - implement new dialog style resizing
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
|
@ -29,7 +32,6 @@
|
|||
|
||||
#include "wine/debug.h"
|
||||
#include "undocshell.h"
|
||||
#include "shlguid.h"
|
||||
#include "pidl.h"
|
||||
#include "shell32_main.h"
|
||||
#include "shellapi.h"
|
||||
|
@ -57,6 +59,8 @@ typedef struct tagTV_ITEMDATA
|
|||
BIF_BROWSEFORCOMPUTER | \
|
||||
BIF_RETURNFSANCESTORS | \
|
||||
BIF_RETURNONLYFSDIRS | \
|
||||
BIF_NONEWFOLDERBUTTON | \
|
||||
BIF_NEWDIALOGSTYLE | \
|
||||
BIF_BROWSEINCLUDEFILES)
|
||||
|
||||
static void FillTreeView(browse_info*, LPSHELLFOLDER,
|
||||
|
@ -175,7 +179,7 @@ static void InitializeTreeView( browse_info *info )
|
|||
IShellFolder_Release(lpsfParent);
|
||||
}
|
||||
|
||||
static int GetIcon(LPITEMIDLIST lpi, UINT uFlags)
|
||||
static int GetIcon(LPCITEMIDLIST lpi, UINT uFlags)
|
||||
{
|
||||
SHFILEINFOW sfi;
|
||||
SHGetFileInfoW((LPCWSTR)lpi, 0 ,&sfi, sizeof(SHFILEINFOW), uFlags);
|
||||
|
@ -264,7 +268,7 @@ static HTREEITEM InsertTreeViewItem( browse_info *info, IShellFolder * lpsf,
|
|||
tvi.cChildren= pEnumIL ? 1 : 0;
|
||||
tvi.mask |= TVIF_CHILDREN;
|
||||
|
||||
lptvid = (LPTV_ITEMDATA)SHAlloc( sizeof(TV_ITEMDATA) );
|
||||
lptvid = SHAlloc( sizeof(TV_ITEMDATA) );
|
||||
if (!lptvid)
|
||||
return NULL;
|
||||
|
||||
|
@ -495,6 +499,8 @@ static BOOL BrsFolder_OnCreate( HWND hWnd, browse_info *info )
|
|||
info->hWnd = hWnd;
|
||||
SetPropW( hWnd, szBrowseFolderInfo, info );
|
||||
|
||||
if (lpBrowseInfo->ulFlags & BIF_NEWDIALOGSTYLE)
|
||||
FIXME("flags BIF_NEWDIALOGSTYLE partially implemented\n");
|
||||
if (lpBrowseInfo->ulFlags & ~SUPPORTEDFLAGS)
|
||||
FIXME("flags %x not implemented\n", lpBrowseInfo->ulFlags & ~SUPPORTEDFLAGS);
|
||||
|
||||
|
@ -503,12 +509,37 @@ static BOOL BrsFolder_OnCreate( HWND hWnd, browse_info *info )
|
|||
else
|
||||
ShowWindow( GetDlgItem(hWnd, IDD_TITLE), SW_HIDE );
|
||||
|
||||
if (!(lpBrowseInfo->ulFlags & BIF_STATUSTEXT))
|
||||
if (!(lpBrowseInfo->ulFlags & BIF_STATUSTEXT)
|
||||
|| (lpBrowseInfo->ulFlags & BIF_NEWDIALOGSTYLE))
|
||||
ShowWindow( GetDlgItem(hWnd, IDD_STATUS), SW_HIDE );
|
||||
|
||||
/* Hide "Make New Folder" Button? */
|
||||
if ((lpBrowseInfo->ulFlags & BIF_NONEWFOLDERBUTTON)
|
||||
|| !(lpBrowseInfo->ulFlags & BIF_NEWDIALOGSTYLE))
|
||||
ShowWindow( GetDlgItem(hWnd, IDD_MAKENEWFOLDER), SW_HIDE );
|
||||
|
||||
/* Hide the editbox? */
|
||||
if (!(lpBrowseInfo->ulFlags & BIF_EDITBOX))
|
||||
{
|
||||
ShowWindow( GetDlgItem(hWnd, IDD_FOLDER), SW_HIDE );
|
||||
ShowWindow( GetDlgItem(hWnd, IDD_FOLDERTEXT), SW_HIDE );
|
||||
}
|
||||
|
||||
info->hwndTreeView = GetDlgItem( hWnd, IDD_TREEVIEW );
|
||||
if (info->hwndTreeView)
|
||||
{
|
||||
InitializeTreeView( info );
|
||||
|
||||
/* Resize the treeview if there's not editbox */
|
||||
if ((lpBrowseInfo->ulFlags & BIF_NEWDIALOGSTYLE)
|
||||
&& !(lpBrowseInfo->ulFlags & BIF_EDITBOX))
|
||||
{
|
||||
RECT rc;
|
||||
GetClientRect(info->hwndTreeView, &rc);
|
||||
SetWindowPos(info->hwndTreeView, HWND_TOP, 0, 0,
|
||||
rc.right, rc.bottom + 40, SWP_NOMOVE);
|
||||
}
|
||||
}
|
||||
else
|
||||
ERR("treeview control missing!\n");
|
||||
|
||||
|
@ -524,7 +555,10 @@ static BOOL BrsFolder_OnCommand( browse_info *info, UINT id )
|
|||
switch (id)
|
||||
{
|
||||
case IDOK:
|
||||
info->pidlRet = ILClone(info->pidlRet); /* The original pidl will be free'd. */
|
||||
/* The original pidl is owned by the treeview and will be free'd. */
|
||||
info->pidlRet = ILClone(info->pidlRet);
|
||||
if (info->pidlRet == NULL) /* A null pidl would mean a cancel */
|
||||
info->pidlRet = _ILCreateDesktop();
|
||||
pdump( info->pidlRet );
|
||||
if (lpBrowseInfo->pszDisplayName)
|
||||
SHGetPathFromIDListW( info->pidlRet, lpBrowseInfo->pszDisplayName );
|
||||
|
@ -534,6 +568,10 @@ static BOOL BrsFolder_OnCommand( browse_info *info, UINT id )
|
|||
case IDCANCEL:
|
||||
EndDialog( info->hWnd, 0 );
|
||||
return TRUE;
|
||||
|
||||
case IDD_MAKENEWFOLDER:
|
||||
FIXME("make new folder not implemented\n");
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -652,7 +690,7 @@ static INT_PTR CALLBACK BrsFolderDlgProc( HWND hWnd, UINT msg, WPARAM wParam,
|
|||
{
|
||||
browse_info *info;
|
||||
|
||||
TRACE("hwnd=%p msg=%04x 0x%08x 0x%08lx\n", hWnd, msg, wParam, lParam );
|
||||
TRACE("hwnd=%p msg=%04x 0x%08lx 0x%08lx\n", hWnd, msg, wParam, lParam );
|
||||
|
||||
if (msg == WM_INITDIALOG)
|
||||
return BrsFolder_OnCreate( hWnd, (browse_info*) lParam );
|
||||
|
@ -701,6 +739,8 @@ static INT_PTR CALLBACK BrsFolderDlgProc( HWND hWnd, UINT msg, WPARAM wParam,
|
|||
|
||||
static const WCHAR swBrowseTemplateName[] = {
|
||||
'S','H','B','R','S','F','O','R','F','O','L','D','E','R','_','M','S','G','B','O','X',0};
|
||||
static const WCHAR swNewBrowseTemplateName[] = {
|
||||
'S','H','N','E','W','B','R','S','F','O','R','F','O','L','D','E','R','_','M','S','G','B','O','X',0};
|
||||
|
||||
/*************************************************************************
|
||||
* SHBrowseForFolderA [SHELL32.@]
|
||||
|
@ -763,6 +803,7 @@ LPITEMIDLIST WINAPI SHBrowseForFolderW (LPBROWSEINFOW lpbi)
|
|||
browse_info info;
|
||||
DWORD r;
|
||||
HRESULT hr;
|
||||
const WCHAR * templateName;
|
||||
|
||||
info.hWnd = 0;
|
||||
info.pidlRet = NULL;
|
||||
|
@ -770,7 +811,12 @@ LPITEMIDLIST WINAPI SHBrowseForFolderW (LPBROWSEINFOW lpbi)
|
|||
info.hwndTreeView = NULL;
|
||||
|
||||
hr = OleInitialize(NULL);
|
||||
r = DialogBoxParamW( shell32_hInstance, swBrowseTemplateName, lpbi->hwndOwner,
|
||||
|
||||
if (lpbi->ulFlags & BIF_NEWDIALOGSTYLE)
|
||||
templateName = swNewBrowseTemplateName;
|
||||
else
|
||||
templateName = swBrowseTemplateName;
|
||||
r = DialogBoxParamW( shell32_hInstance, templateName, lpbi->hwndOwner,
|
||||
BrsFolderDlgProc, (LPARAM)&info );
|
||||
if (SUCCEEDED(hr))
|
||||
OleUninitialize();
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
@ -117,30 +117,86 @@ BOOL HCR_MapTypeToValueA(LPCSTR szExtension, LPSTR szFileType, LONG len, BOOL bP
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static const WCHAR swShell[] = {'s','h','e','l','l','\\',0};
|
||||
static const WCHAR swOpen[] = {'o','p','e','n',0};
|
||||
static const WCHAR swCommand[] = {'\\','c','o','m','m','a','n','d',0};
|
||||
|
||||
BOOL HCR_GetDefaultVerbW( HKEY hkeyClass, LPCWSTR szVerb, LPWSTR szDest, DWORD len )
|
||||
{
|
||||
WCHAR sTemp[MAX_PATH];
|
||||
LONG size;
|
||||
HKEY hkey;
|
||||
|
||||
TRACE("%p %s %p\n", hkeyClass, debugstr_w(szVerb), szDest);
|
||||
|
||||
if (szVerb)
|
||||
{
|
||||
lstrcpynW(szDest, szVerb, len);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
size=len;
|
||||
*szDest='\0';
|
||||
if (!RegQueryValueW(hkeyClass, swShell, szDest, &size) && *szDest)
|
||||
{
|
||||
/* The MSDN says to first try the default verb */
|
||||
lstrcpyW(sTemp, swShell);
|
||||
lstrcatW(sTemp, szDest);
|
||||
lstrcatW(sTemp, swCommand);
|
||||
if (!RegOpenKeyExW(hkeyClass, sTemp, 0, 0, &hkey))
|
||||
{
|
||||
RegCloseKey(hkey);
|
||||
TRACE("default verb=%s\n", debugstr_w(szDest));
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
/* then fallback to 'open' */
|
||||
lstrcpyW(sTemp, swShell);
|
||||
lstrcatW(sTemp, swOpen);
|
||||
lstrcatW(sTemp, swCommand);
|
||||
if (!RegOpenKeyExW(hkeyClass, sTemp, 0, 0, &hkey))
|
||||
{
|
||||
RegCloseKey(hkey);
|
||||
lstrcpynW(szDest, swOpen, len);
|
||||
TRACE("default verb=open\n");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* and then just use the first verb on Windows >= 2000 */
|
||||
if (!RegEnumKeyW(hkeyClass, 0, szDest, len) && *szDest)
|
||||
{
|
||||
TRACE("default verb=first verb=%s\n", debugstr_w(szDest));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
TRACE("no default verb!\n");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL HCR_GetExecuteCommandW( HKEY hkeyClass, LPCWSTR szClass, LPCWSTR szVerb, LPWSTR szDest, DWORD len )
|
||||
{
|
||||
static const WCHAR swShell[] = {'s','h','e','l','l','\\',0};
|
||||
static const WCHAR swCommand[] = {'\\','c','o','m','m','a','n','d',0};
|
||||
BOOL ret = FALSE;
|
||||
WCHAR sTempVerb[MAX_PATH];
|
||||
BOOL ret;
|
||||
|
||||
TRACE("%p %s %s %p\n", hkeyClass, debugstr_w(szClass), debugstr_w(szVerb), szDest);
|
||||
|
||||
if (szClass)
|
||||
RegOpenKeyExW(HKEY_CLASSES_ROOT, szClass, 0, 0x02000000, &hkeyClass);
|
||||
if (!hkeyClass)
|
||||
return FALSE;
|
||||
ret = FALSE;
|
||||
|
||||
if (hkeyClass)
|
||||
{
|
||||
WCHAR sTemp[MAX_PATH];
|
||||
lstrcpyW(sTemp, swShell);
|
||||
lstrcatW(sTemp, szVerb);
|
||||
lstrcatW(sTemp, swCommand);
|
||||
|
||||
ret = (ERROR_SUCCESS == SHGetValueW(hkeyClass, sTemp, NULL, NULL, szDest, &len));
|
||||
|
||||
if (szClass)
|
||||
RegCloseKey(hkeyClass);
|
||||
}
|
||||
if (HCR_GetDefaultVerbW(hkeyClass, szVerb, sTempVerb, sizeof(sTempVerb)))
|
||||
{
|
||||
WCHAR sTemp[MAX_PATH];
|
||||
lstrcpyW(sTemp, swShell);
|
||||
lstrcatW(sTemp, sTempVerb);
|
||||
lstrcatW(sTemp, swCommand);
|
||||
ret = (ERROR_SUCCESS == SHGetValueW(hkeyClass, sTemp, NULL, NULL, szDest, &len));
|
||||
}
|
||||
if (szClass)
|
||||
RegCloseKey(hkeyClass);
|
||||
|
||||
TRACE("-- %s\n", debugstr_w(szDest) );
|
||||
return ret;
|
||||
|
@ -154,7 +210,7 @@ BOOL HCR_GetExecuteCommandW( HKEY hkeyClass, LPCWSTR szClass, LPCWSTR szVerb, LP
|
|||
static BOOL HCR_RegOpenClassIDKey(REFIID riid, HKEY *hkey)
|
||||
{
|
||||
char xriid[50];
|
||||
sprintf( xriid, "CLSID\\{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
|
||||
sprintf( xriid, "CLSID\\{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
|
||||
riid->Data1, riid->Data2, riid->Data3,
|
||||
riid->Data4[0], riid->Data4[1], riid->Data4[2], riid->Data4[3],
|
||||
riid->Data4[4], riid->Data4[5], riid->Data4[6], riid->Data4[7] );
|
||||
|
@ -164,31 +220,31 @@ static BOOL HCR_RegOpenClassIDKey(REFIID riid, HKEY *hkey)
|
|||
return !RegOpenKeyExA(HKEY_CLASSES_ROOT, xriid, 0, KEY_READ, hkey);
|
||||
}
|
||||
|
||||
static BOOL HCR_RegGetDefaultIconW(HKEY hkey, LPWSTR szDest, DWORD len, LPDWORD dwNr)
|
||||
static BOOL HCR_RegGetDefaultIconW(HKEY hkey, LPWSTR szDest, DWORD len, int* picon_idx)
|
||||
{
|
||||
DWORD dwType;
|
||||
WCHAR sTemp[MAX_PATH];
|
||||
WCHAR sNum[5];
|
||||
DWORD dwType;
|
||||
WCHAR sTemp[MAX_PATH];
|
||||
WCHAR sNum[5];
|
||||
|
||||
if (!RegQueryValueExW(hkey, NULL, 0, &dwType, (LPBYTE)szDest, &len))
|
||||
{
|
||||
if (!RegQueryValueExW(hkey, NULL, 0, &dwType, (LPBYTE)szDest, &len))
|
||||
{
|
||||
if (dwType == REG_EXPAND_SZ)
|
||||
{
|
||||
ExpandEnvironmentStringsW(szDest, sTemp, MAX_PATH);
|
||||
lstrcpynW(szDest, sTemp, len);
|
||||
}
|
||||
if (ParseFieldW (szDest, 2, sNum, 5))
|
||||
*dwNr = atoiW(sNum);
|
||||
{
|
||||
ExpandEnvironmentStringsW(szDest, sTemp, MAX_PATH);
|
||||
lstrcpynW(szDest, sTemp, len);
|
||||
}
|
||||
if (ParseFieldW (szDest, 2, sNum, 5))
|
||||
*picon_idx = atoiW(sNum);
|
||||
else
|
||||
*dwNr=0; /* sometimes the icon number is missing */
|
||||
ParseFieldW (szDest, 1, szDest, len);
|
||||
*picon_idx=0; /* sometimes the icon number is missing */
|
||||
ParseFieldW (szDest, 1, szDest, len);
|
||||
PathUnquoteSpacesW(szDest);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL HCR_RegGetDefaultIconA(HKEY hkey, LPSTR szDest, DWORD len, LPDWORD dwNr)
|
||||
static BOOL HCR_RegGetDefaultIconA(HKEY hkey, LPSTR szDest, DWORD len, int* picon_idx)
|
||||
{
|
||||
DWORD dwType;
|
||||
char sTemp[MAX_PATH];
|
||||
|
@ -202,9 +258,9 @@ static BOOL HCR_RegGetDefaultIconA(HKEY hkey, LPSTR szDest, DWORD len, LPDWORD d
|
|||
lstrcpynA(szDest, sTemp, len);
|
||||
}
|
||||
if (ParseFieldA (szDest, 2, sNum, 5))
|
||||
*dwNr=atoi(sNum);
|
||||
*picon_idx=atoi(sNum);
|
||||
else
|
||||
*dwNr=0; /* sometimes the icon number is missing */
|
||||
*picon_idx=0; /* sometimes the icon number is missing */
|
||||
ParseFieldA (szDest, 1, szDest, len);
|
||||
PathUnquoteSpacesA(szDest);
|
||||
return TRUE;
|
||||
|
@ -212,7 +268,7 @@ static BOOL HCR_RegGetDefaultIconA(HKEY hkey, LPSTR szDest, DWORD len, LPDWORD d
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL HCR_GetDefaultIconW(LPCWSTR szClass, LPWSTR szDest, DWORD len, LPDWORD dwNr)
|
||||
BOOL HCR_GetDefaultIconW(LPCWSTR szClass, LPWSTR szDest, DWORD len, int* picon_idx)
|
||||
{
|
||||
static const WCHAR swDefaultIcon[] = {'\\','D','e','f','a','u','l','t','I','c','o','n',0};
|
||||
HKEY hkey;
|
||||
|
@ -226,19 +282,19 @@ BOOL HCR_GetDefaultIconW(LPCWSTR szClass, LPWSTR szDest, DWORD len, LPDWORD dwNr
|
|||
|
||||
if (!RegOpenKeyExW(HKEY_CLASSES_ROOT, sTemp, 0, 0x02000000, &hkey))
|
||||
{
|
||||
ret = HCR_RegGetDefaultIconW(hkey, szDest, len, dwNr);
|
||||
ret = HCR_RegGetDefaultIconW(hkey, szDest, len, picon_idx);
|
||||
RegCloseKey(hkey);
|
||||
}
|
||||
|
||||
if(ret)
|
||||
TRACE("-- %s %li\n", debugstr_w(szDest), *dwNr );
|
||||
TRACE("-- %s %i\n", debugstr_w(szDest), *picon_idx);
|
||||
else
|
||||
TRACE("-- not found\n");
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
BOOL HCR_GetDefaultIconA(LPCSTR szClass, LPSTR szDest, DWORD len, LPDWORD dwNr)
|
||||
BOOL HCR_GetDefaultIconA(LPCSTR szClass, LPSTR szDest, DWORD len, int* picon_idx)
|
||||
{
|
||||
HKEY hkey;
|
||||
char sTemp[MAX_PATH];
|
||||
|
@ -250,24 +306,24 @@ BOOL HCR_GetDefaultIconA(LPCSTR szClass, LPSTR szDest, DWORD len, LPDWORD dwNr)
|
|||
|
||||
if (!RegOpenKeyExA(HKEY_CLASSES_ROOT, sTemp, 0, 0x02000000, &hkey))
|
||||
{
|
||||
ret = HCR_RegGetDefaultIconA(hkey, szDest, len, dwNr);
|
||||
ret = HCR_RegGetDefaultIconA(hkey, szDest, len, picon_idx);
|
||||
RegCloseKey(hkey);
|
||||
}
|
||||
TRACE("-- %s %li\n", szDest, *dwNr );
|
||||
TRACE("-- %s %i\n", szDest, *picon_idx);
|
||||
return ret;
|
||||
}
|
||||
|
||||
BOOL HCR_GetDefaultIconFromGUIDW(REFIID riid, LPWSTR szDest, DWORD len, LPDWORD dwNr)
|
||||
BOOL HCR_GetDefaultIconFromGUIDW(REFIID riid, LPWSTR szDest, DWORD len, int* picon_idx)
|
||||
{
|
||||
HKEY hkey;
|
||||
BOOL ret = FALSE;
|
||||
|
||||
if (HCR_RegOpenClassIDKey(riid, &hkey))
|
||||
{
|
||||
ret = HCR_RegGetDefaultIconW(hkey, szDest, len, dwNr);
|
||||
ret = HCR_RegGetDefaultIconW(hkey, szDest, len, picon_idx);
|
||||
RegCloseKey(hkey);
|
||||
}
|
||||
TRACE("-- %s %li\n", debugstr_w(szDest), *dwNr );
|
||||
TRACE("-- %s %i\n", debugstr_w(szDest), *picon_idx);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -287,8 +343,11 @@ BOOL HCR_GetClassNameW(REFIID riid, LPWSTR szDest, DWORD len)
|
|||
szDest[0] = 0;
|
||||
if (HCR_RegOpenClassIDKey(riid, &hkey))
|
||||
{
|
||||
if (!RegQueryValueExW(hkey, swEmpty, 0, NULL, (LPBYTE)szDest, &len))
|
||||
{
|
||||
static const WCHAR wszLocalizedString[] =
|
||||
{ 'L','o','c','a','l','i','z','e','d','S','t','r','i','n','g', 0 };
|
||||
if (!RegLoadMUIStringW(hkey, wszLocalizedString, szDest, len, NULL, 0, NULL) ||
|
||||
!RegQueryValueExW(hkey, swEmpty, 0, NULL, (LPBYTE)szDest, &len))
|
||||
{
|
||||
ret = TRUE;
|
||||
}
|
||||
RegCloseKey(hkey);
|
||||
|
@ -319,8 +378,9 @@ BOOL HCR_GetClassNameA(REFIID riid, LPSTR szDest, DWORD len)
|
|||
szDest[0] = 0;
|
||||
if (HCR_RegOpenClassIDKey(riid, &hkey))
|
||||
{
|
||||
if (!RegQueryValueExA(hkey,"",0,NULL,(LPBYTE)szDest,&len))
|
||||
{
|
||||
if (!RegLoadMUIStringA(hkey,"LocalizedString",szDest,len,NULL,0,NULL) ||
|
||||
!RegQueryValueExA(hkey,"",0,NULL,(LPBYTE)szDest,&len))
|
||||
{
|
||||
ret = TRUE;
|
||||
}
|
||||
RegCloseKey(hkey);
|
||||
|
@ -419,7 +479,7 @@ BOOL HCR_GetFolderAttributes(LPCITEMIDLIST pidlFolder, LPDWORD pdwAttributes)
|
|||
}
|
||||
}
|
||||
|
||||
TRACE("-- *pdwAttributes == 0x%08lx\n", *pdwAttributes);
|
||||
TRACE("-- *pdwAttributes == 0x%08x\n", *pdwAttributes);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*
|
||||
* NOTES:
|
||||
*
|
||||
|
@ -60,9 +60,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell);
|
|||
HGLOBAL RenderHDROP(LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl)
|
||||
{
|
||||
UINT i;
|
||||
int rootsize = 0,size = 0;
|
||||
char szRootPath[MAX_PATH];
|
||||
char szFileName[MAX_PATH];
|
||||
int rootlen = 0,size = 0;
|
||||
WCHAR wszRootPath[MAX_PATH];
|
||||
WCHAR wszFileName[MAX_PATH];
|
||||
HGLOBAL hGlobal;
|
||||
DROPFILES *pDropFiles;
|
||||
int offset;
|
||||
|
@ -72,39 +72,38 @@ HGLOBAL RenderHDROP(LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl)
|
|||
/* get the size needed */
|
||||
size = sizeof(DROPFILES);
|
||||
|
||||
SHGetPathFromIDListA(pidlRoot, szRootPath);
|
||||
PathAddBackslashA(szRootPath);
|
||||
rootsize = strlen(szRootPath);
|
||||
SHGetPathFromIDListW(pidlRoot, wszRootPath);
|
||||
PathAddBackslashW(wszRootPath);
|
||||
rootlen = strlenW(wszRootPath);
|
||||
|
||||
for (i=0; i<cidl;i++)
|
||||
{
|
||||
_ILSimpleGetText(apidl[i], szFileName, MAX_PATH);
|
||||
size += rootsize + strlen(szFileName) + 1;
|
||||
_ILSimpleGetTextW(apidl[i], wszFileName, MAX_PATH);
|
||||
size += (rootlen + strlenW(wszFileName) + 1) * sizeof(WCHAR);
|
||||
}
|
||||
|
||||
size++;
|
||||
size += sizeof(WCHAR);
|
||||
|
||||
/* Fill the structure */
|
||||
hGlobal = GlobalAlloc(GHND|GMEM_SHARE, size);
|
||||
if(!hGlobal) return hGlobal;
|
||||
|
||||
pDropFiles = (DROPFILES *)GlobalLock(hGlobal);
|
||||
pDropFiles->pFiles = sizeof(DROPFILES);
|
||||
pDropFiles->fWide = FALSE;
|
||||
offset = (sizeof(DROPFILES) + sizeof(WCHAR) - 1) / sizeof(WCHAR);
|
||||
pDropFiles->pFiles = offset * sizeof(WCHAR);
|
||||
pDropFiles->fWide = TRUE;
|
||||
|
||||
offset = pDropFiles->pFiles;
|
||||
strcpy(szFileName, szRootPath);
|
||||
strcpyW(wszFileName, wszRootPath);
|
||||
|
||||
for (i=0; i<cidl;i++)
|
||||
{
|
||||
|
||||
_ILSimpleGetText(apidl[i], szFileName + rootsize, MAX_PATH - rootsize);
|
||||
size = strlen(szFileName) + 1;
|
||||
strcpy(((char*)pDropFiles)+offset, szFileName);
|
||||
offset += size;
|
||||
_ILSimpleGetTextW(apidl[i], wszFileName + rootlen, MAX_PATH - rootlen);
|
||||
strcpyW(((WCHAR*)pDropFiles)+offset, wszFileName);
|
||||
offset += strlenW(wszFileName) + 1;
|
||||
}
|
||||
|
||||
((char*)pDropFiles)[offset] = 0;
|
||||
((WCHAR*)pDropFiles)[offset] = 0;
|
||||
GlobalUnlock(hGlobal);
|
||||
|
||||
return hGlobal;
|
||||
|
@ -239,7 +238,7 @@ HGLOBAL RenderPREFEREDDROPEFFECT (DWORD dwFlags)
|
|||
DWORD * pdwFlag;
|
||||
HGLOBAL hGlobal;
|
||||
|
||||
TRACE("(0x%08lx)\n", dwFlags);
|
||||
TRACE("(0x%08x)\n", dwFlags);
|
||||
|
||||
hGlobal = GlobalAlloc(GHND|GMEM_SHARE, sizeof(DWORD));
|
||||
if(!hGlobal) return hGlobal;
|
||||
|
@ -248,23 +247,3 @@ HGLOBAL RenderPREFEREDDROPEFFECT (DWORD dwFlags)
|
|||
GlobalUnlock(hGlobal);
|
||||
return hGlobal;
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* IsDataInClipboard
|
||||
*
|
||||
* checks if there is something in the clipboard we can use
|
||||
*/
|
||||
BOOL IsDataInClipboard (HWND hwnd)
|
||||
{
|
||||
BOOL ret = FALSE;
|
||||
|
||||
if (OpenClipboard(hwnd))
|
||||
{
|
||||
if (GetOpenClipboardWindow())
|
||||
{
|
||||
ret = IsClipboardFormatAvailable(CF_TEXT);
|
||||
}
|
||||
CloseClipboard();
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -352,7 +352,6 @@ static void Control_DoLaunch(CPanel* panel, HWND hWnd, LPCWSTR wszCmd)
|
|||
unsigned sp = 0;
|
||||
LPWSTR extraPmts = NULL;
|
||||
int quoted = 0;
|
||||
BOOL spSet = FALSE;
|
||||
|
||||
buffer = HeapAlloc(GetProcessHeap(), 0, (lstrlenW(wszCmd) + 1) * sizeof(*wszCmd));
|
||||
if (!buffer) return;
|
||||
|
@ -367,10 +366,8 @@ static void Control_DoLaunch(CPanel* panel, HWND hWnd, LPCWSTR wszCmd)
|
|||
if (beg) {
|
||||
if (*beg == '@') {
|
||||
sp = atoiW(beg + 1);
|
||||
spSet = TRUE;
|
||||
} else if (*beg == '\0') {
|
||||
sp = 0;
|
||||
spSet = TRUE;
|
||||
} else {
|
||||
extraPmts = beg;
|
||||
}
|
||||
|
@ -384,9 +381,6 @@ static void Control_DoLaunch(CPanel* panel, HWND hWnd, LPCWSTR wszCmd)
|
|||
while ((ptr = StrChrW(buffer, '"')))
|
||||
memmove(ptr, ptr+1, lstrlenW(ptr)*sizeof(WCHAR));
|
||||
|
||||
while ((ptr = StrChrW(extraPmts, '"')))
|
||||
memmove(ptr, ptr+1, lstrlenW(ptr)*sizeof(WCHAR));
|
||||
|
||||
TRACE("cmd %s, extra %s, sp %d\n", debugstr_w(buffer), debugstr_w(extraPmts), sp);
|
||||
|
||||
Control_LoadApplet(hWnd, buffer, panel);
|
||||
|
@ -399,13 +393,6 @@ static void Control_DoLaunch(CPanel* panel, HWND hWnd, LPCWSTR wszCmd)
|
|||
WARN("Out of bounds (%u >= %u), setting to 0\n", sp, applet->count);
|
||||
sp = 0;
|
||||
}
|
||||
|
||||
if ((extraPmts)&&(!spSet))
|
||||
{
|
||||
while ((lstrcmpiW(extraPmts, applet->info[sp].szName)) && (sp < applet->count))
|
||||
sp++;
|
||||
}
|
||||
|
||||
if (applet->info[sp].dwSize) {
|
||||
if (!applet->proc(applet->hWnd, CPL_STARTWPARMSA, sp, (LPARAM)extraPmts))
|
||||
applet->proc(applet->hWnd, CPL_DBLCLK, sp, applet->info[sp].lData);
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#ifndef __WINE_SHELL_CPANEL_H
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* 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.
|
||||
* 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
|
||||
|
@ -15,7 +15,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
@ -109,7 +109,7 @@ static inline ICPanelImpl *impl_from_IShellExecuteHookA( IShellExecuteHookA *ifa
|
|||
* IShellFolder [ControlPanel] implementation
|
||||
*/
|
||||
|
||||
static shvheader ControlPanelSFHeader[] = {
|
||||
static const shvheader ControlPanelSFHeader[] = {
|
||||
{IDS_SHV_COLUMN8, SHCOLSTATE_TYPE_STR | SHCOLSTATE_ONBYDEFAULT, LVCFMT_RIGHT, 15},/*FIXME*/
|
||||
{IDS_SHV_COLUMN9, SHCOLSTATE_TYPE_STR | SHCOLSTATE_ONBYDEFAULT, LVCFMT_RIGHT, 200},/*FIXME*/
|
||||
};
|
||||
|
@ -189,7 +189,7 @@ static ULONG WINAPI ISF_ControlPanel_fnAddRef(IShellFolder2 * iface)
|
|||
ICPanelImpl *This = (ICPanelImpl *)iface;
|
||||
ULONG refCount = InterlockedIncrement(&This->ref);
|
||||
|
||||
TRACE("(%p)->(count=%lu)\n", This, refCount - 1);
|
||||
TRACE("(%p)->(count=%u)\n", This, refCount - 1);
|
||||
|
||||
return refCount;
|
||||
}
|
||||
|
@ -199,12 +199,11 @@ static ULONG WINAPI ISF_ControlPanel_fnRelease(IShellFolder2 * iface)
|
|||
ICPanelImpl *This = (ICPanelImpl *)iface;
|
||||
ULONG refCount = InterlockedDecrement(&This->ref);
|
||||
|
||||
TRACE("(%p)->(count=%lu)\n", This, refCount + 1);
|
||||
TRACE("(%p)->(count=%u)\n", This, refCount + 1);
|
||||
|
||||
if (!refCount) {
|
||||
TRACE("-- destroying IShellFolder(%p)\n", This);
|
||||
if (This->pidlRoot)
|
||||
SHFree(This->pidlRoot);
|
||||
SHFree(This->pidlRoot);
|
||||
LocalFree((HLOCAL) This);
|
||||
}
|
||||
return refCount;
|
||||
|
@ -231,7 +230,7 @@ ISF_ControlPanel_fnParseDisplayName(IShellFolder2 * iface,
|
|||
if (pchEaten)
|
||||
*pchEaten = 0;
|
||||
|
||||
TRACE("(%p)->(-- ret=0x%08lx)\n", This, hr);
|
||||
TRACE("(%p)->(-- ret=0x%08x)\n", This, hr);
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
@ -410,9 +409,9 @@ static BOOL CreateCPanelEnumList(
|
|||
WIN32_FIND_DATAA wfd;
|
||||
HANDLE hFile;
|
||||
|
||||
TRACE("(%p)->(flags=0x%08lx)\n", iface, dwFlags);
|
||||
TRACE("(%p)->(flags=0x%08x)\n", iface, dwFlags);
|
||||
|
||||
/* enumerate control panel folders folders */
|
||||
/* enumerate control panel folders */
|
||||
if (dwFlags & SHCONTF_FOLDERS)
|
||||
SHELL_RegisterCPanelFolders(iface, HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ControlPanel\\NameSpace");
|
||||
|
||||
|
@ -457,7 +456,7 @@ ISF_ControlPanel_fnEnumObjects(IShellFolder2 * iface, HWND hwndOwner, DWORD dwFl
|
|||
{
|
||||
ICPanelImpl *This = (ICPanelImpl *)iface;
|
||||
|
||||
TRACE("(%p)->(HWND=%p flags=0x%08lx pplist=%p)\n", This, hwndOwner, dwFlags, ppEnumIDList);
|
||||
TRACE("(%p)->(HWND=%p flags=0x%08x pplist=%p)\n", This, hwndOwner, dwFlags, ppEnumIDList);
|
||||
|
||||
*ppEnumIDList = IEnumIDList_Constructor();
|
||||
if (*ppEnumIDList)
|
||||
|
@ -558,7 +557,7 @@ ISF_ControlPanel_fnGetAttributesOf(IShellFolder2 * iface, UINT cidl, LPCITEMIDLI
|
|||
|
||||
HRESULT hr = S_OK;
|
||||
|
||||
TRACE("(%p)->(cidl=%d apidl=%p mask=%p (0x%08lx))\n",
|
||||
TRACE("(%p)->(cidl=%d apidl=%p mask=%p (0x%08x))\n",
|
||||
This, cidl, apidl, rgfInOut, rgfInOut ? *rgfInOut : 0);
|
||||
|
||||
if (!rgfInOut)
|
||||
|
@ -578,7 +577,7 @@ ISF_ControlPanel_fnGetAttributesOf(IShellFolder2 * iface, UINT cidl, LPCITEMIDLI
|
|||
/* make sure SFGAO_VALIDATE is cleared, some apps depend on that */
|
||||
*rgfInOut &= ~SFGAO_VALIDATE;
|
||||
|
||||
TRACE("-- result=0x%08lx\n", *rgfInOut);
|
||||
TRACE("-- result=0x%08x\n", *rgfInOut);
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -641,7 +640,7 @@ ISF_ControlPanel_fnGetUIObjectOf(IShellFolder2 * iface,
|
|||
|
||||
*ppvOut = pObj;
|
||||
}
|
||||
TRACE("(%p)->hr=0x%08lx\n", This, hr);
|
||||
TRACE("(%p)->hr=0x%08x\n", This, hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -652,12 +651,13 @@ static HRESULT WINAPI ISF_ControlPanel_fnGetDisplayNameOf(IShellFolder2 * iface,
|
|||
{
|
||||
ICPanelImpl *This = (ICPanelImpl *)iface;
|
||||
|
||||
CHAR szPath[MAX_PATH*2];
|
||||
CHAR szPath[MAX_PATH];
|
||||
WCHAR wszPath[MAX_PATH+1]; /* +1 for potential backslash */
|
||||
PIDLCPanelStruct* pcpanel;
|
||||
|
||||
*szPath = '\0';
|
||||
|
||||
TRACE("(%p)->(pidl=%p,0x%08lx,%p)\n", This, pidl, dwFlags, strRet);
|
||||
TRACE("(%p)->(pidl=%p,0x%08x,%p)\n", This, pidl, dwFlags, strRet);
|
||||
pdump(pidl);
|
||||
|
||||
if (!pidl || !strRet)
|
||||
|
@ -671,12 +671,12 @@ static HRESULT WINAPI ISF_ControlPanel_fnGetDisplayNameOf(IShellFolder2 * iface,
|
|||
if (!(dwFlags & SHGDN_FORPARSING))
|
||||
FIXME("retrieve display name from control panel app\n");
|
||||
}
|
||||
/* take names of special folders only if its only this folder */
|
||||
/* take names of special folders only if it's only this folder */
|
||||
else if (_ILIsSpecialFolder(pidl)) {
|
||||
BOOL bSimplePidl = _ILIsPidlSimple(pidl);
|
||||
|
||||
if (bSimplePidl) {
|
||||
_ILSimpleGetText(pidl, szPath, MAX_PATH); /* append my own path */
|
||||
_ILSimpleGetTextW(pidl, wszPath, MAX_PATH); /* append my own path */
|
||||
} else {
|
||||
FIXME("special pidl\n");
|
||||
}
|
||||
|
@ -684,12 +684,14 @@ static HRESULT WINAPI ISF_ControlPanel_fnGetDisplayNameOf(IShellFolder2 * iface,
|
|||
if ((dwFlags & SHGDN_FORPARSING) && !bSimplePidl) { /* go deeper if needed */
|
||||
int len = 0;
|
||||
|
||||
PathAddBackslashA(szPath); /*FIXME*/
|
||||
len = lstrlenA(szPath);
|
||||
PathAddBackslashW(wszPath);
|
||||
len = lstrlenW(wszPath);
|
||||
|
||||
if (!SUCCEEDED
|
||||
(SHELL32_GetDisplayNameOfChild(iface, pidl, dwFlags | SHGDN_INFOLDER, szPath + len, MAX_PATH - len)))
|
||||
(SHELL32_GetDisplayNameOfChild(iface, pidl, dwFlags | SHGDN_INFOLDER, wszPath + len, MAX_PATH + 1 - len)))
|
||||
return E_OUTOFMEMORY;
|
||||
if (!WideCharToMultiByte(CP_ACP, 0, wszPath, -1, szPath, MAX_PATH, NULL, NULL))
|
||||
wszPath[0] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -716,7 +718,7 @@ static HRESULT WINAPI ISF_ControlPanel_fnSetNameOf(IShellFolder2 * iface, HWND h
|
|||
LPCOLESTR lpName, DWORD dwFlags, LPITEMIDLIST * pPidlOut)
|
||||
{
|
||||
ICPanelImpl *This = (ICPanelImpl *)iface;
|
||||
FIXME("(%p)->(%p,pidl=%p,%s,%lu,%p)\n", This, hwndOwner, pidl, debugstr_w(lpName), dwFlags, pPidlOut);
|
||||
FIXME("(%p)->(%p,pidl=%p,%s,%u,%p)\n", This, hwndOwner, pidl, debugstr_w(lpName), dwFlags, pPidlOut);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
|
@ -844,7 +846,7 @@ static ULONG WINAPI ICPanel_PersistFolder2_AddRef(IPersistFolder2 * iface)
|
|||
{
|
||||
ICPanelImpl *This = impl_from_IPersistFolder2(iface);
|
||||
|
||||
TRACE("(%p)->(count=%lu)\n", This, This->ref);
|
||||
TRACE("(%p)->(count=%u)\n", This, This->ref);
|
||||
|
||||
return IUnknown_AddRef(_IUnknown_(This));
|
||||
}
|
||||
|
@ -856,7 +858,7 @@ static ULONG WINAPI ICPanel_PersistFolder2_Release(IPersistFolder2 * iface)
|
|||
{
|
||||
ICPanelImpl *This = impl_from_IPersistFolder2(iface);
|
||||
|
||||
TRACE("(%p)->(count=%lu)\n", This, This->ref);
|
||||
TRACE("(%p)->(count=%u)\n", This, This->ref);
|
||||
|
||||
return IUnknown_Release(_IUnknown_(This));
|
||||
}
|
||||
|
@ -915,7 +917,7 @@ static const IPersistFolder2Vtbl vt_PersistFolder2 =
|
|||
ICPanel_PersistFolder2_GetCurFolder
|
||||
};
|
||||
|
||||
HRESULT CPanel_GetIconLocationW(LPITEMIDLIST pidl,
|
||||
HRESULT CPanel_GetIconLocationW(LPCITEMIDLIST pidl,
|
||||
LPWSTR szIconFile, UINT cchMax, int* piIndex)
|
||||
{
|
||||
PIDLCPanelStruct* pcpanel = _ILGetCPanelPointer(pidl);
|
||||
|
@ -939,7 +941,7 @@ static HRESULT WINAPI IShellExecuteHookW_fnQueryInterface(
|
|||
{
|
||||
ICPanelImpl *This = impl_from_IShellExecuteHookW(iface);
|
||||
|
||||
TRACE("(%p)->(count=%lu)\n", This, This->ref);
|
||||
TRACE("(%p)->(count=%u)\n", This, This->ref);
|
||||
|
||||
return IUnknown_QueryInterface(This->pUnkOuter, riid, ppvObject);
|
||||
}
|
||||
|
@ -948,7 +950,7 @@ static ULONG STDMETHODCALLTYPE IShellExecuteHookW_fnAddRef(IShellExecuteHookW* i
|
|||
{
|
||||
ICPanelImpl *This = impl_from_IShellExecuteHookW(iface);
|
||||
|
||||
TRACE("(%p)->(count=%lu)\n", This, This->ref);
|
||||
TRACE("(%p)->(count=%u)\n", This, This->ref);
|
||||
|
||||
return IUnknown_AddRef(This->pUnkOuter);
|
||||
}
|
||||
|
@ -1027,7 +1029,7 @@ static HRESULT WINAPI IShellExecuteHookA_fnQueryInterface(IShellExecuteHookA* if
|
|||
{
|
||||
ICPanelImpl *This = impl_from_IShellExecuteHookA(iface);
|
||||
|
||||
TRACE("(%p)->(count=%lu)\n", This, This->ref);
|
||||
TRACE("(%p)->(count=%u)\n", This, This->ref);
|
||||
|
||||
return IUnknown_QueryInterface(This->pUnkOuter, riid, ppvObject);
|
||||
}
|
||||
|
@ -1036,7 +1038,7 @@ static ULONG STDMETHODCALLTYPE IShellExecuteHookA_fnAddRef(IShellExecuteHookA* i
|
|||
{
|
||||
ICPanelImpl *This = impl_from_IShellExecuteHookA(iface);
|
||||
|
||||
TRACE("(%p)->(count=%lu)\n", This, This->ref);
|
||||
TRACE("(%p)->(count=%u)\n", This, This->ref);
|
||||
|
||||
return IUnknown_AddRef(This->pUnkOuter);
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
#include <string.h>
|
||||
|
||||
|
@ -82,7 +82,7 @@ static ULONG WINAPI IEnumFORMATETC_fnAddRef(LPENUMFORMATETC iface)
|
|||
IEnumFORMATETCImpl *This = (IEnumFORMATETCImpl *)iface;
|
||||
ULONG refCount = InterlockedIncrement(&This->ref);
|
||||
|
||||
TRACE("(%p)->(count=%lu)\n", This, refCount - 1);
|
||||
TRACE("(%p)->(count=%u)\n", This, refCount - 1);
|
||||
|
||||
return refCount;
|
||||
}
|
||||
|
@ -92,15 +92,12 @@ static ULONG WINAPI IEnumFORMATETC_fnRelease(LPENUMFORMATETC iface)
|
|||
IEnumFORMATETCImpl *This = (IEnumFORMATETCImpl *)iface;
|
||||
ULONG refCount = InterlockedDecrement(&This->ref);
|
||||
|
||||
TRACE("(%p)->(%lu)\n", This, refCount + 1);
|
||||
TRACE("(%p)->(%u)\n", This, refCount + 1);
|
||||
|
||||
if (!refCount)
|
||||
{
|
||||
TRACE(" destroying IEnumFORMATETC(%p)\n",This);
|
||||
if (This->pFmt)
|
||||
{
|
||||
SHFree (This->pFmt);
|
||||
}
|
||||
SHFree (This->pFmt);
|
||||
HeapFree(GetProcessHeap(),0,This);
|
||||
return 0;
|
||||
}
|
||||
|
@ -112,7 +109,7 @@ static HRESULT WINAPI IEnumFORMATETC_fnNext(LPENUMFORMATETC iface, ULONG celt, F
|
|||
IEnumFORMATETCImpl *This = (IEnumFORMATETCImpl *)iface;
|
||||
UINT i;
|
||||
|
||||
TRACE("(%p)->(%lu,%p)\n", This, celt, rgelt);
|
||||
TRACE("(%p)->(%u,%p)\n", This, celt, rgelt);
|
||||
|
||||
if(!This->pFmt)return S_FALSE;
|
||||
if(!rgelt) return E_INVALIDARG;
|
||||
|
@ -131,7 +128,7 @@ static HRESULT WINAPI IEnumFORMATETC_fnNext(LPENUMFORMATETC iface, ULONG celt, F
|
|||
static HRESULT WINAPI IEnumFORMATETC_fnSkip(LPENUMFORMATETC iface, ULONG celt)
|
||||
{
|
||||
IEnumFORMATETCImpl *This = (IEnumFORMATETCImpl *)iface;
|
||||
TRACE("(%p)->(num=%lu)\n", This, celt);
|
||||
TRACE("(%p)->(num=%u)\n", This, celt);
|
||||
|
||||
if((This->posFmt + celt) >= This->countFmt) return S_FALSE;
|
||||
This->posFmt += celt;
|
||||
|
@ -256,7 +253,7 @@ static ULONG WINAPI IDataObject_fnAddRef(LPDATAOBJECT iface)
|
|||
IDataObjectImpl *This = (IDataObjectImpl *)iface;
|
||||
ULONG refCount = InterlockedIncrement(&This->ref);
|
||||
|
||||
TRACE("(%p)->(count=%lu)\n", This, refCount - 1);
|
||||
TRACE("(%p)->(count=%u)\n", This, refCount - 1);
|
||||
|
||||
return refCount;
|
||||
}
|
||||
|
@ -269,7 +266,7 @@ static ULONG WINAPI IDataObject_fnRelease(LPDATAOBJECT iface)
|
|||
IDataObjectImpl *This = (IDataObjectImpl *)iface;
|
||||
ULONG refCount = InterlockedDecrement(&This->ref);
|
||||
|
||||
TRACE("(%p)->(%lu)\n", This, refCount + 1);
|
||||
TRACE("(%p)->(%u)\n", This, refCount + 1);
|
||||
|
||||
if (!refCount)
|
||||
{
|
||||
|
@ -340,7 +337,7 @@ static HRESULT WINAPI IDataObject_fnQueryGetData(LPDATAOBJECT iface, LPFORMATETC
|
|||
IDataObjectImpl *This = (IDataObjectImpl *)iface;
|
||||
UINT i;
|
||||
|
||||
TRACE("(%p)->(fmt=0x%08x tym=0x%08lx)\n", This, pformatetc->cfFormat, pformatetc->tymed);
|
||||
TRACE("(%p)->(fmt=0x%08x tym=0x%08x)\n", This, pformatetc->cfFormat, pformatetc->tymed);
|
||||
|
||||
if(!(DVASPECT_CONTENT & pformatetc->dwAspect))
|
||||
return DV_E_DVASPECT;
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
@ -52,8 +52,8 @@ typedef struct
|
|||
typedef BOOL (*LPFNOFN) (OPENFILENAMEA *) ;
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(shell);
|
||||
INT_PTR CALLBACK RunDlgProc (HWND, UINT, WPARAM, LPARAM) ;
|
||||
void FillList (HWND, char *) ;
|
||||
static INT_PTR CALLBACK RunDlgProc (HWND, UINT, WPARAM, LPARAM) ;
|
||||
static void FillList (HWND, char *) ;
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
|
@ -66,7 +66,7 @@ BOOL WINAPI PickIconDlg(
|
|||
DWORD nMaxFile,
|
||||
LPDWORD lpdwIconIndex)
|
||||
{
|
||||
FIXME("(%p,%s,%08lx,%p):stub.\n",
|
||||
FIXME("(%p,%s,%08x,%p):stub.\n",
|
||||
hwndOwner, lpstrFile, nMaxFile,lpdwIconIndex);
|
||||
return 0xffffffff;
|
||||
}
|
||||
|
@ -116,7 +116,7 @@ void WINAPI RunFileDlg(
|
|||
}
|
||||
|
||||
/* Dialog procedure for RunFileDlg */
|
||||
INT_PTR CALLBACK RunDlgProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
static INT_PTR CALLBACK RunDlgProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
int ic ;
|
||||
char *psz, szMsg[256] ;
|
||||
|
@ -145,7 +145,7 @@ INT_PTR CALLBACK RunDlgProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lPar
|
|||
psz = HeapAlloc( GetProcessHeap(), 0, (ic + 2) );
|
||||
GetWindowTextA (htxt, psz, ic + 1) ;
|
||||
|
||||
if (ShellExecuteA(NULL, NULL, psz, NULL, NULL, SW_SHOWNORMAL) < (HINSTANCE)33)
|
||||
if (ShellExecuteA(NULL, "open", psz, NULL, NULL, SW_SHOWNORMAL) < (HINSTANCE)33)
|
||||
{
|
||||
char *pszSysMsg = NULL ;
|
||||
FormatMessageA (
|
||||
|
@ -162,7 +162,6 @@ INT_PTR CALLBACK RunDlgProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lPar
|
|||
|
||||
HeapFree(GetProcessHeap(), 0, psz);
|
||||
SendMessageA (htxt, CB_SETEDITSEL, 0, MAKELPARAM (0, -1)) ;
|
||||
SetFocus(htxt);
|
||||
return TRUE ;
|
||||
}
|
||||
FillList (htxt, psz) ;
|
||||
|
@ -218,19 +217,15 @@ INT_PTR CALLBACK RunDlgProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lPar
|
|||
return TRUE ;
|
||||
}
|
||||
|
||||
if(ofnProc (&ofn))
|
||||
{
|
||||
SetFocus (GetDlgItem (hwnd, IDOK)) ;
|
||||
SetWindowTextA (GetDlgItem (hwnd, 12298), szFName) ;
|
||||
SendMessageA (GetDlgItem (hwnd, 12298), CB_SETEDITSEL, 0, MAKELPARAM (0, -1)) ;
|
||||
SetFocus (GetDlgItem (hwnd, IDOK)) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
SetFocus(GetDlgItem(hwnd, 12288));
|
||||
}
|
||||
ofnProc (&ofn) ;
|
||||
|
||||
SetFocus (GetDlgItem (hwnd, IDOK)) ;
|
||||
SetWindowTextA (GetDlgItem (hwnd, 12298), szFName) ;
|
||||
SendMessageA (GetDlgItem (hwnd, 12298), CB_SETEDITSEL, 0, MAKELPARAM (0, -1)) ;
|
||||
SetFocus (GetDlgItem (hwnd, IDOK)) ;
|
||||
|
||||
FreeLibrary (hComdlg) ;
|
||||
|
||||
return TRUE ;
|
||||
}
|
||||
}
|
||||
|
@ -240,7 +235,7 @@ INT_PTR CALLBACK RunDlgProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lPar
|
|||
}
|
||||
|
||||
/* This grabs the MRU list from the registry and fills the combo for the "Run" dialog above */
|
||||
void FillList (HWND hCb, char *pszLatest)
|
||||
static void FillList (HWND hCb, char *pszLatest)
|
||||
{
|
||||
HKEY hkey ;
|
||||
/* char szDbgMsg[256] = "" ; */
|
||||
|
@ -252,7 +247,7 @@ void FillList (HWND hCb, char *pszLatest)
|
|||
|
||||
if (ERROR_SUCCESS != RegCreateKeyExA (
|
||||
HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RunMRU",
|
||||
0, "", REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hkey, NULL))
|
||||
0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hkey, NULL))
|
||||
MessageBoxA (hCb, "Unable to open registry key !", "Nix", MB_OK) ;
|
||||
|
||||
RegQueryValueExA (hkey, "MRUList", NULL, NULL, NULL, &icList) ;
|
||||
|
@ -411,16 +406,6 @@ int WINAPI RestartDialogEx(HWND hWndOwner, LPCWSTR lpwstrReason, DWORD uFlags, D
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* LogoffWindowsDialog [SHELL32.54]
|
||||
*/
|
||||
|
||||
int WINAPI LogoffWindowsDialog(DWORD uFlags)
|
||||
{
|
||||
ERR("LogoffWindowsDialog is UNIMPLEMENTED\n");
|
||||
ExitWindowsEx(EWX_LOGOFF, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* RestartDialog [SHELL32.59]
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#define ExtendedIntegerMultiply RtlExtendedIntegerMultiply
|
||||
#define ConvertUlongToLargeInteger RtlConvertUlongToLargeInteger
|
||||
#define LargeIntegerSubtract RtlLargeIntegerSubtract
|
||||
#define MAX_PROPERTY_SHEET_PAGE 32
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
@ -33,7 +33,6 @@
|
|||
#include "objbase.h"
|
||||
#include "undocshell.h"
|
||||
#include "shlguid.h"
|
||||
#include "winreg.h"
|
||||
|
||||
#include "wine/debug.h"
|
||||
|
||||
|
@ -138,7 +137,7 @@ static ULONG WINAPI IExtractIconW_fnAddRef(IExtractIconW * iface)
|
|||
IExtractIconWImpl *This = (IExtractIconWImpl *)iface;
|
||||
ULONG refCount = InterlockedIncrement(&This->ref);
|
||||
|
||||
TRACE("(%p)->(count=%lu)\n", This, refCount - 1);
|
||||
TRACE("(%p)->(count=%u)\n", This, refCount - 1);
|
||||
|
||||
return refCount;
|
||||
}
|
||||
|
@ -150,7 +149,7 @@ static ULONG WINAPI IExtractIconW_fnRelease(IExtractIconW * iface)
|
|||
IExtractIconWImpl *This = (IExtractIconWImpl *)iface;
|
||||
ULONG refCount = InterlockedDecrement(&This->ref);
|
||||
|
||||
TRACE("(%p)->(count=%lu)\n", This, refCount + 1);
|
||||
TRACE("(%p)->(count=%u)\n", This, refCount + 1);
|
||||
|
||||
if (!refCount)
|
||||
{
|
||||
|
@ -166,7 +165,7 @@ static HRESULT getIconLocationForFolder(IExtractIconW *iface, UINT uFlags,
|
|||
LPWSTR szIconFile, UINT cchMax, int *piIndex, UINT *pwFlags)
|
||||
{
|
||||
IExtractIconWImpl *This = (IExtractIconWImpl *)iface;
|
||||
DWORD dwNr;
|
||||
int icon_idx;
|
||||
WCHAR wszPath[MAX_PATH];
|
||||
WCHAR wszCLSIDValue[CHARS_IN_GUID];
|
||||
static const WCHAR shellClassInfo[] = { '.','S','h','e','l','l','C','l','a','s','s','I','n','f','o',0 };
|
||||
|
@ -185,27 +184,32 @@ static HRESULT getIconLocationForFolder(IExtractIconW *iface, UINT uFlags,
|
|||
}
|
||||
else if (SHELL32_GetCustomFolderAttribute(This->pidl, shellClassInfo, clsid,
|
||||
wszCLSIDValue, CHARS_IN_GUID) &&
|
||||
HCR_GetDefaultIconW(wszCLSIDValue, szIconFile, cchMax, &dwNr))
|
||||
HCR_GetDefaultIconW(wszCLSIDValue, szIconFile, cchMax, &icon_idx))
|
||||
{
|
||||
*piIndex = dwNr;
|
||||
*piIndex = icon_idx;
|
||||
}
|
||||
else if (SHELL32_GetCustomFolderAttribute(This->pidl, shellClassInfo, clsid2,
|
||||
wszCLSIDValue, CHARS_IN_GUID) &&
|
||||
HCR_GetDefaultIconW(wszCLSIDValue, szIconFile, cchMax, &dwNr))
|
||||
HCR_GetDefaultIconW(wszCLSIDValue, szIconFile, cchMax, &icon_idx))
|
||||
{
|
||||
*piIndex = dwNr;
|
||||
*piIndex = icon_idx;
|
||||
}
|
||||
else
|
||||
{
|
||||
static const WCHAR folder[] = { 'F','o','l','d','e','r',0 };
|
||||
|
||||
if (!HCR_GetDefaultIconW(folder, szIconFile, cchMax, &dwNr))
|
||||
if (!HCR_GetDefaultIconW(folder, szIconFile, cchMax, &icon_idx))
|
||||
{
|
||||
lstrcpynW(szIconFile, swShell32Name, cchMax);
|
||||
dwNr = IDI_SHELL_FOLDER;
|
||||
icon_idx = -IDI_SHELL_FOLDER;
|
||||
}
|
||||
*piIndex = -((uFlags & GIL_OPENICON) ? dwNr + 1 : dwNr);
|
||||
|
||||
if (uFlags & GIL_OPENICON)
|
||||
*piIndex = icon_idx<0? icon_idx-1: icon_idx+1;
|
||||
else
|
||||
*piIndex = icon_idx;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
@ -227,7 +231,7 @@ static HRESULT WINAPI IExtractIconW_fnGetIconLocation(
|
|||
IExtractIconWImpl *This = (IExtractIconWImpl *)iface;
|
||||
|
||||
char sTemp[MAX_PATH];
|
||||
DWORD dwNr;
|
||||
int icon_idx;
|
||||
GUID const * riid;
|
||||
LPITEMIDLIST pSimplePidl = ILFindLastID(This->pidl);
|
||||
|
||||
|
@ -256,9 +260,9 @@ static HRESULT WINAPI IExtractIconW_fnGetIconLocation(
|
|||
riid->Data4[0], riid->Data4[1], riid->Data4[2], riid->Data4[3],
|
||||
riid->Data4[4], riid->Data4[5], riid->Data4[6], riid->Data4[7]);
|
||||
|
||||
if (HCR_GetDefaultIconW(xriid, szIconFile, cchMax, &dwNr))
|
||||
if (HCR_GetDefaultIconW(xriid, szIconFile, cchMax, &icon_idx))
|
||||
{
|
||||
*piIndex = dwNr;
|
||||
*piIndex = icon_idx;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -269,6 +273,9 @@ static HRESULT WINAPI IExtractIconW_fnGetIconLocation(
|
|||
*piIndex = -IDI_SHELL_MY_DOCUMENTS;
|
||||
else if(IsEqualGUID(riid, &CLSID_NetworkPlaces))
|
||||
*piIndex = -IDI_SHELL_MY_NETWORK_PLACES;
|
||||
else if(IsEqualGUID(riid, &CLSID_UnixFolder) ||
|
||||
IsEqualGUID(riid, &CLSID_UnixDosFolder))
|
||||
*piIndex = -IDI_SHELL_DRIVE;
|
||||
else
|
||||
*piIndex = -IDI_SHELL_FOLDER;
|
||||
}
|
||||
|
@ -298,9 +305,9 @@ static HRESULT WINAPI IExtractIconW_fnGetIconLocation(
|
|||
}
|
||||
else
|
||||
{
|
||||
if (HCR_GetDefaultIconW(drive, szIconFile, cchMax, &dwNr))
|
||||
if (HCR_GetDefaultIconW(drive, szIconFile, cchMax, &icon_idx))
|
||||
{
|
||||
*piIndex = dwNr;
|
||||
*piIndex = icon_idx;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -326,7 +333,7 @@ static HRESULT WINAPI IExtractIconW_fnGetIconLocation(
|
|||
else if (_ILGetExtension(pSimplePidl, sTemp, MAX_PATH))
|
||||
{
|
||||
if (HCR_MapTypeToValueA(sTemp, sTemp, MAX_PATH, TRUE)
|
||||
&& HCR_GetDefaultIconA(sTemp, sTemp, MAX_PATH, &dwNr))
|
||||
&& HCR_GetDefaultIconA(sTemp, sTemp, MAX_PATH, &icon_idx))
|
||||
{
|
||||
if (!lstrcmpA("%1", sTemp)) /* icon is in the file */
|
||||
{
|
||||
|
@ -336,7 +343,7 @@ static HRESULT WINAPI IExtractIconW_fnGetIconLocation(
|
|||
else
|
||||
{
|
||||
MultiByteToWideChar(CP_ACP, 0, sTemp, -1, szIconFile, cchMax);
|
||||
*piIndex = dwNr;
|
||||
*piIndex = icon_idx;
|
||||
}
|
||||
|
||||
found = TRUE;
|
||||
|
|
|
@ -18,9 +18,12 @@
|
|||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#define COBJMACROS
|
||||
#define NONAMELESSUNION
|
||||
#define YDEBUG
|
||||
|
||||
#include "config.h"
|
||||
#include "wine/port.h"
|
||||
#define YDEBUG
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
|
@ -39,16 +42,61 @@
|
|||
#include "shell32_main.h"
|
||||
#include "shresdef.h"
|
||||
#include "undocshell.h"
|
||||
#include <prsht.h>
|
||||
#include "prsht.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(shell);
|
||||
|
||||
#define MAX_PROPERTY_SHEET_PAGE 32
|
||||
|
||||
typedef struct _LANGANDCODEPAGE_
|
||||
{
|
||||
WORD lang;
|
||||
WORD code;
|
||||
} LANGANDCODEPAGE, *LPLANGANDCODEPAGE;
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* SH_CreatePropertySheetPage [Internal]
|
||||
*
|
||||
* creates a property sheet page from an resource name
|
||||
*
|
||||
*/
|
||||
HPROPSHEETPAGE
|
||||
SH_CreatePropertySheetPage(LPSTR resname, DLGPROC dlgproc, LPARAM lParam)
|
||||
{
|
||||
HRSRC hRes;
|
||||
LPVOID lpsztemplate;
|
||||
PROPSHEETPAGEW ppage;
|
||||
|
||||
if (resname == NULL)
|
||||
return (HPROPSHEETPAGE)0;
|
||||
|
||||
hRes = FindResourceA(shell32_hInstance, resname, (LPSTR)RT_DIALOG);
|
||||
|
||||
if (hRes == NULL)
|
||||
{
|
||||
ERR("failed to find resource name\n");
|
||||
return (HPROPSHEETPAGE)0;
|
||||
}
|
||||
lpsztemplate = LoadResource(shell32_hInstance, hRes);
|
||||
if (lpsztemplate == NULL)
|
||||
return (HPROPSHEETPAGE)0;
|
||||
|
||||
memset(&ppage, 0x0, sizeof(PROPSHEETPAGEW));
|
||||
ppage.dwSize = sizeof(PROPSHEETPAGEW);
|
||||
ppage.dwFlags = PSP_DLGINDIRECT;
|
||||
ppage.u.pResource = lpsztemplate;
|
||||
ppage.pfnDlgProc = dlgproc;
|
||||
ppage.lParam = lParam;
|
||||
return CreatePropertySheetPageW(&ppage);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* SH_FileGeneralFileType [Internal]
|
||||
|
@ -616,7 +664,7 @@ SH_ShowPropertiesDialog(WCHAR * lpf)
|
|||
pinfo.dwSize = sizeof(PROPSHEETHEADERW);
|
||||
pinfo.dwFlags = PSH_NOCONTEXTHELP | PSH_PROPTITLE;
|
||||
pinfo.nPages = num_pages;
|
||||
pinfo.phpage = hppages;
|
||||
pinfo.u3.phpage = hppages;
|
||||
pinfo.pszCaption = wFileName;
|
||||
return (PropertySheetW(&pinfo) != -1);
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*
|
||||
* NOTES
|
||||
* a pidl == NULL means desktop and is legal
|
||||
|
@ -43,7 +43,6 @@
|
|||
#include "winnls.h"
|
||||
#include "undocshell.h"
|
||||
#include "shell32_main.h"
|
||||
#include "shellapi.h"
|
||||
#include "shlwapi.h"
|
||||
|
||||
#include "pidl.h"
|
||||
|
@ -78,7 +77,7 @@ BOOL WINAPI ILGetDisplayNameExA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPSTR pat
|
|||
BOOL ret = FALSE;
|
||||
WCHAR wPath[MAX_PATH];
|
||||
|
||||
TRACE("%p %p %p %ld\n", psf, pidl, path, type);
|
||||
TRACE("%p %p %p %d\n", psf, pidl, path, type);
|
||||
|
||||
if (!pidl || !path)
|
||||
return FALSE;
|
||||
|
@ -98,7 +97,7 @@ BOOL WINAPI ILGetDisplayNameExW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPWSTR pa
|
|||
STRRET strret;
|
||||
DWORD flag;
|
||||
|
||||
TRACE("%p %p %p %ld\n", psf, pidl, path, type);
|
||||
TRACE("%p %p %p %d\n", psf, pidl, path, type);
|
||||
|
||||
if (!pidl || !path)
|
||||
return FALSE;
|
||||
|
@ -124,7 +123,7 @@ BOOL WINAPI ILGetDisplayNameExW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPWSTR pa
|
|||
flag = SHGDN_INFOLDER;
|
||||
break;
|
||||
default:
|
||||
FIXME("Unknown type parameter = %lx\n", type);
|
||||
FIXME("Unknown type parameter = %x\n", type);
|
||||
flag = SHGDN_FORPARSING | SHGDN_FORADDRESSBAR;
|
||||
break;
|
||||
}
|
||||
|
@ -133,7 +132,8 @@ BOOL WINAPI ILGetDisplayNameExW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPWSTR pa
|
|||
ret = IShellFolder_GetDisplayNameOf(lsf, pidl, flag, &strret);
|
||||
if (SUCCEEDED(ret))
|
||||
{
|
||||
ret = StrRetToStrNW(path, MAX_PATH, &strret, pidl);
|
||||
if(!StrRetToStrNW(path, MAX_PATH, &strret, pidl))
|
||||
ret = E_FAIL;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -144,7 +144,8 @@ BOOL WINAPI ILGetDisplayNameExW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPWSTR pa
|
|||
ret = IShellFolder_GetDisplayNameOf(psfParent, pidllast, flag, &strret);
|
||||
if (SUCCEEDED(ret))
|
||||
{
|
||||
ret = StrRetToStrNW(path, MAX_PATH, &strret, pidllast);
|
||||
if(!StrRetToStrNW(path, MAX_PATH, &strret, pidllast))
|
||||
ret = E_FAIL;
|
||||
}
|
||||
IShellFolder_Release(psfParent);
|
||||
}
|
||||
|
@ -160,7 +161,7 @@ BOOL WINAPI ILGetDisplayNameExW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPWSTR pa
|
|||
|
||||
BOOL WINAPI ILGetDisplayNameEx(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPVOID path, DWORD type)
|
||||
{
|
||||
TRACE_(shell)("%p %p %p %ld\n", psf, pidl, path, type);
|
||||
TRACE_(shell)("%p %p %p %d\n", psf, pidl, path, type);
|
||||
|
||||
if (SHELL_OsIsUnicode())
|
||||
return ILGetDisplayNameExW(psf, pidl, path, type);
|
||||
|
@ -289,11 +290,8 @@ HRESULT WINAPI ILLoadFromStream (IStream * pStream, LPITEMIDLIST * ppPidl)
|
|||
|
||||
TRACE_(shell)("%p %p\n", pStream , ppPidl);
|
||||
|
||||
if (*ppPidl)
|
||||
{
|
||||
SHFree(*ppPidl);
|
||||
*ppPidl = NULL;
|
||||
}
|
||||
SHFree(*ppPidl);
|
||||
*ppPidl = NULL;
|
||||
|
||||
IStream_AddRef (pStream);
|
||||
|
||||
|
@ -389,7 +387,7 @@ HRESULT WINAPI SHILCreateFromPathA(LPCSTR path, LPITEMIDLIST * ppidl, DWORD * at
|
|||
{
|
||||
WCHAR lpszDisplayName[MAX_PATH];
|
||||
|
||||
TRACE_(shell)("%s %p 0x%08lx\n", path, ppidl, attributes ? *attributes : 0);
|
||||
TRACE_(shell)("%s %p 0x%08x\n", path, ppidl, attributes ? *attributes : 0);
|
||||
|
||||
if (!MultiByteToWideChar(CP_ACP, 0, path, -1, lpszDisplayName, MAX_PATH))
|
||||
lpszDisplayName[MAX_PATH-1] = 0;
|
||||
|
@ -403,7 +401,7 @@ HRESULT WINAPI SHILCreateFromPathW(LPCWSTR path, LPITEMIDLIST * ppidl, DWORD * a
|
|||
DWORD pchEaten;
|
||||
HRESULT ret = E_FAIL;
|
||||
|
||||
TRACE_(shell)("%s %p 0x%08lx\n", debugstr_w(path), ppidl, attributes ? *attributes : 0);
|
||||
TRACE_(shell)("%s %p 0x%08x\n", debugstr_w(path), ppidl, attributes ? *attributes : 0);
|
||||
|
||||
if (SUCCEEDED (SHGetDesktopFolder(&sf)))
|
||||
{
|
||||
|
@ -442,7 +440,7 @@ HRESULT WINAPI SHILCreateFromPathAW (LPCVOID path, LPITEMIDLIST * ppidl, DWORD *
|
|||
LPITEMIDLIST WINAPI SHCloneSpecialIDList(HWND hwndOwner, DWORD nFolder, BOOL fCreate)
|
||||
{
|
||||
LPITEMIDLIST ppidl;
|
||||
TRACE_(shell)("(hwnd=%p,csidl=0x%lx,%s).\n", hwndOwner, nFolder, fCreate ? "T" : "F");
|
||||
TRACE_(shell)("(hwnd=%p,csidl=0x%x,%s).\n", hwndOwner, nFolder, fCreate ? "T" : "F");
|
||||
|
||||
if (fCreate)
|
||||
nFolder |= CSIDL_FLAG_CREATE;
|
||||
|
@ -863,8 +861,7 @@ LPITEMIDLIST WINAPI ILAppend(LPITEMIDLIST pidl, LPCITEMIDLIST item, BOOL bEnd)
|
|||
if (_ILIsDesktop(pidl))
|
||||
{
|
||||
idlRet = ILClone(item);
|
||||
if (pidl)
|
||||
SHFree (pidl);
|
||||
SHFree (pidl);
|
||||
return idlRet;
|
||||
}
|
||||
|
||||
|
@ -894,8 +891,7 @@ LPITEMIDLIST WINAPI ILAppend(LPITEMIDLIST pidl, LPCITEMIDLIST item, BOOL bEnd)
|
|||
void WINAPI ILFree(LPITEMIDLIST pidl)
|
||||
{
|
||||
TRACE("(pidl=%p)\n",pidl);
|
||||
if (pidl)
|
||||
SHFree(pidl);
|
||||
SHFree(pidl);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
|
@ -916,8 +912,7 @@ void WINAPI ILGlobalFree( LPITEMIDLIST pidl)
|
|||
{
|
||||
TRACE("%p\n", pidl);
|
||||
|
||||
if (pidl)
|
||||
Free(pidl);
|
||||
Free(pidl);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
|
@ -1005,7 +1000,7 @@ static HRESULT WINAPI _ILParsePathW(LPCWSTR path, LPWIN32_FIND_DATAW lpFindFile,
|
|||
LPBC pBC = NULL;
|
||||
HRESULT ret;
|
||||
|
||||
TRACE("%s %p %d (%p)->%p (%p)->0x%lx\n", debugstr_w(path), lpFindFile, bBindCtx,
|
||||
TRACE("%s %p %d (%p)->%p (%p)->0x%x\n", debugstr_w(path), lpFindFile, bBindCtx,
|
||||
ppidl, ppidl ? *ppidl : NULL,
|
||||
prgfInOut, prgfInOut ? *prgfInOut : 0);
|
||||
|
||||
|
@ -1032,7 +1027,7 @@ static HRESULT WINAPI _ILParsePathW(LPCWSTR path, LPWIN32_FIND_DATAW lpFindFile,
|
|||
if (!SUCCEEDED(ret) && ppidl)
|
||||
*ppidl = NULL;
|
||||
|
||||
TRACE("%s %p 0x%lx\n", debugstr_w(path), ppidl ? *ppidl : NULL, prgfInOut ? *prgfInOut : 0);
|
||||
TRACE("%s %p 0x%x\n", debugstr_w(path), ppidl ? *ppidl : NULL, prgfInOut ? *prgfInOut : 0);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -1238,8 +1233,7 @@ BOOL WINAPI SHGetPathFromIDListA(LPCITEMIDLIST pidl, LPSTR pszPath)
|
|||
BOOL bSuccess;
|
||||
|
||||
bSuccess = SHGetPathFromIDListW(pidl, wszPath);
|
||||
if (bSuccess)
|
||||
WideCharToMultiByte(CP_ACP, 0, wszPath, -1, pszPath, MAX_PATH, NULL, NULL);
|
||||
WideCharToMultiByte(CP_ACP, 0, wszPath, -1, pszPath, MAX_PATH, NULL, NULL);
|
||||
|
||||
return bSuccess;
|
||||
}
|
||||
|
@ -1257,9 +1251,10 @@ BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
|
|||
DWORD dwAttributes;
|
||||
STRRET strret;
|
||||
|
||||
TRACE_(shell)("(pidl=%p,%p)\n", pidl, debugstr_w(pszPath));
|
||||
TRACE_(shell)("(pidl=%p,%p)\n", pidl, pszPath);
|
||||
pdump(pidl);
|
||||
|
||||
*pszPath = '\0';
|
||||
if (!pidl)
|
||||
return FALSE;
|
||||
|
||||
|
@ -1279,7 +1274,7 @@ BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
|
|||
|
||||
hr = StrRetToBufW(&strret, pidlLast, pszPath, MAX_PATH);
|
||||
|
||||
TRACE_(shell)("-- %s, 0x%08lx\n",debugstr_w(pszPath), hr);
|
||||
TRACE_(shell)("-- %s, 0x%08x\n",debugstr_w(pszPath), hr);
|
||||
return SUCCEEDED(hr);
|
||||
}
|
||||
|
||||
|
@ -1323,7 +1318,7 @@ HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCI
|
|||
if (SUCCEEDED(hr) && ppidlLast)
|
||||
*ppidlLast = ILFindLastID(pidl);
|
||||
|
||||
TRACE_(shell)("-- psf=%p pidl=%p ret=0x%08lx\n", *ppv, (ppidlLast)?*ppidlLast:NULL, hr);
|
||||
TRACE_(shell)("-- psf=%p pidl=%p ret=0x%08x\n", *ppv, (ppidlLast)?*ppidlLast:NULL, hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -1361,7 +1356,7 @@ LPITEMIDLIST _ILAlloc(PIDLTYPE type, unsigned int size)
|
|||
return pidlOut;
|
||||
}
|
||||
|
||||
LPITEMIDLIST _ILCreateDesktop()
|
||||
LPITEMIDLIST _ILCreateDesktop(void)
|
||||
{
|
||||
LPITEMIDLIST ret;
|
||||
|
||||
|
@ -1372,19 +1367,25 @@ LPITEMIDLIST _ILCreateDesktop()
|
|||
return ret;
|
||||
}
|
||||
|
||||
LPITEMIDLIST _ILCreateMyComputer()
|
||||
LPITEMIDLIST _ILCreateMyComputer(void)
|
||||
{
|
||||
TRACE("()\n");
|
||||
return _ILCreateGuid(PT_GUID, &CLSID_MyComputer);
|
||||
}
|
||||
|
||||
LPITEMIDLIST _ILCreateIExplore()
|
||||
LPITEMIDLIST _ILCreateMyDocuments(void)
|
||||
{
|
||||
TRACE("()\n");
|
||||
return _ILCreateGuid(PT_GUID, &CLSID_MyDocuments);
|
||||
}
|
||||
|
||||
LPITEMIDLIST _ILCreateIExplore(void)
|
||||
{
|
||||
TRACE("()\n");
|
||||
return _ILCreateGuid(PT_GUID, &CLSID_Internet);
|
||||
}
|
||||
|
||||
LPITEMIDLIST _ILCreateControlPanel()
|
||||
LPITEMIDLIST _ILCreateControlPanel(void)
|
||||
{
|
||||
LPITEMIDLIST parent = _ILCreateGuid(PT_GUID, &CLSID_MyComputer), ret = NULL;
|
||||
|
||||
|
@ -1403,7 +1404,7 @@ LPITEMIDLIST _ILCreateControlPanel()
|
|||
return ret;
|
||||
}
|
||||
|
||||
LPITEMIDLIST _ILCreatePrinters()
|
||||
LPITEMIDLIST _ILCreatePrinters(void)
|
||||
{
|
||||
LPITEMIDLIST parent = _ILCreateGuid(PT_GUID, &CLSID_MyComputer), ret = NULL;
|
||||
|
||||
|
@ -1422,13 +1423,13 @@ LPITEMIDLIST _ILCreatePrinters()
|
|||
return ret;
|
||||
}
|
||||
|
||||
LPITEMIDLIST _ILCreateNetwork()
|
||||
LPITEMIDLIST _ILCreateNetwork(void)
|
||||
{
|
||||
TRACE("()\n");
|
||||
return _ILCreateGuid(PT_GUID, &CLSID_NetworkPlaces);
|
||||
}
|
||||
|
||||
LPITEMIDLIST _ILCreateBitBucket()
|
||||
LPITEMIDLIST _ILCreateBitBucket(void)
|
||||
{
|
||||
TRACE("()\n");
|
||||
return _ILCreateGuid(PT_GUID, &CLSID_RecycleBin);
|
||||
|
@ -1482,95 +1483,52 @@ LPITEMIDLIST _ILCreateGuidFromStrW(LPCWSTR szGUID)
|
|||
return _ILCreateGuid(PT_GUID, &iid);
|
||||
}
|
||||
|
||||
LPITEMIDLIST _ILCreateFromFindDataW( WIN32_FIND_DATAW *wfd )
|
||||
{
|
||||
/* FIXME: should make unicode PIDLs */
|
||||
WIN32_FIND_DATAA fda;
|
||||
|
||||
memset( &fda, 0, sizeof fda );
|
||||
fda.dwFileAttributes = wfd->dwFileAttributes;
|
||||
fda.ftCreationTime = wfd->ftCreationTime;
|
||||
fda.ftLastAccessTime = wfd->ftLastAccessTime;
|
||||
fda.ftLastWriteTime = wfd->ftLastWriteTime;
|
||||
fda.nFileSizeHigh = wfd->nFileSizeHigh;
|
||||
fda.nFileSizeLow = wfd->nFileSizeLow;
|
||||
fda.dwReserved0 = wfd->dwReserved0;
|
||||
fda.dwReserved1 = wfd->dwReserved1;
|
||||
WideCharToMultiByte( CP_ACP, 0, wfd->cFileName, -1,
|
||||
fda.cFileName, MAX_PATH, NULL, NULL );
|
||||
return _ILCreateFromFindDataA( &fda );
|
||||
}
|
||||
|
||||
LPITEMIDLIST _ILCreateFromFindDataA(WIN32_FIND_DATAA * stffile )
|
||||
LPITEMIDLIST _ILCreateFromFindDataW( const WIN32_FIND_DATAW *wfd )
|
||||
{
|
||||
char buff[MAX_PATH + 14 +1]; /* see WIN32_FIND_DATA */
|
||||
char * pbuff = buff;
|
||||
size_t len, len1;
|
||||
DWORD len, len1, wlen, alen;
|
||||
LPITEMIDLIST pidl;
|
||||
PIDLTYPE type;
|
||||
|
||||
if (!stffile)
|
||||
if (!wfd)
|
||||
return NULL;
|
||||
|
||||
TRACE("(%s, %s)\n",stffile->cAlternateFileName, stffile->cFileName);
|
||||
TRACE("(%s, %s)\n",debugstr_w(wfd->cAlternateFileName), debugstr_w(wfd->cFileName));
|
||||
|
||||
/* prepare buffer with both names */
|
||||
len = strlen (stffile->cFileName) + 1;
|
||||
memcpy (pbuff, stffile->cFileName, len);
|
||||
pbuff += len;
|
||||
len = WideCharToMultiByte(CP_ACP,0,wfd->cFileName,-1,buff,MAX_PATH,NULL,NULL);
|
||||
len1 = WideCharToMultiByte(CP_ACP,0,wfd->cAlternateFileName,-1, buff+len, sizeof(buff)-len, NULL, NULL);
|
||||
alen = len + len1;
|
||||
|
||||
len1 = strlen (stffile->cAlternateFileName)+1;
|
||||
memcpy (pbuff, stffile->cAlternateFileName, len1);
|
||||
type = (wfd->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? PT_FOLDER : PT_VALUE;
|
||||
|
||||
type = (stffile->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? PT_FOLDER : PT_VALUE;
|
||||
|
||||
/*
|
||||
* FileStruct already has one byte for the first name, so use len - 1 in
|
||||
* size calculation
|
||||
*/
|
||||
pidl = _ILAlloc(type, sizeof(FileStruct) + (len - 1) + len1);
|
||||
wlen = lstrlenW(wfd->cFileName) + 1;
|
||||
pidl = _ILAlloc(type, FIELD_OFFSET(FileStruct, szNames[alen + (alen & 1)]) +
|
||||
FIELD_OFFSET(FileStructW, wszName[wlen]) + sizeof(WORD));
|
||||
if (pidl)
|
||||
{
|
||||
LPPIDLDATA pData;
|
||||
LPSTR pszDest;
|
||||
LPPIDLDATA pData = _ILGetDataPointer(pidl);
|
||||
FileStruct *fs = &pData->u.file;
|
||||
FileStructW *fsw;
|
||||
WORD *pOffsetW;
|
||||
|
||||
/* set attributes */
|
||||
pData = _ILGetDataPointer(pidl);
|
||||
if (pData)
|
||||
{
|
||||
pData->type = type;
|
||||
FileTimeToDosDateTime( &(stffile->ftLastWriteTime),
|
||||
&pData->u.file.uFileDate, &pData->u.file.uFileTime);
|
||||
pData->u.file.dwFileSize = stffile->nFileSizeLow;
|
||||
pData->u.file.uFileAttribs = (WORD)stffile->dwFileAttributes;
|
||||
}
|
||||
pszDest = _ILGetTextPointer(pidl);
|
||||
if (pszDest)
|
||||
{
|
||||
memcpy(pszDest, buff, len + len1);
|
||||
TRACE("-- create Value: %s\n",debugstr_a(pszDest));
|
||||
}
|
||||
FileTimeToDosDateTime( &wfd->ftLastWriteTime, &fs->uFileDate, &fs->uFileTime);
|
||||
fs->dwFileSize = wfd->nFileSizeLow;
|
||||
fs->uFileAttribs = wfd->dwFileAttributes;
|
||||
memcpy(fs->szNames, buff, alen);
|
||||
|
||||
fsw = (FileStructW*)(pData->u.file.szNames + alen + (alen & 0x1));
|
||||
fsw->cbLen = FIELD_OFFSET(FileStructW, wszName[wlen]) + sizeof(WORD);
|
||||
FileTimeToDosDateTime( &wfd->ftCreationTime, &fsw->uCreationDate, &fsw->uCreationTime);
|
||||
FileTimeToDosDateTime( &wfd->ftLastAccessTime, &fsw->uLastAccessDate, &fsw->uLastAccessTime);
|
||||
memcpy(fsw->wszName, wfd->cFileName, wlen * sizeof(WCHAR));
|
||||
|
||||
pOffsetW = (WORD*)((LPBYTE)pidl + pidl->mkid.cb - sizeof(WORD));
|
||||
*pOffsetW = (LPBYTE)fsw - (LPBYTE)pidl;
|
||||
TRACE("-- Set Value: %s\n",debugstr_w(fsw->wszName));
|
||||
}
|
||||
return pidl;
|
||||
}
|
||||
|
||||
HRESULT _ILCreateFromPathA(LPCSTR szPath, LPITEMIDLIST* ppidl)
|
||||
{
|
||||
HANDLE hFile;
|
||||
WIN32_FIND_DATAA stffile;
|
||||
|
||||
if (!ppidl)
|
||||
return E_INVALIDARG;
|
||||
|
||||
hFile = FindFirstFileA(szPath, &stffile);
|
||||
if (hFile == INVALID_HANDLE_VALUE)
|
||||
return HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND);
|
||||
|
||||
FindClose(hFile);
|
||||
|
||||
*ppidl = _ILCreateFromFindDataA(&stffile);
|
||||
|
||||
return *ppidl ? S_OK : E_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
HRESULT _ILCreateFromPathW(LPCWSTR szPath, LPITEMIDLIST* ppidl)
|
||||
|
@ -1640,6 +1598,7 @@ DWORD _ILGetDrive(LPCITEMIDLIST pidl,LPSTR pOut, UINT uSize)
|
|||
* ### 2. section testing pidls ###
|
||||
*
|
||||
**************************************************************************
|
||||
* _ILIsUnicode()
|
||||
* _ILIsDesktop()
|
||||
* _ILIsMyComputer()
|
||||
* _ILIsSpecialFolder()
|
||||
|
@ -1648,6 +1607,15 @@ DWORD _ILGetDrive(LPCITEMIDLIST pidl,LPSTR pOut, UINT uSize)
|
|||
* _ILIsValue()
|
||||
* _ILIsPidlSimple()
|
||||
*/
|
||||
BOOL _ILIsUnicode(LPCITEMIDLIST pidl)
|
||||
{
|
||||
LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
|
||||
|
||||
TRACE("(%p)\n",pidl);
|
||||
|
||||
return (pidl && lpPData && PT_VALUEW == lpPData->type);
|
||||
}
|
||||
|
||||
BOOL _ILIsDesktop(LPCITEMIDLIST pidl)
|
||||
{
|
||||
TRACE("(%p)\n",pidl);
|
||||
|
@ -1752,6 +1720,7 @@ DWORD _ILSimpleGetText (LPCITEMIDLIST pidl, LPSTR szOut, UINT uOutSize)
|
|||
{
|
||||
DWORD dwReturn=0;
|
||||
LPSTR szSrc;
|
||||
LPWSTR szSrcW;
|
||||
GUID const * riid;
|
||||
char szTemp[MAX_PATH];
|
||||
|
||||
|
@ -1782,6 +1751,16 @@ DWORD _ILSimpleGetText (LPCITEMIDLIST pidl, LPSTR szOut, UINT uOutSize)
|
|||
|
||||
dwReturn = strlen(szSrc);
|
||||
}
|
||||
else if (( szSrcW = _ILGetTextPointerW(pidl) ))
|
||||
{
|
||||
/* unicode filesystem */
|
||||
WideCharToMultiByte(CP_ACP,0,szSrcW, -1, szTemp, MAX_PATH, NULL, NULL);
|
||||
|
||||
if (szOut)
|
||||
lstrcpynA(szOut, szTemp, uOutSize);
|
||||
|
||||
dwReturn = strlen (szTemp);
|
||||
}
|
||||
else if (( riid = _ILGetGUIDPointer(pidl) ))
|
||||
{
|
||||
/* special folder */
|
||||
|
@ -1798,7 +1777,7 @@ DWORD _ILSimpleGetText (LPCITEMIDLIST pidl, LPSTR szOut, UINT uOutSize)
|
|||
ERR("-- no text\n");
|
||||
}
|
||||
|
||||
TRACE("-- (%p=%s 0x%08lx)\n",szOut,debugstr_a(szOut),dwReturn);
|
||||
TRACE("-- (%p=%s 0x%08x)\n",szOut,debugstr_a(szOut),dwReturn);
|
||||
return dwReturn;
|
||||
}
|
||||
|
||||
|
@ -1812,7 +1791,6 @@ DWORD _ILSimpleGetText (LPCITEMIDLIST pidl, LPSTR szOut, UINT uOutSize)
|
|||
DWORD _ILSimpleGetTextW (LPCITEMIDLIST pidl, LPWSTR szOut, UINT uOutSize)
|
||||
{
|
||||
DWORD dwReturn;
|
||||
char szTemp[MAX_PATH];
|
||||
FileStructW *pFileStructW = _ILGetFileStructW(pidl);
|
||||
|
||||
TRACE("(%p %p %x)\n",pidl,szOut,uOutSize);
|
||||
|
@ -1821,13 +1799,65 @@ DWORD _ILSimpleGetTextW (LPCITEMIDLIST pidl, LPWSTR szOut, UINT uOutSize)
|
|||
lstrcpynW(szOut, pFileStructW->wszName, uOutSize);
|
||||
dwReturn = lstrlenW(pFileStructW->wszName);
|
||||
} else {
|
||||
dwReturn = _ILSimpleGetText(pidl, szTemp, MAX_PATH);
|
||||
GUID const * riid;
|
||||
WCHAR szTemp[MAX_PATH];
|
||||
LPSTR szSrc;
|
||||
LPWSTR szSrcW;
|
||||
dwReturn=0;
|
||||
|
||||
if (!MultiByteToWideChar(CP_ACP, 0, szTemp, -1, szOut, uOutSize))
|
||||
if (!pidl)
|
||||
return 0;
|
||||
|
||||
if (szOut)
|
||||
*szOut = 0;
|
||||
|
||||
if (_ILIsDesktop(pidl))
|
||||
{
|
||||
/* desktop */
|
||||
if (HCR_GetClassNameW(&CLSID_ShellDesktop, szTemp, MAX_PATH))
|
||||
{
|
||||
if (szOut)
|
||||
lstrcpynW(szOut, szTemp, uOutSize);
|
||||
|
||||
dwReturn = lstrlenW (szTemp);
|
||||
}
|
||||
}
|
||||
else if (( szSrcW = _ILGetTextPointerW(pidl) ))
|
||||
{
|
||||
/* unicode filesystem */
|
||||
if (szOut)
|
||||
lstrcpynW(szOut, szSrcW, uOutSize);
|
||||
|
||||
dwReturn = lstrlenW(szSrcW);
|
||||
}
|
||||
else if (( szSrc = _ILGetTextPointer(pidl) ))
|
||||
{
|
||||
/* filesystem */
|
||||
MultiByteToWideChar(CP_ACP, 0, szSrc, -1, szTemp, MAX_PATH);
|
||||
|
||||
if (szOut)
|
||||
lstrcpynW(szOut, szTemp, uOutSize);
|
||||
|
||||
dwReturn = lstrlenW (szTemp);
|
||||
}
|
||||
else if (( riid = _ILGetGUIDPointer(pidl) ))
|
||||
{
|
||||
/* special folder */
|
||||
if ( HCR_GetClassNameW(riid, szTemp, MAX_PATH) )
|
||||
{
|
||||
if (szOut)
|
||||
lstrcpynW(szOut, szTemp, uOutSize);
|
||||
|
||||
dwReturn = lstrlenW (szTemp);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ERR("-- no text\n");
|
||||
}
|
||||
}
|
||||
|
||||
TRACE("-- (%p=%s 0x%08lx)\n",szOut,debugstr_w(szOut),dwReturn);
|
||||
TRACE("-- (%p=%s 0x%08x)\n",szOut,debugstr_w(szOut),dwReturn);
|
||||
return dwReturn;
|
||||
}
|
||||
|
||||
|
@ -1845,6 +1875,56 @@ LPPIDLDATA _ILGetDataPointer(LPCITEMIDLIST pidl)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* _ILGetTextPointerW()
|
||||
* gets a pointer to the unicode long filename string stored in the pidl
|
||||
*/
|
||||
LPWSTR _ILGetTextPointerW(LPCITEMIDLIST pidl)
|
||||
{
|
||||
/* TRACE(pidl,"(pidl%p)\n", pidl);*/
|
||||
|
||||
LPPIDLDATA pdata = _ILGetDataPointer(pidl);
|
||||
|
||||
if (!pdata)
|
||||
return NULL;
|
||||
|
||||
switch (pdata->type)
|
||||
{
|
||||
case PT_GUID:
|
||||
case PT_SHELLEXT:
|
||||
case PT_YAGUID:
|
||||
return NULL;
|
||||
|
||||
case PT_DRIVE:
|
||||
case PT_DRIVE1:
|
||||
case PT_DRIVE2:
|
||||
case PT_DRIVE3:
|
||||
/*return (LPSTR)&(pdata->u.drive.szDriveName);*/
|
||||
return NULL;
|
||||
|
||||
case PT_FOLDER:
|
||||
case PT_FOLDER1:
|
||||
case PT_VALUE:
|
||||
case PT_IESPECIAL1:
|
||||
case PT_IESPECIAL2:
|
||||
/*return (LPSTR)&(pdata->u.file.szNames);*/
|
||||
return NULL;
|
||||
|
||||
case PT_WORKGRP:
|
||||
case PT_COMP:
|
||||
case PT_NETWORK:
|
||||
case PT_NETPROVIDER:
|
||||
case PT_SHARE:
|
||||
/*return (LPSTR)&(pdata->u.network.szNames);*/
|
||||
return NULL;
|
||||
|
||||
case PT_VALUEW:
|
||||
return (LPWSTR)&(pdata->u.file.szNames);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* _ILGetTextPointer()
|
||||
* gets a pointer to the long filename string stored in the pidl
|
||||
|
@ -1963,7 +2043,7 @@ FileStructW* _ILGetFileStructW(LPCITEMIDLIST pidl) {
|
|||
if (!(_ILIsValue(pidl) || _ILIsFolder(pidl)))
|
||||
return NULL;
|
||||
|
||||
cbOffset = *(WORD*)((LPBYTE)pidl + pidl->mkid.cb - sizeof(WORD));
|
||||
cbOffset = *(const WORD *)((const BYTE *)pidl + pidl->mkid.cb - sizeof(WORD));
|
||||
pFileStructW = (FileStructW*)((LPBYTE)pidl + cbOffset);
|
||||
|
||||
/* Currently I don't see a fool prove way to figure out if a pidl is for sure of WinXP
|
||||
|
@ -2074,7 +2154,7 @@ DWORD _ILGetFileSize (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
|
|||
case PT_VALUE:
|
||||
dwSize = pdata->u.file.dwFileSize;
|
||||
if (pOut)
|
||||
StrFormatByteSizeA(dwSize, pOut, uOutSize);
|
||||
StrFormatKBSizeA(dwSize, pOut, uOutSize);
|
||||
return dwSize;
|
||||
}
|
||||
if (pOut)
|
||||
|
@ -2224,7 +2304,7 @@ void _ILFreeaPidl(LPITEMIDLIST * apidl, UINT cidl)
|
|||
*
|
||||
* copies an aPidl struct
|
||||
*/
|
||||
LPITEMIDLIST* _ILCopyaPidl(LPCITEMIDLIST * apidlsrc, UINT cidl)
|
||||
LPITEMIDLIST* _ILCopyaPidl(const LPCITEMIDLIST * apidlsrc, UINT cidl)
|
||||
{
|
||||
UINT i;
|
||||
LPITEMIDLIST *apidldest;
|
||||
|
@ -2244,7 +2324,7 @@ LPITEMIDLIST* _ILCopyaPidl(LPCITEMIDLIST * apidlsrc, UINT cidl)
|
|||
*
|
||||
* creates aPidl from CIDA
|
||||
*/
|
||||
LPITEMIDLIST* _ILCopyCidaToaPidl(LPITEMIDLIST* pidl, LPIDA cida)
|
||||
LPITEMIDLIST* _ILCopyCidaToaPidl(LPITEMIDLIST* pidl, const CIDA * cida)
|
||||
{
|
||||
UINT i;
|
||||
LPITEMIDLIST *dst;
|
||||
|
@ -2254,10 +2334,10 @@ LPITEMIDLIST* _ILCopyCidaToaPidl(LPITEMIDLIST* pidl, LPIDA cida)
|
|||
return NULL;
|
||||
|
||||
if (pidl)
|
||||
*pidl = ILClone((LPITEMIDLIST)(&((LPBYTE)cida)[cida->aoffset[0]]));
|
||||
*pidl = ILClone((LPCITEMIDLIST)(&((const BYTE*)cida)[cida->aoffset[0]]));
|
||||
|
||||
for (i = 0; i < cida->cidl; i++)
|
||||
dst[i] = ILClone((LPITEMIDLIST)(&((LPBYTE)cida)[cida->aoffset[i + 1]]));
|
||||
dst[i] = ILClone((LPCITEMIDLIST)(&((const BYTE*)cida)[cida->aoffset[i + 1]]));
|
||||
|
||||
return dst;
|
||||
}
|
||||
|
|
|
@ -201,6 +201,7 @@ DWORD _ILGetDrive (LPCITEMIDLIST, LPSTR, UINT);
|
|||
/*
|
||||
* testing simple pidls
|
||||
*/
|
||||
BOOL _ILIsUnicode (LPCITEMIDLIST pidl);
|
||||
BOOL _ILIsDesktop (LPCITEMIDLIST pidl);
|
||||
BOOL _ILIsMyComputer (LPCITEMIDLIST pidl);
|
||||
BOOL _ILIsDrive (LPCITEMIDLIST pidl);
|
||||
|
@ -241,9 +242,7 @@ LPITEMIDLIST _ILCreateGuidFromStrW(LPCWSTR szGUID);
|
|||
|
||||
/* Commonly used PIDLs representing file system objects. */
|
||||
LPITEMIDLIST _ILCreateDesktop (void);
|
||||
LPITEMIDLIST _ILCreateFromFindDataA(WIN32_FIND_DATAA *stffile);
|
||||
LPITEMIDLIST _ILCreateFromFindDataW(WIN32_FIND_DATAW *stffile);
|
||||
HRESULT _ILCreateFromPathA (LPCSTR szPath, LPITEMIDLIST* ppidl);
|
||||
LPITEMIDLIST _ILCreateFromFindDataW(const WIN32_FIND_DATAW *stffile);
|
||||
HRESULT _ILCreateFromPathW (LPCWSTR szPath, LPITEMIDLIST* ppidl);
|
||||
|
||||
/* Other helpers */
|
||||
|
@ -261,6 +260,7 @@ LPITEMIDLIST _ILCreateDrive (LPCWSTR);
|
|||
*/
|
||||
LPPIDLDATA _ILGetDataPointer (LPCITEMIDLIST);
|
||||
LPSTR _ILGetTextPointer (LPCITEMIDLIST);
|
||||
LPWSTR _ILGetTextPointerW (LPCITEMIDLIST);
|
||||
LPSTR _ILGetSTextPointer (LPCITEMIDLIST);
|
||||
IID *_ILGetGUIDPointer (LPCITEMIDLIST pidl);
|
||||
FileStructW *_ILGetFileStructW (LPCITEMIDLIST pidl);
|
||||
|
@ -275,8 +275,8 @@ BOOL pcheck (LPCITEMIDLIST pidl);
|
|||
* aPidl helper
|
||||
*/
|
||||
void _ILFreeaPidl(LPITEMIDLIST * apidl, UINT cidl);
|
||||
LPITEMIDLIST * _ILCopyaPidl(LPCITEMIDLIST * apidlsrc, UINT cidl);
|
||||
LPITEMIDLIST * _ILCopyCidaToaPidl(LPITEMIDLIST* pidl, LPIDA cida);
|
||||
LPITEMIDLIST * _ILCopyaPidl(const LPCITEMIDLIST * apidlsrc, UINT cidl);
|
||||
LPITEMIDLIST * _ILCopyCidaToaPidl(LPITEMIDLIST* pidl, const CIDA * cida);
|
||||
|
||||
BOOL WINAPI ILGetDisplayNameExA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPSTR path, DWORD type);
|
||||
BOOL WINAPI ILGetDisplayNameExW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPWSTR path, DWORD type);
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
|
@ -29,8 +29,11 @@
|
|||
#include "winerror.h"
|
||||
|
||||
#include "ole2.h"
|
||||
#include "shldisp.h"
|
||||
#include "shlguid.h"
|
||||
#include "shell32_main.h"
|
||||
#include "shresdef.h"
|
||||
#include "initguid.h"
|
||||
#include "shfldr.h"
|
||||
|
||||
#include "wine/debug.h"
|
||||
|
@ -62,6 +65,7 @@ struct regsvr_coclass
|
|||
{
|
||||
CLSID const *clsid; /* NULL for end of list */
|
||||
LPCSTR name; /* can be NULL to omit */
|
||||
UINT idName; /* can be 0 to omit */
|
||||
LPCSTR ips; /* can be NULL to omit */
|
||||
LPCSTR ips32; /* can be NULL to omit */
|
||||
LPCSTR ips32_tmodel; /* can be NULL to omit */
|
||||
|
@ -70,6 +74,7 @@ struct regsvr_coclass
|
|||
DWORD dwCallForAttributes;
|
||||
LPCSTR clsid_str; /* can be NULL to omit */
|
||||
LPCSTR progid; /* can be NULL to omit */
|
||||
UINT idDefaultIcon; /* can be 0 to omit */
|
||||
};
|
||||
|
||||
/* flags for regsvr_coclass.flags */
|
||||
|
@ -124,10 +129,13 @@ static WCHAR const shellfolder_keyname[12] = {
|
|||
static WCHAR const mcdm_keyname[21] = {
|
||||
'M', 'a', 'y', 'C', 'h', 'a', 'n', 'g', 'e', 'D', 'e', 'f',
|
||||
'a', 'u', 'l', 't', 'M', 'e', 'n', 'u', 0 };
|
||||
static WCHAR const defaulticon_keyname[] = {
|
||||
'D','e','f','a','u','l','t','I','c','o','n',0};
|
||||
static char const tmodel_valuename[] = "ThreadingModel";
|
||||
static char const wfparsing_valuename[] = "WantsFORPARSING";
|
||||
static char const attributes_valuename[] = "Attributes";
|
||||
static char const cfattributes_valuename[] = "CallForAttributes";
|
||||
static char const localized_valuename[] = "LocalizedString";
|
||||
|
||||
/***********************************************************************
|
||||
* static helper functions
|
||||
|
@ -137,9 +145,6 @@ static LONG register_key_defvalueW(HKEY base, WCHAR const *name,
|
|||
WCHAR const *value);
|
||||
static LONG register_key_defvalueA(HKEY base, WCHAR const *name,
|
||||
char const *value);
|
||||
static LONG recursive_delete_key(HKEY key);
|
||||
static LONG recursive_delete_keyA(HKEY base, char const *name);
|
||||
static LONG recursive_delete_keyW(HKEY base, WCHAR const *name);
|
||||
|
||||
/***********************************************************************
|
||||
* register_interfaces
|
||||
|
@ -170,7 +175,7 @@ static HRESULT register_interfaces(struct regsvr_interface const *list)
|
|||
}
|
||||
|
||||
if (list->base_iid) {
|
||||
register_key_guid(iid_key, base_ifa_keyname, list->base_iid);
|
||||
res = register_key_guid(iid_key, base_ifa_keyname, list->base_iid);
|
||||
if (res != ERROR_SUCCESS) goto error_close_iid_key;
|
||||
}
|
||||
|
||||
|
@ -192,12 +197,12 @@ static HRESULT register_interfaces(struct regsvr_interface const *list)
|
|||
}
|
||||
|
||||
if (list->ps_clsid) {
|
||||
register_key_guid(iid_key, ps_clsid_keyname, list->ps_clsid);
|
||||
res = register_key_guid(iid_key, ps_clsid_keyname, list->ps_clsid);
|
||||
if (res != ERROR_SUCCESS) goto error_close_iid_key;
|
||||
}
|
||||
|
||||
if (list->ps_clsid32) {
|
||||
register_key_guid(iid_key, ps_clsid32_keyname, list->ps_clsid32);
|
||||
res = register_key_guid(iid_key, ps_clsid32_keyname, list->ps_clsid32);
|
||||
if (res != ERROR_SUCCESS) goto error_close_iid_key;
|
||||
}
|
||||
|
||||
|
@ -228,7 +233,8 @@ static HRESULT unregister_interfaces(struct regsvr_interface const *list)
|
|||
WCHAR buf[39];
|
||||
|
||||
StringFromGUID2(list->iid, buf, 39);
|
||||
res = recursive_delete_keyW(interface_key, buf);
|
||||
res = RegDeleteTreeW(interface_key, buf);
|
||||
if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
RegCloseKey(interface_key);
|
||||
|
@ -264,6 +270,29 @@ static HRESULT register_coclasses(struct regsvr_coclass const *list)
|
|||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||
}
|
||||
|
||||
if (list->idName) {
|
||||
char buffer[64];
|
||||
sprintf(buffer, "@shell32.dll,-%u", list->idName);
|
||||
res = RegSetValueExA(clsid_key, localized_valuename, 0, REG_SZ,
|
||||
(CONST BYTE*)(buffer), strlen(buffer)+1);
|
||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||
}
|
||||
|
||||
if (list->idDefaultIcon) {
|
||||
HKEY icon_key;
|
||||
char buffer[64];
|
||||
|
||||
res = RegCreateKeyExW(clsid_key, defaulticon_keyname, 0, NULL, 0,
|
||||
KEY_READ | KEY_WRITE, NULL, &icon_key, NULL);
|
||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||
|
||||
sprintf(buffer, "shell32.dll,-%u", list->idDefaultIcon);
|
||||
res = RegSetValueExA(icon_key, NULL, 0, REG_SZ,
|
||||
(CONST BYTE*)(buffer), strlen(buffer)+1);
|
||||
RegCloseKey(icon_key);
|
||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||
}
|
||||
|
||||
if (list->ips) {
|
||||
res = register_key_defvalueA(clsid_key, ips_keyname, list->ips);
|
||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||
|
@ -313,13 +342,13 @@ static HRESULT register_coclasses(struct regsvr_coclass const *list)
|
|||
&shellfolder_key, NULL);
|
||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||
if (list->flags & SHELLFOLDER_WANTSFORPARSING)
|
||||
res = RegSetValueExA(shellfolder_key, wfparsing_valuename, 0, REG_SZ, (LPBYTE)"", 1);
|
||||
res = RegSetValueExA(shellfolder_key, wfparsing_valuename, 0, REG_SZ, (const BYTE *)"", 1);
|
||||
if (list->flags & SHELLFOLDER_ATTRIBUTES)
|
||||
res = RegSetValueExA(shellfolder_key, attributes_valuename, 0, REG_DWORD,
|
||||
(LPBYTE)&list->dwAttributes, sizeof(DWORD));
|
||||
(const BYTE *)&list->dwAttributes, sizeof(DWORD));
|
||||
if (list->flags & SHELLFOLDER_CALLFORATTRIBUTES)
|
||||
res = RegSetValueExA(shellfolder_key, cfattributes_valuename, 0, REG_DWORD,
|
||||
(LPBYTE)&list->dwCallForAttributes, sizeof(DWORD));
|
||||
(const BYTE *)&list->dwCallForAttributes, sizeof(DWORD));
|
||||
RegCloseKey(shellfolder_key);
|
||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||
}
|
||||
|
@ -374,11 +403,13 @@ static HRESULT unregister_coclasses(struct regsvr_coclass const *list)
|
|||
WCHAR buf[39];
|
||||
|
||||
StringFromGUID2(list->clsid, buf, 39);
|
||||
res = recursive_delete_keyW(coclass_key, buf);
|
||||
res = RegDeleteTreeW(coclass_key, buf);
|
||||
if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS;
|
||||
if (res != ERROR_SUCCESS) goto error_close_coclass_key;
|
||||
|
||||
if (list->progid) {
|
||||
res = recursive_delete_keyA(HKEY_CLASSES_ROOT, list->progid);
|
||||
res = RegDeleteTreeA(HKEY_CLASSES_ROOT, list->progid);
|
||||
if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS;
|
||||
if (res != ERROR_SUCCESS) goto error_close_coclass_key;
|
||||
}
|
||||
}
|
||||
|
@ -429,7 +460,7 @@ static HRESULT register_namespace_extensions(struct regsvr_namespace const *list
|
|||
if (pwszKey && ERROR_SUCCESS ==
|
||||
RegCreateKeyExW(HKEY_LOCAL_MACHINE, pwszKey, 0, NULL, 0, KEY_WRITE, NULL, &hKey, NULL))
|
||||
{
|
||||
RegSetValueExW(hKey, NULL, 0, REG_SZ, (LPBYTE)list->value, sizeof(WCHAR)*(lstrlenW(list->value)+1));
|
||||
RegSetValueExW(hKey, NULL, 0, REG_SZ, (const BYTE *)list->value, sizeof(WCHAR)*(lstrlenW(list->value)+1));
|
||||
RegCloseKey(hKey);
|
||||
}
|
||||
|
||||
|
@ -500,70 +531,6 @@ static LONG register_key_defvalueA(
|
|||
return res;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* recursive_delete_key
|
||||
*/
|
||||
static LONG recursive_delete_key(HKEY key)
|
||||
{
|
||||
LONG res;
|
||||
WCHAR subkey_name[MAX_PATH];
|
||||
DWORD cName;
|
||||
HKEY subkey;
|
||||
|
||||
for (;;) {
|
||||
cName = sizeof(subkey_name) / sizeof(WCHAR);
|
||||
res = RegEnumKeyExW(key, 0, subkey_name, &cName,
|
||||
NULL, NULL, NULL, NULL);
|
||||
if (res != ERROR_SUCCESS && res != ERROR_MORE_DATA) {
|
||||
res = ERROR_SUCCESS; /* presumably we're done enumerating */
|
||||
break;
|
||||
}
|
||||
res = RegOpenKeyExW(key, subkey_name, 0,
|
||||
KEY_READ | KEY_WRITE, &subkey);
|
||||
if (res == ERROR_FILE_NOT_FOUND) continue;
|
||||
if (res != ERROR_SUCCESS) break;
|
||||
|
||||
res = recursive_delete_key(subkey);
|
||||
RegCloseKey(subkey);
|
||||
if (res != ERROR_SUCCESS) break;
|
||||
}
|
||||
|
||||
if (res == ERROR_SUCCESS) res = RegDeleteKeyW(key, 0);
|
||||
return res;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* recursive_delete_keyA
|
||||
*/
|
||||
static LONG recursive_delete_keyA(HKEY base, char const *name)
|
||||
{
|
||||
LONG res;
|
||||
HKEY key;
|
||||
|
||||
res = RegOpenKeyExA(base, name, 0, KEY_READ | KEY_WRITE, &key);
|
||||
if (res == ERROR_FILE_NOT_FOUND) return ERROR_SUCCESS;
|
||||
if (res != ERROR_SUCCESS) return res;
|
||||
res = recursive_delete_key(key);
|
||||
RegCloseKey(key);
|
||||
return res;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* recursive_delete_keyW
|
||||
*/
|
||||
static LONG recursive_delete_keyW(HKEY base, WCHAR const *name)
|
||||
{
|
||||
LONG res;
|
||||
HKEY key;
|
||||
|
||||
res = RegOpenKeyExW(base, name, 0, KEY_READ | KEY_WRITE, &key);
|
||||
if (res == ERROR_FILE_NOT_FOUND) return ERROR_SUCCESS;
|
||||
if (res != ERROR_SUCCESS) return res;
|
||||
res = recursive_delete_key(key);
|
||||
RegCloseKey(key);
|
||||
return res;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* coclass list
|
||||
*/
|
||||
|
@ -576,24 +543,35 @@ static GUID const CLSID_Shortcut = {
|
|||
static struct regsvr_coclass const coclass_list[] = {
|
||||
{ &CLSID_Desktop,
|
||||
"Desktop",
|
||||
IDS_DESKTOP,
|
||||
NULL,
|
||||
"shell32.dll",
|
||||
"Apartment"
|
||||
},
|
||||
{ &CLSID_DragDropHelper,
|
||||
"Shell Drag and Drop Helper",
|
||||
0,
|
||||
NULL,
|
||||
"shell32.dll",
|
||||
"Apartment"
|
||||
},
|
||||
{ &CLSID_MyComputer,
|
||||
"My Computer",
|
||||
IDS_MYCOMPUTER,
|
||||
NULL,
|
||||
"shell32.dll",
|
||||
"Apartment"
|
||||
},
|
||||
{ &CLSID_NetworkPlaces,
|
||||
"My Network Places",
|
||||
0,
|
||||
NULL,
|
||||
"shell32.dll",
|
||||
"Apartment"
|
||||
},
|
||||
{ &CLSID_Shortcut,
|
||||
"Shortcut",
|
||||
0,
|
||||
NULL,
|
||||
"shell32.dll",
|
||||
"Apartment",
|
||||
|
@ -601,12 +579,32 @@ static struct regsvr_coclass const coclass_list[] = {
|
|||
},
|
||||
{ &CLSID_AutoComplete,
|
||||
"AutoComplete",
|
||||
0,
|
||||
NULL,
|
||||
"shell32.dll",
|
||||
"Apartment",
|
||||
},
|
||||
{ &CLSID_UnixFolder,
|
||||
"/",
|
||||
0,
|
||||
NULL,
|
||||
"shell32.dll",
|
||||
"Apartment",
|
||||
SHELLFOLDER_WANTSFORPARSING
|
||||
},
|
||||
{ &CLSID_UnixDosFolder,
|
||||
"/",
|
||||
0,
|
||||
NULL,
|
||||
"shell32.dll",
|
||||
"Apartment",
|
||||
SHELLFOLDER_WANTSFORPARSING|SHELLFOLDER_ATTRIBUTES|SHELLFOLDER_CALLFORATTRIBUTES,
|
||||
SFGAO_FILESYSANCESTOR|SFGAO_FOLDER|SFGAO_HASSUBFOLDER,
|
||||
SFGAO_FILESYSTEM
|
||||
},
|
||||
{ &CLSID_FolderShortcut,
|
||||
"Foldershortcut",
|
||||
0,
|
||||
NULL,
|
||||
"shell32.dll",
|
||||
"Apartment",
|
||||
|
@ -616,6 +614,7 @@ static struct regsvr_coclass const coclass_list[] = {
|
|||
},
|
||||
{ &CLSID_MyDocuments,
|
||||
"My Documents",
|
||||
IDS_PERSONAL,
|
||||
NULL,
|
||||
"shell32.dll",
|
||||
"Apartment",
|
||||
|
@ -623,6 +622,33 @@ static struct regsvr_coclass const coclass_list[] = {
|
|||
SFGAO_FILESYSANCESTOR|SFGAO_FOLDER|SFGAO_HASSUBFOLDER,
|
||||
SFGAO_FILESYSTEM
|
||||
},
|
||||
{ &CLSID_RecycleBin,
|
||||
"Trash",
|
||||
IDS_RECYCLEBIN_FOLDER_NAME,
|
||||
NULL,
|
||||
"shell32.dll",
|
||||
"Apartment",
|
||||
SHELLFOLDER_ATTRIBUTES,
|
||||
SFGAO_FOLDER|SFGAO_DROPTARGET|SFGAO_HASPROPSHEET,
|
||||
0,
|
||||
NULL,
|
||||
NULL,
|
||||
IDI_SHELL_FULL_RECYCLE_BIN
|
||||
},
|
||||
{ &CLSID_ShellFSFolder,
|
||||
"Shell File System Folder",
|
||||
0,
|
||||
NULL,
|
||||
"shell32.dll",
|
||||
"Apartment"
|
||||
},
|
||||
{ &CLSID_ShellFolderViewOC,
|
||||
"Microsoft Shell Folder View Router",
|
||||
0,
|
||||
NULL,
|
||||
"shell32.dll",
|
||||
"Apartment"
|
||||
},
|
||||
{ NULL } /* list terminator */
|
||||
};
|
||||
|
||||
|
@ -640,14 +666,25 @@ static struct regsvr_interface const interface_list[] = {
|
|||
static const WCHAR wszDesktop[] = { 'D','e','s','k','t','o','p',0 };
|
||||
static const WCHAR wszSlash[] = { '/', 0 };
|
||||
static const WCHAR wszMyDocuments[] = { 'M','y',' ','D','o','c','u','m','e','n','t','s', 0 };
|
||||
static const WCHAR wszRecycleBin[] = { 'T','r','a','s','h', 0 };
|
||||
|
||||
static struct regsvr_namespace const namespace_extensions_list[] = {
|
||||
#if 0
|
||||
{
|
||||
&CLSID_UnixDosFolder,
|
||||
wszDesktop,
|
||||
wszSlash
|
||||
},
|
||||
{
|
||||
&CLSID_MyDocuments,
|
||||
wszDesktop,
|
||||
wszMyDocuments
|
||||
},
|
||||
{
|
||||
&CLSID_RecycleBin,
|
||||
wszDesktop,
|
||||
wszRecycleBin
|
||||
},
|
||||
#endif
|
||||
{ NULL }
|
||||
};
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
@ -33,19 +33,15 @@
|
|||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "winerror.h"
|
||||
#include "winreg.h"
|
||||
#include "wownt32.h"
|
||||
#include "dlgs.h"
|
||||
#include "shellapi.h"
|
||||
#include "winuser.h"
|
||||
#include "wingdi.h"
|
||||
#include "shlobj.h"
|
||||
#include "shlwapi.h"
|
||||
#include "ddeml.h"
|
||||
|
||||
#include "wine/winbase16.h"
|
||||
#include "wine/winuser16.h"
|
||||
#include "shell32_main.h"
|
||||
|
||||
#include "wine/debug.h"
|
||||
|
@ -60,9 +56,9 @@ typedef struct { /* structure for dropped files */
|
|||
/* memory block with filenames follows */
|
||||
} DROPFILESTRUCT16, *LPDROPFILESTRUCT16;
|
||||
|
||||
static const char* lpstrMsgWndCreated = "OTHERWINDOWCREATED";
|
||||
static const char* lpstrMsgWndDestroyed = "OTHERWINDOWDESTROYED";
|
||||
static const char* lpstrMsgShellActivate = "ACTIVATESHELLWINDOW";
|
||||
static const char lpstrMsgWndCreated[] = "OTHERWINDOWCREATED";
|
||||
static const char lpstrMsgWndDestroyed[] = "OTHERWINDOWDESTROYED";
|
||||
static const char lpstrMsgShellActivate[] = "ACTIVATESHELLWINDOW";
|
||||
|
||||
static HWND SHELL_hWnd = 0;
|
||||
static HHOOK SHELL_hHook = 0;
|
||||
|
@ -124,10 +120,8 @@ UINT16 WINAPI DragQueryFile16(
|
|||
}
|
||||
|
||||
i = strlen(lpDrop);
|
||||
i++;
|
||||
if (!lpszFile ) goto end; /* needed buffer size */
|
||||
i = (wLength > i) ? i : wLength;
|
||||
lstrcpynA (lpszFile, lpDrop, i);
|
||||
lstrcpynA (lpszFile, lpDrop, wLength);
|
||||
end:
|
||||
GlobalUnlock16(hDrop);
|
||||
return i;
|
||||
|
@ -313,7 +307,7 @@ static LPSTR SHELL_FindString(LPSTR lpEnv, LPCSTR entry)
|
|||
|
||||
/**********************************************************************/
|
||||
|
||||
SEGPTR WINAPI FindEnvironmentString16(LPSTR str)
|
||||
SEGPTR WINAPI FindEnvironmentString16(LPCSTR str)
|
||||
{ SEGPTR spEnv;
|
||||
LPSTR lpEnv,lpString;
|
||||
TRACE("\n");
|
||||
|
@ -418,7 +412,7 @@ DWORD WINAPI DoEnvironmentSubst16(LPSTR str,WORD length)
|
|||
*/
|
||||
static LRESULT WINAPI SHELL_HookProc(INT code, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
TRACE("%i, %x, %08lx\n", code, wParam, lParam );
|
||||
TRACE("%i, %lx, %08lx\n", code, wParam, lParam );
|
||||
|
||||
if (SHELL_hWnd)
|
||||
{
|
||||
|
@ -589,7 +583,7 @@ DWORD WINAPI RegEnumKey16( HKEY hkey, DWORD index, LPSTR name, DWORD name_len )
|
|||
/*************************************************************************
|
||||
* SHELL_Execute16 [Internal]
|
||||
*/
|
||||
static UINT SHELL_Execute16(const WCHAR *lpCmd, WCHAR *env, BOOL shWait,
|
||||
static UINT_PTR SHELL_Execute16(const WCHAR *lpCmd, WCHAR *env, BOOL shWait,
|
||||
LPSHELLEXECUTEINFOW psei, LPSHELLEXECUTEINFOW psei_out)
|
||||
{
|
||||
UINT ret;
|
||||
|
@ -628,10 +622,10 @@ HINSTANCE16 WINAPI ShellExecute16( HWND16 hWnd, LPCSTR lpOperation,
|
|||
|
||||
SHELL_execute( &seiW, SHELL_Execute16 );
|
||||
|
||||
if (wVerb) SHFree(wVerb);
|
||||
if (wFile) SHFree(wFile);
|
||||
if (wParameters) SHFree(wParameters);
|
||||
if (wDirectory) SHFree(wDirectory);
|
||||
SHFree(wVerb);
|
||||
SHFree(wFile);
|
||||
SHFree(wParameters);
|
||||
SHFree(wDirectory);
|
||||
|
||||
return HINSTANCE_16(seiW.hInstApp);
|
||||
}
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
<include base="ReactOS">include/reactos/wine</include>
|
||||
<define name="__USE_W32API" />
|
||||
<define name="_WIN32_IE">0x600</define>
|
||||
<define name="_WIN32_WINNT">0x501</define>
|
||||
<define name="WINVER">0x501</define>
|
||||
<define name="_WIN32_WINNT">0x600</define>
|
||||
<define name="WINVER">0x600</define>
|
||||
<define name="_SHELL32_" />
|
||||
<define name="COM_NO_WINDOWS_H" />
|
||||
<library>wine</library>
|
||||
|
|
|
@ -4,8 +4,10 @@
|
|||
# This list was updated to dll version 4.72
|
||||
|
||||
2 stdcall -noname SHChangeNotifyRegister(long long long long long ptr)
|
||||
3 stdcall SHDefExtractIconA(str long long ptr ptr long)
|
||||
4 stdcall -noname SHChangeNotifyDeregister(long)
|
||||
5 stdcall -noname SHChangeNotifyUpdateEntryList(long long long long)
|
||||
6 stdcall SHDefExtractIconW(wstr long long ptr ptr long)
|
||||
9 stub -noname PifMgr_OpenProperties
|
||||
10 stub -noname PifMgr_GetProperties
|
||||
11 stub -noname PifMgr_SetProperties
|
||||
|
@ -44,10 +46,9 @@
|
|||
48 stdcall -noname PathSetDlgItemPath(long long ptr) PathSetDlgItemPathAW
|
||||
49 stdcall -noname PathQualify(ptr) PathQualifyAW
|
||||
50 stdcall -noname PathStripToRoot(ptr) PathStripToRootAW
|
||||
51 stdcall -noname PathResolve(str long long) PathResolveAW
|
||||
51 stdcall PathResolve(str long long) PathResolveAW
|
||||
52 stdcall -noname PathGetArgs(str) PathGetArgsAW
|
||||
53 stdcall DoEnvironmentSubst(long long) DoEnvironmentSubstAW
|
||||
54 stdcall -noname LogoffWindowsDialog(ptr)
|
||||
55 stdcall -noname PathQuoteSpaces(ptr) PathQuoteSpacesAW
|
||||
56 stdcall -noname PathUnquoteSpaces(str) PathUnquoteSpacesAW
|
||||
57 stdcall -noname PathGetDriveNumber(str) PathGetDriveNumberAW
|
||||
|
@ -58,7 +59,7 @@
|
|||
62 stdcall -noname PickIconDlg(long long long long)
|
||||
63 stdcall -noname GetFileNameFromBrowse(long long long long str str str)
|
||||
64 stdcall -noname DriveType(long)
|
||||
65 stub -noname InvalidateDriveType
|
||||
65 stdcall -noname InvalidateDriveType(long)
|
||||
66 stdcall -noname IsNetDrive(long)
|
||||
67 stdcall -noname Shell_MergeMenus(long long long long long long)
|
||||
68 stdcall -noname SHGetSetSettings(ptr long long)
|
||||
|
@ -118,6 +119,7 @@
|
|||
125 stdcall -noname FileMenu_AddFilesForPidl(long long long ptr long long ptr)
|
||||
126 stdcall -noname SHOutOfMemoryMessageBox(long long long)
|
||||
127 stdcall -noname SHWinHelp(long long long long)
|
||||
128 stdcall -noname SHDllGetClassObject(ptr ptr ptr) DllGetClassObject
|
||||
129 stdcall -noname DAD_AutoScroll(long ptr ptr)
|
||||
130 stdcall -noname DAD_DragEnter(long)
|
||||
131 stdcall -noname DAD_DragEnterEx(long double)
|
||||
|
@ -134,6 +136,7 @@
|
|||
145 stdcall -noname PathFindOnPath(ptr ptr) PathFindOnPathAW
|
||||
146 stdcall -noname RLBuildListOfPaths()
|
||||
147 stdcall -noname SHCLSIDFromString(long long) SHCLSIDFromStringAW
|
||||
148 stdcall -noname SHMapIDListToImageListIndexAsync(ptr ptr ptr long ptr ptr ptr ptr ptr)
|
||||
149 stdcall -noname SHFind_InitMenuPopup(long long long long)
|
||||
|
||||
151 stdcall -noname SHLoadOLE(long)
|
||||
|
@ -167,8 +170,8 @@
|
|||
179 stdcall -noname SHGetNewLinkInfoA(str str ptr long long)
|
||||
180 stdcall -noname SHGetNewLinkInfoW(wstr wstr ptr long long)
|
||||
181 stdcall -noname RegisterShellHook(long long)
|
||||
182 varargs -noname ShellMessageBoxW(long long long str long)
|
||||
183 varargs -noname ShellMessageBoxA(long long long str long)
|
||||
182 varargs -noname ShellMessageBoxW(long long wstr wstr long)
|
||||
183 varargs -noname ShellMessageBoxA(long long str str long)
|
||||
184 stdcall -noname ArrangeWindows(long long long long long)
|
||||
185 stub SHHandleDiskFull
|
||||
186 stdcall -noname ILGetDisplayNameEx(ptr ptr ptr long)
|
||||
|
@ -213,7 +216,7 @@
|
|||
505 stdcall SHRegCloseKey (long)
|
||||
506 stdcall SHRegOpenKeyA (long str long)
|
||||
507 stdcall SHRegOpenKeyW (long wstr long)
|
||||
508 stub SHRegQueryValueA
|
||||
508 stdcall SHRegQueryValueA(long str ptr ptr)
|
||||
509 stdcall SHRegQueryValueExA(long str ptr ptr ptr ptr)
|
||||
510 stdcall SHRegQueryValueW (long long long long)
|
||||
511 stdcall SHRegQueryValueExW (long wstr ptr ptr ptr ptr)
|
||||
|
@ -297,9 +300,9 @@
|
|||
@ stub InternalExtractIconListA
|
||||
@ stub InternalExtractIconListW
|
||||
@ stub OCInstall
|
||||
@ stub OpenAs_RunDLL
|
||||
@ stub OpenAs_RunDLLA
|
||||
@ stub OpenAs_RunDLLW
|
||||
@ stdcall OpenAs_RunDLL(long long str long) OpenAs_RunDLLA
|
||||
@ stdcall OpenAs_RunDLLA(long long str long)
|
||||
@ stdcall OpenAs_RunDLLW(long long wstr long)
|
||||
@ stub PrintersGetCommand_RunDLL
|
||||
@ stub PrintersGetCommand_RunDLLA
|
||||
@ stub PrintersGetCommand_RunDLLW
|
||||
|
@ -319,8 +322,6 @@
|
|||
@ stdcall SHCreateDirectoryExA(long str ptr)
|
||||
@ stdcall SHCreateDirectoryExW(long wstr ptr)
|
||||
@ stub SHCreateProcessAsUserW
|
||||
@ stdcall SHDefExtractIconA(str long long ptr ptr long)
|
||||
@ stdcall SHDefExtractIconW(wstr long long ptr ptr long)
|
||||
@ stdcall SHEmptyRecycleBinA(long str long)
|
||||
@ stdcall SHEmptyRecycleBinW(long wstr long)
|
||||
@ stub SHExtractIconsW
|
||||
|
@ -359,13 +360,14 @@
|
|||
@ stdcall SHHelpShortcuts_RunDLLW(long long long long)
|
||||
@ stub SHInvokePrinterCommandA
|
||||
@ stub SHInvokePrinterCommandW
|
||||
@ stub SHIsFileAvailableOffline
|
||||
@ stdcall SHIsFileAvailableOffline(wstr ptr)
|
||||
@ stdcall SHLoadInProc(long)
|
||||
@ stub SHLoadNonloadedIconOverlayIdentifiers
|
||||
@ stub SHPathPrepareForWriteA
|
||||
@ stub SHPathPrepareForWriteW
|
||||
@ stdcall SHLoadNonloadedIconOverlayIdentifiers()
|
||||
@ stdcall SHPathPrepareForWriteA(long ptr str long)
|
||||
@ stdcall SHPathPrepareForWriteW(long ptr wstr long)
|
||||
@ stdcall SHQueryRecycleBinA(str ptr)
|
||||
@ stdcall SHQueryRecycleBinW(wstr ptr)
|
||||
@ stdcall SHSetLocalizedName(wstr wstr long)
|
||||
@ stub SHUpdateRecycleBinIcon
|
||||
@ stdcall SheChangeDirA(str)
|
||||
@ stub SheChangeDirExA
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
/*
|
||||
* Copyright 1998 Juergen Schmied
|
||||
* Copyright 2004 Henning Gerhardt
|
||||
* Copyright 2007 Daniel Reimer
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -15,7 +14,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
|
||||
|
@ -28,6 +27,9 @@ BEGIN
|
|||
MENUITEM "&Details", FCIDM_SHVIEW_REPORTVIEW
|
||||
END
|
||||
|
||||
/*
|
||||
shellview background menu
|
||||
*/
|
||||
MENU_002 MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
|
@ -67,6 +69,9 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
/*
|
||||
shellview item menu
|
||||
*/
|
||||
MENU_SHV_FILE MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
|
@ -87,7 +92,7 @@ END
|
|||
|
||||
SHBRSFORFOLDER_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 188, 192
|
||||
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
|
||||
CAPTION "Nach Verzeichnis durchsuchen"
|
||||
CAPTION "Verzeichnis auswählen"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
DEFPUSHBUTTON "OK", 1, 80, 176, 50, 12, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
|
||||
|
@ -100,6 +105,19 @@ FONT 8, "MS Shell Dlg"
|
|||
4, 40, 180, 120
|
||||
}
|
||||
|
||||
SHELL_YESTOALL_MSGBOX DIALOG 200, 100, 280, 90
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Meldung"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
DEFPUSHBUTTON "&Ja", IDYES, 34, 69, 53, 14, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON "Ja zu &allen", IDD_YESTOALL, 92, 69, 65, 14, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON "&Nein", IDNO, 162, 69, 53, 14, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON "Abbrechen", IDCANCEL, 220, 69, 53, 14, WS_GROUP | WS_TABSTOP
|
||||
ICON "", IDD_ICON, 10, 10, 16, 16
|
||||
LTEXT "", IDD_MESSAGE, 40, 10, 238, 52, 0
|
||||
}
|
||||
|
||||
SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 210, 152
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Informationen über %s"
|
||||
|
@ -290,6 +308,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
|||
PUSHBUTTON "Abbrechen", 14008, 140, 170, 60, 15, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
/* columns in the shellview */
|
||||
|
@ -304,10 +323,13 @@ STRINGTABLE DISCARDABLE
|
|||
IDS_SHV_COLUMN9 "Kommentar"
|
||||
IDS_SHV_COLUMN10 "Besitzer"
|
||||
IDS_SHV_COLUMN11 "Gruppe"
|
||||
IDS_SHV_COLUMN_DELFROM "Ursprung"
|
||||
IDS_SHV_COLUMN_DELDATE "Gelöscht am"
|
||||
|
||||
/* special folders */
|
||||
IDS_DESKTOP "Desktop"
|
||||
IDS_MYCOMPUTER "Arbeitsplatz"
|
||||
IDS_RECYCLEBIN_FOLDER_NAME "Müll"
|
||||
|
||||
/* context menus */
|
||||
IDS_VIEW_LARGE "&Große Symbole"
|
||||
|
@ -319,12 +341,21 @@ STRINGTABLE DISCARDABLE
|
|||
|
||||
IDS_CREATEFOLDER_DENIED "Es konnte kein neues Verzeichnis erstellt werden: Zugriff verweigert."
|
||||
IDS_CREATEFOLDER_CAPTION "Es trat ein Fehler beim Erstellen eines neuen Verzeichnisses auf"
|
||||
IDS_DELETEITEM_CAPTION "Bestätigung: Datei löschen"
|
||||
IDS_DELETEITEM_CAPTION "Bestätigung: Objekt löschen"
|
||||
IDS_DELETEFOLDER_CAPTION "Bestätigung: Verzeichnis löschen"
|
||||
IDS_DELETEITEM_TEXT "Sind Sie sich sicher, dass Sie die Datei '%1' löschen möchten ?"
|
||||
IDS_DELETEMULTIPLE_TEXT "Sind Sie sich sicher, dass Sie diese %1 Dateien löschen möchten ?"
|
||||
IDS_OVERWRITEFILE_TEXT "Möchten Sie, dass die Datei '%1' überschrieben wird ?"
|
||||
IDS_DELETEITEM_TEXT "Sind Sie sich sicher, dass Sie '%1' löschen möchten?"
|
||||
IDS_DELETEMULTIPLE_TEXT "Sind Sie sich sicher, dass Sie diese %1 Objekte löschen möchten?"
|
||||
IDS_DELETESELECTED_TEXT "Sind Sie sich sicher, dass Sie die ausgewählten Objekte löschen möchten?"
|
||||
IDS_TRASHITEM_TEXT "Sind Sie sich sicher, dass Sie '%1' in Müll verschieben möchten?"
|
||||
IDS_TRASHFOLDER_TEXT "Sind Sie sich sicher, dass Sie '%1' und seinen Inhalt in den Müll verschieben möchten?"
|
||||
IDS_TRASHMULTIPLE_TEXT "Sind Sie sich sicher, dass Sie diese %1 Dateien in den Müll verschieben möchten?"
|
||||
IDS_CANTTRASH_TEXT "Das Objekt '%1' kann nicht in den Müll verschoben werden. Möchten Sie es stattdessen löschen?"
|
||||
IDS_OVERWRITEFILE_TEXT "This folder already contains a file called '%1'.\n\nDo you want to replace it?"
|
||||
IDS_OVERWRITEFILE_CAPTION "Bestätigung: Datei überschreiben"
|
||||
IDS_OVERWRITEFOLDER_TEXT "This folder already contains a folder named '%1'.\n\n"\
|
||||
"If the files in the destination folder have the same names as files in the\n"\
|
||||
"selected folder they will be replaced. Do you still want to move or copy\n"\
|
||||
"the folder?"
|
||||
|
||||
/* message box strings */
|
||||
IDS_RESTART_TITLE "Neu starten"
|
||||
|
@ -340,8 +371,8 @@ STRINGTABLE DISCARDABLE
|
|||
IDS_RECENT "Recent"
|
||||
IDS_SENDTO "SendTo"
|
||||
IDS_STARTMENU "Startmenü"
|
||||
IDS_MYMUSIC "Eigene Dateien\\Meine Musik"
|
||||
IDS_MYVIDEO "Eigene Dateien\\Meine Videos"
|
||||
IDS_MYMUSIC "Meine Musik"
|
||||
IDS_MYVIDEO "Meine Videos"
|
||||
IDS_DESKTOPDIRECTORY "Desktop"
|
||||
IDS_NETHOOD "Netzwerkumgebung"
|
||||
IDS_TEMPLATES "Vorlagen"
|
||||
|
@ -352,7 +383,7 @@ STRINGTABLE DISCARDABLE
|
|||
IDS_COOKIES "Cookies"
|
||||
IDS_HISTORY "Lokale Einstellungen\\Verlauf"
|
||||
IDS_PROGRAM_FILES "Programme"
|
||||
IDS_MYPICTURES "Eigene Dateien\\Eigene Bilder"
|
||||
IDS_MYPICTURES "Eigene Bilder"
|
||||
IDS_PROGRAM_FILES_COMMON "Programme\\Gemeinsame Dateien"
|
||||
IDS_COMMON_DOCUMENTS "Dokumente"
|
||||
IDS_ADMINTOOLS "Startmenü\\Programme\\Verwaltung"
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
|
@ -104,6 +104,37 @@ FONT 8, "MS Shell Dlg"
|
|||
4, 40, 180, 120
|
||||
}
|
||||
|
||||
SHNEWBRSFORFOLDER_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 218, 196
|
||||
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
|
||||
CAPTION "Browse for Folder"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
LTEXT "", IDD_TITLE, 10, 8, 198, 24
|
||||
LTEXT "", IDD_STATUS, 10, 25, 198, 12
|
||||
LTEXT "Folder:", IDD_FOLDER, 10, 156, 40, 12
|
||||
CONTROL "", IDD_TREEVIEW, "SysTreeView32",
|
||||
TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT |
|
||||
WS_BORDER | WS_TABSTOP,
|
||||
12, 38, 194, 105
|
||||
EDITTEXT IDD_FOLDERTEXT, 46, 150, 160, 14, WS_BORDER | WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON "&Make New Folder", IDD_MAKENEWFOLDER, 12, 174, 70, 14, WS_GROUP | WS_TABSTOP
|
||||
DEFPUSHBUTTON "OK", IDOK, 102, 174, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON "Cancel", IDCANCEL, 156, 174, 50, 14, WS_GROUP | WS_TABSTOP
|
||||
}
|
||||
|
||||
SHELL_YESTOALL_MSGBOX DIALOG 200, 100, 280, 90
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Message"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
DEFPUSHBUTTON "&Yes", IDYES, 34, 69, 53, 14, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON "Yes to &all", IDD_YESTOALL, 92, 69, 65, 14, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON "&No", IDNO, 162, 69, 53, 14, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON "&Cancel", IDCANCEL, 220, 69, 53, 14, WS_GROUP | WS_TABSTOP
|
||||
ICON "", IDD_ICON, 10, 10, 16, 16
|
||||
LTEXT "", IDD_MESSAGE, 40, 10, 238, 52, 0
|
||||
}
|
||||
|
||||
SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 210, 152
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "About %s"
|
||||
|
@ -131,7 +162,6 @@ FONT 8, "MS Shell Dlg"
|
|||
PUSHBUTTON "&Browse...", 12288, 170, 63, 50, 14, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
SHELL_GENERAL_SHORTCUT_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Shortcut"
|
||||
|
@ -297,6 +327,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
|||
PUSHBUTTON "Cancel", 14008, 140, 170, 60, 15, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
/* columns in the shellview */
|
||||
|
@ -311,10 +342,13 @@ STRINGTABLE DISCARDABLE
|
|||
IDS_SHV_COLUMN9 "Comments"
|
||||
IDS_SHV_COLUMN10 "Owner"
|
||||
IDS_SHV_COLUMN11 "Group"
|
||||
IDS_SHV_COLUMN_DELFROM "Original location"
|
||||
IDS_SHV_COLUMN_DELDATE "Date deleted"
|
||||
|
||||
/* special folders */
|
||||
IDS_DESKTOP "Desktop"
|
||||
IDS_MYCOMPUTER "My Computer"
|
||||
IDS_RECYCLEBIN_FOLDER_NAME "Trash"
|
||||
|
||||
/* context menus */
|
||||
IDS_VIEW_LARGE "Lar&ge Icons"
|
||||
|
@ -330,8 +364,17 @@ STRINGTABLE DISCARDABLE
|
|||
IDS_DELETEFOLDER_CAPTION "Confirm folder deletion"
|
||||
IDS_DELETEITEM_TEXT "Are you sure you want to delete '%1'?"
|
||||
IDS_DELETEMULTIPLE_TEXT "Are you sure you want to delete these %1 items?"
|
||||
IDS_OVERWRITEFILE_TEXT "OverWrite File %1?"
|
||||
IDS_OVERWRITEFILE_CAPTION "Confirm File OverWrite"
|
||||
IDS_DELETESELECTED_TEXT "Are you sure you want to delete the selected item(s)?"
|
||||
IDS_TRASHITEM_TEXT "Are you sure that you want to send '%1' to the Trash?"
|
||||
IDS_TRASHFOLDER_TEXT "Are you sure that you want to send '%1' and all its content to the Trash?"
|
||||
IDS_TRASHMULTIPLE_TEXT "Are you sure that you want to send these %1 items to the Trash?"
|
||||
IDS_CANTTRASH_TEXT "The item '%1' can't be sent to Trash. Do you want to delete it instead?"
|
||||
IDS_OVERWRITEFILE_TEXT "This folder already contains a file called '%1'.\n\nDo you want to replace it?"
|
||||
IDS_OVERWRITEFILE_CAPTION "Confirm file overwrite"
|
||||
IDS_OVERWRITEFOLDER_TEXT "This folder already contains a folder named '%1'.\n\n"\
|
||||
"If the files in the destination folder have the same names as files in the\n"\
|
||||
"selected folder they will be replaced. Do you still want to move or copy\n"\
|
||||
"the folder?"
|
||||
|
||||
/* message box strings */
|
||||
IDS_RESTART_TITLE "Restart"
|
||||
|
@ -347,8 +390,8 @@ STRINGTABLE DISCARDABLE
|
|||
IDS_RECENT "Recent"
|
||||
IDS_SENDTO "SendTo"
|
||||
IDS_STARTMENU "Start Menu"
|
||||
IDS_MYMUSIC "My Documents\\My Music"
|
||||
IDS_MYVIDEO "My Documents\\My Video"
|
||||
IDS_MYMUSIC "My Music"
|
||||
IDS_MYVIDEO "My Video"
|
||||
IDS_DESKTOPDIRECTORY "Desktop"
|
||||
IDS_NETHOOD "NetHood"
|
||||
IDS_TEMPLATES "Templates"
|
||||
|
@ -359,7 +402,7 @@ STRINGTABLE DISCARDABLE
|
|||
IDS_COOKIES "Cookies"
|
||||
IDS_HISTORY "Local Settings\\History"
|
||||
IDS_PROGRAM_FILES "Program Files"
|
||||
IDS_MYPICTURES "My Documents\\My Pictures"
|
||||
IDS_MYPICTURES "My Pictures"
|
||||
IDS_PROGRAM_FILES_COMMON "Program Files\\Common Files"
|
||||
IDS_COMMON_DOCUMENTS "Documents"
|
||||
IDS_ADMINTOOLS "Start Menu\\Programs\\Administrative Tools"
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
|
||||
|
@ -28,7 +28,7 @@ FONT 10, "MS Shell Dlg"
|
|||
ICON "", 1088, 10, 10, 14, 16
|
||||
LTEXT "", 100, 30, 10, 137, 10
|
||||
LTEXT "", 101, 30, 22, 137, 10
|
||||
LTEXT "ReactOS is geschreven door:", 98, 8, 55, 137, 10
|
||||
LTEXT "Wine is geschreven door:", 98, 8, 55, 137, 10
|
||||
}
|
||||
|
||||
SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||
|
@ -37,142 +37,10 @@ CAPTION ""
|
|||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||
LTEXT "Type the name of a program, folder, document, or Internet resource, and ReactOS will open it for you.", 12289, 36, 11, 182, 18
|
||||
LTEXT "&Open:", 12305, 7, 39, 24, 10
|
||||
LTEXT "Geef de naam van een programma, map, document, of Internet-adres op. Wine zal het vervolgens openen.", 12289, 36, 11, 182, 18
|
||||
LTEXT "&Openen:", 12305, 7, 39, 28, 10
|
||||
CONTROL "", 12298, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100
|
||||
DEFPUSHBUTTON "OK", IDOK, 62, 63, 50, 14, WS_TABSTOP
|
||||
PUSHBUTTON "Cancel", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP
|
||||
PUSHBUTTON "&Browse...", 12288, 170, 63, 50, 14, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
SHELL_GENERAL_SHORTCUT_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Shortcut"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE
|
||||
LTEXT "Target type:", 14004, 10, 30, 50, 10
|
||||
LTEXT "", 14005, 70, 30, 150, 10
|
||||
LTEXT "Target location:", 14006, 10, 40, 70, 10
|
||||
LTEXT "", 14007, 70, 40, 150, 10
|
||||
LTEXT "Target:", 14008, 10, 55, 45, 10
|
||||
EDITTEXT 14009, 70, 55, 150, 10, ES_LEFT
|
||||
LTEXT "&Start in:",14010, 10, 65, 45, 10
|
||||
EDITTEXT 14011, 70, 65, 150, 10, ES_LEFT
|
||||
LTEXT "Shortcut &key:", 14014, 10, 80, 45, 10
|
||||
EDITTEXT 14015, 70, 80, 150, 10, ES_LEFT
|
||||
LTEXT "Run:", 14016, 10, 90, 45, 10
|
||||
EDITTEXT 14017, 70, 90, 150, 10
|
||||
LTEXT "C&omment:", 14018, 10, 100, 45, 10
|
||||
EDITTEXT 14019, 70, 100, 150, 10, ES_LEFT
|
||||
PUSHBUTTON "&Find Target...", 14020, 10, 115, 60, 14, ES_LEFT
|
||||
PUSHBUTTON "&Change Icon...", 14021, 80, 115, 60, 14, ES_LEFT
|
||||
PUSHBUTTON "A&dvanced...", 14022, 150, 115, 60, 14, ES_LEFT
|
||||
}
|
||||
|
||||
SHELL_FILE_GENERAL_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "General"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE
|
||||
EDITTEXT 14001, 70, 5, 100, 10, ES_LEFT | ES_READONLY
|
||||
LTEXT "Type of file:", 14004, 10, 30, 50, 10
|
||||
LTEXT "%s File", 14005, 70, 30, 150, 10
|
||||
LTEXT "Opens with:", 14006, 10, 40, 50, 10
|
||||
LTEXT "", 14007, 70, 40, 150, 10
|
||||
LTEXT "Location:", 14008, 10, 55, 45, 10
|
||||
LTEXT "", 14009, 70, 55, 200, 10
|
||||
LTEXT "Size:",14010, 10, 65, 45, 10
|
||||
LTEXT "", 14011, 70, 65, 150, 10
|
||||
LTEXT "Created:", 14014, 10, 80, 45, 10
|
||||
LTEXT "", 14015, 70, 80, 150, 10
|
||||
LTEXT "Modied:", 14016, 10, 90, 45, 10
|
||||
LTEXT "", 14017, 70, 90, 150, 10
|
||||
LTEXT "Accessed:", 14018, 10, 100, 45, 10
|
||||
LTEXT "", 14019, 70, 100, 150, 10
|
||||
LTEXT "Attributes:", 14020, 10, 115, 45, 10
|
||||
CHECKBOX "&Read-only", 14021, 70, 115, 45, 10
|
||||
CHECKBOX "&Hidden", 14022, 130, 115, 50, 10
|
||||
CHECKBOX "&Archive", 14023, 180, 115, 45, 10
|
||||
}
|
||||
|
||||
SHELL_FILE_VERSION_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Version"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
LTEXT "File version: ", 14000, 10, 10, 45, 10
|
||||
LTEXT "", 14001, 70, 10, 150, 10
|
||||
LTEXT "Description: ", 14002, 10, 20, 45, 10
|
||||
LTEXT "", 14003, 70, 20, 150, 10
|
||||
LTEXT "Copyright: ", 14004, 10, 30, 45, 10
|
||||
LTEXT "", 14005, 70, 30, 150, 10
|
||||
GROUPBOX "Other version information: ", 14006, 10, 45, 220, 90
|
||||
LTEXT "Item name: ", 14007, 20, 55, 50, 10
|
||||
LTEXT "Value: ", 14008, 130, 55, 45, 10
|
||||
LISTBOX 14009,20,65,95,60, LBS_STANDARD | WS_TABSTOP | LBS_NOTIFY
|
||||
EDITTEXT 14010, 130, 65, 95, 60, ES_LEFT|WS_BORDER|WS_VSCROLL|WS_GROUP|ES_MULTILINE|ES_READONLY
|
||||
|
||||
}
|
||||
|
||||
DRIVE_GENERAL_DLG DIALOGEX 0, 0, 240, 230
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Allgemein"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
EDITTEXT 14001, 40, 20, 190, 10, ES_LEFT|WS_BORDER|WS_GROUP
|
||||
LTEXT "Type:", -1, 15, 55, 40, 10
|
||||
LTEXT "", 14002, 110, 55, 100, 10
|
||||
|
||||
|
||||
LTEXT "File system:", -1, 15, 70, 100, 10
|
||||
LTEXT "", 14003, 110, 70, 100, 10
|
||||
|
||||
CONTROL "", 14013, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 90, 10, 10
|
||||
LTEXT "Used space:", -1, 25, 90, 120, 10
|
||||
LTEXT "", 14004, 110, 90, 120, 10
|
||||
LTEXT "", 14005, 200, 90, 40, 10
|
||||
|
||||
CONTROL "", 14014, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 105, 10, 10
|
||||
LTEXT "Free space:", -1, 25, 105, 70, 10
|
||||
LTEXT "", 14006, 110, 105, 120, 10
|
||||
LTEXT "", 14007, 200, 105, 40, 10
|
||||
|
||||
LTEXT "Capacity:", -1, 25, 125, 80, 10
|
||||
LTEXT "", 14008, 110, 125, 120, 10
|
||||
LTEXT "", 14009, 200, 125, 40, 10
|
||||
|
||||
CONTROL "", 14015, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 20, 140, 200, 20
|
||||
|
||||
LTEXT "Drive %s", 14010, 100, 170, 40, 10
|
||||
PUSHBUTTON "Disk Cleanup", 14011, 180, 175, 50, 15, WS_TABSTOP
|
||||
CHECKBOX "Compress drive to save disk space", 14012, 15, 205, 165, 10, WS_DISABLED
|
||||
CHECKBOX "Allow Indexing Service to index this disk for fast file searching", 14012, 15, 220, 200, 10, WS_DISABLED
|
||||
}
|
||||
|
||||
DRIVE_EXTRA_DLG DIALOGEX 0, 0, 240, 230
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Extras"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
GROUPBOX "Error-checking", -1, 5, 5, 230, 60
|
||||
LTEXT "This option will check the volume for\nerrors.", -1, 40, 25, 160, 20
|
||||
PUSHBUTTON "Check Now...", 14000, 130, 45, 90, 15, WS_TABSTOP
|
||||
GROUPBOX "Defragmentation", -1, 5, 65, 230, 60
|
||||
LTEXT "This option will defragment files on the volume", -1, 40, 85, 160, 20
|
||||
PUSHBUTTON "Defragment Now...", 14001, 130, 105, 90, 15, WS_TABSTOP
|
||||
GROUPBOX "Backup", -1, 5, 130, 230, 60
|
||||
LTEXT "This option will back up files on the volume.", -1, 40, 150, 160, 20
|
||||
PUSHBUTTON "Backup Now...", 14002, 130, 170, 90, 15, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
|
||||
DRIVE_HARDWARE_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Version"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
PUSHBUTTON "Annuleren", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP
|
||||
PUSHBUTTON "&Bladeren...", 12288, 170, 63, 50, 14, WS_TABSTOP
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2005 Alexander N. Sørnes <alex@thehandofagony.com>
|
||||
* Copyright 2005-2007 Alexander N. Sørnes <alex@thehandofagony.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -13,15 +13,15 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
|
||||
LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL
|
||||
|
||||
MENU_001 MENU DISCARDABLE
|
||||
BEGIN
|
||||
MENUITEM "&Store ikoner", FCIDM_SHVIEW_BIGICON
|
||||
MENUITEM "&Små ikoner", FCIDM_SHVIEW_SMALLICON
|
||||
MENUITEM "&Små ikoner", FCIDM_SHVIEW_SMALLICON
|
||||
MENUITEM "&Liste", FCIDM_SHVIEW_LISTVIEW
|
||||
MENUITEM "&Detaljer", FCIDM_SHVIEW_REPORTVIEW
|
||||
END
|
||||
|
@ -45,17 +45,17 @@ BEGIN
|
|||
BEGIN
|
||||
MENUITEM "Etter &navn", 0x30 /* column 0 */
|
||||
MENUITEM "Etter &type", 0x32 /* column 2 */
|
||||
MENUITEM "Etter &størrelse",0x31 /* ... */
|
||||
MENUITEM "Etter &størrelse", 0x31 /* ... */
|
||||
MENUITEM "Etter &dato", 0x33
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Ordne &automatisk", FCIDM_SHVIEW_AUTOARRANGE
|
||||
MENUITEM "Ordne &automatisk", FCIDM_SHVIEW_AUTOARRANGE
|
||||
END
|
||||
MENUITEM "Still opp ikoner", FCIDM_SHVIEW_SNAPTOGRID
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Oppdater", FCIDM_SHVIEW_REFRESH
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Lim inn", FCIDM_SHVIEW_INSERT
|
||||
MENUITEM "Lim inn som snarvei", FCIDM_SHVIEW_INSERTLINK
|
||||
MENUITEM "Lim inn som snarvei", FCIDM_SHVIEW_INSERTLINK
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "Ny"
|
||||
BEGIN
|
||||
|
@ -83,7 +83,7 @@ BEGIN
|
|||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Opprett snarvei", FCIDM_SHVIEW_CREATELINK
|
||||
MENUITEM "&Slett", FCIDM_SHVIEW_DELETE
|
||||
MENUITEM "&Gi nytt navn", FCIDM_SHVIEW_RENAME
|
||||
MENUITEM "&Gi nytt navn", FCIDM_SHVIEW_RENAME
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Egenska&per", FCIDM_SHVIEW_PROPERTIES
|
||||
END
|
||||
|
@ -104,6 +104,19 @@ FONT 8, "MS Shell Dlg"
|
|||
4, 40, 180, 120
|
||||
}
|
||||
|
||||
SHELL_YESTOALL_MSGBOX DIALOG 200, 100, 280, 90
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Meldings"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
DEFPUSHBUTTON "&Ja", IDYES, 34, 69, 53, 14, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON "Ja til &alt", IDD_YESTOALL, 92, 69, 65, 14, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON "&Nei", IDNO, 162, 69, 53, 14, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON "&Avbry&t", IDCANCEL, 220, 69, 53, 14, WS_GROUP | WS_TABSTOP
|
||||
ICON "", IDD_ICON, 10, 10, 16, 16
|
||||
LTEXT "", IDD_MESSAGE, 40, 10, 238, 52, 0
|
||||
}
|
||||
|
||||
SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 210, 152
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Om %s"
|
||||
|
@ -114,7 +127,7 @@ FONT 10, "MS Shell Dlg"
|
|||
ICON "", 1088, 10, 10, 14, 16
|
||||
LTEXT "", 100, 30, 10, 137, 10
|
||||
LTEXT "", 101, 30, 22, 137, 10
|
||||
LTEXT "ReactOS er laget av", 98, 8, 55, 137, 10
|
||||
LTEXT "Wine er laget av", 98, 8, 55, 137, 10
|
||||
}
|
||||
|
||||
SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||
|
@ -128,142 +141,9 @@ FONT 8, "MS Shell Dlg"
|
|||
CONTROL "", 12298, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100
|
||||
DEFPUSHBUTTON "OK", IDOK, 62, 63, 50, 14, WS_TABSTOP
|
||||
PUSHBUTTON "Avbryt", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP
|
||||
PUSHBUTTON "&Bla gjennom . . .", 12288, 170, 63, 54, 14, WS_TABSTOP
|
||||
PUSHBUTTON "&Bla . . .", 12288, 170, 63, 50, 14, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
SHELL_GENERAL_SHORTCUT_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Shortcut"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE
|
||||
LTEXT "Target type:", 14004, 10, 30, 50, 10
|
||||
LTEXT "", 14005, 70, 30, 150, 10
|
||||
LTEXT "Target location:", 14006, 10, 40, 70, 10
|
||||
LTEXT "", 14007, 70, 40, 150, 10
|
||||
LTEXT "Target:", 14008, 10, 55, 45, 10
|
||||
EDITTEXT 14009, 70, 55, 150, 10, ES_LEFT
|
||||
LTEXT "&Start in:",14010, 10, 65, 45, 10
|
||||
EDITTEXT 14011, 70, 65, 150, 10, ES_LEFT
|
||||
LTEXT "Shortcut &key:", 14014, 10, 80, 45, 10
|
||||
EDITTEXT 14015, 70, 80, 150, 10, ES_LEFT
|
||||
LTEXT "Run:", 14016, 10, 90, 45, 10
|
||||
EDITTEXT 14017, 70, 90, 150, 10
|
||||
LTEXT "C&omment:", 14018, 10, 100, 45, 10
|
||||
EDITTEXT 14019, 70, 100, 150, 10, ES_LEFT
|
||||
PUSHBUTTON "&Find Target...", 14020, 10, 115, 60, 14, ES_LEFT
|
||||
PUSHBUTTON "&Change Icon...", 14021, 80, 115, 60, 14, ES_LEFT
|
||||
PUSHBUTTON "A&dvanced...", 14022, 150, 115, 60, 14, ES_LEFT
|
||||
}
|
||||
|
||||
SHELL_FILE_GENERAL_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "General"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE
|
||||
EDITTEXT 14001, 70, 5, 100, 10, ES_LEFT | ES_READONLY
|
||||
LTEXT "Type of file:", 14004, 10, 30, 50, 10
|
||||
LTEXT "%s File", 14005, 70, 30, 150, 10
|
||||
LTEXT "Opens with:", 14006, 10, 40, 50, 10
|
||||
LTEXT "", 14007, 70, 40, 150, 10
|
||||
LTEXT "Location:", 14008, 10, 55, 45, 10
|
||||
LTEXT "", 14009, 70, 55, 200, 10
|
||||
LTEXT "Size:",14010, 10, 65, 45, 10
|
||||
LTEXT "", 14011, 70, 65, 150, 10
|
||||
LTEXT "Created:", 14014, 10, 80, 45, 10
|
||||
LTEXT "", 14015, 70, 80, 150, 10
|
||||
LTEXT "Modied:", 14016, 10, 90, 45, 10
|
||||
LTEXT "", 14017, 70, 90, 150, 10
|
||||
LTEXT "Accessed:", 14018, 10, 100, 45, 10
|
||||
LTEXT "", 14019, 70, 100, 150, 10
|
||||
LTEXT "Attributes:", 14020, 10, 115, 45, 10
|
||||
CHECKBOX "&Read-only", 14021, 70, 115, 45, 10
|
||||
CHECKBOX "&Hidden", 14022, 130, 115, 50, 10
|
||||
CHECKBOX "&Archive", 14023, 180, 115, 45, 10
|
||||
}
|
||||
|
||||
SHELL_FILE_VERSION_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Version"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
LTEXT "File version: ", 14000, 10, 10, 45, 10
|
||||
LTEXT "", 14001, 70, 10, 150, 10
|
||||
LTEXT "Description: ", 14002, 10, 20, 45, 10
|
||||
LTEXT "", 14003, 70, 20, 150, 10
|
||||
LTEXT "Copyright: ", 14004, 10, 30, 45, 10
|
||||
LTEXT "", 14005, 70, 30, 150, 10
|
||||
GROUPBOX "Other version information: ", 14006, 10, 45, 220, 90
|
||||
LTEXT "Item name: ", 14007, 20, 55, 50, 10
|
||||
LTEXT "Value: ", 14008, 130, 55, 45, 10
|
||||
LISTBOX 14009,20,65,95,60, LBS_STANDARD | WS_TABSTOP | LBS_NOTIFY
|
||||
EDITTEXT 14010, 130, 65, 95, 60, ES_LEFT|WS_BORDER|WS_VSCROLL|WS_GROUP|ES_MULTILINE|ES_READONLY
|
||||
|
||||
}
|
||||
|
||||
DRIVE_GENERAL_DLG DIALOGEX 0, 0, 240, 230
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Allgemein"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
EDITTEXT 14001, 40, 20, 190, 10, ES_LEFT|WS_BORDER|WS_GROUP
|
||||
LTEXT "Type:", -1, 15, 55, 40, 10
|
||||
LTEXT "", 14002, 110, 55, 100, 10
|
||||
|
||||
|
||||
LTEXT "File system:", -1, 15, 70, 100, 10
|
||||
LTEXT "", 14003, 110, 70, 100, 10
|
||||
|
||||
CONTROL "", 14013, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 90, 10, 10
|
||||
LTEXT "Used space:", -1, 25, 90, 120, 10
|
||||
LTEXT "", 14004, 110, 90, 120, 10
|
||||
LTEXT "", 14005, 200, 90, 40, 10
|
||||
|
||||
CONTROL "", 14014, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 105, 10, 10
|
||||
LTEXT "Free space:", -1, 25, 105, 70, 10
|
||||
LTEXT "", 14006, 110, 105, 120, 10
|
||||
LTEXT "", 14007, 200, 105, 40, 10
|
||||
|
||||
LTEXT "Capacity:", -1, 25, 125, 80, 10
|
||||
LTEXT "", 14008, 110, 125, 120, 10
|
||||
LTEXT "", 14009, 200, 125, 40, 10
|
||||
|
||||
CONTROL "", 14015, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 20, 140, 200, 20
|
||||
|
||||
LTEXT "Drive %s", 14010, 100, 170, 40, 10
|
||||
PUSHBUTTON "Disk Cleanup", 14011, 180, 175, 50, 15, WS_TABSTOP
|
||||
CHECKBOX "Compress drive to save disk space", 14012, 15, 205, 165, 10, WS_DISABLED
|
||||
CHECKBOX "Allow Indexing Service to index this disk for fast file searching", 14012, 15, 220, 200, 10, WS_DISABLED
|
||||
}
|
||||
|
||||
DRIVE_EXTRA_DLG DIALOGEX 0, 0, 240, 230
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Extras"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
GROUPBOX "Error-checking", -1, 5, 5, 230, 60
|
||||
LTEXT "This option will check the volume for\nerrors.", -1, 40, 25, 160, 20
|
||||
PUSHBUTTON "Check Now...", 14000, 130, 45, 90, 15, WS_TABSTOP
|
||||
GROUPBOX "Defragmentation", -1, 5, 65, 230, 60
|
||||
LTEXT "This option will defragment files on the volume", -1, 40, 85, 160, 20
|
||||
PUSHBUTTON "Defragment Now...", 14001, 130, 105, 90, 15, WS_TABSTOP
|
||||
GROUPBOX "Backup", -1, 5, 130, 230, 60
|
||||
LTEXT "This option will back up files on the volume.", -1, 40, 150, 160, 20
|
||||
PUSHBUTTON "Backup Now...", 14002, 130, 170, 90, 15, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
|
||||
DRIVE_HARDWARE_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Version"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
/* columns in the shellview */
|
||||
|
@ -278,10 +158,13 @@ STRINGTABLE DISCARDABLE
|
|||
IDS_SHV_COLUMN9 "Kommentarer"
|
||||
IDS_SHV_COLUMN10 "Eier"
|
||||
IDS_SHV_COLUMN11 "Gruppe"
|
||||
IDS_SHV_COLUMN_DELFROM "Opprinnelig plassering"
|
||||
IDS_SHV_COLUMN_DELDATE "Dato slettet"
|
||||
|
||||
/* special folders */
|
||||
IDS_DESKTOP "Skrivebord"
|
||||
IDS_MYCOMPUTER "Min datamaskin"
|
||||
IDS_RECYCLEBIN_FOLDER_NAME "Papirkurv"
|
||||
|
||||
/* context menus */
|
||||
IDS_VIEW_LARGE "&Store ikoner"
|
||||
|
@ -292,19 +175,28 @@ STRINGTABLE DISCARDABLE
|
|||
IDS_OPEN "Åpne"
|
||||
|
||||
IDS_CREATEFOLDER_DENIED "Kunne ikke opprette ny mappe: tilgang nektet."
|
||||
IDS_CREATEFOLDER_CAPTION "Feil ved oppretting av ny mappe"
|
||||
IDS_CREATEFOLDER_CAPTION "Klarte ikke opprette ny mappe"
|
||||
IDS_DELETEITEM_CAPTION "Bekreft filsletting"
|
||||
IDS_DELETEFOLDER_CAPTION "Bekreft sletting av mappe"
|
||||
IDS_DELETEITEM_TEXT "Virkelig slette '%1'?"
|
||||
IDS_DELETEITEM_TEXT "Virkelig slette «%1»?"
|
||||
IDS_DELETEMULTIPLE_TEXT "Virkelig slette disse %1 elementene?"
|
||||
IDS_OVERWRITEFILE_TEXT "Overskrive filen '%1'?"
|
||||
IDS_DELETESELECTED_TEXT "Virkelig slette valgte element(er)??"
|
||||
IDS_TRASHITEM_TEXT "Virkelig legge «%1» i papirkurven?"
|
||||
IDS_TRASHFOLDER_TEXT "Virkelig legge «%1» og alt innholdet i papirkurven?"
|
||||
IDS_TRASHMULTIPLE_TEXT "Virkelig legge disse %1 valgte elementene i papirkurven?"
|
||||
IDS_CANTTRASH_TEXT "Elementet «%1» kan ikke legges i papirkurven. Vil du slette det i stedet?"
|
||||
IDS_OVERWRITEFILE_TEXT "This folder already contains a file called '%1'.\n\nDo you want to replace it?"
|
||||
IDS_OVERWRITEFILE_CAPTION "Bekreft overskriving av fil"
|
||||
IDS_OVERWRITEFOLDER_TEXT "This folder already contains a folder named '%1'.\n\n"\
|
||||
"If the files in the destination folder have the same names as files in the\n"\
|
||||
"selected folder they will be replaced. Do you still want to move or copy\n"\
|
||||
"the folder?"
|
||||
|
||||
/* message box strings */
|
||||
IDS_RESTART_TITLE "Starte på nytt"
|
||||
IDS_RESTART_PROMPT "Vil du starte på nytt?"
|
||||
IDS_RESTART_PROMPT "Vil du simulere en omstart av Windows?"
|
||||
IDS_SHUTDOWN_TITLE "Avslutt"
|
||||
IDS_SHUTDOWN_PROMPT "Vil du slå av maskinen?"
|
||||
IDS_SHUTDOWN_PROMPT "Vil du avslutte Wine-økten?"
|
||||
|
||||
/* shell folder path default values */
|
||||
IDS_PROGRAMS "Start-meny\\Programmer"
|
||||
|
@ -312,29 +204,26 @@ STRINGTABLE DISCARDABLE
|
|||
IDS_FAVORITES "Favoritter"
|
||||
IDS_STARTUP "Start-meny\\Programmer\\Oppstart"
|
||||
IDS_RECENT "Siste"
|
||||
IDS_SENDTO "Send til"
|
||||
IDS_SENDTO "SendTo"
|
||||
IDS_STARTMENU "Start-meny"
|
||||
IDS_MYMUSIC "Mine dokumenter\\Min musikk"
|
||||
IDS_MYVIDEO "Mine dokumenter\\Mine videoklipp"
|
||||
IDS_MYMUSIC "Min musikk"
|
||||
IDS_MYVIDEO "Mine videoklipp"
|
||||
IDS_DESKTOPDIRECTORY "Skrivebord"
|
||||
IDS_NETHOOD "NetHood"
|
||||
IDS_TEMPLATES "Maler"
|
||||
IDS_APPDATA "Applikasjon Data"
|
||||
IDS_APPDATA "Programdata"
|
||||
IDS_PRINTHOOD "Skrivere"
|
||||
IDS_LOCAL_APPDATA "Lokale innstillinger\\Applikasjon Data"
|
||||
IDS_INTERNET_CACHE "Lokale innstillinger\\Midlertidig Internett Filer"
|
||||
IDS_COOKIES "Informasjonskapsler"
|
||||
IDS_HISTORY "Lokale innstillinger\\Historie"
|
||||
IDS_PROGRAM_FILES "Program Filer"
|
||||
IDS_MYPICTURES "Mine dokumenter\\Mine bilder"
|
||||
IDS_LOCAL_APPDATA "Lokale innstillinger\\Programdata"
|
||||
IDS_INTERNET_CACHE "Lokale innstillinger\\Temporary Internet Files"
|
||||
IDS_COOKIES "Cookies"
|
||||
IDS_HISTORY "Lokale innstillinger\\Logg"
|
||||
IDS_PROGRAM_FILES "Programfiler"
|
||||
IDS_MYPICTURES "Mine bilder"
|
||||
IDS_PROGRAM_FILES_COMMON "Programfiler\\Fellesfiler"
|
||||
IDS_COMMON_DOCUMENTS "Dokumenter"
|
||||
IDS_ADMINTOOLS "Start-meny\\Programmer\\Administrative verktøy"
|
||||
IDS_COMMON_MUSIC "Dokumenter\\Min musikk"
|
||||
IDS_COMMON_PICTURES "Dokumenter\\Mine bilder"
|
||||
IDS_COMMON_VIDEO "Dokumenter\\Mine videoklipp"
|
||||
IDS_CDBURN_AREA "Lokale innstillinger\\Applikasjon Data\\Microsoft\\CD Brenning"
|
||||
IDS_DRIVE_FIXED "Lokal Disk"
|
||||
IDS_DRIVE_CDROM "CDROM"
|
||||
IDS_DRIVE_NETWORK "Network Disk"
|
||||
IDS_CDBURN_AREA "Lokale innstillinger\\Programdata\\Microsoft\\CD Burning"
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
/*
|
||||
* Copyright 1998 Juergen Schmied
|
||||
* Copyright 2004 Piotr Caban
|
||||
* Made normal by Artek Wiœniewski aart3k@gmail.com
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -15,17 +14,17 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
|
||||
|
||||
MENU_001 MENU DISCARDABLE
|
||||
BEGIN
|
||||
MENUITEM "&Du¿e ikony", FCIDM_SHVIEW_BIGICON
|
||||
MENUITEM "&Ma³e ikony", FCIDM_SHVIEW_SMALLICON
|
||||
MENUITEM "&Lista", FCIDM_SHVIEW_LISTVIEW
|
||||
MENUITEM "&Szczegó³y", FCIDM_SHVIEW_REPORTVIEW
|
||||
MENUITEM "&Duże Ikony", FCIDM_SHVIEW_BIGICON
|
||||
MENUITEM "&Małe Ikony", FCIDM_SHVIEW_SMALLICON
|
||||
MENUITEM "&Lista", FCIDM_SHVIEW_LISTVIEW
|
||||
MENUITEM "&Szczegóły", FCIDM_SHVIEW_REPORTVIEW
|
||||
END
|
||||
|
||||
/*
|
||||
|
@ -37,8 +36,8 @@ BEGIN
|
|||
BEGIN
|
||||
POPUP "&Widok"
|
||||
BEGIN
|
||||
MENUITEM "&Du¿e ikony", FCIDM_SHVIEW_BIGICON
|
||||
MENUITEM "&Ma³e ikony", FCIDM_SHVIEW_SMALLICON
|
||||
MENUITEM "&Duże Ikony", FCIDM_SHVIEW_BIGICON
|
||||
MENUITEM "&Małe Ikony", FCIDM_SHVIEW_SMALLICON
|
||||
MENUITEM "&Lista", FCIDM_SHVIEW_LISTVIEW
|
||||
MENUITEM "&Szczegó³y", FCIDM_SHVIEW_REPORTVIEW
|
||||
END
|
||||
|
@ -54,7 +53,7 @@ BEGIN
|
|||
END
|
||||
MENUITEM "&Wyrównaj ikony", FCIDM_SHVIEW_SNAPTOGRID
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Odœwie¿", FCIDM_SHVIEW_REFRESH
|
||||
MENUITEM "&Odświerz", FCIDM_SHVIEW_REFRESH
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "W&klej", FCIDM_SHVIEW_INSERT
|
||||
MENUITEM "Wklej s&krót", FCIDM_SHVIEW_INSERTLINK
|
||||
|
@ -77,15 +76,15 @@ MENU_SHV_FILE MENU DISCARDABLE
|
|||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Eksploruj", FCIDM_SHVIEW_EXPLORE
|
||||
MENUITEM "&Eksploruj", FCIDM_SHVIEW_EXPLORE
|
||||
MENUITEM "&Otwórz", FCIDM_SHVIEW_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Wytnij", FCIDM_SHVIEW_CUT
|
||||
MENUITEM "&Kopiuj", FCIDM_SHVIEW_COPY
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Utwórz &skrót", FCIDM_SHVIEW_CREATELINK
|
||||
MENUITEM "Utwórz &Skrót", FCIDM_SHVIEW_CREATELINK
|
||||
MENUITEM "&Usuñ", FCIDM_SHVIEW_DELETE
|
||||
MENUITEM "&Zmieñ nazwê", FCIDM_SHVIEW_RENAME
|
||||
MENUITEM "&Zmień nazwę", FCIDM_SHVIEW_RENAME
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "W³&aœciwoœci", FCIDM_SHVIEW_PROPERTIES
|
||||
END
|
||||
|
@ -106,6 +105,19 @@ FONT 8, "MS Shell Dlg"
|
|||
4, 40, 180, 120
|
||||
}
|
||||
|
||||
SHELL_YESTOALL_MSGBOX DIALOG 200, 100, 280, 90
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Komunikat"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
DEFPUSHBUTTON "&Tak", IDYES, 34, 69, 53, 14, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON "Tak na &wszystkie", IDD_YESTOALL, 92, 69, 65, 14, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON "&Nie", IDNO, 162, 69, 53, 14, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON "&Anuluj", IDCANCEL, 220, 69, 53, 14, WS_GROUP | WS_TABSTOP
|
||||
ICON "", IDD_ICON, 10, 10, 16, 16
|
||||
LTEXT "", IDD_MESSAGE, 40, 10, 238, 52, 0
|
||||
}
|
||||
|
||||
SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 210, 152
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "O %s"
|
||||
|
@ -116,7 +128,7 @@ FONT 10, "MS Shell Dlg"
|
|||
ICON "", 1088, 10, 10, 14, 16
|
||||
LTEXT "", 100, 30, 10, 137, 10
|
||||
LTEXT "", 101, 30, 22, 137, 10
|
||||
LTEXT "ReactOS zawdziêcza swe istnienie nastêpuj¹cym osobom:", 98, 8, 55, 137, 10
|
||||
LTEXT "Możesz korzystać z Wine'a dzięki:", 98, 8, 55, 137, 10
|
||||
}
|
||||
|
||||
SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||
|
@ -125,7 +137,7 @@ CAPTION ""
|
|||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||
LTEXT "Wpisz nazwê programu, katalogu lub dokumentu, a ReactOS otworzy go dla Ciebie.", 12289, 36, 11, 182, 18
|
||||
LTEXT "Wpisz nazwę programu, katalogu, dokumentu, a Wine otworzy go dla ciebie.", 12289, 36, 11, 182, 18
|
||||
LTEXT "&Otwórz:", 12305, 7, 39, 24, 10
|
||||
CONTROL "", 12298, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100
|
||||
DEFPUSHBUTTON "OK", IDOK, 62, 63, 50, 14, WS_TABSTOP
|
||||
|
@ -133,191 +145,86 @@ FONT 8, "MS Shell Dlg"
|
|||
PUSHBUTTON "&Przegl¹daj...", 12288, 170, 63, 50, 14, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
SHELL_GENERAL_SHORTCUT_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Shortcut"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE
|
||||
LTEXT "Target type:", 14004, 10, 30, 50, 10
|
||||
LTEXT "", 14005, 70, 30, 150, 10
|
||||
LTEXT "Target location:", 14006, 10, 40, 70, 10
|
||||
LTEXT "", 14007, 70, 40, 150, 10
|
||||
LTEXT "Target:", 14008, 10, 55, 45, 10
|
||||
EDITTEXT 14009, 70, 55, 150, 10, ES_LEFT
|
||||
LTEXT "&Start in:",14010, 10, 65, 45, 10
|
||||
EDITTEXT 14011, 70, 65, 150, 10, ES_LEFT
|
||||
LTEXT "Shortcut &key:", 14014, 10, 80, 45, 10
|
||||
EDITTEXT 14015, 70, 80, 150, 10, ES_LEFT
|
||||
LTEXT "Run:", 14016, 10, 90, 45, 10
|
||||
EDITTEXT 14017, 70, 90, 150, 10
|
||||
LTEXT "C&omment:", 14018, 10, 100, 45, 10
|
||||
EDITTEXT 14019, 70, 100, 150, 10, ES_LEFT
|
||||
PUSHBUTTON "&Find Target...", 14020, 10, 115, 60, 14, ES_LEFT
|
||||
PUSHBUTTON "&Change Icon...", 14021, 80, 115, 60, 14, ES_LEFT
|
||||
PUSHBUTTON "A&dvanced...", 14022, 150, 115, 60, 14, ES_LEFT
|
||||
}
|
||||
|
||||
SHELL_FILE_GENERAL_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "General"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE
|
||||
EDITTEXT 14001, 70, 5, 100, 10, ES_LEFT | ES_READONLY
|
||||
LTEXT "Type of file:", 14004, 10, 30, 50, 10
|
||||
LTEXT "%s File", 14005, 70, 30, 150, 10
|
||||
LTEXT "Opens with:", 14006, 10, 40, 50, 10
|
||||
LTEXT "", 14007, 70, 40, 150, 10
|
||||
LTEXT "Location:", 14008, 10, 55, 45, 10
|
||||
LTEXT "", 14009, 70, 55, 200, 10
|
||||
LTEXT "Size:",14010, 10, 65, 45, 10
|
||||
LTEXT "", 14011, 70, 65, 150, 10
|
||||
LTEXT "Created:", 14014, 10, 80, 45, 10
|
||||
LTEXT "", 14015, 70, 80, 150, 10
|
||||
LTEXT "Modied:", 14016, 10, 90, 45, 10
|
||||
LTEXT "", 14017, 70, 90, 150, 10
|
||||
LTEXT "Accessed:", 14018, 10, 100, 45, 10
|
||||
LTEXT "", 14019, 70, 100, 150, 10
|
||||
LTEXT "Attributes:", 14020, 10, 115, 45, 10
|
||||
CHECKBOX "&Read-only", 14021, 70, 115, 45, 10
|
||||
CHECKBOX "&Hidden", 14022, 130, 115, 50, 10
|
||||
CHECKBOX "&Archive", 14023, 180, 115, 45, 10
|
||||
}
|
||||
|
||||
SHELL_FILE_VERSION_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Version"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
LTEXT "File version: ", 14000, 10, 10, 45, 10
|
||||
LTEXT "", 14001, 70, 10, 150, 10
|
||||
LTEXT "Description: ", 14002, 10, 20, 45, 10
|
||||
LTEXT "", 14003, 70, 20, 150, 10
|
||||
LTEXT "Copyright: ", 14004, 10, 30, 45, 10
|
||||
LTEXT "", 14005, 70, 30, 150, 10
|
||||
GROUPBOX "Other version information: ", 14006, 10, 45, 220, 90
|
||||
LTEXT "Item name: ", 14007, 20, 55, 50, 10
|
||||
LTEXT "Value: ", 14008, 130, 55, 45, 10
|
||||
LISTBOX 14009,20,65,95,60, LBS_STANDARD | WS_TABSTOP | LBS_NOTIFY
|
||||
EDITTEXT 14010, 130, 65, 95, 60, ES_LEFT|WS_BORDER|WS_VSCROLL|WS_GROUP|ES_MULTILINE|ES_READONLY
|
||||
|
||||
}
|
||||
|
||||
DRIVE_GENERAL_DLG DIALOGEX 0, 0, 240, 230
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Allgemein"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
EDITTEXT 14001, 40, 20, 190, 10, ES_LEFT|WS_BORDER|WS_GROUP
|
||||
LTEXT "Type:", -1, 15, 55, 40, 10
|
||||
LTEXT "", 14002, 110, 55, 100, 10
|
||||
|
||||
|
||||
LTEXT "File system:", -1, 15, 70, 100, 10
|
||||
LTEXT "", 14003, 110, 70, 100, 10
|
||||
|
||||
CONTROL "", 14013, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 90, 10, 10
|
||||
LTEXT "Used space:", -1, 25, 90, 120, 10
|
||||
LTEXT "", 14004, 110, 90, 120, 10
|
||||
LTEXT "", 14005, 200, 90, 40, 10
|
||||
|
||||
CONTROL "", 14014, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 105, 10, 10
|
||||
LTEXT "Free space:", -1, 25, 105, 70, 10
|
||||
LTEXT "", 14006, 110, 105, 120, 10
|
||||
LTEXT "", 14007, 200, 105, 40, 10
|
||||
|
||||
LTEXT "Capacity:", -1, 25, 125, 80, 10
|
||||
LTEXT "", 14008, 110, 125, 120, 10
|
||||
LTEXT "", 14009, 200, 125, 40, 10
|
||||
|
||||
CONTROL "", 14015, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 20, 140, 200, 20
|
||||
|
||||
LTEXT "Drive %s", 14010, 100, 170, 40, 10
|
||||
PUSHBUTTON "Disk Cleanup", 14011, 180, 175, 50, 15, WS_TABSTOP
|
||||
CHECKBOX "Compress drive to save disk space", 14012, 15, 205, 165, 10, WS_DISABLED
|
||||
CHECKBOX "Allow Indexing Service to index this disk for fast file searching", 14012, 15, 220, 200, 10, WS_DISABLED
|
||||
}
|
||||
|
||||
DRIVE_EXTRA_DLG DIALOGEX 0, 0, 240, 230
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Extras"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
GROUPBOX "Error-checking", -1, 5, 5, 230, 60
|
||||
LTEXT "This option will check the volume for\nerrors.", -1, 40, 25, 160, 20
|
||||
PUSHBUTTON "Check Now...", 14000, 130, 45, 90, 15, WS_TABSTOP
|
||||
GROUPBOX "Defragmentation", -1, 5, 65, 230, 60
|
||||
LTEXT "This option will defragment files on the volume", -1, 40, 85, 160, 20
|
||||
PUSHBUTTON "Defragment Now...", 14001, 130, 105, 90, 15, WS_TABSTOP
|
||||
GROUPBOX "Backup", -1, 5, 130, 230, 60
|
||||
LTEXT "This option will back up files on the volume.", -1, 40, 150, 160, 20
|
||||
PUSHBUTTON "Backup Now...", 14002, 130, 170, 90, 15, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
DRIVE_HARDWARE_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Version"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
special folders
|
||||
*/
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
IDS_DESKTOP "Pulpit"
|
||||
IDS_MYCOMPUTER "Mój komputer"
|
||||
}
|
||||
|
||||
/*
|
||||
context menus
|
||||
*/
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
IDS_VIEW_LARGE "&Du¿e ikony"
|
||||
IDS_VIEW_SMALL "&Ma³e ikony"
|
||||
IDS_VIEW_LIST "&Lista"
|
||||
IDS_VIEW_DETAILS "&Szczegó³y"
|
||||
IDS_SELECT "Zaznacz"
|
||||
IDS_OPEN "Otwórz"
|
||||
}
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
IDS_CREATEFOLDER_DENIED "Nie mo¿na utworzyæ nowego katalogu: Brak dostêpu."
|
||||
IDS_CREATEFOLDER_CAPTION "B³¹d przy tworzeniu nowego katalogu"
|
||||
IDS_DELETEITEM_CAPTION "PotwierdŸ usuniêcie pliku"
|
||||
IDS_DELETEFOLDER_CAPTION "PotwierdŸ usuniêcie katalogu"
|
||||
IDS_DELETEITEM_TEXT "Czy jesteœ pewien, ¿e chcesz usun¹æ '%1'?"
|
||||
IDS_DELETEMULTIPLE_TEXT "Czy jesteœ pewien, ¿e chcesz usun¹æ %1 plików?"
|
||||
IDS_OVERWRITEFILE_TEXT "Zast¹piæ plik %1?"
|
||||
IDS_OVERWRITEFILE_CAPTION "PotwierdŸ zast¹pienie pliku"
|
||||
}
|
||||
|
||||
/* columns in the shellview */
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
/* columns in the shellview */
|
||||
IDS_SHV_COLUMN1 "Plik"
|
||||
IDS_SHV_COLUMN2 "WielkoϾ"
|
||||
IDS_SHV_COLUMN3 "Typ"
|
||||
IDS_SHV_COLUMN4 "Zmodyfikowano"
|
||||
IDS_SHV_COLUMN4 "Modyfikacja"
|
||||
IDS_SHV_COLUMN5 "Atrybuty"
|
||||
IDS_SHV_COLUMN6 "WielkoϾ"
|
||||
IDS_SHV_COLUMN7 "Dostêpna wielkoœæ"
|
||||
IDS_SHV_COLUMN8 "Nazwa"
|
||||
IDS_SHV_COLUMN9 "Komentarz"
|
||||
END
|
||||
IDS_SHV_COLUMN10 "Właściciel"
|
||||
IDS_SHV_COLUMN11 "Grupa"
|
||||
IDS_SHV_COLUMN_DELFROM "Lokacja oryginalna"
|
||||
IDS_SHV_COLUMN_DELDATE "Data usunięcia"
|
||||
|
||||
/* message box strings */
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
IDS_RESTART_TITLE "Uruchom ponownie"
|
||||
IDS_RESTART_PROMPT "Czy chcesz zasymulowaæ zrestartowanie Windowsa?"
|
||||
IDS_SHUTDOWN_TITLE "Wy³¹cz"
|
||||
IDS_SHUTDOWN_PROMPT "Czy chcesz wy³¹czyæ sesjê ReactOS'a?"
|
||||
/* special folders */
|
||||
IDS_DESKTOP "Pulpit"
|
||||
IDS_MYCOMPUTER "Mój komputer"
|
||||
IDS_RECYCLEBIN_FOLDER_NAME "Kosz"
|
||||
|
||||
/* context menus */
|
||||
IDS_VIEW_LARGE "&Duże Ikony"
|
||||
IDS_VIEW_SMALL "&Małe Ikony"
|
||||
IDS_VIEW_LIST "&Lista"
|
||||
IDS_VIEW_DETAILS "&Szczegóły"
|
||||
IDS_SELECT "Zaznacz"
|
||||
IDS_OPEN "Otwórz"
|
||||
|
||||
IDS_CREATEFOLDER_DENIED "Nie mogę utworzyć nowego katalogu: Brak dostępu."
|
||||
IDS_CREATEFOLDER_CAPTION "Błąd przy tworzeniu nowego katalogu."
|
||||
IDS_DELETEITEM_CAPTION "Potwierdź usunięcia pliku"
|
||||
IDS_DELETEFOLDER_CAPTION "Potwierdź usunięcie katalogu"
|
||||
IDS_DELETEITEM_TEXT "Czy jesteś pewien, że chcesz usunąć '%1'?"
|
||||
IDS_DELETEMULTIPLE_TEXT "Czy jesteś pewien, że chcesz usunąć te %1 pliki?"
|
||||
IDS_DELETESELECTED_TEXT "Czy jesteś pewien, że chcesz usunąć wybrane elementy?"
|
||||
IDS_TRASHITEM_TEXT "Czy jesteś pewien, że chcesz umieścić plik '%1' w Koszu?"
|
||||
IDS_TRASHFOLDER_TEXT "Czy jesteś pewien, że chcesz umieścić folder '%1' i całą jego zawartość w koszu"
|
||||
IDS_TRASHMULTIPLE_TEXT "Elementów: %1 - czy na pewno chcesz je umieścić w Koszu?"
|
||||
IDS_CANTTRASH_TEXT "Nie mogę przenieść elementu '%1' do Kosza. Czy chcesz go zamiast tego usunąć?"
|
||||
IDS_OVERWRITEFILE_TEXT "Ten folder już zawiera plik o nazwie '%1'.\n\nCzy chcesz go zastąpić?"
|
||||
IDS_OVERWRITEFILE_CAPTION "Potwierdź zastąpienie pliku"
|
||||
IDS_OVERWRITEFOLDER_TEXT "Ten folder już zawiera folder o nazwie '%1'.\n\n"\
|
||||
"Jeżeli w docelowym folderze wystąpią pliki o takich samych nazwach jak\n"\
|
||||
"w wybranym folderze, to zostaną one zastąpione. Czy chcesz mimo to przenieść\n"\
|
||||
"lub skopiować folder?"
|
||||
|
||||
/* message box strings */
|
||||
IDS_RESTART_TITLE "Uruchom ponownie"
|
||||
IDS_RESTART_PROMPT "Czy chcesz zasymulować zrestartowanie Windowsa?"
|
||||
IDS_SHUTDOWN_TITLE "Wyłącz"
|
||||
IDS_SHUTDOWN_PROMPT "Czy chcesz wyłączyć sesję Wine'a?"
|
||||
|
||||
/* shell folder path default values */
|
||||
IDS_PROGRAMS "Menu Start\\Programy"
|
||||
IDS_PERSONAL "Moje dokumenty"
|
||||
IDS_FAVORITES "Ulubione"
|
||||
IDS_STARTUP "Menu Start\\Programy\\AutoStart"
|
||||
IDS_RECENT "Recent"
|
||||
IDS_SENDTO "SendTo"
|
||||
IDS_STARTMENU "Menu Start"
|
||||
IDS_MYMUSIC "Moja muzyka"
|
||||
IDS_MYVIDEO "Moje wideo"
|
||||
IDS_DESKTOPDIRECTORY "Pulpit"
|
||||
IDS_NETHOOD "NetHood"
|
||||
IDS_TEMPLATES "Szablony"
|
||||
IDS_APPDATA "Dane aplikacji"
|
||||
IDS_PRINTHOOD "PrintHood"
|
||||
IDS_LOCAL_APPDATA "Ustawienia lokalne\\Dane aplikacji"
|
||||
IDS_INTERNET_CACHE "Ustawienia lokalne\\Temporary Internet Files"
|
||||
IDS_COOKIES "Cookies"
|
||||
IDS_HISTORY "Ustawienia Lokalne\\Historia"
|
||||
IDS_PROGRAM_FILES "Program Files"
|
||||
IDS_MYPICTURES "Moje obrazy"
|
||||
IDS_PROGRAM_FILES_COMMON "Program Files\\Common Files"
|
||||
IDS_COMMON_DOCUMENTS "Dokumenty"
|
||||
IDS_ADMINTOOLS "Menu Start\\Programy\\Narzędzia administracyjne"
|
||||
IDS_COMMON_MUSIC "Documenty\\Moja muzyka"
|
||||
IDS_COMMON_PICTURES "Documenty\\Moje obrazy"
|
||||
IDS_COMMON_VIDEO "Documenty\\Moje wideo"
|
||||
IDS_CDBURN_AREA "Ustawienia lokalne\\Dane aplikacji\\Microsoft\\Nagrywanie dysków CD"
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/*
|
||||
* Copyright 1998 Juergen Schmied
|
||||
* Copyright 2003 Marcelo Duarte
|
||||
* Copyright 2006-2007 Américo José Melo
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -14,10 +15,10 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
|
||||
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
|
||||
|
||||
MENU_001 MENU DISCARDABLE
|
||||
BEGIN
|
||||
|
@ -27,9 +28,12 @@ BEGIN
|
|||
MENUITEM "&Detalhes", FCIDM_SHVIEW_REPORTVIEW
|
||||
END
|
||||
|
||||
|
||||
/*
|
||||
shellview background menu
|
||||
*/
|
||||
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
|
||||
|
||||
MENU_002 MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
|
@ -69,9 +73,53 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE
|
||||
|
||||
MENU_002 MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
POPUP "&Mostrar"
|
||||
BEGIN
|
||||
MENUITEM "Ícones &grandes", FCIDM_SHVIEW_BIGICON
|
||||
MENUITEM "Ícones &pequenos", FCIDM_SHVIEW_SMALLICON
|
||||
MENUITEM "&Lista", FCIDM_SHVIEW_LISTVIEW
|
||||
MENUITEM "&Detalhes", FCIDM_SHVIEW_REPORTVIEW
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "O&rganizar ícones"
|
||||
BEGIN
|
||||
MENUITEM "Por &nome", 0x30 /* column 0 */
|
||||
MENUITEM "Por &tipo", 0x32 /* column 2 */
|
||||
MENUITEM "Por ta&manho", 0x31 /* ... */
|
||||
MENUITEM "Por &data", 0x33
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Auto organi&zar", FCIDM_SHVIEW_AUTOARRANGE
|
||||
END
|
||||
MENUITEM "Alin&har ícones", FCIDM_SHVIEW_SNAPTOGRID
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Actualizar", FCIDM_SHVIEW_REFRESH
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Co&lar", FCIDM_SHVIEW_INSERT
|
||||
MENUITEM "Colar a&talho", FCIDM_SHVIEW_INSERTLINK
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "Novo"
|
||||
BEGIN
|
||||
MENUITEM "&Pasta", FCIDM_SHVIEW_NEWFOLDER
|
||||
MENUITEM "&Atalho", FCIDM_SHVIEW_NEWLINK
|
||||
MENUITEM SEPARATOR
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Propriedades", FCIDM_SHVIEW_PROPERTIES
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
/*
|
||||
shellview item menu
|
||||
*/
|
||||
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
|
||||
|
||||
MENU_SHV_FILE MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
|
@ -90,6 +138,9 @@ BEGIN
|
|||
END
|
||||
END
|
||||
|
||||
|
||||
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
|
||||
|
||||
SHBRSFORFOLDER_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 188, 192
|
||||
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
|
||||
CAPTION "Procurar pasta"
|
||||
|
@ -105,6 +156,9 @@ FONT 8, "MS Shell Dlg"
|
|||
4, 40, 180, 120
|
||||
}
|
||||
|
||||
|
||||
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
|
||||
|
||||
SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 210, 152
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Sobre %s"
|
||||
|
@ -115,16 +169,50 @@ FONT 10, "MS Shell Dlg"
|
|||
ICON "", 1088, 10, 10, 14, 16
|
||||
LTEXT "", 100, 30, 10, 137, 10
|
||||
LTEXT "", 101, 30, 22, 137, 10
|
||||
LTEXT "ReactOS foi disponibilizado por:", 98, 8, 55, 137, 10
|
||||
LTEXT "Wine foi disponibilizado por:", 98, 8, 55, 137, 10
|
||||
}
|
||||
|
||||
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE
|
||||
|
||||
SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 210, 152
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Acerca do %s"
|
||||
FONT 10, "MS Shell Dlg"
|
||||
{
|
||||
DEFPUSHBUTTON "OK", IDOK, 153, 133, 50, 12, WS_TABSTOP
|
||||
LISTBOX 99, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER
|
||||
ICON "", 1088, 10, 10, 14, 16
|
||||
LTEXT "", 100, 30, 10, 137, 10
|
||||
LTEXT "", 101, 30, 22, 137, 10
|
||||
LTEXT "Wine disponibilizado por:", 98, 8, 55, 137, 10
|
||||
}
|
||||
|
||||
|
||||
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
|
||||
|
||||
SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION ""
|
||||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||
LTEXT "Digite o nome do programa, pasta, documento, ou endereço Internet, que o ReactOS irá abrí-lo para você.", 12289, 36, 11, 182, 18
|
||||
LTEXT "Digite o nome do programa, pasta, documento, ou endereço Internet, que o Wine irá abrí-lo para você.", 12289, 36, 11, 182, 18
|
||||
LTEXT "&Abrir:", 12305, 7, 39, 24, 10
|
||||
CONTROL "", 12298, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100
|
||||
DEFPUSHBUTTON "OK", IDOK, 62, 63, 50, 14, WS_TABSTOP
|
||||
PUSHBUTTON "Cancelar", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP
|
||||
PUSHBUTTON "&Procurar...", 12288, 170, 63, 50, 14, WS_TABSTOP
|
||||
}
|
||||
|
||||
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE
|
||||
|
||||
SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION ""
|
||||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||
LTEXT "Digite o nome do programa, pasta, documento, ou endereço Internet, que o Wine irá abrí-lo.", 12289, 36, 11, 182, 18
|
||||
LTEXT "&Abrir:", 12305, 7, 39, 24, 10
|
||||
CONTROL "", 12298, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100
|
||||
DEFPUSHBUTTON "OK", IDOK, 62, 63, 50, 14, WS_TABSTOP
|
||||
|
@ -133,135 +221,7 @@ FONT 8, "MS Shell Dlg"
|
|||
}
|
||||
|
||||
|
||||
SHELL_GENERAL_SHORTCUT_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Shortcut"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE
|
||||
LTEXT "Target type:", 14004, 10, 30, 50, 10
|
||||
LTEXT "", 14005, 70, 30, 150, 10
|
||||
LTEXT "Target location:", 14006, 10, 40, 70, 10
|
||||
LTEXT "", 14007, 70, 40, 150, 10
|
||||
LTEXT "Target:", 14008, 10, 55, 45, 10
|
||||
EDITTEXT 14009, 70, 55, 150, 10, ES_LEFT
|
||||
LTEXT "&Start in:",14010, 10, 65, 45, 10
|
||||
EDITTEXT 14011, 70, 65, 150, 10, ES_LEFT
|
||||
LTEXT "Shortcut &key:", 14014, 10, 80, 45, 10
|
||||
EDITTEXT 14015, 70, 80, 150, 10, ES_LEFT
|
||||
LTEXT "Run:", 14016, 10, 90, 45, 10
|
||||
EDITTEXT 14017, 70, 90, 150, 10
|
||||
LTEXT "C&omment:", 14018, 10, 100, 45, 10
|
||||
EDITTEXT 14019, 70, 100, 150, 10, ES_LEFT
|
||||
PUSHBUTTON "&Find Target...", 14020, 10, 115, 60, 14, ES_LEFT
|
||||
PUSHBUTTON "&Change Icon...", 14021, 80, 115, 60, 14, ES_LEFT
|
||||
PUSHBUTTON "A&dvanced...", 14022, 150, 115, 60, 14, ES_LEFT
|
||||
}
|
||||
|
||||
SHELL_FILE_GENERAL_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "General"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE
|
||||
EDITTEXT 14001, 70, 5, 100, 10, ES_LEFT | ES_READONLY
|
||||
LTEXT "Type of file:", 14004, 10, 30, 50, 10
|
||||
LTEXT "%s File", 14005, 70, 30, 150, 10
|
||||
LTEXT "Opens with:", 14006, 10, 40, 50, 10
|
||||
LTEXT "", 14007, 70, 40, 150, 10
|
||||
LTEXT "Location:", 14008, 10, 55, 45, 10
|
||||
LTEXT "", 14009, 70, 55, 200, 10
|
||||
LTEXT "Size:",14010, 10, 65, 45, 10
|
||||
LTEXT "", 14011, 70, 65, 150, 10
|
||||
LTEXT "Created:", 14014, 10, 80, 45, 10
|
||||
LTEXT "", 14015, 70, 80, 150, 10
|
||||
LTEXT "Modied:", 14016, 10, 90, 45, 10
|
||||
LTEXT "", 14017, 70, 90, 150, 10
|
||||
LTEXT "Accessed:", 14018, 10, 100, 45, 10
|
||||
LTEXT "", 14019, 70, 100, 150, 10
|
||||
LTEXT "Attributes:", 14020, 10, 115, 45, 10
|
||||
CHECKBOX "&Read-only", 14021, 70, 115, 45, 10
|
||||
CHECKBOX "&Hidden", 14022, 130, 115, 50, 10
|
||||
CHECKBOX "&Archive", 14023, 180, 115, 45, 10
|
||||
}
|
||||
|
||||
SHELL_FILE_VERSION_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Version"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
LTEXT "File version: ", 14000, 10, 10, 45, 10
|
||||
LTEXT "", 14001, 70, 10, 150, 10
|
||||
LTEXT "Description: ", 14002, 10, 20, 45, 10
|
||||
LTEXT "", 14003, 70, 20, 150, 10
|
||||
LTEXT "Copyright: ", 14004, 10, 30, 45, 10
|
||||
LTEXT "", 14005, 70, 30, 150, 10
|
||||
GROUPBOX "Other version information: ", 14006, 10, 45, 220, 90
|
||||
LTEXT "Item name: ", 14007, 20, 55, 50, 10
|
||||
LTEXT "Value: ", 14008, 130, 55, 45, 10
|
||||
LISTBOX 14009,20,65,95,60, LBS_STANDARD | WS_TABSTOP | LBS_NOTIFY
|
||||
EDITTEXT 14010, 130, 65, 95, 60, ES_LEFT|WS_BORDER|WS_VSCROLL|WS_GROUP|ES_MULTILINE|ES_READONLY
|
||||
|
||||
}
|
||||
|
||||
DRIVE_GENERAL_DLG DIALOGEX 0, 0, 240, 230
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "General"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
EDITTEXT 14001, 40, 20, 190, 10, ES_LEFT|WS_BORDER|WS_GROUP
|
||||
LTEXT "Type:", -1, 15, 55, 40, 10
|
||||
LTEXT "", 14002, 110, 55, 100, 10
|
||||
|
||||
|
||||
LTEXT "File system:", -1, 15, 70, 100, 10
|
||||
LTEXT "", 14003, 110, 70, 100, 10
|
||||
|
||||
CONTROL "", 14013, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 90, 10, 10
|
||||
LTEXT "Used space:", -1, 25, 90, 120, 10
|
||||
LTEXT "", 14004, 110, 90, 120, 10
|
||||
LTEXT "", 14005, 200, 90, 40, 10
|
||||
|
||||
CONTROL "", 14014, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 105, 10, 10
|
||||
LTEXT "Free space:", -1, 25, 105, 70, 10
|
||||
LTEXT "", 14006, 110, 105, 120, 10
|
||||
LTEXT "", 14007, 200, 105, 40, 10
|
||||
|
||||
LTEXT "Capacity:", -1, 25, 125, 80, 10
|
||||
LTEXT "", 14008, 110, 125, 120, 10
|
||||
LTEXT "", 14009, 200, 125, 40, 10
|
||||
|
||||
CONTROL "", 14015, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 20, 140, 200, 20
|
||||
|
||||
LTEXT "Drive %s", 14010, 100, 170, 40, 10
|
||||
PUSHBUTTON "Disk Cleanup", 14011, 180, 175, 50, 15, WS_TABSTOP
|
||||
CHECKBOX "Compress drive to save disk space", 14012, 15, 205, 165, 10, WS_DISABLED
|
||||
CHECKBOX "Allow Indexing Service to index this disk for fast file searching", 14012, 15, 220, 200, 10, WS_DISABLED
|
||||
}
|
||||
|
||||
DRIVE_EXTRA_DLG DIALOGEX 0, 0, 240, 230
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Tools"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
GROUPBOX "Error-checking", -1, 5, 5, 230, 60
|
||||
LTEXT "This option will check the volume for\nerrors.", -1, 40, 25, 160, 20
|
||||
PUSHBUTTON "Check Now...", 14000, 130, 45, 90, 15, WS_TABSTOP
|
||||
GROUPBOX "Defragmentation", -1, 5, 65, 230, 60
|
||||
LTEXT "This option will defragment files on the volume", -1, 40, 85, 160, 20
|
||||
PUSHBUTTON "Defragment Now...", 14001, 130, 105, 90, 15, WS_TABSTOP
|
||||
GROUPBOX "Backup", -1, 5, 130, 230, 60
|
||||
LTEXT "This option will back up files on the volume.", -1, 40, 150, 160, 20
|
||||
PUSHBUTTON "Backup Now...", 14002, 130, 170, 90, 15, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
DRIVE_HARDWARE_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Version"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
}
|
||||
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
|
@ -296,14 +256,18 @@ STRINGTABLE DISCARDABLE
|
|||
IDS_DELETEFOLDER_CAPTION "Confirmar exclusão de pasta"
|
||||
IDS_DELETEITEM_TEXT "Você tem certeza que deseja excluir '%1'?"
|
||||
IDS_DELETEMULTIPLE_TEXT "Você tem certeza que deseja excluir estes %1 itens?"
|
||||
IDS_OVERWRITEFILE_TEXT "Sobreescrever arquivo %1?"
|
||||
IDS_OVERWRITEFILE_TEXT "This folder already contains a file called '%1'.\n\nDo you want to replace it?"
|
||||
IDS_OVERWRITEFILE_CAPTION "Confirmar sobreescrever arquivo"
|
||||
IDS_OVERWRITEFOLDER_TEXT "This folder already contains a folder named '%1'.\n\n"\
|
||||
"If the files in the destination folder have the same names as files in the\n"\
|
||||
"selected folder they will be replaced. Do you still want to move or copy\n"\
|
||||
"the folder?"
|
||||
|
||||
/* message box strings */
|
||||
IDS_RESTART_TITLE "Reiniciar"
|
||||
IDS_RESTART_PROMPT "Você quer simular a reinicialização do Windows?"
|
||||
IDS_SHUTDOWN_TITLE "Desligar"
|
||||
IDS_SHUTDOWN_PROMPT "Você quer finalizar a sessão no ReactOS?"
|
||||
IDS_SHUTDOWN_PROMPT "Você quer finalizar a sessão no Wine?"
|
||||
|
||||
/* shell folder path default values */
|
||||
IDS_PROGRAMS "Menu Iniciar\\Programas"
|
||||
|
@ -313,8 +277,8 @@ STRINGTABLE DISCARDABLE
|
|||
IDS_RECENT "Recent"
|
||||
IDS_SENDTO "SendTo"
|
||||
IDS_STARTMENU "Menu Iniciar"
|
||||
IDS_MYMUSIC "Meus Documentos\\Minhas Músicas"
|
||||
IDS_MYVIDEO "Meus Documentos\\Meus Vídeos"
|
||||
IDS_MYMUSIC "Minhas Músicas"
|
||||
IDS_MYVIDEO "Meus Vídeos"
|
||||
IDS_DESKTOPDIRECTORY "Desktop"
|
||||
IDS_NETHOOD "NetHood"
|
||||
IDS_TEMPLATES "Templates"
|
||||
|
@ -325,7 +289,7 @@ STRINGTABLE DISCARDABLE
|
|||
IDS_COOKIES "Cookies"
|
||||
IDS_HISTORY "Configurações locais\\Histórico"
|
||||
IDS_PROGRAM_FILES "Arquivos de programas"
|
||||
IDS_MYPICTURES "Meus Documentos\\Minhas Imagens"
|
||||
IDS_MYPICTURES "Minhas Imagens"
|
||||
IDS_PROGRAM_FILES_COMMON "Arquivos de programas\\Arquivos comuns"
|
||||
IDS_COMMON_DOCUMENTS "Documentos"
|
||||
IDS_ADMINTOOLS "Menu Iniciar\\Programas\\Ferramentas Administrativas"
|
||||
|
@ -333,7 +297,78 @@ STRINGTABLE DISCARDABLE
|
|||
IDS_COMMON_PICTURES "Documentos\\Minhas Imagens"
|
||||
IDS_COMMON_VIDEO "Documentos\\Meus Vídeos"
|
||||
IDS_CDBURN_AREA "Configurações locais\\Dados de aplicativos\\Microsoft\\CD Burning"
|
||||
IDS_DRIVE_FIXED "Lokal Disk"
|
||||
IDS_DRIVE_CDROM "CDROM"
|
||||
IDS_DRIVE_NETWORK "Network Disk"
|
||||
}
|
||||
|
||||
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
/* columns in the shellview */
|
||||
IDS_SHV_COLUMN1 "Ficheiro"
|
||||
IDS_SHV_COLUMN2 "Tamanho"
|
||||
IDS_SHV_COLUMN3 "Tipo"
|
||||
IDS_SHV_COLUMN4 "Modificado"
|
||||
IDS_SHV_COLUMN5 "Atributos"
|
||||
IDS_SHV_COLUMN6 "Tamanho"
|
||||
IDS_SHV_COLUMN7 "Disponível"
|
||||
IDS_SHV_COLUMN8 "Nome"
|
||||
IDS_SHV_COLUMN9 "Comentários"
|
||||
IDS_SHV_COLUMN10 "Dono"
|
||||
IDS_SHV_COLUMN11 "Grupo"
|
||||
|
||||
/* special folders */
|
||||
IDS_DESKTOP "Ambiente de trabalho"
|
||||
IDS_MYCOMPUTER "O Meu Computador"
|
||||
|
||||
/* context menus */
|
||||
IDS_VIEW_LARGE "Ícones &grandes"
|
||||
IDS_VIEW_SMALL "Ícones &pequenos"
|
||||
IDS_VIEW_LIST "&Lista"
|
||||
IDS_VIEW_DETAILS "&Detalhes"
|
||||
IDS_SELECT "Seleccionar"
|
||||
IDS_OPEN "Abrir"
|
||||
|
||||
IDS_CREATEFOLDER_DENIED "Não é possível criar nova pasta: Permissão negada."
|
||||
IDS_CREATEFOLDER_CAPTION "Erro durante a criação da nova pasta"
|
||||
IDS_DELETEITEM_CAPTION "Confirmar exclusão do ficheiro"
|
||||
IDS_DELETEFOLDER_CAPTION "Confirmar exclusão da pasta"
|
||||
IDS_DELETEITEM_TEXT "Tem certeza que deseja excluir '%1'?"
|
||||
IDS_DELETEMULTIPLE_TEXT "Tem certeza que deseja excluir estes %1 itens?"
|
||||
IDS_OVERWRITEFILE_TEXT "Substituir ficheiro %1?"
|
||||
IDS_OVERWRITEFILE_CAPTION "Confirmar substituição de ficheiro"
|
||||
|
||||
/* message box strings */
|
||||
IDS_RESTART_TITLE "Reiniciar"
|
||||
IDS_RESTART_PROMPT "Deseja simular a reinicialização do Windows?"
|
||||
IDS_SHUTDOWN_TITLE "Desligar"
|
||||
IDS_SHUTDOWN_PROMPT "Deseja finalizar esta sessão do Wine?"
|
||||
|
||||
/* shell folder path default values */
|
||||
IDS_PROGRAMS "Menu Iniciar\\Programas"
|
||||
IDS_PERSONAL "OS Meus Documentos"
|
||||
IDS_FAVORITES "Favoritos"
|
||||
IDS_STARTUP "Menu Iniciar\\Programas\\Iniciar"
|
||||
IDS_RECENT "Recentes"
|
||||
IDS_SENDTO "Enviar Para"
|
||||
IDS_STARTMENU "Menu Iniciar"
|
||||
IDS_MYMUSIC "As Minhas Músicas"
|
||||
IDS_MYVIDEO "Os Meus Vídeos"
|
||||
IDS_DESKTOPDIRECTORY "Ambiente de Trabalho"
|
||||
IDS_NETHOOD "NetHood"
|
||||
IDS_TEMPLATES "Modelos"
|
||||
IDS_APPDATA "Application Data"
|
||||
IDS_PRINTHOOD "PrintHood"
|
||||
IDS_LOCAL_APPDATA "Definições locais\\Application Data"
|
||||
IDS_INTERNET_CACHE "Definições locais\\Temporary Internet Files"
|
||||
IDS_COOKIES "Cookies"
|
||||
IDS_HISTORY "Definições locais\\Histórico"
|
||||
IDS_PROGRAM_FILES "Programas"
|
||||
IDS_MYPICTURES "As Minhas Imagens"
|
||||
IDS_PROGRAM_FILES_COMMON "Programas\\Ficheiros comuns"
|
||||
IDS_COMMON_DOCUMENTS "Os Meus Documentos"
|
||||
IDS_ADMINTOOLS "Menu Iniciar\\Programas\\Ferramentas Administrativas"
|
||||
IDS_COMMON_MUSIC "Os Meus Documentos\\As Minhas Músicas"
|
||||
IDS_COMMON_PICTURES "Os Meus Documentos\\As Minhas Imagens"
|
||||
IDS_COMMON_VIDEO "Os Meus Documentos\\Os Meus Vídeos"
|
||||
IDS_CDBURN_AREA "Definições locais\\Application Data\\Microsoft\\CD Burning"
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
|
||||
|
@ -42,7 +42,7 @@ BEGIN
|
|||
MENUITEM "&Ïîäðîáíî", FCIDM_SHVIEW_REPORTVIEW
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "Âûñòðîèòü &çíà÷êè"
|
||||
POPUP "Óïîðÿäî÷èòü &çíà÷êè"
|
||||
BEGIN
|
||||
MENUITEM "Ïî &èìåíè", 0x30 /* column 0 */
|
||||
MENUITEM "Ïî &òèïó", 0x32 /* column 2 */
|
||||
|
@ -60,7 +60,7 @@ BEGIN
|
|||
MENUITEM SEPARATOR
|
||||
POPUP "Ñîçäàòü"
|
||||
BEGIN
|
||||
MENUITEM "&Ïàïêó", FCIDM_SHVIEW_NEWFOLDER
|
||||
MENUITEM "&Ïàïêà", FCIDM_SHVIEW_NEWFOLDER
|
||||
MENUITEM "&ßðëûê", FCIDM_SHVIEW_NEWLINK
|
||||
MENUITEM SEPARATOR
|
||||
END
|
||||
|
@ -83,7 +83,7 @@ BEGIN
|
|||
MENUITEM "&Êîïèðîâàòü", FCIDM_SHVIEW_COPY
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Ñîçäàòü &ÿðëûê", FCIDM_SHVIEW_CREATELINK
|
||||
MENUITEM "&Óäàëèòü", FCIDM_SHVIEW_DELETE
|
||||
MENUITEM "&Óäàëìòü", FCIDM_SHVIEW_DELETE
|
||||
MENUITEM "Ïåðåè&ìåíîâàòü", FCIDM_SHVIEW_RENAME
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Ñâî&éñòâà", FCIDM_SHVIEW_PROPERTIES
|
||||
|
@ -92,7 +92,7 @@ END
|
|||
|
||||
SHBRSFORFOLDER_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 188, 192
|
||||
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
|
||||
CAPTION "Ïðîâîäíèê"
|
||||
CAPTION "Îáçîð"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
DEFPUSHBUTTON "Äà", 1, 80, 176, 50, 12, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
|
||||
|
@ -115,7 +115,7 @@ FONT 10, "MS Shell Dlg"
|
|||
ICON "", 1088, 10, 10, 14, 16
|
||||
LTEXT "", 100, 30, 10, 137, 10
|
||||
LTEXT "", 101, 30, 22, 137, 10
|
||||
LTEXT "Ðàçðàáîò÷èêè ReactOS:", 98, 8, 55, 137, 10
|
||||
LTEXT "Ðàçðàáîò÷èêè Wine:", 98, 8, 55, 137, 10
|
||||
}
|
||||
|
||||
SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||
|
@ -124,156 +124,23 @@ CAPTION ""
|
|||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||
LTEXT "Ââåäèòå èìÿ ïðîãðàììû, ïàïêè, äîêóìåíòà èëè ðåñóðñ Èíòåðíåòà, è ReactOS îòêðîåò èõ.", 12289, 36, 11, 182, 18
|
||||
LTEXT "&Îòêðûòü:", 12305, 7, 39, 32, 10
|
||||
CONTROL "", 12298, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 42, 37, 179, 100
|
||||
LTEXT "Ââåäèòå èìÿ ïðîãðàììû, ïàïêè, äîêóìåíòà èëè ðåñóðñ Èíòåðíåòà, è Wine îòêðîåò èõ.", 12289, 36, 11, 182, 18
|
||||
LTEXT "&Îòêðûòü:", 12305, 7, 39, 24, 10
|
||||
CONTROL "", 12298, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100
|
||||
DEFPUSHBUTTON "OK", IDOK, 62, 63, 50, 14, WS_TABSTOP
|
||||
PUSHBUTTON "Îòìåíà", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP
|
||||
PUSHBUTTON "Îá&çîð...", 12288, 170, 63, 50, 14, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
SHELL_GENERAL_SHORTCUT_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Shortcut"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE
|
||||
LTEXT "Target type:", 14004, 10, 30, 50, 10
|
||||
LTEXT "", 14005, 70, 30, 150, 10
|
||||
LTEXT "Target location:", 14006, 10, 40, 70, 10
|
||||
LTEXT "", 14007, 70, 40, 150, 10
|
||||
LTEXT "Target:", 14008, 10, 55, 45, 10
|
||||
EDITTEXT 14009, 70, 55, 150, 10, ES_LEFT
|
||||
LTEXT "&Start in:",14010, 10, 65, 45, 10
|
||||
EDITTEXT 14011, 70, 65, 150, 10, ES_LEFT
|
||||
LTEXT "Shortcut &key:", 14014, 10, 80, 45, 10
|
||||
EDITTEXT 14015, 70, 80, 150, 10, ES_LEFT
|
||||
LTEXT "Run:", 14016, 10, 90, 45, 10
|
||||
EDITTEXT 14017, 70, 90, 150, 10
|
||||
LTEXT "C&omment:", 14018, 10, 100, 45, 10
|
||||
EDITTEXT 14019, 70, 100, 150, 10, ES_LEFT
|
||||
PUSHBUTTON "&Find Target...", 14020, 10, 115, 60, 14, ES_LEFT
|
||||
PUSHBUTTON "&Change Icon...", 14021, 80, 115, 60, 14, ES_LEFT
|
||||
PUSHBUTTON "A&dvanced...", 14022, 150, 115, 60, 14, ES_LEFT
|
||||
}
|
||||
|
||||
SHELL_FILE_GENERAL_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "General"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE
|
||||
EDITTEXT 14001, 70, 5, 100, 10, ES_LEFT | ES_READONLY
|
||||
LTEXT "Type of file:", 14004, 10, 30, 50, 10
|
||||
LTEXT "%s File", 14005, 70, 30, 150, 10
|
||||
LTEXT "Opens with:", 14006, 10, 40, 50, 10
|
||||
LTEXT "", 14007, 70, 40, 150, 10
|
||||
LTEXT "Location:", 14008, 10, 55, 45, 10
|
||||
LTEXT "", 14009, 70, 55, 200, 10
|
||||
LTEXT "Size:",14010, 10, 65, 45, 10
|
||||
LTEXT "", 14011, 70, 65, 150, 10
|
||||
LTEXT "Created:", 14014, 10, 80, 45, 10
|
||||
LTEXT "", 14015, 70, 80, 150, 10
|
||||
LTEXT "Modied:", 14016, 10, 90, 45, 10
|
||||
LTEXT "", 14017, 70, 90, 150, 10
|
||||
LTEXT "Accessed:", 14018, 10, 100, 45, 10
|
||||
LTEXT "", 14019, 70, 100, 150, 10
|
||||
LTEXT "Attributes:", 14020, 10, 115, 45, 10
|
||||
CHECKBOX "&Read-only", 14021, 70, 115, 45, 10
|
||||
CHECKBOX "&Hidden", 14022, 130, 115, 50, 10
|
||||
CHECKBOX "&Archive", 14023, 180, 115, 45, 10
|
||||
}
|
||||
|
||||
SHELL_FILE_VERSION_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Version"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
LTEXT "File version: ", 14000, 10, 10, 45, 10
|
||||
LTEXT "", 14001, 70, 10, 150, 10
|
||||
LTEXT "Description: ", 14002, 10, 20, 45, 10
|
||||
LTEXT "", 14003, 70, 20, 150, 10
|
||||
LTEXT "Copyright: ", 14004, 10, 30, 45, 10
|
||||
LTEXT "", 14005, 70, 30, 150, 10
|
||||
GROUPBOX "Other version information: ", 14006, 10, 45, 220, 90
|
||||
LTEXT "Item name: ", 14007, 20, 55, 50, 10
|
||||
LTEXT "Value: ", 14008, 130, 55, 45, 10
|
||||
LISTBOX 14009,20,65,95,60, LBS_STANDARD | WS_TABSTOP | LBS_NOTIFY
|
||||
EDITTEXT 14010, 130, 65, 95, 60, ES_LEFT|WS_BORDER|WS_VSCROLL|WS_GROUP|ES_MULTILINE|ES_READONLY
|
||||
|
||||
}
|
||||
|
||||
DRIVE_GENERAL_DLG DIALOGEX 0, 0, 240, 230
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "General"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
EDITTEXT 14001, 40, 20, 190, 10, ES_LEFT|WS_BORDER|WS_GROUP
|
||||
LTEXT "Type:", -1, 15, 55, 40, 10
|
||||
LTEXT "", 14002, 110, 55, 100, 10
|
||||
|
||||
|
||||
LTEXT "File system:", -1, 15, 70, 100, 10
|
||||
LTEXT "", 14003, 110, 70, 100, 10
|
||||
|
||||
CONTROL "", 14013, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 90, 10, 10
|
||||
LTEXT "Used space:", -1, 25, 90, 120, 10
|
||||
LTEXT "", 14004, 110, 90, 120, 10
|
||||
LTEXT "", 14005, 200, 90, 40, 10
|
||||
|
||||
CONTROL "", 14014, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 105, 10, 10
|
||||
LTEXT "Free space:", -1, 25, 105, 70, 10
|
||||
LTEXT "", 14006, 110, 105, 120, 10
|
||||
LTEXT "", 14007, 200, 105, 40, 10
|
||||
|
||||
LTEXT "Capacity:", -1, 25, 125, 80, 10
|
||||
LTEXT "", 14008, 110, 125, 120, 10
|
||||
LTEXT "", 14009, 200, 125, 40, 10
|
||||
|
||||
CONTROL "", 14015, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 20, 140, 200, 20
|
||||
|
||||
LTEXT "Drive %s", 14010, 100, 170, 40, 10
|
||||
PUSHBUTTON "Disk Cleanup", 14011, 180, 175, 50, 15, WS_TABSTOP
|
||||
CHECKBOX "Compress drive to save disk space", 14012, 15, 205, 165, 10, WS_DISABLED
|
||||
CHECKBOX "Allow Indexing Service to index this disk for fast file searching", 14012, 15, 220, 200, 10, WS_DISABLED
|
||||
}
|
||||
|
||||
DRIVE_EXTRA_DLG DIALOGEX 0, 0, 240, 230
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Tools"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
GROUPBOX "Error-checking", -1, 5, 5, 230, 60
|
||||
LTEXT "This option will check the volume for\nerrors.", -1, 40, 25, 160, 20
|
||||
PUSHBUTTON "Check Now...", 14000, 130, 45, 90, 15, WS_TABSTOP
|
||||
GROUPBOX "Defragmentation", -1, 5, 65, 230, 60
|
||||
LTEXT "This option will defragment files on the volume", -1, 40, 85, 160, 20
|
||||
PUSHBUTTON "Defragment Now...", 14001, 130, 105, 90, 15, WS_TABSTOP
|
||||
GROUPBOX "Backup", -1, 5, 130, 230, 60
|
||||
LTEXT "This option will back up files on the volume.", -1, 40, 150, 160, 20
|
||||
PUSHBUTTON "Backup Now...", 14002, 130, 170, 90, 15, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
|
||||
DRIVE_HARDWARE_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Version"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
/* columns in the shellview */
|
||||
IDS_SHV_COLUMN1 "Èìÿ"
|
||||
IDS_SHV_COLUMN2 "Ðàçìåð"
|
||||
IDS_SHV_COLUMN3 "Òèï"
|
||||
IDS_SHV_COLUMN4 "Èçìåíåí"
|
||||
IDS_SHV_COLUMN4 "Èçìåí¸í"
|
||||
IDS_SHV_COLUMN5 "Àòðèáóòû"
|
||||
IDS_SHV_COLUMN6 "Ïîëíûé îáúåì"
|
||||
IDS_SHV_COLUMN6 "Ïîëíûé îáú¸ì"
|
||||
IDS_SHV_COLUMN7 "Ñâîáîäíî"
|
||||
IDS_SHV_COLUMN8 "Èìÿ"
|
||||
IDS_SHV_COLUMN9 "Êîììåíòàðèé"
|
||||
|
@ -292,50 +159,51 @@ STRINGTABLE DISCARDABLE
|
|||
IDS_SELECT "&Âûáðàòü"
|
||||
IDS_OPEN "&Îòêðûòü"
|
||||
|
||||
IDS_CREATEFOLDER_DENIED "Íåâîçìîæíî ñîçäàòü ïàïêó - îòêàçàíî â äîñòóïå"
|
||||
IDS_CREATEFOLDER_DENIED "Íåâîçìîæíî ñîçäàòü ïàïêó - íåò ïîëíîìî÷èé."
|
||||
IDS_CREATEFOLDER_CAPTION "Îøèáêà âî âðåìÿ ñîçäàíèÿ ïàïêè"
|
||||
IDS_DELETEITEM_CAPTION "Ïîäòâåðæäåíèå óäàëåíèÿ ôàéëà"
|
||||
IDS_DELETEFOLDER_CAPTION "Ïîäòâåðæäåíèå óäàëåíèÿ ïàïêè"
|
||||
IDS_DELETEITEM_TEXT "Óäàëèòü '%1'?"
|
||||
IDS_DELETEMULTIPLE_TEXT "Óäàëèòü ýòè îáüåêòû %1?"
|
||||
IDS_OVERWRITEFILE_TEXT "Çàìåíèòü ôàéë(û) %1?"
|
||||
IDS_DELETEMULTIPLE_TEXT "Óäàëèòü ýòè îáüåêòû (%1?"
|
||||
IDS_OVERWRITEFILE_TEXT "This folder already contains a file called '%1'.\n\nDo you want to replace it?"
|
||||
IDS_OVERWRITEFILE_CAPTION "Ïîäòâåðæäåíèå çàìåíû ôàéëà"
|
||||
IDS_OVERWRITEFOLDER_TEXT "This folder already contains a folder named '%1'.\n\n"\
|
||||
"If the files in the destination folder have the same names as files in the\n"\
|
||||
"selected folder they will be replaced. Do you still want to move or copy\n"\
|
||||
"the folder?"
|
||||
|
||||
/* message box strings */
|
||||
IDS_RESTART_TITLE "Ïåðåçàãðóçèòü"
|
||||
IDS_RESTART_PROMPT "Âû äåéñòâèòåëüíî õîòèòå ïåðåçàãðóçèòü ReactOS?"
|
||||
IDS_RESTART_PROMPT "Âû õîòèòå ñèìóëèðîâàòü ïåðåçàïóñê Windows?"
|
||||
IDS_SHUTDOWN_TITLE "Âûêëþ÷èòü ïèòàíèå"
|
||||
IDS_SHUTDOWN_PROMPT "Âû äåéñòâèòåëüíî õîòèòå çàêîí÷èòü ðàáîòó ñ ReactOS?"
|
||||
IDS_SHUTDOWN_PROMPT "Çàêîí÷èòü ðàáîòó ñ Wine?"
|
||||
|
||||
/* shell folder path default values */
|
||||
IDS_PROGRAMS "Ãëàâíîå ìåíþ\\Ïðîãðàììû"
|
||||
IDS_PERSONAL "Ìîè äîêóìåíòû"
|
||||
IDS_FAVORITES "Èçáðàííîå"
|
||||
IDS_STARTUP "Ãëàâíîå ìåíþ\\Ïðîãðàììû\\Àâòîçàãðóçêà"
|
||||
IDS_RECENT "Recent"
|
||||
IDS_RECENT "Íåäàâíåå"
|
||||
IDS_SENDTO "Îòïðàâèòü"
|
||||
IDS_STARTMENU "Ãëàâíîå ìåíþ"
|
||||
IDS_MYMUSIC "Ìîè äîêóìåíòû\\Ìîÿ ìóçûêà"
|
||||
IDS_MYVIDEO "Ìîè äîêóìåíòû\\Ìîè ôèëüìû"
|
||||
IDS_MYMUSIC "Ìîÿ ìóçûêà"
|
||||
IDS_MYVIDEO "Ìîè ôèëüìû"
|
||||
IDS_DESKTOPDIRECTORY "Ðàáî÷èé ñòîë"
|
||||
IDS_NETHOOD "NetHood"
|
||||
IDS_NETHOOD "Ñåòåâîå îêðóæåíèå"
|
||||
IDS_TEMPLATES "Øàáëîíû"
|
||||
IDS_APPDATA "Application Data"
|
||||
IDS_PRINTHOOD "PrintHood"
|
||||
IDS_PRINTHOOD "Ïðèíòåðû"
|
||||
IDS_LOCAL_APPDATA "Local Settings\\Application Data"
|
||||
IDS_INTERNET_CACHE "Local Settings\\Temporary Internet Files"
|
||||
IDS_COOKIES "Cookies"
|
||||
IDS_HISTORY "Local Settings\\History"
|
||||
IDS_PROGRAM_FILES "Program Files"
|
||||
IDS_MYPICTURES "Ìîè äîêóìåíòû\\Ìîè ðèñóíêè"
|
||||
IDS_MYPICTURES "Ìîè ðèñóíêè"
|
||||
IDS_PROGRAM_FILES_COMMON "Program Files\\Common Files"
|
||||
IDS_COMMON_DOCUMENTS "Îáùèå äîêóìåíòû"
|
||||
IDS_ADMINTOOLS "Ãëàâíîå ìåíþ\\Ïðîãðàììû\\Àäìèíèñòðèðîâàíèå"
|
||||
IDS_ADMINTOOLS "Ãëàâíîå ìåíþ\\Ïðîãðàììû\\Administrative Tools"
|
||||
IDS_COMMON_MUSIC "Îáùèå äîêóìåíòû\\Ìîÿ ìóçûêà"
|
||||
IDS_COMMON_PICTURES "Îáùèå äîêóìåíòû\\Ìîè ðèñóíêè"
|
||||
IDS_COMMON_VIDEO "Îáùèå äîêóìåíòû\\Ìîè ôèëüìû"
|
||||
IDS_CDBURN_AREA "Local Settings\\Application Data\\Microsoft\\CD Burning"
|
||||
IDS_DRIVE_FIXED "Lokal Disk"
|
||||
IDS_DRIVE_CDROM "CDROM"
|
||||
IDS_DRIVE_NETWORK "Network Disk"
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT
|
||||
|
@ -28,7 +28,7 @@ FONT 10, "MS Shell Dlg"
|
|||
ICON "", 1088, 10, 10, 14, 16
|
||||
LTEXT "", 100, 30, 10, 137, 10
|
||||
LTEXT "", 101, 30, 22, 137, 10
|
||||
LTEXT "ReactOS so ustvarili:", 98, 8, 55, 137, 10
|
||||
LTEXT "Wine so ustvarili:", 98, 8, 55, 137, 10
|
||||
}
|
||||
|
||||
SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||
|
@ -37,7 +37,7 @@ CAPTION ""
|
|||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||
LTEXT "Vnesite ime programa, mape, dokumenta ali spletne strani, in ReactOS ga (jo) bo odprl.", 12289, 36, 11, 182, 18
|
||||
LTEXT "Vnesite ime programa, mape, dokumenta ali spletne strani, in Wine ga (jo) bo odprl.", 12289, 36, 11, 182, 18
|
||||
LTEXT "&Odpri:", 12305, 7, 39, 24, 10
|
||||
CONTROL "", 12298, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100
|
||||
DEFPUSHBUTTON "V redu", IDOK, 62, 63, 50, 14, WS_TABSTOP
|
||||
|
@ -45,137 +45,6 @@ FONT 8, "MS Shell Dlg"
|
|||
PUSHBUTTON "Pre&brskaj", 12288, 170, 63, 50, 14, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
SHELL_GENERAL_SHORTCUT_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Shortcut"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE
|
||||
LTEXT "Target type:", 14004, 10, 30, 50, 10
|
||||
LTEXT "", 14005, 70, 30, 150, 10
|
||||
LTEXT "Target location:", 14006, 10, 40, 70, 10
|
||||
LTEXT "", 14007, 70, 40, 150, 10
|
||||
LTEXT "Target:", 14008, 10, 55, 45, 10
|
||||
EDITTEXT 14009, 70, 55, 150, 10, ES_LEFT
|
||||
LTEXT "&Start in:",14010, 10, 65, 45, 10
|
||||
EDITTEXT 14011, 70, 65, 150, 10, ES_LEFT
|
||||
LTEXT "Shortcut &key:", 14014, 10, 80, 45, 10
|
||||
EDITTEXT 14015, 70, 80, 150, 10, ES_LEFT
|
||||
LTEXT "Run:", 14016, 10, 90, 45, 10
|
||||
EDITTEXT 14017, 70, 90, 150, 10
|
||||
LTEXT "C&omment:", 14018, 10, 100, 45, 10
|
||||
EDITTEXT 14019, 70, 100, 150, 10, ES_LEFT
|
||||
PUSHBUTTON "&Find Target...", 14020, 10, 115, 60, 14, ES_LEFT
|
||||
PUSHBUTTON "&Change Icon...", 14021, 80, 115, 60, 14, ES_LEFT
|
||||
PUSHBUTTON "A&dvanced...", 14022, 150, 115, 60, 14, ES_LEFT
|
||||
}
|
||||
|
||||
SHELL_FILE_GENERAL_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "General"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE
|
||||
EDITTEXT 14001, 70, 5, 100, 10, ES_LEFT | ES_READONLY
|
||||
LTEXT "Type of file:", 14004, 10, 30, 50, 10
|
||||
LTEXT "%s File", 14005, 70, 30, 150, 10
|
||||
LTEXT "Opens with:", 14006, 10, 40, 50, 10
|
||||
LTEXT "", 14007, 70, 40, 150, 10
|
||||
LTEXT "Location:", 14008, 10, 55, 45, 10
|
||||
LTEXT "", 14009, 70, 55, 200, 10
|
||||
LTEXT "Size:",14010, 10, 65, 45, 10
|
||||
LTEXT "", 14011, 70, 65, 150, 10
|
||||
LTEXT "Created:", 14014, 10, 80, 45, 10
|
||||
LTEXT "", 14015, 70, 80, 150, 10
|
||||
LTEXT "Modied:", 14016, 10, 90, 45, 10
|
||||
LTEXT "", 14017, 70, 90, 150, 10
|
||||
LTEXT "Accessed:", 14018, 10, 100, 45, 10
|
||||
LTEXT "", 14019, 70, 100, 150, 10
|
||||
LTEXT "Attributes:", 14020, 10, 115, 45, 10
|
||||
CHECKBOX "&Read-only", 14021, 70, 115, 45, 10
|
||||
CHECKBOX "&Hidden", 14022, 130, 115, 50, 10
|
||||
CHECKBOX "&Archive", 14023, 180, 115, 45, 10
|
||||
}
|
||||
|
||||
SHELL_FILE_VERSION_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Version"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
LTEXT "File version: ", 14000, 10, 10, 45, 10
|
||||
LTEXT "", 14001, 70, 10, 150, 10
|
||||
LTEXT "Description: ", 14002, 10, 20, 45, 10
|
||||
LTEXT "", 14003, 70, 20, 150, 10
|
||||
LTEXT "Copyright: ", 14004, 10, 30, 45, 10
|
||||
LTEXT "", 14005, 70, 30, 150, 10
|
||||
GROUPBOX "Other version information: ", 14006, 10, 45, 220, 90
|
||||
LTEXT "Item name: ", 14007, 20, 55, 50, 10
|
||||
LTEXT "Value: ", 14008, 130, 55, 45, 10
|
||||
LISTBOX 14009,20,65,95,60, LBS_STANDARD | WS_TABSTOP | LBS_NOTIFY
|
||||
EDITTEXT 14010, 130, 65, 95, 60, ES_LEFT|WS_BORDER|WS_VSCROLL|WS_GROUP|ES_MULTILINE|ES_READONLY
|
||||
|
||||
}
|
||||
|
||||
DRIVE_GENERAL_DLG DIALOGEX 0, 0, 240, 230
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "General"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
EDITTEXT 14001, 40, 20, 190, 10, ES_LEFT|WS_BORDER|WS_GROUP
|
||||
LTEXT "Type:", -1, 15, 55, 40, 10
|
||||
LTEXT "", 14002, 110, 55, 100, 10
|
||||
|
||||
|
||||
LTEXT "File system:", -1, 15, 70, 100, 10
|
||||
LTEXT "", 14003, 110, 70, 100, 10
|
||||
|
||||
CONTROL "", 14013, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 90, 10, 10
|
||||
LTEXT "Used space:", -1, 25, 90, 120, 10
|
||||
LTEXT "", 14004, 110, 90, 120, 10
|
||||
LTEXT "", 14005, 200, 90, 40, 10
|
||||
|
||||
CONTROL "", 14014, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 105, 10, 10
|
||||
LTEXT "Free space:", -1, 25, 105, 70, 10
|
||||
LTEXT "", 14006, 110, 105, 120, 10
|
||||
LTEXT "", 14007, 200, 105, 40, 10
|
||||
|
||||
LTEXT "Capacity:", -1, 25, 125, 80, 10
|
||||
LTEXT "", 14008, 110, 125, 120, 10
|
||||
LTEXT "", 14009, 200, 125, 40, 10
|
||||
|
||||
CONTROL "", 14015, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 20, 140, 200, 20
|
||||
|
||||
LTEXT "Drive %s", 14010, 100, 170, 40, 10
|
||||
PUSHBUTTON "Disk Cleanup", 14011, 180, 175, 50, 15, WS_TABSTOP
|
||||
CHECKBOX "Compress drive to save disk space", 14012, 15, 205, 165, 10, WS_DISABLED
|
||||
CHECKBOX "Allow Indexing Service to index this disk for fast file searching", 14012, 15, 220, 200, 10, WS_DISABLED
|
||||
}
|
||||
|
||||
DRIVE_EXTRA_DLG DIALOGEX 0, 0, 240, 230
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Tools"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
GROUPBOX "Error-checking", -1, 5, 5, 230, 60
|
||||
LTEXT "This option will check the volume for\nerrors.", -1, 40, 25, 160, 20
|
||||
PUSHBUTTON "Check Now...", 14000, 130, 45, 90, 15, WS_TABSTOP
|
||||
GROUPBOX "Defragmentation", -1, 5, 65, 230, 60
|
||||
LTEXT "This option will defragment files on the volume", -1, 40, 85, 160, 20
|
||||
PUSHBUTTON "Defragment Now...", 14001, 130, 105, 90, 15, WS_TABSTOP
|
||||
GROUPBOX "Backup", -1, 5, 130, 230, 60
|
||||
LTEXT "This option will back up files on the volume.", -1, 40, 150, 160, 20
|
||||
PUSHBUTTON "Backup Now...", 14002, 130, 170, 90, 15, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
DRIVE_HARDWARE_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Version"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
}
|
||||
|
||||
/* columns in the shellview */
|
||||
STRINGTABLE LANGUAGE LANG_SLOVENIAN, SUBLANG_NEUTRAL
|
||||
BEGIN
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT
|
||||
|
@ -37,7 +37,7 @@ CAPTION ""
|
|||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||
LTEXT "Type the name of a program, folder, document, or Internet resource, and ReactOS will open it for you.", 12289, 36, 11, 182, 18
|
||||
LTEXT "Type the name of a program, folder, document, or Internet resource, and Wine will open it for you.", 12289, 36, 11, 182, 18
|
||||
LTEXT "&Open:", 12305, 7, 39, 24, 10
|
||||
CONTROL "", 12298, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100
|
||||
DEFPUSHBUTTON "OK", IDOK, 62, 63, 50, 14, WS_TABSTOP
|
||||
|
@ -45,138 +45,6 @@ FONT 8, "MS Shell Dlg"
|
|||
PUSHBUTTON "&Browse...", 12288, 170, 63, 50, 14, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
SHELL_GENERAL_SHORTCUT_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Shortcut"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE
|
||||
LTEXT "Target type:", 14004, 10, 30, 50, 10
|
||||
LTEXT "", 14005, 70, 30, 150, 10
|
||||
LTEXT "Target location:", 14006, 10, 40, 70, 10
|
||||
LTEXT "", 14007, 70, 40, 150, 10
|
||||
LTEXT "Target:", 14008, 10, 55, 45, 10
|
||||
EDITTEXT 14009, 70, 55, 150, 10, ES_LEFT
|
||||
LTEXT "&Start in:",14010, 10, 65, 45, 10
|
||||
EDITTEXT 14011, 70, 65, 150, 10, ES_LEFT
|
||||
LTEXT "Shortcut &key:", 14014, 10, 80, 45, 10
|
||||
EDITTEXT 14015, 70, 80, 150, 10, ES_LEFT
|
||||
LTEXT "Run:", 14016, 10, 90, 45, 10
|
||||
EDITTEXT 14017, 70, 90, 150, 10
|
||||
LTEXT "C&omment:", 14018, 10, 100, 45, 10
|
||||
EDITTEXT 14019, 70, 100, 150, 10, ES_LEFT
|
||||
PUSHBUTTON "&Find Target...", 14020, 10, 115, 60, 14, ES_LEFT
|
||||
PUSHBUTTON "&Change Icon...", 14021, 80, 115, 60, 14, ES_LEFT
|
||||
PUSHBUTTON "A&dvanced...", 14022, 150, 115, 60, 14, ES_LEFT
|
||||
}
|
||||
|
||||
SHELL_FILE_GENERAL_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "General"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE
|
||||
EDITTEXT 14001, 70, 5, 100, 10, ES_LEFT | ES_READONLY
|
||||
LTEXT "Type of file:", 14004, 10, 30, 50, 10
|
||||
LTEXT "%s File", 14005, 70, 30, 150, 10
|
||||
LTEXT "Opens with:", 14006, 10, 40, 50, 10
|
||||
LTEXT "", 14007, 70, 40, 150, 10
|
||||
LTEXT "Location:", 14008, 10, 55, 45, 10
|
||||
LTEXT "", 14009, 70, 55, 200, 10
|
||||
LTEXT "Size:",14010, 10, 65, 45, 10
|
||||
LTEXT "", 14011, 70, 65, 150, 10
|
||||
LTEXT "Created:", 14014, 10, 80, 45, 10
|
||||
LTEXT "", 14015, 70, 80, 150, 10
|
||||
LTEXT "Modied:", 14016, 10, 90, 45, 10
|
||||
LTEXT "", 14017, 70, 90, 150, 10
|
||||
LTEXT "Accessed:", 14018, 10, 100, 45, 10
|
||||
LTEXT "", 14019, 70, 100, 150, 10
|
||||
LTEXT "Attributes:", 14020, 10, 115, 45, 10
|
||||
CHECKBOX "&Read-only", 14021, 70, 115, 45, 10
|
||||
CHECKBOX "&Hidden", 14022, 130, 115, 50, 10
|
||||
CHECKBOX "&Archive", 14023, 180, 115, 45, 10
|
||||
}
|
||||
|
||||
SHELL_FILE_VERSION_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Version"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
LTEXT "File version: ", 14000, 10, 10, 45, 10
|
||||
LTEXT "", 14001, 70, 10, 150, 10
|
||||
LTEXT "Description: ", 14002, 10, 20, 45, 10
|
||||
LTEXT "", 14003, 70, 20, 150, 10
|
||||
LTEXT "Copyright: ", 14004, 10, 30, 45, 10
|
||||
LTEXT "", 14005, 70, 30, 150, 10
|
||||
GROUPBOX "Other version information: ", 14006, 10, 45, 220, 90
|
||||
LTEXT "Item name: ", 14007, 20, 55, 50, 10
|
||||
LTEXT "Value: ", 14008, 130, 55, 45, 10
|
||||
LISTBOX 14009,20,65,95,60, LBS_STANDARD | WS_TABSTOP | LBS_NOTIFY
|
||||
EDITTEXT 14010, 130, 65, 95, 60, ES_LEFT|WS_BORDER|WS_VSCROLL|WS_GROUP|ES_MULTILINE|ES_READONLY
|
||||
|
||||
}
|
||||
|
||||
DRIVE_GENERAL_DLG DIALOGEX 0, 0, 240, 230
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "General"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
EDITTEXT 14001, 40, 20, 190, 10, ES_LEFT|WS_BORDER|WS_GROUP
|
||||
LTEXT "Type:", -1, 15, 55, 40, 10
|
||||
LTEXT "", 14002, 110, 55, 100, 10
|
||||
|
||||
|
||||
LTEXT "File system:", -1, 15, 70, 100, 10
|
||||
LTEXT "", 14003, 110, 70, 100, 10
|
||||
|
||||
CONTROL "", 14013, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 90, 10, 10
|
||||
LTEXT "Used space:", -1, 25, 90, 120, 10
|
||||
LTEXT "", 14004, 110, 90, 120, 10
|
||||
LTEXT "", 14005, 200, 90, 40, 10
|
||||
|
||||
CONTROL "", 14014, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 105, 10, 10
|
||||
LTEXT "Free space:", -1, 25, 105, 70, 10
|
||||
LTEXT "", 14006, 110, 105, 120, 10
|
||||
LTEXT "", 14007, 200, 105, 40, 10
|
||||
|
||||
LTEXT "Capacity:", -1, 25, 125, 80, 10
|
||||
LTEXT "", 14008, 110, 125, 120, 10
|
||||
LTEXT "", 14009, 200, 125, 40, 10
|
||||
|
||||
CONTROL "", 14015, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 20, 140, 200, 20
|
||||
|
||||
LTEXT "Drive %s", 14010, 100, 170, 40, 10
|
||||
PUSHBUTTON "Disk Cleanup", 14011, 180, 175, 50, 15, WS_TABSTOP
|
||||
CHECKBOX "Compress drive to save disk space", 14012, 15, 205, 165, 10, WS_DISABLED
|
||||
CHECKBOX "Allow Indexing Service to index this disk for fast file searching", 14012, 15, 220, 200, 10, WS_DISABLED
|
||||
}
|
||||
|
||||
DRIVE_EXTRA_DLG DIALOGEX 0, 0, 240, 230
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Tools"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
GROUPBOX "Error-checking", -1, 5, 5, 230, 60
|
||||
LTEXT "This option will check the volume for\nerrors.", -1, 40, 25, 160, 20
|
||||
PUSHBUTTON "Check Now...", 14000, 130, 45, 90, 15, WS_TABSTOP
|
||||
GROUPBOX "Defragmentation", -1, 5, 65, 230, 60
|
||||
LTEXT "This option will defragment files on the volume", -1, 40, 85, 160, 20
|
||||
PUSHBUTTON "Defragment Now...", 14001, 130, 105, 90, 15, WS_TABSTOP
|
||||
GROUPBOX "Backup", -1, 5, 130, 230, 60
|
||||
LTEXT "This option will back up files on the volume.", -1, 40, 150, 160, 20
|
||||
PUSHBUTTON "Backup Now...", 14002, 130, 170, 90, 15, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
|
||||
DRIVE_HARDWARE_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Version"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
}
|
||||
|
||||
/* columns in the shellview */
|
||||
STRINGTABLE LANGUAGE LANG_SLOVAK, SUBLANG_NEUTRAL
|
||||
BEGIN
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2005 David Nordenberg
|
||||
* Copyright 1998 Juergen Schmied
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -13,96 +13,10 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
|
||||
|
||||
MENU_001 MENU DISCARDABLE
|
||||
BEGIN
|
||||
MENUITEM "&Stora ikoner", FCIDM_SHVIEW_BIGICON
|
||||
MENUITEM "S&må ikoner", FCIDM_SHVIEW_SMALLICON
|
||||
MENUITEM "&Lista", FCIDM_SHVIEW_LISTVIEW
|
||||
MENUITEM "&Detaljer", FCIDM_SHVIEW_REPORTVIEW
|
||||
END
|
||||
|
||||
/*
|
||||
shellview background menu
|
||||
*/
|
||||
MENU_002 MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
POPUP "&Visa"
|
||||
BEGIN
|
||||
MENUITEM "&Stora ikoner", FCIDM_SHVIEW_BIGICON
|
||||
MENUITEM "S&må ikoner", FCIDM_SHVIEW_SMALLICON
|
||||
MENUITEM "&Lista", FCIDM_SHVIEW_LISTVIEW
|
||||
MENUITEM "&Detaljer", FCIDM_SHVIEW_REPORTVIEW
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "Ordna &ikoner efter"
|
||||
BEGIN
|
||||
MENUITEM "&Namn", 0x30 /* column 0 */
|
||||
MENUITEM "&Typ", 0x32 /* column 2 */
|
||||
MENUITEM "&Storlek", 0x31 /* ... */
|
||||
MENUITEM "&Datum", 0x33
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Ordna automatiskt", FCIDM_SHVIEW_AUTOARRANGE
|
||||
END
|
||||
MENUITEM "Rada upp ikoner", FCIDM_SHVIEW_SNAPTOGRID
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Uppdatera", FCIDM_SHVIEW_REFRESH
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "K&listra in", FCIDM_SHVIEW_INSERT
|
||||
MENUITEM "Klistra in som genväg", FCIDM_SHVIEW_INSERTLINK
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "&Ny"
|
||||
BEGIN
|
||||
MENUITEM "Ny &mapp", FCIDM_SHVIEW_NEWFOLDER
|
||||
MENUITEM "Ny &genväg", FCIDM_SHVIEW_NEWLINK
|
||||
MENUITEM SEPARATOR
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Egenskaper", FCIDM_SHVIEW_PROPERTIES
|
||||
END
|
||||
END
|
||||
|
||||
/*
|
||||
shellview item menu
|
||||
*/
|
||||
MENU_SHV_FILE MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Utforska", FCIDM_SHVIEW_EXPLORE
|
||||
MENUITEM "&Öppna", FCIDM_SHVIEW_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Klipp ut", FCIDM_SHVIEW_CUT
|
||||
MENUITEM "K&opiera", FCIDM_SHVIEW_COPY
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Skapa &genväg", FCIDM_SHVIEW_CREATELINK
|
||||
MENUITEM "&Ta bort", FCIDM_SHVIEW_DELETE
|
||||
MENUITEM "&Byt namn", FCIDM_SHVIEW_RENAME
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Egenskaper", FCIDM_SHVIEW_PROPERTIES
|
||||
END
|
||||
END
|
||||
|
||||
SHBRSFORFOLDER_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 188, 192
|
||||
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
|
||||
CAPTION "Bläddra efter mapp"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
DEFPUSHBUTTON "OK", 1, 80, 176, 50, 12, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON "Avbryt", 2, 134, 176, 50, 12, WS_GROUP | WS_TABSTOP
|
||||
LTEXT "", IDD_TITLE, 4, 4, 180, 12
|
||||
LTEXT "", IDD_STATUS, 4, 25, 180, 12
|
||||
CONTROL "", IDD_TREEVIEW, "SysTreeView32",
|
||||
TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT |
|
||||
WS_BORDER | WS_TABSTOP,
|
||||
4, 40, 180, 120
|
||||
}
|
||||
LANGUAGE LANG_SWEDISH, SUBLANG_DEFAULT
|
||||
|
||||
SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 210, 152
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
|
@ -114,7 +28,7 @@ FONT 10, "MS Shell Dlg"
|
|||
ICON "", 1088, 10, 10, 14, 16
|
||||
LTEXT "", 100, 30, 10, 137, 10
|
||||
LTEXT "", 101, 30, 22, 137, 10
|
||||
LTEXT "ReactOS hade inte varit möjligt utan dessa personer:", 98, 8, 55, 137, 10
|
||||
LTEXT "Wine hade inte varit möjligt utan dessa personer:", 98, 8, 55, 137, 10
|
||||
}
|
||||
|
||||
SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||
|
@ -123,233 +37,10 @@ CAPTION ""
|
|||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||
LTEXT "Skriv namnet på ett program, en mapp eller ett dokument för att öppna det.", 12289, 36, 11, 182, 18
|
||||
LTEXT "Skriv namnet på ett program, en mapp eller ett dokument och wine kommer att öppna det för dig.", 12289, 36, 11, 182, 18
|
||||
LTEXT "&Öppna:", 12305, 7, 39, 24, 10
|
||||
CONTROL "", 12298, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100
|
||||
DEFPUSHBUTTON "OK", IDOK, 62, 63, 50, 14, WS_TABSTOP
|
||||
PUSHBUTTON "Avbryt", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP
|
||||
PUSHBUTTON "&Bläddra...", 12288, 170, 63, 50, 14, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
SHELL_GENERAL_SHORTCUT_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Shortcut"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE
|
||||
LTEXT "Target type:", 14004, 10, 30, 50, 10
|
||||
LTEXT "", 14005, 70, 30, 150, 10
|
||||
LTEXT "Target location:", 14006, 10, 40, 70, 10
|
||||
LTEXT "", 14007, 70, 40, 150, 10
|
||||
LTEXT "Target:", 14008, 10, 55, 45, 10
|
||||
EDITTEXT 14009, 70, 55, 150, 10, ES_LEFT
|
||||
LTEXT "&Start in:",14010, 10, 65, 45, 10
|
||||
EDITTEXT 14011, 70, 65, 150, 10, ES_LEFT
|
||||
LTEXT "Shortcut &key:", 14014, 10, 80, 45, 10
|
||||
EDITTEXT 14015, 70, 80, 150, 10, ES_LEFT
|
||||
LTEXT "Run:", 14016, 10, 90, 45, 10
|
||||
EDITTEXT 14017, 70, 90, 150, 10
|
||||
LTEXT "C&omment:", 14018, 10, 100, 45, 10
|
||||
EDITTEXT 14019, 70, 100, 150, 10, ES_LEFT
|
||||
PUSHBUTTON "&Find Target...", 14020, 10, 115, 60, 14, ES_LEFT
|
||||
PUSHBUTTON "&Change Icon...", 14021, 80, 115, 60, 14, ES_LEFT
|
||||
PUSHBUTTON "A&dvanced...", 14022, 150, 115, 60, 14, ES_LEFT
|
||||
}
|
||||
|
||||
SHELL_FILE_GENERAL_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "General"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE
|
||||
EDITTEXT 14001, 70, 5, 100, 10, ES_LEFT | ES_READONLY
|
||||
LTEXT "Type of file:", 14004, 10, 30, 50, 10
|
||||
LTEXT "%s File", 14005, 70, 30, 150, 10
|
||||
LTEXT "Opens with:", 14006, 10, 40, 50, 10
|
||||
LTEXT "", 14007, 70, 40, 150, 10
|
||||
LTEXT "Location:", 14008, 10, 55, 45, 10
|
||||
LTEXT "", 14009, 70, 55, 200, 10
|
||||
LTEXT "Size:",14010, 10, 65, 45, 10
|
||||
LTEXT "", 14011, 70, 65, 150, 10
|
||||
LTEXT "Created:", 14014, 10, 80, 45, 10
|
||||
LTEXT "", 14015, 70, 80, 150, 10
|
||||
LTEXT "Modied:", 14016, 10, 90, 45, 10
|
||||
LTEXT "", 14017, 70, 90, 150, 10
|
||||
LTEXT "Accessed:", 14018, 10, 100, 45, 10
|
||||
LTEXT "", 14019, 70, 100, 150, 10
|
||||
LTEXT "Attributes:", 14020, 10, 115, 45, 10
|
||||
CHECKBOX "&Read-only", 14021, 70, 115, 45, 10
|
||||
CHECKBOX "&Hidden", 14022, 130, 115, 50, 10
|
||||
CHECKBOX "&Archive", 14023, 180, 115, 45, 10
|
||||
}
|
||||
|
||||
SHELL_FILE_VERSION_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Version"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
LTEXT "File version: ", 14000, 10, 10, 45, 10
|
||||
LTEXT "", 14001, 70, 10, 150, 10
|
||||
LTEXT "Description: ", 14002, 10, 20, 45, 10
|
||||
LTEXT "", 14003, 70, 20, 150, 10
|
||||
LTEXT "Copyright: ", 14004, 10, 30, 45, 10
|
||||
LTEXT "", 14005, 70, 30, 150, 10
|
||||
GROUPBOX "Other version information: ", 14006, 10, 45, 220, 90
|
||||
LTEXT "Item name: ", 14007, 20, 55, 50, 10
|
||||
LTEXT "Value: ", 14008, 130, 55, 45, 10
|
||||
LISTBOX 14009,20,65,95,60, LBS_STANDARD | WS_TABSTOP | LBS_NOTIFY
|
||||
EDITTEXT 14010, 130, 65, 95, 60, ES_LEFT|WS_BORDER|WS_VSCROLL|WS_GROUP|ES_MULTILINE|ES_READONLY
|
||||
|
||||
}
|
||||
|
||||
DRIVE_GENERAL_DLG DIALOGEX 0, 0, 240, 230
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "General"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
EDITTEXT 14001, 40, 20, 190, 10, ES_LEFT|WS_BORDER|WS_GROUP
|
||||
LTEXT "Type:", -1, 15, 55, 40, 10
|
||||
LTEXT "", 14002, 110, 55, 100, 10
|
||||
|
||||
|
||||
LTEXT "File system:", -1, 15, 70, 100, 10
|
||||
LTEXT "", 14003, 110, 70, 100, 10
|
||||
|
||||
CONTROL "", 14013, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 90, 10, 10
|
||||
LTEXT "Used space:", -1, 25, 90, 120, 10
|
||||
LTEXT "", 14004, 110, 90, 120, 10
|
||||
LTEXT "", 14005, 200, 90, 40, 10
|
||||
|
||||
CONTROL "", 14014, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 105, 10, 10
|
||||
LTEXT "Free space:", -1, 25, 105, 70, 10
|
||||
LTEXT "", 14006, 110, 105, 120, 10
|
||||
LTEXT "", 14007, 200, 105, 40, 10
|
||||
|
||||
LTEXT "Capacity:", -1, 25, 125, 80, 10
|
||||
LTEXT "", 14008, 110, 125, 120, 10
|
||||
LTEXT "", 14009, 200, 125, 40, 10
|
||||
|
||||
CONTROL "", 14015, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 20, 140, 200, 20
|
||||
|
||||
LTEXT "Drive %s", 14010, 100, 170, 40, 10
|
||||
PUSHBUTTON "Disk Cleanup", 14011, 180, 175, 50, 15, WS_TABSTOP
|
||||
CHECKBOX "Compress drive to save disk space", 14012, 15, 205, 165, 10, WS_DISABLED
|
||||
CHECKBOX "Allow Indexing Service to index this disk for fast file searching", 14012, 15, 220, 200, 10, WS_DISABLED
|
||||
}
|
||||
|
||||
DRIVE_EXTRA_DLG DIALOGEX 0, 0, 240, 230
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Tools"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
GROUPBOX "Error-checking", -1, 5, 5, 230, 60
|
||||
LTEXT "This option will check the volume for\nerrors.", -1, 40, 25, 160, 20
|
||||
PUSHBUTTON "Check Now...", 14000, 130, 45, 90, 15, WS_TABSTOP
|
||||
GROUPBOX "Defragmentation", -1, 5, 65, 230, 60
|
||||
LTEXT "This option will defragment files on the volume", -1, 40, 85, 160, 20
|
||||
PUSHBUTTON "Defragment Now...", 14001, 130, 105, 90, 15, WS_TABSTOP
|
||||
GROUPBOX "Backup", -1, 5, 130, 230, 60
|
||||
LTEXT "This option will back up files on the volume.", -1, 40, 150, 160, 20
|
||||
PUSHBUTTON "Backup Now...", 14002, 130, 170, 90, 15, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
DRIVE_HARDWARE_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Version"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
special folders
|
||||
*/
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
IDS_DESKTOP "Skrivbord"
|
||||
IDS_MYCOMPUTER "Den här datorn"
|
||||
}
|
||||
|
||||
/*
|
||||
context menus
|
||||
*/
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
IDS_VIEW_LARGE "&Stora ikoner"
|
||||
IDS_VIEW_SMALL "S&må ikoner"
|
||||
IDS_VIEW_LIST "&Lista"
|
||||
IDS_VIEW_DETAILS "&Detaljer"
|
||||
IDS_SELECT "Välj"
|
||||
IDS_OPEN "Öppna"
|
||||
}
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
IDS_CREATEFOLDER_DENIED "Kan inte skapa ny mapp: Åtkomst nekad."
|
||||
IDS_CREATEFOLDER_CAPTION "Fel vid försök att skapa ny mapp"
|
||||
IDS_DELETEITEM_CAPTION "Bekräfta borttagning av fil"
|
||||
IDS_DELETEFOLDER_CAPTION "Bekräfta borttagning av mapp"
|
||||
IDS_DELETEITEM_TEXT "Är du säker på att du vill ta bort '%1'?"
|
||||
IDS_DELETEMULTIPLE_TEXT "Är du säker på att du vill ta bort de här %1 objekten?"
|
||||
IDS_OVERWRITEFILE_TEXT "Skriv över fil %1?"
|
||||
IDS_OVERWRITEFILE_CAPTION "Bekräfta filöverskrivning"
|
||||
}
|
||||
|
||||
/* columns in the shellview */
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_SHV_COLUMN1 "Fil"
|
||||
IDS_SHV_COLUMN2 "Storlek"
|
||||
IDS_SHV_COLUMN3 "Typ"
|
||||
IDS_SHV_COLUMN4 "Modifierad"
|
||||
IDS_SHV_COLUMN5 "Attribut"
|
||||
IDS_SHV_COLUMN6 "Storlek"
|
||||
IDS_SHV_COLUMN7 "Storlek tillgänglig"
|
||||
IDS_SHV_COLUMN8 "Namn"
|
||||
IDS_SHV_COLUMN9 "Kommentarer"
|
||||
END
|
||||
|
||||
/* message box strings */
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
IDS_RESTART_TITLE "Starta om"
|
||||
IDS_RESTART_PROMPT "Vill du starta om datorn?"
|
||||
IDS_SHUTDOWN_TITLE "Stäng av"
|
||||
IDS_SHUTDOWN_PROMPT "Vill du stänga av datorn?"
|
||||
}
|
||||
|
||||
/* shell folder path default values */
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
IDS_PROGRAMS "Start-meny\\Program"
|
||||
IDS_PERSONAL "Mina dokument"
|
||||
IDS_FAVORITES "Favoriter"
|
||||
IDS_STARTUP "Start-meny\\Program\\Autostart"
|
||||
IDS_RECENT "Tidigare"
|
||||
IDS_SENDTO "Skicka till"
|
||||
IDS_STARTMENU "Start-meny"
|
||||
IDS_MYMUSIC "Mina dokument\\Min musik"
|
||||
IDS_MYVIDEO "Mina dokument\\Mina videoklipp"
|
||||
IDS_DESKTOPDIRECTORY "Skrivbord"
|
||||
IDS_NETHOOD "Nätverk"
|
||||
IDS_TEMPLATES "Mallar"
|
||||
IDS_APPDATA "Application Data"
|
||||
IDS_PRINTHOOD "Skrivare"
|
||||
IDS_LOCAL_APPDATA "Lokala inställningar\\Application Data"
|
||||
IDS_INTERNET_CACHE "Temporary Internet Files"
|
||||
IDS_COOKIES "Cookies"
|
||||
IDS_HISTORY "Tidigare"
|
||||
IDS_PROGRAM_FILES "Program"
|
||||
IDS_MYPICTURES "Mina dokument\\Mina bilder"
|
||||
IDS_PROGRAM_FILES_COMMON "Program\\Delade filer"
|
||||
IDS_COMMON_DOCUMENTS "Delade dokument"
|
||||
IDS_ADMINTOOLS "Start-meny\\Program\\Administrativa verktyg"
|
||||
IDS_COMMON_MUSIC "Delade dokument\\Min musik"
|
||||
IDS_COMMON_PICTURES "Delade dokument\\Mina bilder"
|
||||
IDS_COMMON_VIDEO "Delade dokument\\Mina videoklipp"
|
||||
IDS_CDBURN_AREA "Lokala inställningar\\Application Data\\Microsoft\\CD Burning"
|
||||
IDS_DRIVE_FIXED "Local Disk"
|
||||
IDS_DRIVE_CDROM "CDROM"
|
||||
IDS_DRIVE_NETWORK "Network Disk"
|
||||
}
|
||||
|
|
216
reactos/dll/win32/shell32/shell32_Tr.rc
Normal file
216
reactos/dll/win32/shell32/shell32_Tr.rc
Normal file
|
@ -0,0 +1,216 @@
|
|||
/*
|
||||
* Copyright 2006 Fatih Aþýcý
|
||||
*
|
||||
* 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
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
|
||||
|
||||
MENU_001 MENU DISCARDABLE
|
||||
BEGIN
|
||||
MENUITEM "Bü&yük Simgeler", FCIDM_SHVIEW_BIGICON
|
||||
MENUITEM "Kü&çük Simgeler", FCIDM_SHVIEW_SMALLICON
|
||||
MENUITEM "&Liste", FCIDM_SHVIEW_LISTVIEW
|
||||
MENUITEM "&Ayrýntýlý", FCIDM_SHVIEW_REPORTVIEW
|
||||
END
|
||||
|
||||
/*
|
||||
shellview background menu
|
||||
*/
|
||||
MENU_002 MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
POPUP "&Görünüm"
|
||||
BEGIN
|
||||
MENUITEM "Bü&yük Simgeler", FCIDM_SHVIEW_BIGICON
|
||||
MENUITEM "Kü&çük Simgeler", FCIDM_SHVIEW_SMALLICON
|
||||
MENUITEM "&Liste", FCIDM_SHVIEW_LISTVIEW
|
||||
MENUITEM "&Ayrýntýlý", FCIDM_SHVIEW_REPORTVIEW
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "&Simgeleri Düzenle"
|
||||
BEGIN
|
||||
MENUITEM "&Ada Göre", 0x30 /* column 0 */
|
||||
MENUITEM "&Türe Göre", 0x32 /* column 2 */
|
||||
MENUITEM "&Boyuta Göre", 0x31 /* ... */
|
||||
MENUITEM "&Zamana Göre", 0x33
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Otomatik Düzenle", FCIDM_SHVIEW_AUTOARRANGE
|
||||
END
|
||||
MENUITEM "Izgaraya Uydur", FCIDM_SHVIEW_SNAPTOGRID
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Yenile", FCIDM_SHVIEW_REFRESH
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Yapýþtýr", FCIDM_SHVIEW_INSERT
|
||||
MENUITEM "Kýsayol Yapýþtýr", FCIDM_SHVIEW_INSERTLINK
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "Yeni"
|
||||
BEGIN
|
||||
MENUITEM "Yeni &Dizin", FCIDM_SHVIEW_NEWFOLDER
|
||||
MENUITEM "Yeni &Kýsayol", FCIDM_SHVIEW_NEWLINK
|
||||
MENUITEM SEPARATOR
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Özellikler", FCIDM_SHVIEW_PROPERTIES
|
||||
END
|
||||
END
|
||||
|
||||
/*
|
||||
shellview item menu
|
||||
*/
|
||||
MENU_SHV_FILE MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "A&raþtýr", FCIDM_SHVIEW_EXPLORE
|
||||
MENUITEM "&Aç", FCIDM_SHVIEW_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Kes", FCIDM_SHVIEW_CUT
|
||||
MENUITEM "K&opyala", FCIDM_SHVIEW_COPY
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Kýsayol O&luþtur", FCIDM_SHVIEW_CREATELINK
|
||||
MENUITEM "&Sil", FCIDM_SHVIEW_DELETE
|
||||
MENUITEM "&Yeniden Adlandýr", FCIDM_SHVIEW_RENAME
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Özellikler", FCIDM_SHVIEW_PROPERTIES
|
||||
END
|
||||
END
|
||||
|
||||
SHBRSFORFOLDER_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 188, 192
|
||||
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
|
||||
CAPTION "Dizine Gözat"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
DEFPUSHBUTTON "Tamam", 1, 80, 176, 50, 12, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON "Ýptal", 2, 134, 176, 50, 12, WS_GROUP | WS_TABSTOP
|
||||
LTEXT "", IDD_TITLE, 4, 4, 180, 12
|
||||
LTEXT "", IDD_STATUS, 4, 25, 180, 12
|
||||
CONTROL "", IDD_TREEVIEW, "SysTreeView32",
|
||||
TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT |
|
||||
WS_BORDER | WS_TABSTOP,
|
||||
4, 40, 180, 120
|
||||
}
|
||||
|
||||
SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 210, 152
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "%s Hakkýnda"
|
||||
FONT 10, "MS Shell Dlg"
|
||||
{
|
||||
DEFPUSHBUTTON "Tamam", IDOK, 153, 133, 50, 12, WS_TABSTOP
|
||||
LISTBOX 99, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER
|
||||
ICON "", 1088, 10, 10, 14, 16
|
||||
LTEXT "", 100, 30, 10, 137, 10
|
||||
LTEXT "", 101, 30, 22, 137, 10
|
||||
LTEXT "Wine'ý size sunan geliþtiriciler:", 98, 8, 55, 137, 10
|
||||
}
|
||||
|
||||
SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION ""
|
||||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||
LTEXT "Herhangi bir program, dizin, belge veya Internet kaynaðý seçin ve Wine sizin için açsýn.", 12289, 36, 11, 182, 18
|
||||
LTEXT "&Aç:", 12305, 7, 39, 24, 10
|
||||
CONTROL "", 12298, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100
|
||||
DEFPUSHBUTTON "Tamam", IDOK, 62, 63, 50, 14, WS_TABSTOP
|
||||
PUSHBUTTON "Ýptal", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP
|
||||
PUSHBUTTON "&Gözat...", 12288, 170, 63, 50, 14, WS_TABSTOP
|
||||
}
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
/* columns in the shellview */
|
||||
IDS_SHV_COLUMN1 "Dosya"
|
||||
IDS_SHV_COLUMN2 "Boyut"
|
||||
IDS_SHV_COLUMN3 "Tür"
|
||||
IDS_SHV_COLUMN4 "Düzenlenme"
|
||||
IDS_SHV_COLUMN5 "Öznitelikler"
|
||||
IDS_SHV_COLUMN6 "Boyut"
|
||||
IDS_SHV_COLUMN7 "Kullanýlabilir Alan"
|
||||
IDS_SHV_COLUMN8 "Ad"
|
||||
IDS_SHV_COLUMN9 "Açýklamalar"
|
||||
IDS_SHV_COLUMN10 "Sahip"
|
||||
IDS_SHV_COLUMN11 "Grup"
|
||||
IDS_SHV_COLUMN_DELFROM "Özgün konum"
|
||||
IDS_SHV_COLUMN_DELDATE "Silinme tarihi"
|
||||
|
||||
/* special folders */
|
||||
IDS_DESKTOP "Masaüstü"
|
||||
IDS_MYCOMPUTER "Bilgisayarým"
|
||||
IDS_RECYCLEBIN_FOLDER_NAME "Çöp"
|
||||
|
||||
/* context menus */
|
||||
IDS_VIEW_LARGE "Bü&yük Simgeler"
|
||||
IDS_VIEW_SMALL "Kü&çük Simgeler"
|
||||
IDS_VIEW_LIST "&Liste"
|
||||
IDS_VIEW_DETAILS "&Ayrýntýlý"
|
||||
IDS_SELECT "Seç"
|
||||
IDS_OPEN "Aç"
|
||||
|
||||
IDS_CREATEFOLDER_DENIED "Yeni dizin oluþturulamýyor: Eriþim engellendi."
|
||||
IDS_CREATEFOLDER_CAPTION "Dizin oluþturma sýrasýnda hata"
|
||||
IDS_DELETEITEM_CAPTION "Dosya silmeyi onayla"
|
||||
IDS_DELETEFOLDER_CAPTION "Dizin silmeyi onayla"
|
||||
IDS_DELETEITEM_TEXT "'%1' öðesini silmek istediðinizden emin misiniz?"
|
||||
IDS_DELETEMULTIPLE_TEXT "Bu %1 öðeyi silmek istediðinizden emin misiniz?"
|
||||
IDS_DELETESELECTED_TEXT "Seçili öðeleri silmek istediðinizden emin misiniz?"
|
||||
IDS_TRASHITEM_TEXT "'%1' adlý öðeyi çöpe göndermek istediðinizden emin misiniz?"
|
||||
IDS_TRASHFOLDER_TEXT "'%1' adlý öðeyi ve tüm içeriðini çöpe göndermek istediðinizden emin misiniz?"
|
||||
IDS_TRASHMULTIPLE_TEXT "Bu %1 öðeyi çöpe göndermek istediðinizden emin misiniz?"
|
||||
IDS_CANTTRASH_TEXT "'%1' adlý öðe çöpe gönderilemiyor. Tamamen silmek ister misiniz?"
|
||||
IDS_OVERWRITEFILE_TEXT "This folder already contains a file called '%1'.\n\nDo you want to replace it?"
|
||||
IDS_OVERWRITEFILE_CAPTION "Dosya Üzerine Yazmayý Onayla"
|
||||
IDS_OVERWRITEFOLDER_TEXT "This folder already contains a folder named '%1'.\n\n"\
|
||||
"If the files in the destination folder have the same names as files in the\n"\
|
||||
"selected folder they will be replaced. Do you still want to move or copy\n"\
|
||||
"the folder?"
|
||||
|
||||
/* message box strings */
|
||||
IDS_RESTART_TITLE "Yeniden Baþlat"
|
||||
IDS_RESTART_PROMPT "Windows Yeniden Baþlatma taklit edilsin mi?"
|
||||
IDS_SHUTDOWN_TITLE "Oturumu Kapat"
|
||||
IDS_SHUTDOWN_PROMPT "Wine oturumunuzu kapatmak istediðinizden emin misiniz?"
|
||||
|
||||
/* shell folder path default values */
|
||||
IDS_PROGRAMS "Start Menu\\Programlar"
|
||||
IDS_PERSONAL "Belgelerim"
|
||||
IDS_FAVORITES "Sýk Kullanýlanlar"
|
||||
IDS_STARTUP "Start Menu\\Programlar\\Baþlangýç"
|
||||
IDS_RECENT "Recent"
|
||||
IDS_SENDTO "SendTo"
|
||||
IDS_STARTMENU "Start Menu"
|
||||
IDS_MYMUSIC "Belgelerim\\Müziðim"
|
||||
IDS_MYVIDEO "Belgelerim\\Vidyolarým"
|
||||
IDS_DESKTOPDIRECTORY "Desktop"
|
||||
IDS_NETHOOD "NetHood"
|
||||
IDS_TEMPLATES "Templates"
|
||||
IDS_APPDATA "Application Data"
|
||||
IDS_PRINTHOOD "PrintHood"
|
||||
IDS_LOCAL_APPDATA "Local Settings\\Application Data"
|
||||
IDS_INTERNET_CACHE "Local Settings\\Temporary Internet Files"
|
||||
IDS_COOKIES "Cookies"
|
||||
IDS_HISTORY "Local Settings\\History"
|
||||
IDS_PROGRAM_FILES "Program Files"
|
||||
IDS_MYPICTURES "Belgelerim\\Resimlerim"
|
||||
IDS_PROGRAM_FILES_COMMON "Program Files\\Common Files"
|
||||
IDS_COMMON_DOCUMENTS "Belgeler"
|
||||
IDS_ADMINTOOLS "Start Menu\\Programlar\\Yönetimsel Araçlar"
|
||||
IDS_COMMON_MUSIC "Belgeler\\Müziðim"
|
||||
IDS_COMMON_PICTURES "Belgeler\\Resimlerim"
|
||||
IDS_COMMON_VIDEO "Belgeler\\Videolarým"
|
||||
IDS_CDBURN_AREA "Local Settings\\Application Data\\Microsoft\\CD Burning"
|
||||
}
|
|
@ -1,6 +1,5 @@
|
|||
/*
|
||||
* Copyright 2004 Ilya Korniyko
|
||||
* 2007 Artem Reznikov
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -14,16 +13,16 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
|
||||
|
||||
MENU_001 MENU DISCARDABLE
|
||||
BEGIN
|
||||
MENUITEM "&Âåëèê³ çíà÷êè", FCIDM_SHVIEW_BIGICON
|
||||
MENUITEM "&Äð³áí³ çíà÷êè", FCIDM_SHVIEW_SMALLICON
|
||||
MENUITEM "Ñïèñ&îê", FCIDM_SHVIEW_LISTVIEW
|
||||
MENUITEM "&Âåëèê³ ²êîíêè", FCIDM_SHVIEW_BIGICON
|
||||
MENUITEM "&Ìàë³ ²êîíêè", FCIDM_SHVIEW_SMALLICON
|
||||
MENUITEM "&Ñïèñîê", FCIDM_SHVIEW_LISTVIEW
|
||||
MENUITEM "&Ïîäðîáèö³", FCIDM_SHVIEW_REPORTVIEW
|
||||
END
|
||||
|
||||
|
@ -36,32 +35,32 @@ BEGIN
|
|||
BEGIN
|
||||
POPUP "&Âèãëÿä"
|
||||
BEGIN
|
||||
MENUITEM "&Âåëèê³ çíà÷êè", FCIDM_SHVIEW_BIGICON
|
||||
MENUITEM "&Äð³áí³ çíà÷êè", FCIDM_SHVIEW_SMALLICON
|
||||
MENUITEM "Ñïèñ&îê", FCIDM_SHVIEW_LISTVIEW
|
||||
MENUITEM "&Âåëèê³ ²êîíêè", FCIDM_SHVIEW_BIGICON
|
||||
MENUITEM "&Ìàë³ ²êîíêè", FCIDM_SHVIEW_SMALLICON
|
||||
MENUITEM "&Ñïèñîê", FCIDM_SHVIEW_LISTVIEW
|
||||
MENUITEM "&Ïîäðîáèö³", FCIDM_SHVIEW_REPORTVIEW
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "&Óïîðÿäêóâàòè çíà÷êè"
|
||||
POPUP "Âïîðÿäêóâàòè &²êîíêè"
|
||||
BEGIN
|
||||
MENUITEM "çà &³ì'ÿì", 0x30 /* column 0 */
|
||||
MENUITEM "çà &òèïîì", 0x32 /* column 2 */
|
||||
MENUITEM "çà &ðîçì³ðîì", 0x31 /* ... */
|
||||
MENUITEM "çà &äàòîþ", 0x33
|
||||
MENUITEM "Çà &Íàçâîþ", 0x30 /* column 0 */
|
||||
MENUITEM "Çà &Òèïîì", 0x32 /* column 2 */
|
||||
MENUITEM "Çà &Ðîçì³ðîì", 0x31 /* ... */
|
||||
MENUITEM "Çà &Äàòîþ", 0x33
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&àâòîìàòè÷íî", FCIDM_SHVIEW_AUTOARRANGE
|
||||
MENUITEM "&Àâòîìàòè÷íî", FCIDM_SHVIEW_AUTOARRANGE
|
||||
END
|
||||
MENUITEM "Âèð³âíÿòè çíà÷êè", FCIDM_SHVIEW_SNAPTOGRID
|
||||
MENUITEM "Âèð³âíÿòè ²êîíêè", FCIDM_SHVIEW_SNAPTOGRID
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Îíîâèòè", FCIDM_SHVIEW_REFRESH
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Âñòàâèòè", FCIDM_SHVIEW_INSERT
|
||||
MENUITEM "Âñòàâèòè ÿðëèê", FCIDM_SHVIEW_INSERTLINK
|
||||
MENUITEM "Âñòàâèòè Ïîñèëàííÿ", FCIDM_SHVIEW_INSERTLINK
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "Ñòâîðèòè"
|
||||
BEGIN
|
||||
MENUITEM "&Ïàïêó", FCIDM_SHVIEW_NEWFOLDER
|
||||
MENUITEM "&ßðëèê", FCIDM_SHVIEW_NEWLINK
|
||||
MENUITEM "Íîâà &Òåêà", FCIDM_SHVIEW_NEWFOLDER
|
||||
MENUITEM "Íîâå &Ïîñèëàííÿ", FCIDM_SHVIEW_NEWLINK
|
||||
MENUITEM SEPARATOR
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
|
@ -77,26 +76,26 @@ BEGIN
|
|||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Ïðîâ³äíèê", FCIDM_SHVIEW_EXPLORE
|
||||
MENUITEM "Â&³äêðèòè", FCIDM_SHVIEW_OPEN
|
||||
MENUITEM "&³äêðèòè", FCIDM_SHVIEW_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Âèð³çàòè", FCIDM_SHVIEW_CUT
|
||||
MENUITEM "&Êîï³þâàòè", FCIDM_SHVIEW_COPY
|
||||
MENUITEM "Âè&ð³çàòè", FCIDM_SHVIEW_CUT
|
||||
MENUITEM "&Êîï³ÿ", FCIDM_SHVIEW_COPY
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Ñòâîðèòè &ÿðëèê", FCIDM_SHVIEW_CREATELINK
|
||||
MENUITEM "Â&èäàëèòè", FCIDM_SHVIEW_DELETE
|
||||
MENUITEM "Ïåðåé&ìåíóâàòè", FCIDM_SHVIEW_RENAME
|
||||
MENUITEM "&Ñòâîðèòè Ïîñèëàííÿ", FCIDM_SHVIEW_CREATELINK
|
||||
MENUITEM "Âè&äàëèòè", FCIDM_SHVIEW_DELETE
|
||||
MENUITEM "Ïåðå&éìåíóâàòè", FCIDM_SHVIEW_RENAME
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Â&ëàñòèâîñò³", FCIDM_SHVIEW_PROPERTIES
|
||||
MENUITEM "&Âëàñòèâîñò³", FCIDM_SHVIEW_PROPERTIES
|
||||
END
|
||||
END
|
||||
|
||||
SHBRSFORFOLDER_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 188, 192
|
||||
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
|
||||
CAPTION "Îãëÿä ïàïîê"
|
||||
CAPTION "Îãëÿä äî òåêè"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
DEFPUSHBUTTON "OK", 1, 80, 176, 50, 12, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON "Ñêàñóâàòè", 2, 134, 176, 50, 12, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON "³äì³íà", 2, 134, 176, 50, 12, WS_GROUP | WS_TABSTOP
|
||||
LTEXT "", IDD_TITLE, 4, 4, 180, 12
|
||||
LTEXT "", IDD_STATUS, 4, 25, 180, 12
|
||||
CONTROL "", IDD_TREEVIEW, "SysTreeView32",
|
||||
|
@ -115,7 +114,7 @@ FONT 10, "MS Shell Dlg"
|
|||
ICON "", 1088, 10, 10, 14, 16
|
||||
LTEXT "", 100, 30, 10, 137, 10
|
||||
LTEXT "", 101, 30, 22, 137, 10
|
||||
LTEXT "Ðîçðîáíèêè ReactOS:", 98, 8, 55, 137, 10
|
||||
LTEXT "Ðîçðîáíèêè Wine:", 98, 8, 55, 137, 10
|
||||
}
|
||||
|
||||
SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||
|
@ -124,149 +123,55 @@ CAPTION ""
|
|||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||
LTEXT "Ââåä³òü ³ì'ÿ ïðîãðàìè, ïàïêè, äîêóìåíòà àáî ðåñóðñó ²íòåðíåòó, ³ ReactOS â³äêðèº ¿õ.", 12289, 36, 11, 182, 18
|
||||
LTEXT "Ââåä³òü ³ì'ÿ ïðîãðàìè, òåêè, äîêóìåíòó ÷è ðåñóðñ ²íòåðíåòó, ³ Wine â³äêðèº ¿õ.", 12289, 36, 11, 182, 18
|
||||
LTEXT "&³äêðèòè:", 12305, 7, 39, 24, 10
|
||||
CONTROL "", 12298, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100
|
||||
DEFPUSHBUTTON "OK", IDOK, 62, 63, 50, 14, WS_TABSTOP
|
||||
PUSHBUTTON "Ñêàñóâàòè", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP
|
||||
PUSHBUTTON "Î&ãëÿä...", 12288, 170, 63, 50, 14, WS_TABSTOP
|
||||
PUSHBUTTON "³äì³íà", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP
|
||||
PUSHBUTTON "&Îãëÿä...", 12288, 170, 63, 50, 14, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
SHELL_GENERAL_SHORTCUT_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Shortcut"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
/*
|
||||
special folders
|
||||
*/
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE
|
||||
LTEXT "Target type:", 14004, 10, 30, 50, 10
|
||||
LTEXT "", 14005, 70, 30, 150, 10
|
||||
LTEXT "Target location:", 14006, 10, 40, 70, 10
|
||||
LTEXT "", 14007, 70, 40, 150, 10
|
||||
LTEXT "Target:", 14008, 10, 55, 45, 10
|
||||
EDITTEXT 14009, 70, 55, 150, 10, ES_LEFT
|
||||
LTEXT "&Start in:",14010, 10, 65, 45, 10
|
||||
EDITTEXT 14011, 70, 65, 150, 10, ES_LEFT
|
||||
LTEXT "Shortcut &key:", 14014, 10, 80, 45, 10
|
||||
EDITTEXT 14015, 70, 80, 150, 10, ES_LEFT
|
||||
LTEXT "Run:", 14016, 10, 90, 45, 10
|
||||
EDITTEXT 14017, 70, 90, 150, 10
|
||||
LTEXT "C&omment:", 14018, 10, 100, 45, 10
|
||||
EDITTEXT 14019, 70, 100, 150, 10, ES_LEFT
|
||||
PUSHBUTTON "&Find Target...", 14020, 10, 115, 60, 14, ES_LEFT
|
||||
PUSHBUTTON "&Change Icon...", 14021, 80, 115, 60, 14, ES_LEFT
|
||||
PUSHBUTTON "A&dvanced...", 14022, 150, 115, 60, 14, ES_LEFT
|
||||
IDS_DESKTOP "Ñò³ëüíèöÿ"
|
||||
IDS_MYCOMPUTER "̳é Êîìï'þòåð"
|
||||
}
|
||||
|
||||
SHELL_FILE_GENERAL_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "General"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE
|
||||
EDITTEXT 14001, 70, 5, 100, 10, ES_LEFT | ES_READONLY
|
||||
LTEXT "Type of file:", 14004, 10, 30, 50, 10
|
||||
LTEXT "%s File", 14005, 70, 30, 150, 10
|
||||
LTEXT "Opens with:", 14006, 10, 40, 50, 10
|
||||
LTEXT "", 14007, 70, 40, 150, 10
|
||||
LTEXT "Location:", 14008, 10, 55, 45, 10
|
||||
LTEXT "", 14009, 70, 55, 200, 10
|
||||
LTEXT "Size:",14010, 10, 65, 45, 10
|
||||
LTEXT "", 14011, 70, 65, 150, 10
|
||||
LTEXT "Created:", 14014, 10, 80, 45, 10
|
||||
LTEXT "", 14015, 70, 80, 150, 10
|
||||
LTEXT "Modied:", 14016, 10, 90, 45, 10
|
||||
LTEXT "", 14017, 70, 90, 150, 10
|
||||
LTEXT "Accessed:", 14018, 10, 100, 45, 10
|
||||
LTEXT "", 14019, 70, 100, 150, 10
|
||||
LTEXT "Attributes:", 14020, 10, 115, 45, 10
|
||||
CHECKBOX "&Read-only", 14021, 70, 115, 45, 10
|
||||
CHECKBOX "&Hidden", 14022, 130, 115, 50, 10
|
||||
CHECKBOX "&Archive", 14023, 180, 115, 45, 10
|
||||
}
|
||||
|
||||
SHELL_FILE_VERSION_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Version"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
LTEXT "File version: ", 14000, 10, 10, 45, 10
|
||||
LTEXT "", 14001, 70, 10, 150, 10
|
||||
LTEXT "Description: ", 14002, 10, 20, 45, 10
|
||||
LTEXT "", 14003, 70, 20, 150, 10
|
||||
LTEXT "Copyright: ", 14004, 10, 30, 45, 10
|
||||
LTEXT "", 14005, 70, 30, 150, 10
|
||||
GROUPBOX "Other version information: ", 14006, 10, 45, 220, 90
|
||||
LTEXT "Item name: ", 14007, 20, 55, 50, 10
|
||||
LTEXT "Value: ", 14008, 130, 55, 45, 10
|
||||
LISTBOX 14009,20,65,95,60, LBS_STANDARD | WS_TABSTOP | LBS_NOTIFY
|
||||
EDITTEXT 14010, 130, 65, 95, 60, ES_LEFT|WS_BORDER|WS_VSCROLL|WS_GROUP|ES_MULTILINE|ES_READONLY
|
||||
|
||||
}
|
||||
|
||||
DRIVE_GENERAL_DLG DIALOGEX 0, 0, 240, 230
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "General"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
EDITTEXT 14001, 40, 20, 190, 10, ES_LEFT|WS_BORDER|WS_GROUP
|
||||
LTEXT "Type:", -1, 15, 55, 40, 10
|
||||
LTEXT "", 14002, 110, 55, 100, 10
|
||||
|
||||
|
||||
LTEXT "File system:", -1, 15, 70, 100, 10
|
||||
LTEXT "", 14003, 110, 70, 100, 10
|
||||
|
||||
CONTROL "", 14013, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 90, 10, 10
|
||||
LTEXT "Used space:", -1, 25, 90, 120, 10
|
||||
LTEXT "", 14004, 110, 90, 120, 10
|
||||
LTEXT "", 14005, 200, 90, 40, 10
|
||||
|
||||
CONTROL "", 14014, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 105, 10, 10
|
||||
LTEXT "Free space:", -1, 25, 105, 70, 10
|
||||
LTEXT "", 14006, 110, 105, 120, 10
|
||||
LTEXT "", 14007, 200, 105, 40, 10
|
||||
|
||||
LTEXT "Capacity:", -1, 25, 125, 80, 10
|
||||
LTEXT "", 14008, 110, 125, 120, 10
|
||||
LTEXT "", 14009, 200, 125, 40, 10
|
||||
|
||||
CONTROL "", 14015, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 20, 140, 200, 20
|
||||
|
||||
LTEXT "Drive %s", 14010, 100, 170, 40, 10
|
||||
PUSHBUTTON "Disk Cleanup", 14011, 180, 175, 50, 15, WS_TABSTOP
|
||||
CHECKBOX "Compress drive to save disk space", 14012, 15, 205, 165, 10, WS_DISABLED
|
||||
CHECKBOX "Allow Indexing Service to index this disk for fast file searching", 14012, 15, 220, 200, 10, WS_DISABLED
|
||||
}
|
||||
|
||||
DRIVE_EXTRA_DLG DIALOGEX 0, 0, 240, 230
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Tools"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
GROUPBOX "Error-checking", -1, 5, 5, 230, 60
|
||||
LTEXT "This option will check the volume for\nerrors.", -1, 40, 25, 160, 20
|
||||
PUSHBUTTON "Check Now...", 14000, 130, 45, 90, 15, WS_TABSTOP
|
||||
GROUPBOX "Defragmentation", -1, 5, 65, 230, 60
|
||||
LTEXT "This option will defragment files on the volume", -1, 40, 85, 160, 20
|
||||
PUSHBUTTON "Defragment Now...", 14001, 130, 105, 90, 15, WS_TABSTOP
|
||||
GROUPBOX "Backup", -1, 5, 130, 230, 60
|
||||
LTEXT "This option will back up files on the volume.", -1, 40, 150, 160, 20
|
||||
PUSHBUTTON "Backup Now...", 14002, 130, 170, 90, 15, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
|
||||
DRIVE_HARDWARE_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Version"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
/*
|
||||
context menus
|
||||
*/
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
IDS_VIEW_LARGE "&Âåëèê³ ²êîíêè"
|
||||
IDS_VIEW_SMALL "&Ìàë³ ²êîíêè"
|
||||
IDS_VIEW_LIST "&Ñïèñîê"
|
||||
IDS_VIEW_DETAILS "&Ïîäðîáèö³"
|
||||
IDS_SELECT "Âè&áðàòè"
|
||||
IDS_OPEN "³&äêðèòè"
|
||||
}
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
{
|
||||
/* columns in the shellview */
|
||||
IDS_CREATEFOLDER_DENIED "Íå âäàëîñÿ ñòâîðèòè íîâó òåêó: ³äìîâà ó äîñòóï³."
|
||||
IDS_CREATEFOLDER_CAPTION "Ïîìèëêà ïðè ñòâîðåíí³ íîâî¿ òåêè"
|
||||
IDS_DELETEITEM_CAPTION "ϳäòâåðäæåííÿ âèëó÷åííÿ ôàéëó"
|
||||
IDS_DELETEFOLDER_CAPTION "ϳäòâåðäæåííÿ âèëó÷åííÿ òåêè"
|
||||
IDS_DELETEITEM_TEXT "Âè âïåâíåí³, ùî õî÷åòå âèëó÷èòè '%1'?"
|
||||
IDS_DELETEMULTIPLE_TEXT "Âè âïåâíåí³, ùî õî÷åòå âèëó÷èòè ö³ %1 åëåìåíòè(³â)?"
|
||||
IDS_OVERWRITEFILE_TEXT "This folder already contains a file called '%1'.\n\nDo you want to replace it?"
|
||||
IDS_OVERWRITEFILE_CAPTION "ϳäòâåðäæåííÿ Ïåðåçàïèñó Ôàéëó"
|
||||
IDS_OVERWRITEFOLDER_TEXT "This folder already contains a folder named '%1'.\n\n"\
|
||||
"If the files in the destination folder have the same names as files in the\n"\
|
||||
"selected folder they will be replaced. Do you still want to move or copy\n"\
|
||||
"the folder?"
|
||||
}
|
||||
|
||||
/* columns in the shellview */
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_SHV_COLUMN1 "Ôàéë"
|
||||
IDS_SHV_COLUMN2 "Ðîçì³ð"
|
||||
IDS_SHV_COLUMN3 "Òèï"
|
||||
|
@ -274,67 +179,4 @@ STRINGTABLE DISCARDABLE
|
|||
IDS_SHV_COLUMN5 "Àòðèáóòè"
|
||||
IDS_SHV_COLUMN6 "Ðîçì³ð"
|
||||
IDS_SHV_COLUMN7 "³ëüíèé Ðîçì³ð"
|
||||
IDS_SHV_COLUMN8 "²ì'ÿ"
|
||||
IDS_SHV_COLUMN9 "Ïðèì³òêà"
|
||||
IDS_SHV_COLUMN10 "Âëàñíèê"
|
||||
IDS_SHV_COLUMN11 "Ãðóïà"
|
||||
|
||||
/* special folders */
|
||||
IDS_DESKTOP "Ðîáî÷èé ñò³ë"
|
||||
IDS_MYCOMPUTER "̳é Êîìï'þòåð"
|
||||
|
||||
/* context menus */
|
||||
IDS_VIEW_LARGE "&Âåëèê³ çíà÷êè"
|
||||
IDS_VIEW_SMALL "&Äð³áí³ çíà÷êè"
|
||||
IDS_VIEW_LIST "Ñïèñ&îê"
|
||||
IDS_VIEW_DETAILS "&Ïîäðîáèö³"
|
||||
IDS_SELECT "Âè&áðàòè"
|
||||
IDS_OPEN "³äêðèòè"
|
||||
|
||||
IDS_CREATEFOLDER_DENIED "Íå âäàëîñÿ ñòâîðèòè íîâó ïàïêó: ³äìîâà ó äîñòóï³."
|
||||
IDS_CREATEFOLDER_CAPTION "Ïîìèëêà ïðè ñòâîðåíí³ íîâî¿ ïàïêè"
|
||||
IDS_DELETEITEM_CAPTION "ϳäòâåðäæåííÿ âèëó÷åííÿ ôàéëó"
|
||||
IDS_DELETEFOLDER_CAPTION "ϳäòâåðäæåííÿ âèëó÷åííÿ ïàïêè"
|
||||
IDS_DELETEITEM_TEXT "Âè âïåâíåí³, ùî õî÷åòå âèëó÷èòè '%1'?"
|
||||
IDS_DELETEMULTIPLE_TEXT "Âè âïåâíåí³, ùî õî÷åòå âèëó÷èòè ö³ %1 åëåìåíòè(³â)?"
|
||||
IDS_OVERWRITEFILE_TEXT "Ïåðåïèñàòè Ôàéë %1?"
|
||||
IDS_OVERWRITEFILE_CAPTION "ϳäòâåðäæåííÿ Ïåðåçàïèñó Ôàéëó"
|
||||
|
||||
/* message box strings */
|
||||
IDS_RESTART_TITLE "Ïåðåçàâàíòàæèòè"
|
||||
IDS_RESTART_PROMPT "Âè ä³éñíî õî÷åòå ïåðåçàâàíòàæèòè ñèñòåìó?"
|
||||
IDS_SHUTDOWN_TITLE "Âèìêíóòè"
|
||||
IDS_SHUTDOWN_PROMPT "Âè ä³éñíî õî÷åòå âèìêíóòè êîìï'þòåð?"
|
||||
|
||||
/* shell folder path default values */
|
||||
IDS_PROGRAMS "Start Menu\\Programs"
|
||||
IDS_PERSONAL "My Documents"
|
||||
IDS_FAVORITES "Favorites"
|
||||
IDS_STARTUP "Start Menu\\Programs\\StartUp"
|
||||
IDS_RECENT "Recent"
|
||||
IDS_SENDTO "SendTo"
|
||||
IDS_STARTMENU "Start Menu"
|
||||
IDS_MYMUSIC "My Documents\\My Music"
|
||||
IDS_MYVIDEO "My Documents\\My Video"
|
||||
IDS_DESKTOPDIRECTORY "Desktop"
|
||||
IDS_NETHOOD "NetHood"
|
||||
IDS_TEMPLATES "Templates"
|
||||
IDS_APPDATA "Application Data"
|
||||
IDS_PRINTHOOD "PrintHood"
|
||||
IDS_LOCAL_APPDATA "Local Settings\\Application Data"
|
||||
IDS_INTERNET_CACHE "Local Settings\\Temporary Internet Files"
|
||||
IDS_COOKIES "Cookies"
|
||||
IDS_HISTORY "Local Settings\\History"
|
||||
IDS_PROGRAM_FILES "Program Files"
|
||||
IDS_MYPICTURES "My Documents\\My Pictures"
|
||||
IDS_PROGRAM_FILES_COMMON "Program Files\\Common Files"
|
||||
IDS_COMMON_DOCUMENTS "Documents"
|
||||
IDS_ADMINTOOLS "Start Menu\\Programs\\Administrative Tools"
|
||||
IDS_COMMON_MUSIC "Documents\\My Music"
|
||||
IDS_COMMON_PICTURES "Documents\\My Pictures"
|
||||
IDS_COMMON_VIDEO "Documents\\My Video"
|
||||
IDS_CDBURN_AREA "Local Settings\\Application Data\\Microsoft\\CD Burning"
|
||||
IDS_DRIVE_FIXED "Local Disk"
|
||||
IDS_DRIVE_CDROM "CDROM"
|
||||
IDS_DRIVE_NETWORK "Network Disk"
|
||||
}
|
||||
END
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_WALON, SUBLANG_DEFAULT
|
||||
|
@ -33,7 +33,7 @@ FONT 10, "MS Shell Dlg"
|
|||
ICON "", 1088, 10, 10, 14, 16
|
||||
LTEXT "", 100, 30, 10, 137, 10
|
||||
LTEXT "", 101, 30, 22, 137, 10
|
||||
LTEXT "ReactOS a estu fwait par:", 98, 8, 55, 137, 10
|
||||
LTEXT "Wine a estu fwait par:", 98, 8, 55, 137, 10
|
||||
}
|
||||
|
||||
SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||
|
@ -42,142 +42,10 @@ CAPTION ""
|
|||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||
LTEXT "Type the name of a program, folder, document, or Internet resource, and ReactOS will open it for you.", 12289, 36, 11, 182, 18
|
||||
LTEXT "Type the name of a program, folder, document, or Internet resource, and Wine will open it for you.", 12289, 36, 11, 182, 18
|
||||
LTEXT "&Open:", 12305, 7, 39, 24, 10
|
||||
CONTROL "", 12298, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100
|
||||
DEFPUSHBUTTON "OK", IDOK, 62, 63, 50, 14, WS_TABSTOP
|
||||
PUSHBUTTON "Cancel", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP
|
||||
PUSHBUTTON "&Browse...", 12288, 170, 63, 50, 14, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
SHELL_GENERAL_SHORTCUT_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Shortcut"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE
|
||||
LTEXT "Target type:", 14004, 10, 30, 50, 10
|
||||
LTEXT "", 14005, 70, 30, 150, 10
|
||||
LTEXT "Target location:", 14006, 10, 40, 70, 10
|
||||
LTEXT "", 14007, 70, 40, 150, 10
|
||||
LTEXT "Target:", 14008, 10, 55, 45, 10
|
||||
EDITTEXT 14009, 70, 55, 150, 10, ES_LEFT
|
||||
LTEXT "&Start in:",14010, 10, 65, 45, 10
|
||||
EDITTEXT 14011, 70, 65, 150, 10, ES_LEFT
|
||||
LTEXT "Shortcut &key:", 14014, 10, 80, 45, 10
|
||||
EDITTEXT 14015, 70, 80, 150, 10, ES_LEFT
|
||||
LTEXT "Run:", 14016, 10, 90, 45, 10
|
||||
EDITTEXT 14017, 70, 90, 150, 10
|
||||
LTEXT "C&omment:", 14018, 10, 100, 45, 10
|
||||
EDITTEXT 14019, 70, 100, 150, 10, ES_LEFT
|
||||
PUSHBUTTON "&Find Target...", 14020, 10, 115, 60, 14, ES_LEFT
|
||||
PUSHBUTTON "&Change Icon...", 14021, 80, 115, 60, 14, ES_LEFT
|
||||
PUSHBUTTON "A&dvanced...", 14022, 150, 115, 60, 14, ES_LEFT
|
||||
}
|
||||
|
||||
SHELL_FILE_GENERAL_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "General"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE
|
||||
EDITTEXT 14001, 70, 5, 100, 10, ES_LEFT | ES_READONLY
|
||||
LTEXT "Type of file:", 14004, 10, 30, 50, 10
|
||||
LTEXT "%s File", 14005, 70, 30, 150, 10
|
||||
LTEXT "Opens with:", 14006, 10, 40, 50, 10
|
||||
LTEXT "", 14007, 70, 40, 150, 10
|
||||
LTEXT "Location:", 14008, 10, 55, 45, 10
|
||||
LTEXT "", 14009, 70, 55, 200, 10
|
||||
LTEXT "Size:",14010, 10, 65, 45, 10
|
||||
LTEXT "", 14011, 70, 65, 150, 10
|
||||
LTEXT "Created:", 14014, 10, 80, 45, 10
|
||||
LTEXT "", 14015, 70, 80, 150, 10
|
||||
LTEXT "Modied:", 14016, 10, 90, 45, 10
|
||||
LTEXT "", 14017, 70, 90, 150, 10
|
||||
LTEXT "Accessed:", 14018, 10, 100, 45, 10
|
||||
LTEXT "", 14019, 70, 100, 150, 10
|
||||
LTEXT "Attributes:", 14020, 10, 115, 45, 10
|
||||
CHECKBOX "&Read-only", 14021, 70, 115, 45, 10
|
||||
CHECKBOX "&Hidden", 14022, 130, 115, 50, 10
|
||||
CHECKBOX "&Archive", 14023, 180, 115, 45, 10
|
||||
}
|
||||
|
||||
SHELL_FILE_VERSION_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Version"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
LTEXT "File version: ", 14000, 10, 10, 45, 10
|
||||
LTEXT "", 14001, 70, 10, 150, 10
|
||||
LTEXT "Description: ", 14002, 10, 20, 45, 10
|
||||
LTEXT "", 14003, 70, 20, 150, 10
|
||||
LTEXT "Copyright: ", 14004, 10, 30, 45, 10
|
||||
LTEXT "", 14005, 70, 30, 150, 10
|
||||
GROUPBOX "Other version information: ", 14006, 10, 45, 220, 90
|
||||
LTEXT "Item name: ", 14007, 20, 55, 50, 10
|
||||
LTEXT "Value: ", 14008, 130, 55, 45, 10
|
||||
LISTBOX 14009,20,65,95,60, LBS_STANDARD | WS_TABSTOP | LBS_NOTIFY
|
||||
EDITTEXT 14010, 130, 65, 95, 60, ES_LEFT|WS_BORDER|WS_VSCROLL|WS_GROUP|ES_MULTILINE|ES_READONLY
|
||||
|
||||
}
|
||||
|
||||
DRIVE_GENERAL_DLG DIALOGEX 0, 0, 240, 230
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "General"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
EDITTEXT 14001, 40, 20, 190, 10, ES_LEFT|WS_BORDER|WS_GROUP
|
||||
LTEXT "Type:", -1, 15, 55, 40, 10
|
||||
LTEXT "", 14002, 110, 55, 100, 10
|
||||
|
||||
|
||||
LTEXT "File system:", -1, 15, 70, 100, 10
|
||||
LTEXT "", 14003, 110, 70, 100, 10
|
||||
|
||||
CONTROL "", 14013, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 90, 10, 10
|
||||
LTEXT "Used space:", -1, 25, 90, 120, 10
|
||||
LTEXT "", 14004, 110, 90, 120, 10
|
||||
LTEXT "", 14005, 200, 90, 40, 10
|
||||
|
||||
CONTROL "", 14014, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 105, 10, 10
|
||||
LTEXT "Free space:", -1, 25, 105, 70, 10
|
||||
LTEXT "", 14006, 110, 105, 120, 10
|
||||
LTEXT "", 14007, 200, 105, 40, 10
|
||||
|
||||
LTEXT "Capacity:", -1, 25, 125, 80, 10
|
||||
LTEXT "", 14008, 110, 125, 120, 10
|
||||
LTEXT "", 14009, 200, 125, 40, 10
|
||||
|
||||
CONTROL "", 14015, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 20, 140, 200, 20
|
||||
|
||||
LTEXT "Drive %s", 14010, 100, 170, 40, 10
|
||||
PUSHBUTTON "Disk Cleanup", 14011, 180, 175, 50, 15, WS_TABSTOP
|
||||
CHECKBOX "Compress drive to save disk space", 14012, 15, 205, 165, 10, WS_DISABLED
|
||||
CHECKBOX "Allow Indexing Service to index this disk for fast file searching", 14012, 15, 220, 200, 10, WS_DISABLED
|
||||
}
|
||||
|
||||
DRIVE_EXTRA_DLG DIALOGEX 0, 0, 240, 230
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Tools"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
GROUPBOX "Error-checking", -1, 5, 5, 230, 60
|
||||
LTEXT "This option will check the volume for\nerrors.", -1, 40, 25, 160, 20
|
||||
PUSHBUTTON "Check Now...", 14000, 130, 45, 90, 15, WS_TABSTOP
|
||||
GROUPBOX "Defragmentation", -1, 5, 65, 230, 60
|
||||
LTEXT "This option will defragment files on the volume", -1, 40, 85, 160, 20
|
||||
PUSHBUTTON "Defragment Now...", 14001, 130, 105, 90, 15, WS_TABSTOP
|
||||
GROUPBOX "Backup", -1, 5, 130, 230, 60
|
||||
LTEXT "This option will back up files on the volume.", -1, 40, 150, 160, 20
|
||||
PUSHBUTTON "Backup Now...", 14002, 130, 170, 90, 15, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
|
||||
DRIVE_HARDWARE_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Version"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
|
||||
|
@ -28,7 +28,7 @@ FONT 8, "MS Shell Dlg"
|
|||
LISTBOX 99, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER
|
||||
ICON "", 1088, 10, 10, 14, 16
|
||||
LTEXT "", 100, 35, 10, 137, 10
|
||||
LTEXT "ReactOS was brought to you by:", 98, 8, 55, 137, 10
|
||||
LTEXT "Wine was brought to you by:", 98, 8, 55, 137, 10
|
||||
}
|
||||
|
||||
SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
|
||||
|
@ -37,7 +37,7 @@ CAPTION ""
|
|||
FONT 8, "MS Shell Dlg"
|
||||
{
|
||||
ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
|
||||
LTEXT "Type the name of a program, folder, document, or Internet resource, and ReactOS will open it for you.", 12289, 36, 11, 182, 18
|
||||
LTEXT "Type the name of a program, folder, document, or Internet resource, and Wine will open it for you.", 12289, 36, 11, 182, 18
|
||||
LTEXT "&Open:", 12305, 7, 39, 24, 10
|
||||
CONTROL "", 12298, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100
|
||||
DEFPUSHBUTTON "OK", IDOK, 62, 63, 50, 14, WS_TABSTOP
|
||||
|
@ -45,137 +45,6 @@ FONT 8, "MS Shell Dlg"
|
|||
PUSHBUTTON "&Browse...", 12288, 170, 63, 50, 14, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
SHELL_GENERAL_SHORTCUT_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Shortcut"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE
|
||||
LTEXT "Target type:", 14004, 10, 30, 50, 10
|
||||
LTEXT "", 14005, 70, 30, 150, 10
|
||||
LTEXT "Target location:", 14006, 10, 40, 70, 10
|
||||
LTEXT "", 14007, 70, 40, 150, 10
|
||||
LTEXT "Target:", 14008, 10, 55, 45, 10
|
||||
EDITTEXT 14009, 70, 55, 150, 10, ES_LEFT
|
||||
LTEXT "&Start in:",14010, 10, 65, 45, 10
|
||||
EDITTEXT 14011, 70, 65, 150, 10, ES_LEFT
|
||||
LTEXT "Shortcut &key:", 14014, 10, 80, 45, 10
|
||||
EDITTEXT 14015, 70, 80, 150, 10, ES_LEFT
|
||||
LTEXT "Run:", 14016, 10, 90, 45, 10
|
||||
EDITTEXT 14017, 70, 90, 150, 10
|
||||
LTEXT "C&omment:", 14018, 10, 100, 45, 10
|
||||
EDITTEXT 14019, 70, 100, 150, 10, ES_LEFT
|
||||
PUSHBUTTON "&Find Target...", 14020, 10, 115, 60, 14, ES_LEFT
|
||||
PUSHBUTTON "&Change Icon...", 14021, 80, 115, 60, 14, ES_LEFT
|
||||
PUSHBUTTON "A&dvanced...", 14022, 150, 115, 60, 14, ES_LEFT
|
||||
}
|
||||
|
||||
SHELL_FILE_GENERAL_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "General"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
ICON "", 14000, 10, 5, 30, 30, WS_VISIBLE
|
||||
EDITTEXT 14001, 70, 5, 100, 10, ES_LEFT | ES_READONLY
|
||||
LTEXT "Type of file:", 14004, 10, 30, 50, 10
|
||||
LTEXT "%s File", 14005, 70, 30, 150, 10
|
||||
LTEXT "Opens with:", 14006, 10, 40, 50, 10
|
||||
LTEXT "", 14007, 70, 40, 150, 10
|
||||
LTEXT "Location:", 14008, 10, 55, 45, 10
|
||||
LTEXT "", 14009, 70, 55, 200, 10
|
||||
LTEXT "Size:",14010, 10, 65, 45, 10
|
||||
LTEXT "", 14011, 70, 65, 150, 10
|
||||
LTEXT "Created:", 14014, 10, 80, 45, 10
|
||||
LTEXT "", 14015, 70, 80, 150, 10
|
||||
LTEXT "Modied:", 14016, 10, 90, 45, 10
|
||||
LTEXT "", 14017, 70, 90, 150, 10
|
||||
LTEXT "Accessed:", 14018, 10, 100, 45, 10
|
||||
LTEXT "", 14019, 70, 100, 150, 10
|
||||
LTEXT "Attributes:", 14020, 10, 115, 45, 10
|
||||
CHECKBOX "&Read-only", 14021, 70, 115, 45, 10
|
||||
CHECKBOX "&Hidden", 14022, 130, 115, 50, 10
|
||||
CHECKBOX "&Archive", 14023, 180, 115, 45, 10
|
||||
}
|
||||
|
||||
SHELL_FILE_VERSION_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Version"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
LTEXT "File version: ", 14000, 10, 10, 45, 10
|
||||
LTEXT "", 14001, 70, 10, 150, 10
|
||||
LTEXT "Description: ", 14002, 10, 20, 45, 10
|
||||
LTEXT "", 14003, 70, 20, 150, 10
|
||||
LTEXT "Copyright: ", 14004, 10, 30, 45, 10
|
||||
LTEXT "", 14005, 70, 30, 150, 10
|
||||
GROUPBOX "Other version information: ", 14006, 10, 45, 220, 90
|
||||
LTEXT "Item name: ", 14007, 20, 55, 50, 10
|
||||
LTEXT "Value: ", 14008, 130, 55, 45, 10
|
||||
LISTBOX 14009,20,65,95,60, LBS_STANDARD | WS_TABSTOP | LBS_NOTIFY
|
||||
EDITTEXT 14010, 130, 65, 95, 60, ES_LEFT|WS_BORDER|WS_VSCROLL|WS_GROUP|ES_MULTILINE|ES_READONLY
|
||||
|
||||
}
|
||||
DRIVE_GENERAL_DLG DIALOGEX 0, 0, 240, 230
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "General"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
EDITTEXT 14001, 40, 20, 190, 10, ES_LEFT|WS_BORDER|WS_GROUP
|
||||
LTEXT "Type:", -1, 15, 55, 40, 10
|
||||
LTEXT "", 14002, 110, 55, 100, 10
|
||||
|
||||
|
||||
LTEXT "File system:", -1, 15, 70, 100, 10
|
||||
LTEXT "", 14003, 110, 70, 100, 10
|
||||
|
||||
CONTROL "", 14013, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 90, 10, 10
|
||||
LTEXT "Used space:", -1, 25, 90, 120, 10
|
||||
LTEXT "", 14004, 110, 90, 120, 10
|
||||
LTEXT "", 14005, 200, 90, 40, 10
|
||||
|
||||
CONTROL "", 14014, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 5, 105, 10, 10
|
||||
LTEXT "Free space:", -1, 25, 105, 70, 10
|
||||
LTEXT "", 14006, 110, 105, 120, 10
|
||||
LTEXT "", 14007, 200, 105, 40, 10
|
||||
|
||||
LTEXT "Capacity:", -1, 25, 125, 80, 10
|
||||
LTEXT "", 14008, 110, 125, 120, 10
|
||||
LTEXT "", 14009, 200, 125, 40, 10
|
||||
|
||||
CONTROL "", 14015, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 20, 140, 200, 20
|
||||
|
||||
LTEXT "Drive %s", 14010, 100, 170, 40, 10
|
||||
PUSHBUTTON "Disk Cleanup", 14011, 180, 175, 50, 15, WS_TABSTOP
|
||||
CHECKBOX "Compress drive to save disk space", 14012, 15, 205, 165, 10, WS_DISABLED
|
||||
CHECKBOX "Allow Indexing Service to index this disk for fast file searching", 14012, 15, 220, 200, 10, WS_DISABLED
|
||||
}
|
||||
|
||||
DRIVE_EXTRA_DLG DIALOGEX 0, 0, 240, 230
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Tools"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
GROUPBOX "Error-checking", -1, 5, 5, 230, 60
|
||||
LTEXT "This option will check the volume for\nerrors.", -1, 40, 25, 160, 20
|
||||
PUSHBUTTON "Check Now...", 14000, 130, 45, 90, 15, WS_TABSTOP
|
||||
GROUPBOX "Defragmentation", -1, 5, 65, 230, 60
|
||||
LTEXT "This option will defragment files on the volume", -1, 40, 85, 160, 20
|
||||
PUSHBUTTON "Defragment Now...", 14001, 130, 105, 90, 15, WS_TABSTOP
|
||||
GROUPBOX "Backup", -1, 5, 130, 230, 60
|
||||
LTEXT "This option will back up files on the volume.", -1, 40, 150, 160, 20
|
||||
PUSHBUTTON "Backup Now...", 14002, 130, 170, 90, 15, WS_TABSTOP
|
||||
}
|
||||
|
||||
|
||||
|
||||
DRIVE_HARDWARE_DLG DIALOGEX 0, 0, 240, 130
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
|
||||
CAPTION "Version"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
{
|
||||
}
|
||||
|
||||
/* columns in the shellview */
|
||||
STRINGTABLE LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
|
||||
BEGIN
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#ifndef __WINE_SHELL_MAIN_H
|
||||
|
@ -57,14 +57,15 @@ INT SIC_GetIconIndex (LPCWSTR sSourceFile, INT dwSourceIndex, DWORD dwFlags );
|
|||
|
||||
/* Classes Root */
|
||||
BOOL HCR_MapTypeToValueW(LPCWSTR szExtension, LPWSTR szFileType, LONG len, BOOL bPrependDot);
|
||||
BOOL HCR_GetDefaultVerbW( HKEY hkeyClass, LPCWSTR szVerb, LPWSTR szDest, DWORD len );
|
||||
BOOL HCR_GetExecuteCommandW( HKEY hkeyClass, LPCWSTR szClass, LPCWSTR szVerb, LPWSTR szDest, DWORD len );
|
||||
BOOL HCR_GetDefaultIconW(LPCWSTR szClass, LPWSTR szDest, DWORD len, LPDWORD dwNr);
|
||||
BOOL HCR_GetDefaultIconFromGUIDW(REFIID riid, LPWSTR szDest, DWORD len, LPDWORD dwNr);
|
||||
BOOL HCR_GetDefaultIconW(LPCWSTR szClass, LPWSTR szDest, DWORD len, int* picon_idx);
|
||||
BOOL HCR_GetDefaultIconFromGUIDW(REFIID riid, LPWSTR szDest, DWORD len, int* picon_idx);
|
||||
BOOL HCR_GetClassNameW(REFIID riid, LPWSTR szDest, DWORD len);
|
||||
|
||||
/* ANSI versions of above functions, supposed to go away as soon as they are not used anymore */
|
||||
BOOL HCR_MapTypeToValueA(LPCSTR szExtension, LPSTR szFileType, LONG len, BOOL bPrependDot);
|
||||
BOOL HCR_GetDefaultIconA(LPCSTR szClass, LPSTR szDest, DWORD len, LPDWORD dwNr);
|
||||
BOOL HCR_GetDefaultIconA(LPCSTR szClass, LPSTR szDest, DWORD len, int* picon_idx);
|
||||
BOOL HCR_GetClassNameA(REFIID riid, LPSTR szDest, DWORD len);
|
||||
|
||||
BOOL HCR_GetFolderAttributes(LPCITEMIDLIST pidlFolder, LPDWORD dwAttributes);
|
||||
|
@ -96,7 +97,9 @@ HRESULT WINAPI UnixFolder_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID
|
|||
HRESULT WINAPI UnixDosFolder_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID *ppv);
|
||||
HRESULT WINAPI FolderShortcut_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID *ppv);
|
||||
HRESULT WINAPI MyDocuments_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID *ppv);
|
||||
extern HRESULT CPanel_GetIconLocationW(LPITEMIDLIST, LPWSTR, UINT, int*);
|
||||
HRESULT WINAPI RecycleBin_Constructor(IUnknown * pUnkOuter, REFIID riif, LPVOID *ppv);
|
||||
HRESULT WINAPI ShellFSFolder_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID *ppv);
|
||||
extern HRESULT CPanel_GetIconLocationW(LPCITEMIDLIST, LPWSTR, UINT, int*);
|
||||
HRESULT WINAPI CPanel_ExtractIconA(LPITEMIDLIST pidl, LPCSTR pszFile, UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize);
|
||||
HRESULT WINAPI CPanel_ExtractIconW(LPITEMIDLIST pidl, LPCWSTR pszFile, UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize);
|
||||
|
||||
|
@ -125,6 +128,7 @@ HRESULT WINAPI Shell_MergeMenus (HMENU hmDst, HMENU hmSrc, UINT uInsert, UINT uI
|
|||
(((kst)&(MK_CONTROL|MK_SHIFT)) ? DROPEFFECT_COPY :\
|
||||
DROPEFFECT_MOVE))
|
||||
|
||||
|
||||
HGLOBAL RenderHDROP(LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl);
|
||||
HGLOBAL RenderSHELLIDLIST (LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl);
|
||||
HGLOBAL RenderSHELLIDLISTOFFSET (LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl);
|
||||
|
@ -144,10 +148,15 @@ void FreeChangeNotifications(void);
|
|||
#define ASK_DELETE_MULTIPLE_ITEM 3
|
||||
#define ASK_CREATE_FOLDER 4
|
||||
#define ASK_OVERWRITE_FILE 5
|
||||
#define ASK_DELETE_SELECTED 6
|
||||
#define ASK_TRASH_FILE 7
|
||||
#define ASK_TRASH_FOLDER 8
|
||||
#define ASK_TRASH_MULTIPLE_ITEM 9
|
||||
#define ASK_CANT_TRASH_ITEM 10
|
||||
#define ASK_OVERWRITE_FOLDER 11
|
||||
|
||||
BOOL SHELL_DeleteDirectoryA(LPCSTR pszDir, BOOL bShowUI);
|
||||
BOOL SHELL_DeleteFileA(LPCSTR pszFile, BOOL bShowUI);
|
||||
BOOL SHELL_ConfirmDialog(int nKindOfDialog, LPCSTR szDir);
|
||||
BOOL SHELL_DeleteDirectoryW(HWND hwnd, LPCWSTR pwszDir, BOOL bShowUI);
|
||||
BOOL SHELL_ConfirmYesNoW(HWND hWnd, int nKindOfDialog, LPCWSTR szDir);
|
||||
|
||||
/* 16-bit functions */
|
||||
void WINAPI DragAcceptFiles16(HWND16 hWnd, BOOL16 b);
|
||||
|
@ -166,7 +175,7 @@ BOOL16 WINAPI AboutDlgProc16(HWND16,UINT16,WPARAM16,LPARAM);
|
|||
void WINAPI _InsertMenuItem (HMENU hmenu, UINT indexMenu, BOOL fByPosition,
|
||||
UINT wID, UINT fType, LPCSTR dwTypeData, UINT fState);
|
||||
|
||||
inline static BOOL SHELL_OsIsUnicode(void)
|
||||
static inline BOOL SHELL_OsIsUnicode(void)
|
||||
{
|
||||
/* if high-bit of version is 0, we are emulating NT */
|
||||
return !(GetVersion() & 0x80000000);
|
||||
|
@ -177,26 +186,26 @@ inline static BOOL SHELL_OsIsUnicode(void)
|
|||
SHFree(*ptr); \
|
||||
*ptr = NULL; \
|
||||
};
|
||||
inline static void __SHCloneStrA(char ** target,const char * source)
|
||||
static inline void __SHCloneStrA(char ** target,const char * source)
|
||||
{
|
||||
*target = (char*)SHAlloc(strlen(source)+1);
|
||||
*target = SHAlloc(strlen(source)+1);
|
||||
strcpy(*target, source);
|
||||
}
|
||||
|
||||
inline static void __SHCloneStrWtoA(char ** target, const WCHAR * source)
|
||||
static inline void __SHCloneStrWtoA(char ** target, const WCHAR * source)
|
||||
{
|
||||
int len = WideCharToMultiByte(CP_ACP, 0, source, -1, NULL, 0, NULL, NULL);
|
||||
*target = SHAlloc(len);
|
||||
WideCharToMultiByte(CP_ACP, 0, source, -1, *target, len, NULL, NULL);
|
||||
}
|
||||
|
||||
inline static void __SHCloneStrW(WCHAR ** target, const WCHAR * source)
|
||||
static inline void __SHCloneStrW(WCHAR ** target, const WCHAR * source)
|
||||
{
|
||||
*target = (WCHAR*)SHAlloc( (strlenW(source)+1) * sizeof(WCHAR) );
|
||||
strcpyW(*target, source);
|
||||
*target = SHAlloc( (lstrlenW(source)+1) * sizeof(WCHAR) );
|
||||
lstrcpyW(*target, source);
|
||||
}
|
||||
|
||||
inline static WCHAR * __SHCloneStrAtoW(WCHAR ** target, const char * source)
|
||||
static inline WCHAR * __SHCloneStrAtoW(WCHAR ** target, const char * source)
|
||||
{
|
||||
int len = MultiByteToWideChar(CP_ACP, 0, source, -1, NULL, 0);
|
||||
*target = SHAlloc(len*sizeof(WCHAR));
|
||||
|
@ -230,7 +239,6 @@ HRESULT SHELL_RegisterShellFolders(void);
|
|||
/* Detect Shell Links */
|
||||
BOOL SHELL_IsShortcut(LPCITEMIDLIST);
|
||||
|
||||
#define MAX_PROPERTY_SHEET_PAGE 32
|
||||
INT_PTR CALLBACK SH_FileGeneralDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
INT_PTR CALLBACK SH_FileVersionDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
HPROPSHEETPAGE SH_CreatePropertySheetPage(LPSTR resname, DLGPROC dlgproc, LPARAM lParam);
|
||||
|
|
|
@ -15,6 +15,6 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#ifndef __WINE_SHELLFOLDER_HELP_H
|
||||
|
@ -46,8 +46,8 @@ DECLARE_INTERFACE_(ISFHelper,IUnknown)
|
|||
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
||||
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
||||
/*** ISFHelper methods ***/
|
||||
STDMETHOD(GetUniqueName)(THIS_ LPSTR lpName, UINT uLen) PURE;
|
||||
STDMETHOD(AddFolder)(THIS_ HWND hwnd, LPCSTR lpName, LPITEMIDLIST * ppidlOut) PURE;
|
||||
STDMETHOD(GetUniqueName)(THIS_ LPWSTR lpName, UINT uLen) PURE;
|
||||
STDMETHOD(AddFolder)(THIS_ HWND hwnd, LPCWSTR lpName, LPITEMIDLIST * ppidlOut) PURE;
|
||||
STDMETHOD(DeleteItems)(THIS_ UINT cidl, LPCITEMIDLIST * apidl) PURE;
|
||||
STDMETHOD(CopyItems)(THIS_ IShellFolder * pSFFrom, UINT cidl, LPCITEMIDLIST * apidl) PURE;
|
||||
};
|
||||
|
|
|
@ -16,10 +16,10 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*
|
||||
* NOTES
|
||||
* Nearly complete informations about the binary formats
|
||||
* Nearly complete information about the binary formats
|
||||
* of .lnk files available at http://www.wotsit.org
|
||||
*
|
||||
* You can use winedump to examine the contents of a link file:
|
||||
|
@ -87,6 +87,7 @@ typedef struct _LINK_HEADER
|
|||
|
||||
#define SHLINK_LOCAL 0
|
||||
#define SHLINK_REMOTE 1
|
||||
#define MAX_PROPERTY_SHEET_PAGE 32
|
||||
|
||||
typedef struct _LOCATION_INFO
|
||||
{
|
||||
|
@ -140,7 +141,7 @@ typedef struct
|
|||
|
||||
LONG ref;
|
||||
|
||||
/* data structures according to the informations in the link */
|
||||
/* data structures according to the information in the link */
|
||||
LPITEMIDLIST pPidl;
|
||||
WORD wHotKey;
|
||||
SYSTEMTIME time1;
|
||||
|
@ -157,13 +158,12 @@ typedef struct
|
|||
LPWSTR sPathRel;
|
||||
LPWSTR sProduct;
|
||||
LPWSTR sComponent;
|
||||
volume_info volume;
|
||||
LPWSTR sLinkPath;
|
||||
BOOL bRunAs;
|
||||
volume_info volume;
|
||||
|
||||
BOOL bDirty;
|
||||
INT iIdOpen; /* id of the "Open" entry in the context menu */
|
||||
INT iIdProperties;
|
||||
INT iIdProperties; /* id of the "Properties" entry in the context menu */
|
||||
IUnknown *site;
|
||||
} IShellLinkImpl;
|
||||
|
||||
|
@ -202,10 +202,10 @@ static inline IShellLinkImpl *impl_from_IObjectWithSite( IObjectWithSite *iface
|
|||
return (IShellLinkImpl *)((char*)iface - FIELD_OFFSET(IShellLinkImpl, lpvtblObjectWithSite));
|
||||
}
|
||||
|
||||
static HRESULT ShellLink_UpdatePath(LPWSTR sPathRel, LPCWSTR path, LPCWSTR sWorkDir, LPWSTR* psPath);
|
||||
static HRESULT ShellLink_UpdatePath(LPCWSTR sPathRel, LPCWSTR path, LPCWSTR sWorkDir, LPWSTR* psPath);
|
||||
|
||||
/* strdup on the process heap */
|
||||
inline static LPWSTR HEAP_strdupAtoW( HANDLE heap, DWORD flags, LPCSTR str)
|
||||
static inline LPWSTR HEAP_strdupAtoW( HANDLE heap, DWORD flags, LPCSTR str)
|
||||
{
|
||||
INT len = MultiByteToWideChar( CP_ACP, 0, str, -1, NULL, 0 );
|
||||
LPWSTR p = HeapAlloc( heap, flags, len*sizeof (WCHAR) );
|
||||
|
@ -215,7 +215,7 @@ inline static LPWSTR HEAP_strdupAtoW( HANDLE heap, DWORD flags, LPCSTR str)
|
|||
return p;
|
||||
}
|
||||
|
||||
inline static LPWSTR strdupW( LPCWSTR src )
|
||||
static inline LPWSTR strdupW( LPCWSTR src )
|
||||
{
|
||||
LPWSTR dest;
|
||||
if (!src) return NULL;
|
||||
|
@ -284,7 +284,7 @@ static ULONG ShellLink_AddRef( IShellLinkImpl *This )
|
|||
{
|
||||
ULONG refCount = InterlockedIncrement(&This->ref);
|
||||
|
||||
TRACE("(%p)->(count=%lu)\n", This, refCount - 1);
|
||||
TRACE("(%p)->(count=%u)\n", This, refCount - 1);
|
||||
|
||||
return refCount;
|
||||
}
|
||||
|
@ -296,7 +296,7 @@ static ULONG ShellLink_Release( IShellLinkImpl *This )
|
|||
{
|
||||
ULONG refCount = InterlockedDecrement(&This->ref);
|
||||
|
||||
TRACE("(%p)->(count=%lu)\n", This, refCount + 1);
|
||||
TRACE("(%p)->(count=%u)\n", This, refCount + 1);
|
||||
|
||||
if (refCount)
|
||||
return refCount;
|
||||
|
@ -310,7 +310,6 @@ static ULONG ShellLink_Release( IShellLinkImpl *This )
|
|||
HeapFree(GetProcessHeap(),0,This->sPath);
|
||||
HeapFree(GetProcessHeap(),0,This->sLinkPath);
|
||||
|
||||
|
||||
if (This->site)
|
||||
IUnknown_Release( This->site );
|
||||
|
||||
|
@ -385,7 +384,7 @@ static HRESULT WINAPI IPersistFile_fnLoad(IPersistFile* iface, LPCOLESTR pszFile
|
|||
HRESULT r;
|
||||
IStream *stm;
|
||||
|
||||
TRACE("(%p, %s, %lx)\n",This, debugstr_w(pszFileName), dwMode);
|
||||
TRACE("(%p, %s, %x)\n",This, debugstr_w(pszFileName), dwMode);
|
||||
|
||||
if( dwMode == 0 )
|
||||
dwMode = STGM_READ | STGM_SHARE_DENY_WRITE;
|
||||
|
@ -399,7 +398,7 @@ static HRESULT WINAPI IPersistFile_fnLoad(IPersistFile* iface, LPCOLESTR pszFile
|
|||
IStream_Release( stm );
|
||||
This->bDirty = FALSE;
|
||||
}
|
||||
TRACE("-- returning hr %08lx\n", r);
|
||||
TRACE("-- returning hr %08x\n", r);
|
||||
return r;
|
||||
}
|
||||
|
||||
|
@ -407,11 +406,12 @@ static BOOL StartLinkProcessor( LPCOLESTR szLink )
|
|||
{
|
||||
static const WCHAR szFormat[] = {
|
||||
'w','i','n','e','m','e','n','u','b','u','i','l','d','e','r','.','e','x','e',
|
||||
' ','-','r',' ','"','%','s','"',0 };
|
||||
' ','-','w',' ','"','%','s','"',0 };
|
||||
LONG len;
|
||||
LPWSTR buffer;
|
||||
STARTUPINFOW si;
|
||||
PROCESS_INFORMATION pi;
|
||||
BOOL ret;
|
||||
|
||||
len = sizeof(szFormat) + lstrlenW( szLink ) * sizeof(WCHAR);
|
||||
buffer = HeapAlloc( GetProcessHeap(), 0, len );
|
||||
|
@ -424,16 +424,18 @@ static BOOL StartLinkProcessor( LPCOLESTR szLink )
|
|||
|
||||
memset(&si, 0, sizeof(si));
|
||||
si.cb = sizeof(si);
|
||||
if (!CreateProcessW( NULL, buffer, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) return FALSE;
|
||||
|
||||
/* wait for a while to throttle the creation of linker processes */
|
||||
if( WAIT_OBJECT_0 != WaitForSingleObject( pi.hProcess, 10000 ) )
|
||||
WARN("Timed out waiting for shell linker\n");
|
||||
ret = CreateProcessW( NULL, buffer, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi );
|
||||
|
||||
CloseHandle( pi.hProcess );
|
||||
CloseHandle( pi.hThread );
|
||||
HeapFree( GetProcessHeap(), 0, buffer );
|
||||
|
||||
return TRUE;
|
||||
if (ret)
|
||||
{
|
||||
CloseHandle( pi.hProcess );
|
||||
CloseHandle( pi.hThread );
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI IPersistFile_fnSave(IPersistFile* iface, LPCOLESTR pszFileName, BOOL fRemember)
|
||||
|
@ -592,8 +594,12 @@ static HRESULT Stream_LoadString( IStream* stm, BOOL unicode, LPWSTR *pstr )
|
|||
{
|
||||
count = MultiByteToWideChar( CP_ACP, 0, (LPSTR) temp, len, NULL, 0 );
|
||||
str = HeapAlloc( GetProcessHeap(), 0, (count+1)*sizeof (WCHAR) );
|
||||
if( str )
|
||||
MultiByteToWideChar( CP_ACP, 0, (LPSTR) temp, len, str, count );
|
||||
if( !str )
|
||||
{
|
||||
HeapFree( GetProcessHeap(), 0, temp );
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
MultiByteToWideChar( CP_ACP, 0, (LPSTR) temp, len, str, count );
|
||||
HeapFree( GetProcessHeap(), 0, temp );
|
||||
}
|
||||
else
|
||||
|
@ -636,7 +642,7 @@ static HRESULT Stream_ReadChunk( IStream* stm, LPVOID *data )
|
|||
return E_FAIL;
|
||||
}
|
||||
|
||||
TRACE("Read %ld bytes\n",chunk->size);
|
||||
TRACE("Read %d bytes\n",chunk->size);
|
||||
|
||||
*data = (LPVOID) chunk;
|
||||
|
||||
|
@ -665,7 +671,7 @@ static BOOL Stream_LoadVolume( LOCAL_VOLUME_INFO *vol, volume_info *volume )
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static LPWSTR Stream_LoadPath( LPSTR p, DWORD maxlen )
|
||||
static LPWSTR Stream_LoadPath( LPCSTR p, DWORD maxlen )
|
||||
{
|
||||
int len = 0, wlen;
|
||||
LPWSTR path;
|
||||
|
@ -694,7 +700,7 @@ static HRESULT Stream_LoadLocation( IStream *stm,
|
|||
return r;
|
||||
|
||||
loc = (LOCATION_INFO*) p;
|
||||
if (loc->dwTotalSize < sizeof(LOCATION_INFO) - sizeof(DWORD))
|
||||
if (loc->dwTotalSize < sizeof(LOCATION_INFO))
|
||||
{
|
||||
HeapFree( GetProcessHeap(), 0, p );
|
||||
return E_FAIL;
|
||||
|
@ -715,7 +721,7 @@ static HRESULT Stream_LoadLocation( IStream *stm,
|
|||
if( n && (n < loc->dwTotalSize) )
|
||||
*path = Stream_LoadPath( &p[n], loc->dwTotalSize - n );
|
||||
|
||||
TRACE("type %ld serial %08lx name %s path %s\n", volume->type,
|
||||
TRACE("type %d serial %08x name %s path %s\n", volume->type,
|
||||
volume->serial, debugstr_w(volume->label), debugstr_w(*path));
|
||||
|
||||
HeapFree( GetProcessHeap(), 0, p );
|
||||
|
@ -764,11 +770,11 @@ static HRESULT Stream_LoadAdvertiseInfo( IStream* stm, LPWSTR *str )
|
|||
if( count != size )
|
||||
return E_FAIL;
|
||||
|
||||
TRACE("magic %08lx string = %s\n", buffer.dbh.dwSignature, debugstr_w(buffer.szwDarwinID));
|
||||
TRACE("magic %08x string = %s\n", buffer.dbh.dwSignature, debugstr_w(buffer.szwDarwinID));
|
||||
|
||||
if( (buffer.dbh.dwSignature&0xffff0000) != 0xa0000000 )
|
||||
{
|
||||
ERR("Unknown magic number %08lx in advertised shortcut\n", buffer.dbh.dwSignature);
|
||||
ERR("Unknown magic number %08x in advertised shortcut\n", buffer.dbh.dwSignature);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
|
@ -1066,10 +1072,7 @@ static HRESULT WINAPI IPersistStream_fnSave(
|
|||
IStream* stm,
|
||||
BOOL fClearDirty)
|
||||
{
|
||||
static const WCHAR wOpen[] = {'o','p','e','n',0};
|
||||
|
||||
LINK_HEADER header;
|
||||
WCHAR exePath[MAX_PATH];
|
||||
ULONG count;
|
||||
DWORD zero;
|
||||
HRESULT r;
|
||||
|
@ -1078,20 +1081,6 @@ static HRESULT WINAPI IPersistStream_fnSave(
|
|||
|
||||
TRACE("%p %p %x\n", This, stm, fClearDirty);
|
||||
|
||||
*exePath = '\0';
|
||||
|
||||
if (This->sPath)
|
||||
{
|
||||
SHELL_FindExecutable(NULL, This->sPath, wOpen, exePath, MAX_PATH,
|
||||
NULL, NULL, NULL, NULL);
|
||||
/*
|
||||
* windows can create lnk files to executables that do not exist yet
|
||||
* so if the executable does not exist the just trust the path they
|
||||
* gave us
|
||||
*/
|
||||
if (!*exePath) lstrcpyW(exePath,This->sPath);
|
||||
}
|
||||
|
||||
memset(&header, 0, sizeof(header));
|
||||
header.dwSize = sizeof(header);
|
||||
header.fStartup = This->iShowCmd;
|
||||
|
@ -1145,7 +1134,7 @@ static HRESULT WINAPI IPersistStream_fnSave(
|
|||
}
|
||||
|
||||
if( This->sPath )
|
||||
Stream_WriteLocationInfo( stm, exePath, &This->volume );
|
||||
Stream_WriteLocationInfo( stm, This->sPath, &This->volume );
|
||||
|
||||
if( This->sDescription )
|
||||
r = Stream_WriteString( stm, This->sDescription );
|
||||
|
@ -1231,9 +1220,9 @@ HRESULT WINAPI IShellLink_Constructor( IUnknown *pUnkOuter,
|
|||
sl->lpvtblObjectWithSite = &owsvt;
|
||||
sl->iShowCmd = SW_SHOWNORMAL;
|
||||
sl->bDirty = FALSE;
|
||||
sl->bRunAs = FALSE;
|
||||
sl->iIdOpen = -1;
|
||||
sl->site = NULL;
|
||||
sl->bRunAs = FALSE;
|
||||
|
||||
TRACE("(%p)->()\n",sl);
|
||||
|
||||
|
@ -1254,7 +1243,7 @@ static BOOL SHELL_ExistsFileW(LPCWSTR path)
|
|||
* ShellLink_UpdatePath
|
||||
* update absolute path in sPath using relative path in sPathRel
|
||||
*/
|
||||
static HRESULT ShellLink_UpdatePath(LPWSTR sPathRel, LPCWSTR path, LPCWSTR sWorkDir, LPWSTR* psPath)
|
||||
static HRESULT ShellLink_UpdatePath(LPCWSTR sPathRel, LPCWSTR path, LPCWSTR sWorkDir, LPWSTR* psPath)
|
||||
{
|
||||
if (!path || !psPath)
|
||||
return E_INVALIDARG;
|
||||
|
@ -1371,7 +1360,7 @@ static HRESULT WINAPI IShellLinkA_fnGetPath(IShellLinkA * iface, LPSTR pszFile,
|
|||
{
|
||||
IShellLinkImpl *This = (IShellLinkImpl *)iface;
|
||||
|
||||
TRACE("(%p)->(pfile=%p len=%u find_data=%p flags=%lu)(%s)\n",
|
||||
TRACE("(%p)->(pfile=%p len=%u find_data=%p flags=%u)(%s)\n",
|
||||
This, pszFile, cchMaxPath, pfd, fFlags, debugstr_w(This->sPath));
|
||||
|
||||
if (This->sComponent || This->sProduct)
|
||||
|
@ -1548,7 +1537,8 @@ static HRESULT WINAPI IShellLinkA_fnSetShowCmd(IShellLinkA * iface, INT iShowCmd
|
|||
return NOERROR;
|
||||
}
|
||||
|
||||
static HRESULT SHELL_PidlGeticonLocationA(IShellFolder* psf, LPITEMIDLIST pidl, LPSTR pszIconPath, int cchIconPath, int* piIcon)
|
||||
static HRESULT SHELL_PidlGeticonLocationA(IShellFolder* psf, LPCITEMIDLIST pidl,
|
||||
LPSTR pszIconPath, int cchIconPath, int* piIcon)
|
||||
{
|
||||
LPCITEMIDLIST pidlLast;
|
||||
|
||||
|
@ -1643,7 +1633,7 @@ static HRESULT WINAPI IShellLinkA_fnSetRelativePath(IShellLinkA * iface, LPCSTR
|
|||
{
|
||||
IShellLinkImpl *This = (IShellLinkImpl *)iface;
|
||||
|
||||
TRACE("(%p)->(path=%s %lx)\n",This, pszPathRel, dwReserved);
|
||||
TRACE("(%p)->(path=%s %x)\n",This, pszPathRel, dwReserved);
|
||||
|
||||
HeapFree(GetProcessHeap(), 0, This->sPathRel);
|
||||
This->sPathRel = HEAP_strdupAtoW(GetProcessHeap(), 0, pszPathRel);
|
||||
|
@ -1656,7 +1646,7 @@ static HRESULT WINAPI IShellLinkA_fnResolve(IShellLinkA * iface, HWND hwnd, DWOR
|
|||
{
|
||||
IShellLinkImpl *This = (IShellLinkImpl *)iface;
|
||||
|
||||
TRACE("(%p)->(hwnd=%p flags=%lx)\n",This, hwnd, fFlags);
|
||||
TRACE("(%p)->(hwnd=%p flags=%x)\n",This, hwnd, fFlags);
|
||||
|
||||
return IShellLinkW_Resolve( (IShellLinkW*)&(This->lpvtblw), hwnd, fFlags );
|
||||
}
|
||||
|
@ -1741,7 +1731,7 @@ static HRESULT WINAPI IShellLinkW_fnGetPath(IShellLinkW * iface, LPWSTR pszFile,
|
|||
{
|
||||
IShellLinkImpl *This = impl_from_IShellLinkW(iface);
|
||||
|
||||
TRACE("(%p)->(pfile=%p len=%u find_data=%p flags=%lu)(%s)\n",
|
||||
TRACE("(%p)->(pfile=%p len=%u find_data=%p flags=%u)(%s)\n",
|
||||
This, pszFile, cchMaxPath, pfd, fFlags, debugstr_w(This->sPath));
|
||||
|
||||
if (This->sComponent || This->sProduct)
|
||||
|
@ -1764,7 +1754,10 @@ static HRESULT WINAPI IShellLinkW_fnGetIDList(IShellLinkW * iface, LPITEMIDLIST
|
|||
TRACE("(%p)->(ppidl=%p)\n",This, ppidl);
|
||||
|
||||
if (!This->pPidl)
|
||||
{
|
||||
*ppidl = NULL;
|
||||
return S_FALSE;
|
||||
}
|
||||
*ppidl = ILClone(This->pPidl);
|
||||
return S_OK;
|
||||
}
|
||||
|
@ -1923,7 +1916,8 @@ static HRESULT WINAPI IShellLinkW_fnSetShowCmd(IShellLinkW * iface, INT iShowCmd
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT SHELL_PidlGeticonLocationW(IShellFolder* psf, LPITEMIDLIST pidl, LPWSTR pszIconPath, int cchIconPath, int* piIcon)
|
||||
static HRESULT SHELL_PidlGeticonLocationW(IShellFolder* psf, LPCITEMIDLIST pidl,
|
||||
LPWSTR pszIconPath, int cchIconPath, int* piIcon)
|
||||
{
|
||||
LPCITEMIDLIST pidlLast;
|
||||
|
||||
|
@ -2020,7 +2014,7 @@ static HRESULT WINAPI IShellLinkW_fnSetRelativePath(IShellLinkW * iface, LPCWSTR
|
|||
{
|
||||
IShellLinkImpl *This = impl_from_IShellLinkW(iface);
|
||||
|
||||
TRACE("(%p)->(path=%s %lx)\n",This, debugstr_w(pszPathRel), dwReserved);
|
||||
TRACE("(%p)->(path=%s %x)\n",This, debugstr_w(pszPathRel), dwReserved);
|
||||
|
||||
HeapFree(GetProcessHeap(), 0, This->sPathRel);
|
||||
This->sPathRel = HeapAlloc( GetProcessHeap(), 0,
|
||||
|
@ -2040,7 +2034,7 @@ static HRESULT WINAPI IShellLinkW_fnResolve(IShellLinkW * iface, HWND hwnd, DWOR
|
|||
|
||||
IShellLinkImpl *This = impl_from_IShellLinkW(iface);
|
||||
|
||||
TRACE("(%p)->(hwnd=%p flags=%lx)\n",This, hwnd, fFlags);
|
||||
TRACE("(%p)->(hwnd=%p flags=%x)\n",This, hwnd, fFlags);
|
||||
|
||||
/*FIXME: use IResolveShellLink interface */
|
||||
|
||||
|
@ -2158,7 +2152,7 @@ static HRESULT ShellLink_SetAdvertiseInfo(IShellLinkImpl *This, LPCWSTR str)
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
static BOOL ShellLink_GetVolumeInfo(LPWSTR path, volume_info *volume)
|
||||
static BOOL ShellLink_GetVolumeInfo(LPCWSTR path, volume_info *volume)
|
||||
{
|
||||
const int label_sz = sizeof volume->label/sizeof volume->label[0];
|
||||
WCHAR drive[4] = { path[0], ':', '\\', 0 };
|
||||
|
@ -2167,7 +2161,7 @@ static BOOL ShellLink_GetVolumeInfo(LPWSTR path, volume_info *volume)
|
|||
volume->type = GetDriveTypeW(drive);
|
||||
r = GetVolumeInformationW(drive, volume->label, label_sz,
|
||||
&volume->serial, NULL, NULL, NULL, 0);
|
||||
TRACE("r = %d type %ld serial %08lx name %s\n", r,
|
||||
TRACE("r = %d type %d serial %08x name %s\n", r,
|
||||
volume->type, volume->serial, debugstr_w(volume->label));
|
||||
return r;
|
||||
}
|
||||
|
@ -2176,11 +2170,25 @@ static HRESULT WINAPI IShellLinkW_fnSetPath(IShellLinkW * iface, LPCWSTR pszFile
|
|||
{
|
||||
IShellLinkImpl *This = impl_from_IShellLinkW(iface);
|
||||
WCHAR buffer[MAX_PATH];
|
||||
LPWSTR fname;
|
||||
LPWSTR fname, unquoted = NULL;
|
||||
HRESULT hr = S_OK;
|
||||
UINT len;
|
||||
|
||||
TRACE("(%p)->(path=%s)\n",This, debugstr_w(pszFile));
|
||||
|
||||
/* quotes at the ends of the string are stripped */
|
||||
len = lstrlenW(pszFile);
|
||||
if (pszFile[0] == '"' && pszFile[len-1] == '"')
|
||||
{
|
||||
unquoted = strdupW(pszFile);
|
||||
PathUnquoteSpacesW(unquoted);
|
||||
pszFile = unquoted;
|
||||
}
|
||||
|
||||
/* any other quote marks are invalid */
|
||||
if (strchrW(pszFile, '"'))
|
||||
return S_FALSE;
|
||||
|
||||
HeapFree(GetProcessHeap(), 0, This->sPath);
|
||||
This->sPath = NULL;
|
||||
|
||||
|
@ -2197,8 +2205,9 @@ static HRESULT WINAPI IShellLinkW_fnSetPath(IShellLinkW * iface, LPCWSTR pszFile
|
|||
*buffer = '\0';
|
||||
else if (!GetFullPathNameW(pszFile, MAX_PATH, buffer, &fname))
|
||||
return E_FAIL;
|
||||
else if(!PathFileExistsW(buffer))
|
||||
hr = S_FALSE;
|
||||
else if(!PathFileExistsW(buffer) &&
|
||||
!SearchPathW(NULL, pszFile, NULL, MAX_PATH, buffer, NULL))
|
||||
hr = S_FALSE;
|
||||
|
||||
This->pPidl = SHSimpleIDListFromPathW(pszFile);
|
||||
ShellLink_GetVolumeInfo(buffer, &This->volume);
|
||||
|
@ -2211,6 +2220,7 @@ static HRESULT WINAPI IShellLinkW_fnSetPath(IShellLinkW * iface, LPCWSTR pszFile
|
|||
lstrcpyW(This->sPath, buffer);
|
||||
}
|
||||
This->bDirty = TRUE;
|
||||
HeapFree(GetProcessHeap(), 0, unquoted);
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
@ -2279,7 +2289,7 @@ ShellLink_CopyDataBlock( IShellLinkDataList* iface, DWORD dwSig, void** ppDataBl
|
|||
LPVOID block = NULL;
|
||||
HRESULT r = E_FAIL;
|
||||
|
||||
TRACE("%p %08lx %p\n", iface, dwSig, ppDataBlock );
|
||||
TRACE("%p %08x %p\n", iface, dwSig, ppDataBlock );
|
||||
|
||||
switch (dwSig)
|
||||
{
|
||||
|
@ -2294,10 +2304,10 @@ ShellLink_CopyDataBlock( IShellLinkDataList* iface, DWORD dwSig, void** ppDataBl
|
|||
case NT_FE_CONSOLE_PROPS_SIG:
|
||||
case EXP_SPECIAL_FOLDER_SIG:
|
||||
case EXP_SZ_ICON_SIG:
|
||||
FIXME("valid but unhandled datablock %08lx\n", dwSig);
|
||||
FIXME("valid but unhandled datablock %08x\n", dwSig);
|
||||
break;
|
||||
default:
|
||||
ERR("unknown datablock %08lx\n", dwSig);
|
||||
ERR("unknown datablock %08x\n", dwSig);
|
||||
}
|
||||
*ppDataBlock = block;
|
||||
return r;
|
||||
|
@ -2460,12 +2470,12 @@ ShellLink_QueryContextMenu( IContextMenu* iface, HMENU hmenu, UINT indexMenu,
|
|||
UINT idCmdFirst, UINT idCmdLast, UINT uFlags )
|
||||
{
|
||||
IShellLinkImpl *This = impl_from_IContextMenu(iface);
|
||||
static const WCHAR szOpen[] = { 'O','p','e','n',0 };
|
||||
static const WCHAR szProperties[] = { 'P','r','o','p','e','r','t','i','e','s',0 };
|
||||
static WCHAR szOpen[] = { 'O','p','e','n',0 };
|
||||
static WCHAR szProperties[] = { 'P','r','o','p','e','r','t','i','e','s',0 };
|
||||
MENUITEMINFOW mii;
|
||||
int id = 1;
|
||||
|
||||
TRACE("ShellLink_QueryContextMenu %p %p %u %u %u %u\n", This,
|
||||
TRACE("%p %p %u %u %u %u\n", This,
|
||||
hmenu, indexMenu, idCmdFirst, idCmdLast, uFlags );
|
||||
|
||||
if ( !hmenu )
|
||||
|
@ -2480,13 +2490,9 @@ ShellLink_QueryContextMenu( IContextMenu* iface, HMENU hmenu, UINT indexMenu,
|
|||
mii.fState = MFS_DEFAULT | MFS_ENABLED;
|
||||
mii.fType = MFT_STRING;
|
||||
if (!InsertMenuItemW( hmenu, indexMenu, TRUE, &mii ))
|
||||
{
|
||||
TRACE("ShellLink_QueryContextMenu failed to insert item open");
|
||||
return E_FAIL;
|
||||
}
|
||||
This->iIdOpen = 0;
|
||||
|
||||
|
||||
mii.fState = MFS_ENABLED;
|
||||
mii.dwTypeData = (LPWSTR)szProperties;
|
||||
mii.cch = strlenW( mii.dwTypeData );
|
||||
|
@ -2498,18 +2504,19 @@ ShellLink_QueryContextMenu( IContextMenu* iface, HMENU hmenu, UINT indexMenu,
|
|||
}
|
||||
This->iIdProperties = 1;
|
||||
id++;
|
||||
|
||||
return MAKE_HRESULT( SEVERITY_SUCCESS, 0, id );
|
||||
}
|
||||
|
||||
static LPWSTR
|
||||
shelllink_get_msi_component_path( LPWSTR component )
|
||||
{
|
||||
LPWSTR path = NULL;
|
||||
LPWSTR path;
|
||||
DWORD r, sz = 0;
|
||||
|
||||
r = CommandLineFromMsiDescriptor( component, NULL, &sz );
|
||||
if (r != ERROR_SUCCESS)
|
||||
return path;
|
||||
return NULL;
|
||||
|
||||
sz++;
|
||||
path = HeapAlloc( GetProcessHeap(), 0, sz*sizeof(WCHAR) );
|
||||
|
@ -2525,45 +2532,6 @@ shelllink_get_msi_component_path( LPWSTR component )
|
|||
return path;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* SH_CreatePropertySheetPage [Internal]
|
||||
*
|
||||
* creates a property sheet page from an resource name
|
||||
*
|
||||
*/
|
||||
|
||||
HPROPSHEETPAGE
|
||||
SH_CreatePropertySheetPage(LPSTR resname, DLGPROC dlgproc, LPARAM lParam)
|
||||
{
|
||||
HRSRC hRes;
|
||||
LPVOID lpsztemplate;
|
||||
PROPSHEETPAGEW ppage;
|
||||
|
||||
if (resname == NULL)
|
||||
return (HPROPSHEETPAGE)0;
|
||||
|
||||
hRes = FindResourceA(shell32_hInstance, resname, (LPSTR)RT_DIALOG);
|
||||
|
||||
if (hRes == NULL)
|
||||
{
|
||||
ERR("failed to find resource name\n");
|
||||
return (HPROPSHEETPAGE)0;
|
||||
}
|
||||
lpsztemplate = LoadResource(shell32_hInstance, hRes);
|
||||
if (lpsztemplate == NULL)
|
||||
return (HPROPSHEETPAGE)0;
|
||||
|
||||
memset(&ppage, 0x0, sizeof(PROPSHEETPAGE));
|
||||
ppage.dwSize = sizeof(PROPSHEETPAGEW);
|
||||
ppage.dwFlags = PSP_DLGINDIRECT;
|
||||
ppage.u.pResource = lpsztemplate;
|
||||
ppage.pfnDlgProc = dlgproc;
|
||||
ppage.lParam = lParam;
|
||||
return CreatePropertySheetPageW(&ppage);
|
||||
}
|
||||
|
||||
|
||||
INT_PTR CALLBACK ExtendedShortcutProc(
|
||||
HWND hwndDlg,
|
||||
UINT uMsg,
|
||||
|
@ -2791,7 +2759,7 @@ ShellLink_InvokeCommand( IContextMenu* iface, LPCMINVOKECOMMANDINFO lpici )
|
|||
LPWSTR path = NULL;
|
||||
HRESULT r;
|
||||
|
||||
TRACE("ShellLink_InvokeCommand %p %p\n", This, lpici );
|
||||
TRACE("%p %p\n", This, lpici );
|
||||
|
||||
if ( lpici->cbSize < sizeof (CMINVOKECOMMANDINFO) )
|
||||
return E_INVALIDARG;
|
||||
|
@ -2802,7 +2770,6 @@ ShellLink_InvokeCommand( IContextMenu* iface, LPCMINVOKECOMMANDINFO lpici )
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
if ( lpici->lpVerb != MAKEINTRESOURCEA(This->iIdOpen) )
|
||||
{
|
||||
ERR("Unknown id %d != %d\n", (INT)lpici->lpVerb, This->iIdOpen );
|
||||
|
@ -2847,7 +2814,7 @@ ShellLink_InvokeCommand( IContextMenu* iface, LPCMINVOKECOMMANDINFO lpici )
|
|||
|
||||
memset( &sei, 0, sizeof sei );
|
||||
sei.cbSize = sizeof sei;
|
||||
sei.fMask = SEE_MASK_UNICODE;
|
||||
sei.fMask = SEE_MASK_UNICODE | SEE_MASK_NOCLOSEPROCESS;
|
||||
sei.lpFile = path;
|
||||
sei.nShow = This->iShowCmd;
|
||||
sei.lpIDList = This->pPidl;
|
||||
|
@ -2855,8 +2822,15 @@ ShellLink_InvokeCommand( IContextMenu* iface, LPCMINVOKECOMMANDINFO lpici )
|
|||
sei.lpParameters = args;
|
||||
sei.lpVerb = szOpen;
|
||||
|
||||
if ( ShellExecuteExW( &sei ) && (UINT)sei.hInstApp > 32 )
|
||||
if( ShellExecuteExW( &sei ) )
|
||||
{
|
||||
if ( sei.hProcess )
|
||||
{
|
||||
WaitForSingleObject( sei.hProcess, 10000 );
|
||||
CloseHandle( sei.hProcess );
|
||||
}
|
||||
r = S_OK;
|
||||
}
|
||||
else
|
||||
r = E_FAIL;
|
||||
|
||||
|
@ -2872,7 +2846,7 @@ ShellLink_GetCommandString( IContextMenu* iface, UINT_PTR idCmd, UINT uType,
|
|||
{
|
||||
IShellLinkImpl *This = impl_from_IContextMenu(iface);
|
||||
|
||||
FIXME("%p %u %u %p %p %u\n", This,
|
||||
FIXME("%p %lu %u %p %p %u\n", This,
|
||||
idCmd, uType, pwReserved, pszName, cchMax );
|
||||
|
||||
return E_NOTIMPL;
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
@ -49,18 +49,16 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell);
|
|||
|
||||
extern HRESULT WINAPI IFSFolder_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv);
|
||||
|
||||
const WCHAR sShell32[12] = {'S','H','E','L','L','3','2','.','D','L','L','\0'};
|
||||
const WCHAR sOLE32[10] = {'O','L','E','3','2','.','D','L','L','\0'};
|
||||
static const WCHAR sShell32[12] = {'S','H','E','L','L','3','2','.','D','L','L','\0'};
|
||||
|
||||
HINSTANCE hShellOle32 = 0;
|
||||
/**************************************************************************
|
||||
* Default ClassFactory types
|
||||
*/
|
||||
typedef HRESULT (CALLBACK *LPFNCREATEINSTANCE)(IUnknown* pUnkOuter, REFIID riid, LPVOID* ppvObject);
|
||||
IClassFactory * IDefClF_fnConstructor(LPFNCREATEINSTANCE lpfnCI, PLONG pcRefDll, REFIID riidInst);
|
||||
static IClassFactory * IDefClF_fnConstructor(LPFNCREATEINSTANCE lpfnCI, PLONG pcRefDll, REFIID riidInst);
|
||||
|
||||
/* this table contains all CLSID's of shell32 objects */
|
||||
struct {
|
||||
static const struct {
|
||||
REFIID riid;
|
||||
LPFNCREATEINSTANCE lpfnCI;
|
||||
} InterfaceTable[] = {
|
||||
|
@ -71,15 +69,16 @@ struct {
|
|||
{&CLSID_DragDropHelper, &IDropTargetHelper_Constructor},
|
||||
{&CLSID_ControlPanel, &IControlPanel_Constructor},
|
||||
{&CLSID_AutoComplete, &IAutoComplete_Constructor},
|
||||
#if 0
|
||||
{&CLSID_UnixFolder, &UnixFolder_Constructor},
|
||||
{&CLSID_UnixDosFolder, &UnixDosFolder_Constructor},
|
||||
{&CLSID_FolderShortcut, &FolderShortcut_Constructor},
|
||||
{&CLSID_MyDocuments, &MyDocuments_Constructor},
|
||||
{&CLSID_RecycleBin, &RecycleBin_Constructor},
|
||||
#endif
|
||||
{NULL,NULL}
|
||||
};
|
||||
|
||||
/*************************************************************************
|
||||
* SHCoCreateInstance [SHELL32.102]
|
||||
*
|
||||
* NOTES
|
||||
* exported by ordinal
|
||||
*/
|
||||
|
||||
/* FIXME: this should be SHLWAPI.24 since we can't yet import by ordinal */
|
||||
|
||||
|
@ -99,8 +98,22 @@ DWORD WINAPI __SHGUIDToStringW (REFGUID guid, LPWSTR str)
|
|||
|
||||
}
|
||||
|
||||
/************************************************************************/
|
||||
|
||||
/*************************************************************************
|
||||
* SHCoCreateInstance [SHELL32.102]
|
||||
*
|
||||
* Equivalent to CoCreateInstance. Under Windows 9x this function could sometimes
|
||||
* use the shell32 built-in "mini-COM" without the need to load ole32.dll - see
|
||||
* SHLoadOLE for details.
|
||||
*
|
||||
* Under wine if a "LoadWithoutCOM" value is present or the object resides in
|
||||
* shell32.dll the function will load the object manually without the help of ole32
|
||||
*
|
||||
* NOTES
|
||||
* exported by ordinal
|
||||
*
|
||||
* SEE ALSO
|
||||
* CoCreateInstace, SHLoadOLE
|
||||
*/
|
||||
HRESULT WINAPI SHCoCreateInstance(
|
||||
LPCWSTR aclsid,
|
||||
const CLSID *clsid,
|
||||
|
@ -110,7 +123,7 @@ HRESULT WINAPI SHCoCreateInstance(
|
|||
{
|
||||
DWORD hres;
|
||||
IID iid;
|
||||
CLSID * myclsid = (CLSID*)clsid;
|
||||
const CLSID * myclsid = clsid;
|
||||
WCHAR sKeyName[MAX_PATH];
|
||||
const WCHAR sCLSID[7] = {'C','L','S','I','D','\\','\0'};
|
||||
WCHAR sClassID[60];
|
||||
|
@ -183,7 +196,7 @@ HRESULT WINAPI SHCoCreateInstance(
|
|||
hres = E_ACCESSDENIED;
|
||||
goto end;
|
||||
} else if (! SUCCEEDED(hres = DllGetClassObject(myclsid, &IID_IClassFactory, (LPVOID*)&pcf))) {
|
||||
TRACE("GetClassObject failed 0x%08lx\n", hres);
|
||||
TRACE("GetClassObject failed 0x%08x\n", hres);
|
||||
goto end;
|
||||
}
|
||||
|
||||
|
@ -202,7 +215,7 @@ HRESULT WINAPI SHCoCreateInstance(
|
|||
end:
|
||||
if(hres!=S_OK)
|
||||
{
|
||||
ERR("failed (0x%08lx) to create CLSID:%s IID:%s\n",
|
||||
ERR("failed (0x%08x) to create CLSID:%s IID:%s\n",
|
||||
hres, shdebugstr_guid(myclsid), shdebugstr_guid(refiid));
|
||||
ERR("class not found in registry\n");
|
||||
}
|
||||
|
@ -212,7 +225,8 @@ end:
|
|||
}
|
||||
|
||||
/*************************************************************************
|
||||
* DllGetClassObject [SHELL32.@]
|
||||
* DllGetClassObject [SHELL32.@]
|
||||
* SHDllGetClassObject [SHELL32.128]
|
||||
*/
|
||||
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
|
||||
{
|
||||
|
@ -248,8 +262,16 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
|
|||
/*************************************************************************
|
||||
* SHCLSIDFromString [SHELL32.147]
|
||||
*
|
||||
* Under Windows 9x this was an ANSI version of CLSIDFromString. It also allowed
|
||||
* to avoid dependency on ole32.dll (see SHLoadOLE for details).
|
||||
*
|
||||
* Under Windows NT/2000/XP this is equivalent to CLSIDFromString
|
||||
*
|
||||
* NOTES
|
||||
* exported by ordinal
|
||||
*
|
||||
* SEE ALSO
|
||||
* CLSIDFromString, SHLoadOLE
|
||||
*/
|
||||
DWORD WINAPI SHCLSIDFromStringA (LPCSTR clsid, CLSID *id)
|
||||
{
|
||||
|
@ -264,143 +286,19 @@ DWORD WINAPI SHCLSIDFromStringW (LPCWSTR clsid, CLSID *id)
|
|||
TRACE("(%p(%s) %p)\n", clsid, debugstr_w(clsid), id);
|
||||
return CLSIDFromString((LPWSTR)clsid, id);
|
||||
}
|
||||
DWORD WINAPI SHCLSIDFromStringAW (LPVOID clsid, CLSID *id)
|
||||
DWORD WINAPI SHCLSIDFromStringAW (LPCVOID clsid, CLSID *id)
|
||||
{
|
||||
if (SHELL_OsIsUnicode())
|
||||
return SHCLSIDFromStringW (clsid, id);
|
||||
return SHCLSIDFromStringA (clsid, id);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* Shell Memory Allocator
|
||||
*/
|
||||
|
||||
/* set the vtable later */
|
||||
static const IMallocVtbl VT_Shell_IMalloc32;
|
||||
|
||||
/* this is the static object instance */
|
||||
typedef struct {
|
||||
const IMallocVtbl *lpVtbl;
|
||||
DWORD dummy;
|
||||
} _ShellMalloc;
|
||||
|
||||
static _ShellMalloc Shell_Malloc = { &VT_Shell_IMalloc32,1};
|
||||
|
||||
/* this is the global allocator of shell32 */
|
||||
static IMalloc * ShellTaskAllocator = NULL;
|
||||
|
||||
/******************************************************************************
|
||||
* IShellMalloc_QueryInterface [VTABLE]
|
||||
*/
|
||||
static HRESULT WINAPI IShellMalloc_fnQueryInterface(LPMALLOC iface, REFIID refiid, LPVOID *obj)
|
||||
{
|
||||
TRACE("(%s,%p)\n",shdebugstr_guid(refiid),obj);
|
||||
if (IsEqualIID(refiid, &IID_IUnknown) || IsEqualIID(refiid, &IID_IMalloc)) {
|
||||
*obj = (LPMALLOC) &Shell_Malloc;
|
||||
return S_OK;
|
||||
}
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* IShellMalloc_AddRefRelease [VTABLE]
|
||||
*/
|
||||
static ULONG WINAPI IShellMalloc_fnAddRefRelease(LPMALLOC iface)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* IShellMalloc_Alloc [VTABLE]
|
||||
*/
|
||||
static LPVOID WINAPI IShellMalloc_fnAlloc(LPMALLOC iface, DWORD cb)
|
||||
{
|
||||
LPVOID addr;
|
||||
|
||||
addr = (LPVOID) LocalAlloc(LMEM_ZEROINIT, cb);
|
||||
TRACE("(%p,%ld);\n",addr,cb);
|
||||
return addr;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* IShellMalloc_Realloc [VTABLE]
|
||||
*/
|
||||
static LPVOID WINAPI IShellMalloc_fnRealloc(LPMALLOC iface, LPVOID pv, DWORD cb)
|
||||
{
|
||||
LPVOID addr;
|
||||
|
||||
if (pv) {
|
||||
if (cb) {
|
||||
addr = (LPVOID) LocalReAlloc((HANDLE) pv, cb, LMEM_ZEROINIT | LMEM_MOVEABLE);
|
||||
} else {
|
||||
LocalFree((HANDLE) pv);
|
||||
addr = NULL;
|
||||
}
|
||||
} else {
|
||||
if (cb) {
|
||||
addr = (LPVOID) LocalAlloc(LMEM_ZEROINIT, cb);
|
||||
} else {
|
||||
addr = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
TRACE("(%p->%p,%ld)\n",pv,addr,cb);
|
||||
return addr;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* IShellMalloc_Free [VTABLE]
|
||||
*/
|
||||
static VOID WINAPI IShellMalloc_fnFree(LPMALLOC iface, LPVOID pv)
|
||||
{
|
||||
TRACE("(%p)\n",pv);
|
||||
LocalFree((HANDLE) pv);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* IShellMalloc_GetSize [VTABLE]
|
||||
*/
|
||||
static DWORD WINAPI IShellMalloc_fnGetSize(LPMALLOC iface, LPVOID pv)
|
||||
{
|
||||
DWORD cb = (DWORD) LocalSize((HANDLE)pv);
|
||||
TRACE("(%p,%ld)\n", pv, cb);
|
||||
return cb;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* IShellMalloc_DidAlloc [VTABLE]
|
||||
*/
|
||||
static INT WINAPI IShellMalloc_fnDidAlloc(LPMALLOC iface, LPVOID pv)
|
||||
{
|
||||
TRACE("(%p)\n",pv);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* IShellMalloc_HeapMinimize [VTABLE]
|
||||
*/
|
||||
static VOID WINAPI IShellMalloc_fnHeapMinimize(LPMALLOC iface)
|
||||
{
|
||||
TRACE("()\n");
|
||||
}
|
||||
|
||||
static const IMallocVtbl VT_Shell_IMalloc32 =
|
||||
{
|
||||
IShellMalloc_fnQueryInterface,
|
||||
IShellMalloc_fnAddRefRelease,
|
||||
IShellMalloc_fnAddRefRelease,
|
||||
IShellMalloc_fnAlloc,
|
||||
IShellMalloc_fnRealloc,
|
||||
IShellMalloc_fnFree,
|
||||
IShellMalloc_fnGetSize,
|
||||
IShellMalloc_fnDidAlloc,
|
||||
IShellMalloc_fnHeapMinimize
|
||||
};
|
||||
|
||||
/*************************************************************************
|
||||
* SHGetMalloc [SHELL32.@]
|
||||
*
|
||||
* Return the shell IMalloc interface.
|
||||
* Equivalent to CoGetMalloc(MEMCTX_TASK, ...). Under Windows 9x this function
|
||||
* could use the shell32 built-in "mini-COM" without the need to load ole32.dll -
|
||||
* see SHLoadOLE for details.
|
||||
*
|
||||
* PARAMS
|
||||
* lpmal [O] Destination for IMalloc interface.
|
||||
|
@ -409,66 +307,54 @@ static const IMallocVtbl VT_Shell_IMalloc32 =
|
|||
* Success: S_OK. lpmal contains the shells IMalloc interface.
|
||||
* Failure. An HRESULT error code.
|
||||
*
|
||||
* NOTES
|
||||
* This function will use CoGetMalloc() if OLE32.DLL is already loaded.
|
||||
* If not it uses an internal implementation as a fallback.
|
||||
* SEE ALSO
|
||||
* CoGetMalloc, SHLoadOLE
|
||||
*/
|
||||
HRESULT WINAPI SHGetMalloc(LPMALLOC *lpmal)
|
||||
{
|
||||
TRACE("(%p)\n", lpmal);
|
||||
|
||||
if (!ShellTaskAllocator)
|
||||
{
|
||||
HMODULE hOle32 = GetModuleHandleA("OLE32.DLL");
|
||||
/* this is very suspect. we should not being using a different
|
||||
* allocator from deallocator based on something undeterministic
|
||||
* like whether ole32 is loaded. as it happens currently, they
|
||||
* both map to the same allocator deep down, but this could
|
||||
* change in the future. */
|
||||
if(hOle32) {
|
||||
CoGetMalloc(MEMCTX_TASK, &ShellTaskAllocator);
|
||||
TRACE("got ole32 IMalloc\n");
|
||||
}
|
||||
if(!ShellTaskAllocator) {
|
||||
ShellTaskAllocator = (IMalloc* ) &Shell_Malloc;
|
||||
TRACE("use fallback allocator\n");
|
||||
}
|
||||
}
|
||||
*lpmal = ShellTaskAllocator;
|
||||
return S_OK;
|
||||
return CoGetMalloc(MEMCTX_TASK, lpmal);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* SHAlloc [SHELL32.196]
|
||||
*
|
||||
* Equivalent to CoTaskMemAlloc. Under Windows 9x this function could use
|
||||
* the shell32 built-in "mini-COM" without the need to load ole32.dll -
|
||||
* see SHLoadOLE for details.
|
||||
*
|
||||
* NOTES
|
||||
* exported by ordinal
|
||||
*
|
||||
* SEE ALSO
|
||||
* CoTaskMemAlloc, SHLoadOLE
|
||||
*/
|
||||
LPVOID WINAPI SHAlloc(DWORD len)
|
||||
{
|
||||
IMalloc * ppv;
|
||||
LPBYTE ret;
|
||||
LPVOID ret;
|
||||
|
||||
if (!ShellTaskAllocator) SHGetMalloc(&ppv);
|
||||
|
||||
ret = (LPVOID) IMalloc_Alloc(ShellTaskAllocator, len);
|
||||
TRACE("%lu bytes at %p\n",len, ret);
|
||||
return (LPVOID)ret;
|
||||
ret = CoTaskMemAlloc(len);
|
||||
TRACE("%u bytes at %p\n",len, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* SHFree [SHELL32.195]
|
||||
*
|
||||
* Equivalent to CoTaskMemFree. Under Windows 9x this function could use
|
||||
* the shell32 built-in "mini-COM" without the need to load ole32.dll -
|
||||
* see SHLoadOLE for details.
|
||||
*
|
||||
* NOTES
|
||||
* exported by ordinal
|
||||
*
|
||||
* SEE ALSO
|
||||
* CoTaskMemFree, SHLoadOLE
|
||||
*/
|
||||
void WINAPI SHFree(LPVOID pv)
|
||||
{
|
||||
IMalloc * ppv;
|
||||
|
||||
TRACE("%p\n",pv);
|
||||
if (!ShellTaskAllocator) SHGetMalloc(&ppv);
|
||||
IMalloc_Free(ShellTaskAllocator, pv);
|
||||
CoTaskMemFree(pv);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
|
@ -513,7 +399,7 @@ static const IClassFactoryVtbl dclfvt;
|
|||
* IDefClF_fnConstructor
|
||||
*/
|
||||
|
||||
IClassFactory * IDefClF_fnConstructor(LPFNCREATEINSTANCE lpfnCI, PLONG pcRefDll, REFIID riidInst)
|
||||
static IClassFactory * IDefClF_fnConstructor(LPFNCREATEINSTANCE lpfnCI, PLONG pcRefDll, REFIID riidInst)
|
||||
{
|
||||
IDefClFImpl* lpclf;
|
||||
|
||||
|
@ -558,7 +444,7 @@ static ULONG WINAPI IDefClF_fnAddRef(LPCLASSFACTORY iface)
|
|||
IDefClFImpl *This = (IDefClFImpl *)iface;
|
||||
ULONG refCount = InterlockedIncrement(&This->ref);
|
||||
|
||||
TRACE("(%p)->(count=%lu)\n", This, refCount - 1);
|
||||
TRACE("(%p)->(count=%u)\n", This, refCount - 1);
|
||||
|
||||
return refCount;
|
||||
}
|
||||
|
@ -570,7 +456,7 @@ static ULONG WINAPI IDefClF_fnRelease(LPCLASSFACTORY iface)
|
|||
IDefClFImpl *This = (IDefClFImpl *)iface;
|
||||
ULONG refCount = InterlockedDecrement(&This->ref);
|
||||
|
||||
TRACE("(%p)->(count=%lu)\n", This, refCount + 1);
|
||||
TRACE("(%p)->(count=%u)\n", This, refCount + 1);
|
||||
|
||||
if (!refCount)
|
||||
{
|
||||
|
@ -737,10 +623,8 @@ UINT WINAPI DragQueryFileA(
|
|||
}
|
||||
|
||||
i = strlen(lpDrop);
|
||||
i++;
|
||||
if (!lpszFile ) goto end; /* needed buffer size */
|
||||
i = (lLength > i) ? i : lLength;
|
||||
lstrcpynA (lpszFile, lpDrop, i);
|
||||
lstrcpynA (lpszFile, lpDrop, lLength);
|
||||
end:
|
||||
GlobalUnlock(hDrop);
|
||||
return i;
|
||||
|
@ -795,11 +679,8 @@ UINT WINAPI DragQueryFileW(
|
|||
}
|
||||
|
||||
i = strlenW(lpwDrop);
|
||||
i++;
|
||||
if ( !lpszwFile) goto end; /* needed buffer size */
|
||||
|
||||
i = (lLength > i) ? i : lLength;
|
||||
lstrcpynW (lpszwFile, lpwDrop, i);
|
||||
lstrcpynW (lpszwFile, lpwDrop, lLength);
|
||||
end:
|
||||
GlobalUnlock(hDrop);
|
||||
return i;
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
#include "config.h"
|
||||
|
||||
|
@ -104,7 +104,7 @@ DWORD WINAPI ParseFieldA(
|
|||
LPSTR dst,
|
||||
DWORD len)
|
||||
{
|
||||
WARN("(%s,0x%08lx,%p,%ld) semi-stub.\n",debugstr_a(src),nField,dst,len);
|
||||
WARN("(%s,0x%08x,%p,%d) semi-stub.\n",debugstr_a(src),nField,dst,len);
|
||||
|
||||
if (!src || !src[0] || !dst || !len)
|
||||
return 0;
|
||||
|
@ -134,7 +134,7 @@ DWORD WINAPI ParseFieldA(
|
|||
*/
|
||||
DWORD WINAPI ParseFieldW(LPCWSTR src, DWORD nField, LPWSTR dst, DWORD len)
|
||||
{
|
||||
WARN("(%s,0x%08lx,%p,%ld) semi-stub.\n", debugstr_w(src), nField, dst, len);
|
||||
WARN("(%s,0x%08x,%p,%d) semi-stub.\n", debugstr_w(src), nField, dst, len);
|
||||
|
||||
if (!src || !src[0] || !dst || !len)
|
||||
return 0;
|
||||
|
@ -183,7 +183,7 @@ BOOL WINAPI GetFileNameFromBrowse(
|
|||
OPENFILENAMEA ofn;
|
||||
BOOL ret;
|
||||
|
||||
TRACE("%p, %s, %ld, %s, %s, %s, %s)\n",
|
||||
TRACE("%p, %s, %d, %s, %s, %s, %s)\n",
|
||||
hwndOwner, lpstrFile, nMaxFile, lpstrInitialDir, lpstrDefExt,
|
||||
lpstrFilter, lpstrTitle);
|
||||
|
||||
|
@ -220,7 +220,7 @@ VOID WINAPI SHGetSetSettings(LPSHELLSTATE lpss, DWORD dwMask, BOOL bSet)
|
|||
{
|
||||
if(bSet)
|
||||
{
|
||||
FIXME("%p 0x%08lx TRUE\n", lpss, dwMask);
|
||||
FIXME("%p 0x%08x TRUE\n", lpss, dwMask);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -242,7 +242,7 @@ VOID WINAPI SHGetSettings(LPSHELLFLAGSTATE lpsfs, DWORD dwMask)
|
|||
DWORD dwData;
|
||||
DWORD dwDataSize = sizeof (DWORD);
|
||||
|
||||
TRACE("(%p 0x%08lx)\n",lpsfs,dwMask);
|
||||
TRACE("(%p 0x%08x)\n",lpsfs,dwMask);
|
||||
|
||||
if (RegCreateKeyExA(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
|
||||
0, 0, 0, KEY_ALL_ACCESS, 0, &hKey, 0))
|
||||
|
@ -330,7 +330,7 @@ BOOL WINAPI RegisterShellHook(
|
|||
HWND hWnd,
|
||||
DWORD dwType)
|
||||
{
|
||||
FIXME("(%p,0x%08lx):stub.\n",hWnd, dwType);
|
||||
FIXME("(%p,0x%08x):stub.\n",hWnd, dwType);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -338,6 +338,12 @@ BOOL WINAPI RegisterShellHook(
|
|||
* ShellMessageBoxW [SHELL32.182]
|
||||
*
|
||||
* See ShellMessageBoxA.
|
||||
*
|
||||
* NOTE:
|
||||
* shlwapi.ShellMessageBoxWrapW is a duplicate of shell32.ShellMessageBoxW
|
||||
* because we can't forward to it in the .spec file since it's exported by
|
||||
* ordinal. If you change the implementation here please update the code in
|
||||
* shlwapi as well.
|
||||
*/
|
||||
int WINAPIV ShellMessageBoxW(
|
||||
HINSTANCE hInstance,
|
||||
|
@ -348,7 +354,8 @@ int WINAPIV ShellMessageBoxW(
|
|||
...)
|
||||
{
|
||||
WCHAR szText[100],szTitle[100];
|
||||
LPCWSTR pszText = szText, pszTitle = szTitle, pszTemp;
|
||||
LPCWSTR pszText = szText, pszTitle = szTitle;
|
||||
LPWSTR pszTemp;
|
||||
va_list args;
|
||||
int ret;
|
||||
|
||||
|
@ -405,7 +412,8 @@ int WINAPIV ShellMessageBoxA(
|
|||
...)
|
||||
{
|
||||
char szText[100],szTitle[100];
|
||||
LPCSTR pszText = szText, pszTitle = szTitle, pszTemp;
|
||||
LPCSTR pszText = szText, pszTitle = szTitle;
|
||||
LPSTR pszTemp;
|
||||
va_list args;
|
||||
int ret;
|
||||
|
||||
|
@ -438,8 +446,15 @@ int WINAPIV ShellMessageBoxA(
|
|||
/*************************************************************************
|
||||
* SHRegisterDragDrop [SHELL32.86]
|
||||
*
|
||||
* Probably equivalent to RegisterDragDrop but under Windows 9x it could use the
|
||||
* shell32 built-in "mini-COM" without the need to load ole32.dll - see SHLoadOLE
|
||||
* for details
|
||||
*
|
||||
* NOTES
|
||||
* exported by ordinal
|
||||
*
|
||||
* SEE ALSO
|
||||
* RegisterDragDrop, SHLoadOLE
|
||||
*/
|
||||
HRESULT WINAPI SHRegisterDragDrop(
|
||||
HWND hWnd,
|
||||
|
@ -452,8 +467,15 @@ HRESULT WINAPI SHRegisterDragDrop(
|
|||
/*************************************************************************
|
||||
* SHRevokeDragDrop [SHELL32.87]
|
||||
*
|
||||
* Probably equivalent to RevokeDragDrop but under Windows 9x it could use the
|
||||
* shell32 built-in "mini-COM" without the need to load ole32.dll - see SHLoadOLE
|
||||
* for details
|
||||
*
|
||||
* NOTES
|
||||
* exported by ordinal
|
||||
*
|
||||
* SEE ALSO
|
||||
* RevokeDragDrop, SHLoadOLE
|
||||
*/
|
||||
HRESULT WINAPI SHRevokeDragDrop(HWND hWnd)
|
||||
{
|
||||
|
@ -464,8 +486,15 @@ HRESULT WINAPI SHRevokeDragDrop(HWND hWnd)
|
|||
/*************************************************************************
|
||||
* SHDoDragDrop [SHELL32.88]
|
||||
*
|
||||
* Probably equivalent to DoDragDrop but under Windows 9x it could use the
|
||||
* shell32 built-in "mini-COM" without the need to load ole32.dll - see SHLoadOLE
|
||||
* for details
|
||||
*
|
||||
* NOTES
|
||||
* exported by ordinal
|
||||
*
|
||||
* SEE ALSO
|
||||
* DoDragDrop, SHLoadOLE
|
||||
*/
|
||||
HRESULT WINAPI SHDoDragDrop(
|
||||
HWND hWnd,
|
||||
|
@ -474,7 +503,7 @@ HRESULT WINAPI SHDoDragDrop(
|
|||
DWORD dwOKEffect,
|
||||
LPDWORD pdwEffect)
|
||||
{
|
||||
FIXME("(%p %p %p 0x%08lx %p):stub.\n",
|
||||
FIXME("(%p %p %p 0x%08x %p):stub.\n",
|
||||
hWnd, lpDataObject, lpDropSource, dwOKEffect, pdwEffect);
|
||||
return DoDragDrop(lpDataObject, lpDropSource, dwOKEffect, pdwEffect);
|
||||
}
|
||||
|
@ -490,7 +519,7 @@ WORD WINAPI ArrangeWindows(
|
|||
WORD cKids,
|
||||
CONST HWND * lpKids)
|
||||
{
|
||||
FIXME("(%p 0x%08lx %p 0x%04x %p):stub.\n",
|
||||
FIXME("(%p 0x%08x %p 0x%04x %p):stub.\n",
|
||||
hwndParent, dwReserved, lpRect, cKids, lpKids);
|
||||
return 0;
|
||||
}
|
||||
|
@ -504,7 +533,7 @@ WORD WINAPI ArrangeWindows(
|
|||
DWORD WINAPI
|
||||
SignalFileOpen (DWORD dwParam1)
|
||||
{
|
||||
FIXME("(0x%08lx):stub.\n", dwParam1);
|
||||
FIXME("(0x%08x):stub.\n", dwParam1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -522,7 +551,7 @@ SignalFileOpen (DWORD dwParam1)
|
|||
* RETURNS
|
||||
* result of the SHQueryValueEx call
|
||||
*/
|
||||
static INT SHADD_get_policy(LPSTR policy, LPDWORD type, LPVOID buffer, LPDWORD len)
|
||||
static INT SHADD_get_policy(LPCSTR policy, LPDWORD type, LPVOID buffer, LPDWORD len)
|
||||
{
|
||||
HKEY Policy_basekey;
|
||||
INT ret;
|
||||
|
@ -580,7 +609,7 @@ static INT CALLBACK SHADD_compare_mru(LPCVOID data1, LPCVOID data2, DWORD cbData
|
|||
* RETURNS
|
||||
* position within MRU list that data was added.
|
||||
*/
|
||||
static INT SHADD_create_add_mru_data(HANDLE mruhandle, LPSTR doc_name, LPSTR new_lnk_name,
|
||||
static INT SHADD_create_add_mru_data(HANDLE mruhandle, LPCSTR doc_name, LPCSTR new_lnk_name,
|
||||
LPSTR buffer, INT *len)
|
||||
{
|
||||
LPSTR ptr;
|
||||
|
@ -680,12 +709,12 @@ void WINAPI SHAddToRecentDocs (UINT uFlags,LPCVOID pv)
|
|||
if (ret == ERROR_SUCCESS) {
|
||||
if (!( (type == REG_DWORD) ||
|
||||
((type == REG_BINARY) && (datalen == 4)) )) {
|
||||
ERR("Error policy data for \"NoRecentDocsHistory\" not formatted correctly, type=%ld, len=%ld\n",
|
||||
ERR("Error policy data for \"NoRecentDocsHistory\" not formatted correctly, type=%d, len=%d\n",
|
||||
type, datalen);
|
||||
return;
|
||||
}
|
||||
|
||||
TRACE("policy value for NoRecentDocsHistory = %08lx\n", data[0]);
|
||||
TRACE("policy value for NoRecentDocsHistory = %08x\n", data[0]);
|
||||
/* now test the actual policy value */
|
||||
if ( data[0] != 0)
|
||||
return;
|
||||
|
@ -814,7 +843,7 @@ void WINAPI SHAddToRecentDocs (UINT uFlags,LPCVOID pv)
|
|||
mymru.dwFlags = MRUF_BINARY_LIST | MRUF_DELAYED_SAVE;
|
||||
mymru.hKey = HCUbasekey;
|
||||
mymru.lpszSubKey = "RecentDocs";
|
||||
mymru.lpfnCompare = &SHADD_compare_mru;
|
||||
mymru.lpfnCompare = (PROC)SHADD_compare_mru;
|
||||
mruhandle = CreateMRUListA(&mymru);
|
||||
if (!mruhandle) {
|
||||
/* MRU failed */
|
||||
|
@ -845,7 +874,7 @@ void WINAPI SHAddToRecentDocs (UINT uFlags,LPCVOID pv)
|
|||
if (!DeleteFileA(old_lnk_name)) {
|
||||
if ((attr = GetFileAttributesA(old_lnk_name)) == INVALID_FILE_ATTRIBUTES) {
|
||||
if ((err = GetLastError()) != ERROR_FILE_NOT_FOUND) {
|
||||
ERR("Delete for %s failed, err=%d, attr=%08lx\n",
|
||||
ERR("Delete for %s failed, err=%d, attr=%08x\n",
|
||||
old_lnk_name, err, attr);
|
||||
}
|
||||
else {
|
||||
|
@ -854,7 +883,7 @@ void WINAPI SHAddToRecentDocs (UINT uFlags,LPCVOID pv)
|
|||
}
|
||||
}
|
||||
else {
|
||||
ERR("Delete for %s failed, attr=%08lx\n",
|
||||
ERR("Delete for %s failed, attr=%08x\n",
|
||||
old_lnk_name, attr);
|
||||
}
|
||||
}
|
||||
|
@ -917,7 +946,7 @@ void WINAPI SHAddToRecentDocs (UINT uFlags,LPCVOID pv)
|
|||
(LPVOID *)&pPf);
|
||||
if(FAILED(hres)) {
|
||||
/* bombed */
|
||||
ERR("failed QueryInterface for IPersistFile %08lx\n", hres);
|
||||
ERR("failed QueryInterface for IPersistFile %08x\n", hres);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
@ -929,7 +958,7 @@ void WINAPI SHAddToRecentDocs (UINT uFlags,LPCVOID pv)
|
|||
}
|
||||
if(FAILED(hres)) {
|
||||
/* bombed */
|
||||
ERR("failed Set{IDList|Path} %08lx\n", hres);
|
||||
ERR("failed Set{IDList|Path} %08x\n", hres);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
@ -938,7 +967,7 @@ void WINAPI SHAddToRecentDocs (UINT uFlags,LPCVOID pv)
|
|||
hres = IShellLinkA_SetDescription(psl, desc);
|
||||
if(FAILED(hres)) {
|
||||
/* bombed */
|
||||
ERR("failed SetDescription %08lx\n", hres);
|
||||
ERR("failed SetDescription %08x\n", hres);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
@ -948,7 +977,7 @@ void WINAPI SHAddToRecentDocs (UINT uFlags,LPCVOID pv)
|
|||
hres = IPersistFile_Save(pPf, widelink, TRUE);
|
||||
if(FAILED(hres)) {
|
||||
/* bombed */
|
||||
ERR("failed IPersistFile::Save %08lx\n", hres);
|
||||
ERR("failed IPersistFile::Save %08x\n", hres);
|
||||
IPersistFile_Release(pPf);
|
||||
IShellLinkA_Release(psl);
|
||||
goto fail;
|
||||
|
@ -956,11 +985,11 @@ void WINAPI SHAddToRecentDocs (UINT uFlags,LPCVOID pv)
|
|||
hres = IPersistFile_SaveCompleted(pPf, widelink);
|
||||
IPersistFile_Release(pPf);
|
||||
IShellLinkA_Release(psl);
|
||||
TRACE("shortcut %s has been created, result=%08lx\n",
|
||||
TRACE("shortcut %s has been created, result=%08x\n",
|
||||
new_lnk_filepath, hres);
|
||||
}
|
||||
else {
|
||||
ERR("CoCreateInstance failed, hres=%08lx\n", hres);
|
||||
ERR("CoCreateInstance failed, hres=%08x\n", hres);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -991,8 +1020,8 @@ HRESULT WINAPI SHCreateShellFolderViewEx(
|
|||
IShellView * psf;
|
||||
HRESULT hRes;
|
||||
|
||||
TRACE("sf=%p cb=%p mode=0x%08x parm=%p\n",
|
||||
psvcbi->pshf, psvcbi->pfnCallback,
|
||||
TRACE("sf=%p pidl=%p cb=%p mode=0x%08x parm=%p\n",
|
||||
psvcbi->pshf, psvcbi->pidl, psvcbi->pfnCallback,
|
||||
psvcbi->fvm, psvcbi->psvOuter);
|
||||
|
||||
psf = IShellView_Constructor(psvcbi->pshf);
|
||||
|
@ -1011,7 +1040,7 @@ HRESULT WINAPI SHCreateShellFolderViewEx(
|
|||
*
|
||||
*/
|
||||
HRESULT WINAPI SHWinHelp (DWORD v, DWORD w, DWORD x, DWORD z)
|
||||
{ FIXME("0x%08lx 0x%08lx 0x%08lx 0x%08lx stub\n",v,w,x,z);
|
||||
{ FIXME("0x%08x 0x%08x 0x%08x 0x%08x stub\n",v,w,x,z);
|
||||
return 0;
|
||||
}
|
||||
/*************************************************************************
|
||||
|
@ -1019,7 +1048,7 @@ HRESULT WINAPI SHWinHelp (DWORD v, DWORD w, DWORD x, DWORD z)
|
|||
*
|
||||
*/
|
||||
HRESULT WINAPI SHRunControlPanel (DWORD x, DWORD z)
|
||||
{ FIXME("0x%08lx 0x%08lx stub\n",x,z);
|
||||
{ FIXME("0x%08x 0x%08x stub\n",x,z);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1040,7 +1069,7 @@ VOID WINAPI SHSetInstanceExplorer (LPUNKNOWN lpUnknown)
|
|||
* NOTES
|
||||
* gets the interface pointer of the explorer and a reference
|
||||
*/
|
||||
HRESULT WINAPI SHGetInstanceExplorer (LPUNKNOWN * lpUnknown)
|
||||
HRESULT WINAPI SHGetInstanceExplorer (IUnknown **lpUnknown)
|
||||
{ TRACE("%p\n", lpUnknown);
|
||||
|
||||
*lpUnknown = SHELL32_IExplorerInterface;
|
||||
|
@ -1054,12 +1083,20 @@ HRESULT WINAPI SHGetInstanceExplorer (LPUNKNOWN * lpUnknown)
|
|||
/*************************************************************************
|
||||
* SHFreeUnusedLibraries [SHELL32.123]
|
||||
*
|
||||
* Probably equivalent to CoFreeUnusedLibraries but under Windows 9x it could use
|
||||
* the shell32 built-in "mini-COM" without the need to load ole32.dll - see SHLoadOLE
|
||||
* for details
|
||||
*
|
||||
* NOTES
|
||||
* exported by name
|
||||
* exported by ordinal
|
||||
*
|
||||
* SEE ALSO
|
||||
* CoFreeUnusedLibraries, SHLoadOLE
|
||||
*/
|
||||
void WINAPI SHFreeUnusedLibraries (void)
|
||||
{
|
||||
FIXME("stub\n");
|
||||
CoFreeUnusedLibraries();
|
||||
}
|
||||
/*************************************************************************
|
||||
* DAD_AutoScroll [SHELL32.129]
|
||||
|
@ -1085,7 +1122,7 @@ BOOL WINAPI DAD_DragEnter(HWND hwnd)
|
|||
*/
|
||||
BOOL WINAPI DAD_DragEnterEx(HWND hwnd, POINT p)
|
||||
{
|
||||
FIXME("hwnd = %p (%ld,%ld)\n",hwnd,p.x,p.y);
|
||||
FIXME("hwnd = %p (%d,%d)\n",hwnd,p.x,p.y);
|
||||
return FALSE;
|
||||
}
|
||||
/*************************************************************************
|
||||
|
@ -1094,7 +1131,7 @@ BOOL WINAPI DAD_DragEnterEx(HWND hwnd, POINT p)
|
|||
*/
|
||||
BOOL WINAPI DAD_DragMove(POINT p)
|
||||
{
|
||||
FIXME("(%ld,%ld)\n",p.x,p.y);
|
||||
FIXME("(%d,%d)\n",p.x,p.y);
|
||||
return FALSE;
|
||||
}
|
||||
/*************************************************************************
|
||||
|
@ -1225,17 +1262,10 @@ BOOL WINAPI FileIconInit(BOOL bFullInit)
|
|||
return 0;
|
||||
}
|
||||
/*************************************************************************
|
||||
* IsUserAnAdmin [SHELL32.680] NT 4.0
|
||||
* IsUserAdmin [SHELL32.680] NT 4.0
|
||||
*
|
||||
* Checks whether the current user is a member of the Administrators group.
|
||||
*
|
||||
* PARAMS
|
||||
* None
|
||||
*
|
||||
* RETURNS
|
||||
* Success: TRUE
|
||||
* Failure: FALSE
|
||||
*/
|
||||
|
||||
BOOL WINAPI IsUserAnAdmin(VOID)
|
||||
{
|
||||
SID_IDENTIFIER_AUTHORITY Authority = {SECURITY_NT_AUTHORITY};
|
||||
|
@ -1349,15 +1379,31 @@ BOOL WINAPI SHFreeShared(HANDLE hShared, DWORD dwProcId)
|
|||
* SetAppStartingCursor [SHELL32.99]
|
||||
*/
|
||||
HRESULT WINAPI SetAppStartingCursor(HWND u, DWORD v)
|
||||
{ FIXME("hwnd=%p 0x%04lx stub\n",u,v );
|
||||
{ FIXME("hwnd=%p 0x%04x stub\n",u,v );
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* SHLoadOLE [SHELL32.151]
|
||||
*
|
||||
* To reduce the memory usage of Windows 95, its shell32 contained an
|
||||
* internal implementation of a part of COM (see e.g. SHGetMalloc, SHCoCreateInstance,
|
||||
* SHRegisterDragDrop etc.) that allowed to use in-process STA objects without
|
||||
* the need to load OLE32.DLL. If OLE32.DLL was already loaded, the SH* function
|
||||
* would just call the Co* functions.
|
||||
*
|
||||
* The SHLoadOLE was called when OLE32.DLL was being loaded to transfer all the
|
||||
* information from the shell32 "mini-COM" to ole32.dll.
|
||||
*
|
||||
* See http://blogs.msdn.com/oldnewthing/archive/2004/07/05/173226.aspx for a
|
||||
* detailed description.
|
||||
*
|
||||
* Under wine ole32.dll is always loaded as it is imported by shlwapi.dll which is
|
||||
* imported by shell32 and no "mini-COM" is used (except for the "LoadWithoutCOM"
|
||||
* hack in SHCoCreateInstance)
|
||||
*/
|
||||
HRESULT WINAPI SHLoadOLE(LPARAM lParam)
|
||||
{ FIXME("0x%04lx stub\n",lParam);
|
||||
{ FIXME("0x%08lx stub\n",lParam);
|
||||
return S_OK;
|
||||
}
|
||||
/*************************************************************************
|
||||
|
@ -1365,7 +1411,15 @@ HRESULT WINAPI SHLoadOLE(LPARAM lParam)
|
|||
*
|
||||
*/
|
||||
HRESULT WINAPI DriveType(DWORD u)
|
||||
{ FIXME("0x%04lx stub\n",u);
|
||||
{ FIXME("0x%04x stub\n",u);
|
||||
return 0;
|
||||
}
|
||||
/*************************************************************************
|
||||
* InvalidateDriveType [SHELL32.65]
|
||||
*
|
||||
*/
|
||||
int WINAPI InvalidateDriveType(int u)
|
||||
{ FIXME("0x%08x stub\n",u);
|
||||
return 0;
|
||||
}
|
||||
/*************************************************************************
|
||||
|
@ -1406,7 +1460,7 @@ BOOL WINAPI SHWaitForFileToOpen(
|
|||
DWORD dwFlags,
|
||||
DWORD dwTimeout)
|
||||
{
|
||||
FIXME("%p 0x%08lx 0x%08lx stub\n", pidl, dwFlags, dwTimeout);
|
||||
FIXME("%p 0x%08x 0x%08x stub\n", pidl, dwFlags, dwTimeout);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1441,7 +1495,7 @@ DWORD WINAPI RLBuildListOfPaths (void)
|
|||
*/
|
||||
HRESULT WINAPI SHValidateUNC (DWORD x, DWORD y, DWORD z)
|
||||
{
|
||||
FIXME("0x%08lx 0x%08lx 0x%08lx stub\n",x,y,z);
|
||||
FIXME("0x%08x 0x%08x 0x%08x stub\n",x,y,z);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1526,22 +1580,68 @@ DWORD WINAPI SHELL32_714(LPVOID x)
|
|||
return 0;
|
||||
}
|
||||
|
||||
typedef struct _PSXA
|
||||
{
|
||||
UINT uiCount;
|
||||
UINT uiAllocated;
|
||||
IShellPropSheetExt *pspsx[1];
|
||||
} PSXA, *PPSXA;
|
||||
|
||||
typedef struct _PSXA_CALL
|
||||
{
|
||||
LPFNADDPROPSHEETPAGE lpfnAddReplaceWith;
|
||||
LPARAM lParam;
|
||||
BOOL bCalled;
|
||||
BOOL bMultiple;
|
||||
UINT uiCount;
|
||||
} PSXA_CALL, *PPSXA_CALL;
|
||||
|
||||
static BOOL CALLBACK PsxaCall(HPROPSHEETPAGE hpage, LPARAM lParam)
|
||||
{
|
||||
PPSXA_CALL Call = (PPSXA_CALL)lParam;
|
||||
|
||||
if (Call != NULL)
|
||||
{
|
||||
if ((Call->bMultiple || !Call->bCalled) &&
|
||||
Call->lpfnAddReplaceWith(hpage, Call->lParam))
|
||||
{
|
||||
Call->bCalled = TRUE;
|
||||
Call->uiCount++;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* SHAddFromPropSheetExtArray [SHELL32.167]
|
||||
*/
|
||||
UINT WINAPI SHAddFromPropSheetExtArray(HPSXA hpsxa, LPFNADDPROPSHEETPAGE lpfnAddPage, LPARAM lParam)
|
||||
{
|
||||
FIXME("(%p,%p,%08lx)stub\n", hpsxa, lpfnAddPage, lParam);
|
||||
return 0;
|
||||
}
|
||||
PSXA_CALL Call;
|
||||
UINT i;
|
||||
PPSXA psxa = (PPSXA)hpsxa;
|
||||
|
||||
/*************************************************************************
|
||||
* SHCreatePropSheetExtArray [SHELL32.168]
|
||||
*/
|
||||
HPSXA WINAPI SHCreatePropSheetExtArray(HKEY hKey, LPCWSTR pszSubKey, UINT max_iface)
|
||||
{
|
||||
FIXME("(%p,%s,%u)stub\n", hKey, debugstr_w(pszSubKey), max_iface);
|
||||
return NULL;
|
||||
TRACE("(%p,%p,%08lx)\n", hpsxa, lpfnAddPage, lParam);
|
||||
|
||||
if (psxa)
|
||||
{
|
||||
ZeroMemory(&Call, sizeof(Call));
|
||||
Call.lpfnAddReplaceWith = lpfnAddPage;
|
||||
Call.lParam = lParam;
|
||||
Call.bMultiple = TRUE;
|
||||
|
||||
/* Call the AddPage method of all registered IShellPropSheetExt interfaces */
|
||||
for (i = 0; i != psxa->uiCount; i++)
|
||||
{
|
||||
psxa->pspsx[i]->lpVtbl->AddPages(psxa->pspsx[i], PsxaCall, (LPARAM)&Call);
|
||||
}
|
||||
|
||||
return Call.uiCount;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
|
@ -1549,17 +1649,142 @@ HPSXA WINAPI SHCreatePropSheetExtArray(HKEY hKey, LPCWSTR pszSubKey, UINT max_if
|
|||
*/
|
||||
HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY hKey, LPCWSTR pszSubKey, UINT max_iface, IDataObject *pDataObj)
|
||||
{
|
||||
FIXME("(%p,%s,%u,%p)stub\n", hKey, debugstr_w(pszSubKey), max_iface, pDataObj);
|
||||
return NULL;
|
||||
static const WCHAR szPropSheetSubKey[] = {'s','h','e','l','l','e','x','\\','P','r','o','p','e','r','t','y','S','h','e','e','t','H','a','n','d','l','e','r','s',0};
|
||||
WCHAR szHandler[64];
|
||||
DWORD dwHandlerLen;
|
||||
WCHAR szClsidHandler[39];
|
||||
DWORD dwClsidSize;
|
||||
CLSID clsid;
|
||||
LONG lRet;
|
||||
DWORD dwIndex;
|
||||
IShellExtInit *psxi;
|
||||
IShellPropSheetExt *pspsx;
|
||||
HKEY hkBase, hkPropSheetHandlers;
|
||||
PPSXA psxa = NULL;
|
||||
|
||||
TRACE("(%p,%s,%u)\n", hKey, debugstr_w(pszSubKey), max_iface);
|
||||
|
||||
if (max_iface == 0)
|
||||
return NULL;
|
||||
|
||||
/* Open the registry key */
|
||||
lRet = RegOpenKeyW(hKey, pszSubKey, &hkBase);
|
||||
if (lRet != ERROR_SUCCESS)
|
||||
return NULL;
|
||||
|
||||
lRet = RegOpenKeyExW(hkBase, szPropSheetSubKey, 0, KEY_ENUMERATE_SUB_KEYS, &hkPropSheetHandlers);
|
||||
RegCloseKey(hkBase);
|
||||
if (lRet == ERROR_SUCCESS)
|
||||
{
|
||||
/* Create and initialize the Property Sheet Extensions Array */
|
||||
psxa = (PPSXA)LocalAlloc(LMEM_FIXED, FIELD_OFFSET(PSXA, pspsx[max_iface]));
|
||||
if (psxa)
|
||||
{
|
||||
ZeroMemory(psxa, FIELD_OFFSET(PSXA, pspsx[max_iface]));
|
||||
psxa->uiAllocated = max_iface;
|
||||
|
||||
/* Enumerate all subkeys and attempt to load the shell extensions */
|
||||
dwIndex = 0;
|
||||
do
|
||||
{
|
||||
dwHandlerLen = sizeof(szHandler) / sizeof(szHandler[0]);
|
||||
lRet = RegEnumKeyExW(hkPropSheetHandlers, dwIndex++, szHandler, &dwHandlerLen, NULL, NULL, NULL, NULL);
|
||||
if (lRet != ERROR_SUCCESS)
|
||||
{
|
||||
if (lRet == ERROR_MORE_DATA)
|
||||
continue;
|
||||
|
||||
if (lRet == ERROR_NO_MORE_ITEMS)
|
||||
lRet = ERROR_SUCCESS;
|
||||
break;
|
||||
}
|
||||
|
||||
dwClsidSize = sizeof(szClsidHandler);
|
||||
if (SHGetValueW(hkPropSheetHandlers, szHandler, NULL, NULL, szClsidHandler, &dwClsidSize) == ERROR_SUCCESS)
|
||||
{
|
||||
/* Force a NULL-termination and convert the string */
|
||||
szClsidHandler[(sizeof(szClsidHandler) / sizeof(szClsidHandler[0])) - 1] = 0;
|
||||
if (SUCCEEDED(SHCLSIDFromStringW(szClsidHandler, &clsid)))
|
||||
{
|
||||
/* Attempt to get an IShellPropSheetExt and an IShellExtInit instance.
|
||||
Only if both interfaces are supported it's a real shell extension.
|
||||
Then call IShellExtInit's Initialize method. */
|
||||
if (SUCCEEDED(CoCreateInstance(&clsid, NULL, CLSCTX_INPROC_SERVER/* | CLSCTX_NO_CODE_DOWNLOAD */, &IID_IShellPropSheetExt, (LPVOID *)&pspsx)))
|
||||
{
|
||||
if (SUCCEEDED(pspsx->lpVtbl->QueryInterface(pspsx, &IID_IShellExtInit, (PVOID *)&psxi)))
|
||||
{
|
||||
if (SUCCEEDED(psxi->lpVtbl->Initialize(psxi, NULL, pDataObj, hKey)))
|
||||
{
|
||||
/* Add the IShellPropSheetExt instance to the array */
|
||||
psxa->pspsx[psxa->uiCount++] = pspsx;
|
||||
}
|
||||
else
|
||||
{
|
||||
psxi->lpVtbl->Release(psxi);
|
||||
pspsx->lpVtbl->Release(pspsx);
|
||||
}
|
||||
}
|
||||
else
|
||||
pspsx->lpVtbl->Release(pspsx);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} while (psxa->uiCount != psxa->uiAllocated);
|
||||
}
|
||||
else
|
||||
lRet = ERROR_NOT_ENOUGH_MEMORY;
|
||||
|
||||
RegCloseKey(hkPropSheetHandlers);
|
||||
}
|
||||
|
||||
if (lRet != ERROR_SUCCESS && psxa)
|
||||
{
|
||||
SHDestroyPropSheetExtArray((HPSXA)psxa);
|
||||
psxa = NULL;
|
||||
}
|
||||
|
||||
return (HPSXA)psxa;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* SHCreatePropSheetExtArray [SHELL32.168]
|
||||
*/
|
||||
HPSXA WINAPI SHCreatePropSheetExtArray(HKEY hKey, LPCWSTR pszSubKey, UINT max_iface)
|
||||
{
|
||||
return SHCreatePropSheetExtArrayEx(hKey, pszSubKey, max_iface, NULL);
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
* SHReplaceFromPropSheetExtArray [SHELL32.170]
|
||||
*/
|
||||
UINT WINAPI SHReplaceFromPropSheetExtArray(HPSXA hpsxa, UINT uPageID, LPFNADDPROPSHEETPAGE lpfnReplaceWith, LPARAM lParam)
|
||||
{
|
||||
FIXME("(%p,%u,%p,%08lx)stub\n", hpsxa, uPageID, lpfnReplaceWith, lParam);
|
||||
return 0;
|
||||
PSXA_CALL Call;
|
||||
UINT i;
|
||||
PPSXA psxa = (PPSXA)hpsxa;
|
||||
|
||||
TRACE("(%p,%u,%p,%08lx)\n", hpsxa, uPageID, lpfnReplaceWith, lParam);
|
||||
|
||||
if (psxa)
|
||||
{
|
||||
ZeroMemory(&Call, sizeof(Call));
|
||||
Call.lpfnAddReplaceWith = lpfnReplaceWith;
|
||||
Call.lParam = lParam;
|
||||
|
||||
/* Call the ReplacePage method of all registered IShellPropSheetExt interfaces.
|
||||
Each shell extension is only allowed to call the callback once during the callback. */
|
||||
for (i = 0; i != psxa->uiCount; i++)
|
||||
{
|
||||
Call.bCalled = FALSE;
|
||||
psxa->pspsx[i]->lpVtbl->ReplacePage(psxa->pspsx[i], uPageID, PsxaCall, (LPARAM)&Call);
|
||||
}
|
||||
|
||||
return Call.uiCount;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
|
@ -1567,7 +1792,20 @@ UINT WINAPI SHReplaceFromPropSheetExtArray(HPSXA hpsxa, UINT uPageID, LPFNADDPRO
|
|||
*/
|
||||
void WINAPI SHDestroyPropSheetExtArray(HPSXA hpsxa)
|
||||
{
|
||||
FIXME("(%p)stub\n", hpsxa);
|
||||
UINT i;
|
||||
PPSXA psxa = (PPSXA)hpsxa;
|
||||
|
||||
TRACE("(%p)\n", hpsxa);
|
||||
|
||||
if (psxa)
|
||||
{
|
||||
for (i = 0; i != psxa->uiCount; i++)
|
||||
{
|
||||
psxa->pspsx[i]->lpVtbl->Release(psxa->pspsx[i]);
|
||||
}
|
||||
|
||||
LocalFree((HLOCAL)psxa);
|
||||
}
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
|
@ -1584,7 +1822,7 @@ HRESULT WINAPI CIDLData_CreateFromIDArray(
|
|||
UINT i;
|
||||
HWND hwnd = 0; /*FIXME: who should be hwnd of owner? set to desktop */
|
||||
|
||||
TRACE("(%p, %ld, %p, %p)\n", pidlFolder, cpidlFiles, lppidlFiles, ppdataObject);
|
||||
TRACE("(%p, %d, %p, %p)\n", pidlFolder, cpidlFiles, lppidlFiles, ppdataObject);
|
||||
if (TRACE_ON(pidl))
|
||||
{
|
||||
pdump (pidlFolder);
|
||||
|
@ -1609,7 +1847,7 @@ HRESULT WINAPI SHCreateStdEnumFmtEtc(
|
|||
{
|
||||
IEnumFORMATETC *pef;
|
||||
HRESULT hRes;
|
||||
TRACE("cf=%ld fe=%p pef=%p\n", cFormats, lpFormats, ppenumFormatetc);
|
||||
TRACE("cf=%d fe=%p pef=%p\n", cFormats, lpFormats, ppenumFormatetc);
|
||||
|
||||
pef = IEnumFORMATETC_Constructor(cFormats, lpFormats);
|
||||
if (!pef)
|
||||
|
@ -1630,7 +1868,7 @@ HRESULT WINAPI SHELL32_256(LPDWORD lpdw0, LPDWORD lpdw1)
|
|||
{
|
||||
HRESULT ret = S_OK;
|
||||
|
||||
FIXME("stub %p 0x%08lx %p\n", lpdw0, lpdw0 ? *lpdw0 : 0, lpdw1);
|
||||
FIXME("stub %p 0x%08x %p\n", lpdw0, lpdw0 ? *lpdw0 : 0, lpdw1);
|
||||
|
||||
if (!lpdw0 || *lpdw0 != 0x10)
|
||||
ret = E_INVALIDARG;
|
||||
|
@ -1699,13 +1937,9 @@ INT WINAPI SHHandleUpdateImage(LPCITEMIDLIST pidlExtra)
|
|||
return -1;
|
||||
}
|
||||
|
||||
|
||||
BOOL WINAPI SHObjectProperties(HWND hwnd, DWORD dwType, LPCWSTR szObject, LPCWSTR szPage)
|
||||
{
|
||||
FIXME("%p, 0x%08lx, %s, %s - stub\n", hwnd, dwType, debugstr_w(szObject), debugstr_w(szPage));
|
||||
|
||||
MessageBox (NULL, TEXT("SHObjectProperties-WINAPI:\n\nTODO: Add the function code."), TEXT("SHObjectProperties; Dev: frik85"), 0);
|
||||
|
||||
FIXME("%p, 0x%08x, %s, %s - stub\n", hwnd, dwType, debugstr_w(szObject), debugstr_w(szPage));
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -1730,21 +1964,21 @@ BOOL WINAPI SHGetNewLinkInfoW(LPCWSTR pszLinkTo, LPCWSTR pszDir, LPWSTR pszName,
|
|||
|
||||
HRESULT WINAPI SHStartNetConnectionDialog(HWND hwnd, LPCSTR pszRemoteName, DWORD dwType)
|
||||
{
|
||||
FIXME("%p, %s, 0x%08lx - stub\n", hwnd, debugstr_a(pszRemoteName), dwType);
|
||||
FIXME("%p, %s, 0x%08x - stub\n", hwnd, debugstr_a(pszRemoteName), dwType);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI SHEmptyRecycleBinA(HWND hwnd, LPCSTR pszRootPath, DWORD dwFlags)
|
||||
{
|
||||
FIXME("%p, %s, 0x%08lx - stub\n", hwnd, debugstr_a(pszRootPath), dwFlags);
|
||||
FIXME("%p, %s, 0x%08x - stub\n", hwnd, debugstr_a(pszRootPath), dwFlags);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI SHEmptyRecycleBinW(HWND hwnd, LPCWSTR pszRootPath, DWORD dwFlags)
|
||||
{
|
||||
FIXME("%p, %s, 0x%08lx - stub\n", hwnd, debugstr_w(pszRootPath), dwFlags);
|
||||
FIXME("%p, %s, 0x%08x - stub\n", hwnd, debugstr_w(pszRootPath), dwFlags);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
@ -1775,3 +2009,13 @@ HRESULT WINAPI SHQueryRecycleBinW(LPCWSTR pszRootPath, LPSHQUERYRBINFO pSHQueryR
|
|||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* SHSetLocalizedName (SHELL32.@)
|
||||
*/
|
||||
HRESULT WINAPI SHSetLocalizedName(LPWSTR pszPath, LPCWSTR pszResModule, int idsRes)
|
||||
{
|
||||
FIXME("%p, %s, %d - stub\n", pszPath, debugstr_w(pszResModule), idsRes);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*
|
||||
* NOTES:
|
||||
*
|
||||
|
@ -24,9 +24,11 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#define symlink(A, B)
|
||||
#include "config.h"
|
||||
#include "wine/port.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
@ -487,7 +489,7 @@ BOOL WINAPI PathMakeUniqueNameA(
|
|||
LPCSTR lpszLongName,
|
||||
LPCSTR lpszPathName)
|
||||
{
|
||||
FIXME("%p %lu %s %s %s stub\n",
|
||||
FIXME("%p %u %s %s %s stub\n",
|
||||
lpszBuffer, dwBuffSize, debugstr_a(lpszShortName),
|
||||
debugstr_a(lpszLongName), debugstr_a(lpszPathName));
|
||||
return TRUE;
|
||||
|
@ -503,7 +505,7 @@ BOOL WINAPI PathMakeUniqueNameW(
|
|||
LPCWSTR lpszLongName,
|
||||
LPCWSTR lpszPathName)
|
||||
{
|
||||
FIXME("%p %lu %s %s %s stub\n",
|
||||
FIXME("%p %u %s %s %s stub\n",
|
||||
lpszBuffer, dwBuffSize, debugstr_w(lpszShortName),
|
||||
debugstr_w(lpszLongName), debugstr_w(lpszPathName));
|
||||
return TRUE;
|
||||
|
@ -549,7 +551,7 @@ BOOL WINAPI PathYetAnotherMakeUniqueName(
|
|||
/*************************************************************************
|
||||
* PathFindOnPath [SHELL32.145]
|
||||
*/
|
||||
BOOL WINAPI PathFindOnPathAW(LPVOID sFile, LPCVOID sOtherDirs)
|
||||
BOOL WINAPI PathFindOnPathAW(LPVOID sFile, LPCVOID *sOtherDirs)
|
||||
{
|
||||
if (SHELL_OsIsUnicode())
|
||||
return PathFindOnPathW(sFile, (LPCWSTR *)sOtherDirs);
|
||||
|
@ -599,7 +601,7 @@ int WINAPI PathCleanupSpec( LPCWSTR lpszPathW, LPWSTR lpszFileW )
|
|||
else
|
||||
{
|
||||
LPSTR lpszFileA = (LPSTR)lpszFileW;
|
||||
LPCSTR lpszPathA = (LPSTR)lpszPathW;
|
||||
LPCSTR lpszPathA = (LPCSTR)lpszPathW;
|
||||
LPSTR p = lpszFileA;
|
||||
|
||||
TRACE("Cleanup %s\n",debugstr_a(lpszFileA));
|
||||
|
@ -666,7 +668,7 @@ BOOL WINAPI PathResolveA(
|
|||
LPCSTR *alpszPaths,
|
||||
DWORD dwFlags)
|
||||
{
|
||||
FIXME("(%s,%p,0x%08lx),stub!\n",
|
||||
FIXME("(%s,%p,0x%08x),stub!\n",
|
||||
lpszPath, *alpszPaths, dwFlags);
|
||||
return 0;
|
||||
}
|
||||
|
@ -679,7 +681,7 @@ BOOL WINAPI PathResolveW(
|
|||
LPCWSTR *alpszPaths,
|
||||
DWORD dwFlags)
|
||||
{
|
||||
FIXME("(%s,%p,0x%08lx),stub!\n",
|
||||
FIXME("(%s,%p,0x%08x),stub!\n",
|
||||
debugstr_w(lpszPath), debugstr_w(*alpszPaths), dwFlags);
|
||||
return 0;
|
||||
}
|
||||
|
@ -706,7 +708,7 @@ LONG WINAPI PathProcessCommandA (
|
|||
DWORD dwBuffSize,
|
||||
DWORD dwFlags)
|
||||
{
|
||||
FIXME("%s %p 0x%04lx 0x%04lx stub\n",
|
||||
FIXME("%s %p 0x%04x 0x%04x stub\n",
|
||||
lpszPath, lpszBuff, dwBuffSize, dwFlags);
|
||||
if(!lpszPath) return -1;
|
||||
if(lpszBuff) strcpy(lpszBuff, lpszPath);
|
||||
|
@ -722,7 +724,7 @@ LONG WINAPI PathProcessCommandW (
|
|||
DWORD dwBuffSize,
|
||||
DWORD dwFlags)
|
||||
{
|
||||
FIXME("(%s, %p, 0x%04lx, 0x%04lx) stub\n",
|
||||
FIXME("(%s, %p, 0x%04x, 0x%04x) stub\n",
|
||||
debugstr_w(lpszPath), lpszBuff, dwBuffSize, dwFlags);
|
||||
if(!lpszPath) return -1;
|
||||
if(lpszBuff) strcpyW(lpszBuff, lpszPath);
|
||||
|
@ -804,7 +806,6 @@ static const WCHAR ProfilesDirectoryW[] = {'P','r','o','f','i','l','e','s','D','
|
|||
static const WCHAR AllUsersProfileValueW[] = {'A','l','l','U','s','e','r','s','P','r','o','f','i','l','e','\0'};
|
||||
static const WCHAR szSHFolders[] = {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\','E','x','p','l','o','r','e','r','\\','S','h','e','l','l',' ','F','o','l','d','e','r','s','\0'};
|
||||
static const WCHAR szSHUserFolders[] = {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\','E','x','p','l','o','r','e','r','\\','U','s','e','r',' ','S','h','e','l','l',' ','F','o','l','d','e','r','s','\0'};
|
||||
static const WCHAR szSHSetupFolders[] = {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','C','u','r','r','e','n','t','V','e','r','s','i','o','n','\0'};
|
||||
/* This defaults to L"Documents and Settings" on Windows 2000/XP, but we're
|
||||
* acting more Windows 9x-like for now.
|
||||
*/
|
||||
|
@ -932,7 +933,7 @@ static const CSIDL_DATA CSIDL_Data[] =
|
|||
},
|
||||
{ /* 0x14 - CSIDL_FONTS */
|
||||
CSIDL_Type_WindowsPath,
|
||||
NULL,
|
||||
FontsW,
|
||||
FontsW
|
||||
},
|
||||
{ /* 0x15 - CSIDL_TEMPLATES */
|
||||
|
@ -1226,7 +1227,7 @@ static HRESULT _SHGetUserShellFolderPath(HKEY rootKey, LPCWSTR userPrefix,
|
|||
hr = E_FAIL;
|
||||
RegCloseKey(shellFolderKey);
|
||||
RegCloseKey(userShellFolderKey);
|
||||
TRACE("returning 0x%08lx\n", hr);
|
||||
TRACE("returning 0x%08x\n", hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -1257,54 +1258,6 @@ static HRESULT _SHGetDefaultValue(BYTE folder, LPWSTR pszPath)
|
|||
if (!pszPath)
|
||||
return E_INVALIDARG;
|
||||
|
||||
/* Try special cases first */
|
||||
hr = E_FAIL;
|
||||
switch (folder)
|
||||
{
|
||||
case CSIDL_PERSONAL:
|
||||
case CSIDL_MYMUSIC:
|
||||
case CSIDL_MYPICTURES:
|
||||
case CSIDL_MYVIDEO:
|
||||
{
|
||||
const char *home = getenv("HOME");
|
||||
|
||||
/* special case for "My Documents", map to $HOME */
|
||||
if (home)
|
||||
{
|
||||
WCHAR homeW[MAX_PATH];
|
||||
|
||||
MultiByteToWideChar(CP_ACP, 0, home, -1, homeW, MAX_PATH);
|
||||
if (GetFullPathNameW(homeW, MAX_PATH, pszPath, NULL) != 0 &&
|
||||
PathIsDirectoryW(pszPath))
|
||||
hr = S_OK;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CSIDL_DESKTOP:
|
||||
case CSIDL_DESKTOPDIRECTORY:
|
||||
{
|
||||
const char *home = getenv("HOME");
|
||||
|
||||
/* special case for Desktop, map to $HOME/Desktop if it exists */
|
||||
if (home)
|
||||
{
|
||||
WCHAR desktopW[MAX_PATH];
|
||||
|
||||
MultiByteToWideChar(CP_ACP, 0, home, -1, desktopW, MAX_PATH);
|
||||
PathAppendW(desktopW, DesktopW);
|
||||
if (GetFullPathNameW(desktopW, MAX_PATH, pszPath, NULL) != 0 &&
|
||||
PathIsDirectoryW(pszPath))
|
||||
hr = S_OK;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (SUCCEEDED(hr))
|
||||
return hr;
|
||||
|
||||
/* Either the folder was unhandled, or a suitable default wasn't found,
|
||||
* so use one of the resource-based defaults
|
||||
*/
|
||||
if (CSIDL_Data[folder].szDefaultPath &&
|
||||
IS_INTRESOURCE(CSIDL_Data[folder].szDefaultPath))
|
||||
{
|
||||
|
@ -1348,7 +1301,7 @@ static HRESULT _SHGetDefaultValue(BYTE folder, LPWSTR pszPath)
|
|||
strcatW(pszPath, pDefaultPath);
|
||||
}
|
||||
}
|
||||
TRACE("returning 0x%08lx\n", hr);
|
||||
TRACE("returning 0x%08x\n", hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -1363,7 +1316,7 @@ static HRESULT _SHGetCurrentVersionPath(DWORD dwFlags, BYTE folder,
|
|||
{
|
||||
HRESULT hr;
|
||||
|
||||
TRACE("0x%08lx,0x%02x,%p\n", dwFlags, folder, pszPath);
|
||||
TRACE("0x%08x,0x%02x,%p\n", dwFlags, folder, pszPath);
|
||||
|
||||
if (folder >= sizeof(CSIDL_Data) / sizeof(CSIDL_Data[0]))
|
||||
return E_INVALIDARG;
|
||||
|
@ -1403,7 +1356,7 @@ static HRESULT _SHGetCurrentVersionPath(DWORD dwFlags, BYTE folder,
|
|||
RegCloseKey(hKey);
|
||||
}
|
||||
}
|
||||
TRACE("returning 0x%08lx (output path is %s)\n", hr, debugstr_w(pszPath));
|
||||
TRACE("returning 0x%08x (output path is %s)\n", hr, debugstr_w(pszPath));
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -1420,7 +1373,7 @@ static HRESULT _SHGetUserProfilePath(HANDLE hToken, DWORD dwFlags, BYTE folder,
|
|||
{
|
||||
HRESULT hr;
|
||||
|
||||
TRACE("%p,0x%08lx,0x%02x,%p\n", hToken, dwFlags, folder, pszPath);
|
||||
TRACE("%p,0x%08x,0x%02x,%p\n", hToken, dwFlags, folder, pszPath);
|
||||
|
||||
if (folder >= sizeof(CSIDL_Data) / sizeof(CSIDL_Data[0]))
|
||||
return E_INVALIDARG;
|
||||
|
@ -1465,7 +1418,7 @@ static HRESULT _SHGetUserProfilePath(HANDLE hToken, DWORD dwFlags, BYTE folder,
|
|||
if (FAILED(hr))
|
||||
hr = _SHGetDefaultValue(folder, pszPath);
|
||||
}
|
||||
TRACE("returning 0x%08lx (output path is %s)\n", hr, debugstr_w(pszPath));
|
||||
TRACE("returning 0x%08x (output path is %s)\n", hr, debugstr_w(pszPath));
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -1479,7 +1432,7 @@ static HRESULT _SHGetAllUsersProfilePath(DWORD dwFlags, BYTE folder,
|
|||
{
|
||||
HRESULT hr;
|
||||
|
||||
TRACE("0x%08lx,0x%02x,%p\n", dwFlags, folder, pszPath);
|
||||
TRACE("0x%08x,0x%02x,%p\n", dwFlags, folder, pszPath);
|
||||
|
||||
if (folder >= sizeof(CSIDL_Data) / sizeof(CSIDL_Data[0]))
|
||||
return E_INVALIDARG;
|
||||
|
@ -1497,13 +1450,62 @@ static HRESULT _SHGetAllUsersProfilePath(DWORD dwFlags, BYTE folder,
|
|||
if (FAILED(hr))
|
||||
hr = _SHGetDefaultValue(folder, pszPath);
|
||||
}
|
||||
TRACE("returning 0x%08lx (output path is %s)\n", hr, debugstr_w(pszPath));
|
||||
TRACE("returning 0x%08x (output path is %s)\n", hr, debugstr_w(pszPath));
|
||||
return hr;
|
||||
}
|
||||
|
||||
/* From the original Wine source:
|
||||
*
|
||||
* Attempts to expand environment variables from szSrc into szDest, which is
|
||||
static HRESULT _SHOpenProfilesKey(PHKEY pKey)
|
||||
{
|
||||
LONG lRet;
|
||||
DWORD disp;
|
||||
|
||||
lRet = RegCreateKeyExW(HKEY_LOCAL_MACHINE, ProfileListW, 0, NULL, 0,
|
||||
KEY_ALL_ACCESS, NULL, pKey, &disp);
|
||||
return HRESULT_FROM_WIN32(lRet);
|
||||
}
|
||||
|
||||
/* Reads the value named szValueName from the key profilesKey (assumed to be
|
||||
* opened by _SHOpenProfilesKey) into szValue, which is assumed to be MAX_PATH
|
||||
* WCHARs in length. If it doesn't exist, returns szDefault (and saves
|
||||
* szDefault to the registry).
|
||||
*/
|
||||
static HRESULT _SHGetProfilesValue(HKEY profilesKey, LPCWSTR szValueName,
|
||||
LPWSTR szValue, LPCWSTR szDefault)
|
||||
{
|
||||
HRESULT hr;
|
||||
DWORD type, dwPathLen = MAX_PATH * sizeof(WCHAR);
|
||||
LONG lRet;
|
||||
|
||||
TRACE("%p,%s,%p,%s\n", profilesKey, debugstr_w(szValueName), szValue,
|
||||
debugstr_w(szDefault));
|
||||
lRet = RegQueryValueExW(profilesKey, szValueName, NULL, &type,
|
||||
(LPBYTE)szValue, &dwPathLen);
|
||||
if (!lRet && (type == REG_SZ || type == REG_EXPAND_SZ) && dwPathLen
|
||||
&& *szValue)
|
||||
{
|
||||
dwPathLen /= sizeof(WCHAR);
|
||||
szValue[dwPathLen] = '\0';
|
||||
hr = S_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Missing or invalid value, set a default */
|
||||
lstrcpynW(szValue, szDefault, MAX_PATH);
|
||||
TRACE("Setting missing value %s to %s\n", debugstr_w(szValueName),
|
||||
debugstr_w(szValue));
|
||||
lRet = RegSetValueExW(profilesKey, szValueName, 0, REG_EXPAND_SZ,
|
||||
(LPBYTE)szValue,
|
||||
(strlenW(szValue) + 1) * sizeof(WCHAR));
|
||||
if (lRet)
|
||||
hr = HRESULT_FROM_WIN32(lRet);
|
||||
else
|
||||
hr = S_OK;
|
||||
}
|
||||
TRACE("returning 0x%08x (output value is %s)\n", hr, debugstr_w(szValue));
|
||||
return hr;
|
||||
}
|
||||
|
||||
/* Attempts to expand environment variables from szSrc into szDest, which is
|
||||
* assumed to be MAX_PATH characters in length. Before referring to the
|
||||
* environment, handles a few variables directly, because the environment
|
||||
* variables may not be set when this is called (as during Wine's installation
|
||||
|
@ -1514,15 +1516,12 @@ static HRESULT _SHGetAllUsersProfilePath(DWORD dwFlags, BYTE folder,
|
|||
* path
|
||||
* If one of the directly handled environment variables is expanded, only
|
||||
* expands a single variable, and only in the beginning of szSrc.
|
||||
*
|
||||
* That's fine for Wine, but it breaks in ReactOS where we have profile paths
|
||||
* like "c:\documents and settings\Administrator.REACTOS". Anyway, we have the
|
||||
* environment variables handy so we'll just use them instead of hacking around
|
||||
*/
|
||||
static HRESULT _SHExpandEnvironmentStrings(LPCWSTR szSrc, LPWSTR szDest)
|
||||
{
|
||||
HRESULT hr = S_OK;
|
||||
WCHAR szTemp[MAX_PATH];
|
||||
HRESULT hr;
|
||||
WCHAR szTemp[MAX_PATH], szProfilesPrefix[MAX_PATH] = { 0 };
|
||||
HKEY key = NULL;
|
||||
|
||||
TRACE("%s, %p\n", debugstr_w(szSrc), szDest);
|
||||
|
||||
|
@ -1535,29 +1534,80 @@ static HRESULT _SHExpandEnvironmentStrings(LPCWSTR szSrc, LPWSTR szDest)
|
|||
hr = S_OK;
|
||||
goto end;
|
||||
}
|
||||
/* Get the profile prefix, we'll probably be needing it */
|
||||
hr = _SHOpenProfilesKey(&key);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
WCHAR szDefaultProfilesPrefix[MAX_PATH];
|
||||
|
||||
GetWindowsDirectoryW(szDefaultProfilesPrefix, MAX_PATH);
|
||||
PathAddBackslashW(szDefaultProfilesPrefix);
|
||||
PathAppendW(szDefaultProfilesPrefix, szDefaultProfileDirW);
|
||||
hr = _SHGetProfilesValue(key, ProfilesDirectoryW, szProfilesPrefix,
|
||||
szDefaultProfilesPrefix);
|
||||
}
|
||||
|
||||
*szDest = 0;
|
||||
strcpyW(szTemp, szSrc);
|
||||
while (SUCCEEDED(hr) && szTemp[0] == '%')
|
||||
{
|
||||
DWORD ret = ExpandEnvironmentStringsW(szSrc, szDest, MAX_PATH);
|
||||
|
||||
if (ret > MAX_PATH)
|
||||
hr = HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER);
|
||||
else if (ret == 0)
|
||||
hr = HRESULT_FROM_WIN32(GetLastError());
|
||||
else
|
||||
hr = S_OK;
|
||||
/* By default, terminate loop */
|
||||
szTemp[0] = '\0';
|
||||
if (SUCCEEDED(hr) && strcmpW(szSrc, szDest) != 0)
|
||||
if (!strncmpiW(szTemp, AllUsersProfileW, strlenW(AllUsersProfileW)))
|
||||
{
|
||||
/* Continue the loop */
|
||||
WCHAR szAllUsers[MAX_PATH];
|
||||
|
||||
strcpyW(szDest, szProfilesPrefix);
|
||||
hr = _SHGetProfilesValue(key, AllUsersProfileValueW,
|
||||
szAllUsers, AllUsersW);
|
||||
PathAppendW(szDest, szAllUsers);
|
||||
PathAppendW(szDest, szTemp + strlenW(AllUsersProfileW));
|
||||
}
|
||||
else if (!strncmpiW(szTemp, UserProfileW, strlenW(UserProfileW)))
|
||||
{
|
||||
WCHAR userName[MAX_PATH];
|
||||
DWORD userLen = MAX_PATH;
|
||||
|
||||
strcpyW(szDest, szProfilesPrefix);
|
||||
GetUserNameW(userName, &userLen);
|
||||
PathAppendW(szDest, userName);
|
||||
PathAppendW(szDest, szTemp + strlenW(UserProfileW));
|
||||
}
|
||||
else if (!strncmpiW(szTemp, SystemDriveW, strlenW(SystemDriveW)))
|
||||
{
|
||||
GetSystemDirectoryW(szDest, MAX_PATH);
|
||||
if (szDest[1] != ':')
|
||||
{
|
||||
FIXME("non-drive system paths unsupported\n");
|
||||
hr = E_FAIL;
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpyW(szDest + 3, szTemp + strlenW(SystemDriveW) + 1);
|
||||
hr = S_OK;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
DWORD ret = ExpandEnvironmentStringsW(szSrc, szDest, MAX_PATH);
|
||||
|
||||
if (ret > MAX_PATH)
|
||||
hr = HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER);
|
||||
else if (ret == 0)
|
||||
hr = HRESULT_FROM_WIN32(GetLastError());
|
||||
else
|
||||
hr = S_OK;
|
||||
}
|
||||
if (SUCCEEDED(hr) && szDest[0] == '%')
|
||||
strcpyW(szTemp, szDest);
|
||||
else
|
||||
{
|
||||
/* terminate loop */
|
||||
szTemp[0] = '\0';
|
||||
}
|
||||
}
|
||||
end:
|
||||
TRACE("returning 0x%08lx (input was %s, output is %s)\n", hr,
|
||||
if (key)
|
||||
RegCloseKey(key);
|
||||
TRACE("returning 0x%08x (input was %s, output is %s)\n", hr,
|
||||
debugstr_w(szSrc), debugstr_w(szDest));
|
||||
return hr;
|
||||
}
|
||||
|
@ -1599,7 +1649,7 @@ HRESULT WINAPI SHGetFolderPathW(
|
|||
DWORD folder = nFolder & CSIDL_FOLDER_MASK;
|
||||
CSIDL_Type type;
|
||||
int ret;
|
||||
|
||||
|
||||
TRACE("%p,%p,nFolder=0x%04x\n", hwndOwner,pszPath,nFolder);
|
||||
|
||||
/* Windows always NULL-terminates the resulting path regardless of success
|
||||
|
@ -1685,14 +1735,14 @@ HRESULT WINAPI SHGetFolderPathW(
|
|||
ret = SHCreateDirectoryExW(hwndOwner, szBuildPath, NULL);
|
||||
if (ret && ret != ERROR_ALREADY_EXISTS)
|
||||
{
|
||||
ERR("Failed to create directory '%s'.\n", debugstr_w(szBuildPath));
|
||||
ERR("Failed to create directory %s.\n", debugstr_w(szBuildPath));
|
||||
hr = E_FAIL;
|
||||
goto end;
|
||||
}
|
||||
|
||||
TRACE("Created missing system directory '%s'\n", debugstr_w(szBuildPath));
|
||||
TRACE("Created missing system directory %s\n", debugstr_w(szBuildPath));
|
||||
end:
|
||||
TRACE("returning 0x%08lx (final path is %s)\n", hr, debugstr_w(szBuildPath));
|
||||
TRACE("returning 0x%08x (final path is %s)\n", hr, debugstr_w(szBuildPath));
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -1769,8 +1819,8 @@ static HRESULT _SHRegisterFolders(HKEY hRootKey, HANDLE hToken,
|
|||
path);
|
||||
else if (CSIDL_Data[folders[i]].type == CSIDL_Type_AllUsers)
|
||||
_SHGetAllUsersProfilePath(SHGFP_TYPE_DEFAULT, folders[i], path);
|
||||
else if (CSIDL_Data[folders[i]].type == CSIDL_Type_CurrVer)
|
||||
_SHGetDefaultValue(folders[i], path);
|
||||
else if (CSIDL_Data[folders[i]].type == CSIDL_Type_WindowsPath)
|
||||
GetWindowsDirectoryW(path, MAX_PATH);
|
||||
else
|
||||
hr = E_FAIL;
|
||||
if (*path)
|
||||
|
@ -1798,7 +1848,7 @@ static HRESULT _SHRegisterFolders(HKEY hRootKey, HANDLE hToken,
|
|||
if (hKey)
|
||||
RegCloseKey(hKey);
|
||||
|
||||
TRACE("returning 0x%08lx\n", hr);
|
||||
TRACE("returning 0x%08x\n", hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -1824,7 +1874,7 @@ static HRESULT _SHRegisterUserShellFolders(BOOL bDefault)
|
|||
CSIDL_COOKIES,
|
||||
CSIDL_HISTORY,
|
||||
CSIDL_MYPICTURES,
|
||||
CSIDL_ADMINTOOLS
|
||||
CSIDL_FONTS
|
||||
};
|
||||
WCHAR userShellFolderPath[MAX_PATH], shellFolderPath[MAX_PATH];
|
||||
LPCWSTR pUserShellFolderPath, pShellFolderPath;
|
||||
|
@ -1856,7 +1906,7 @@ static HRESULT _SHRegisterUserShellFolders(BOOL bDefault)
|
|||
|
||||
hr = _SHRegisterFolders(hRootKey, hToken, pUserShellFolderPath,
|
||||
pShellFolderPath, folders, sizeof(folders) / sizeof(folders[0]));
|
||||
TRACE("returning 0x%08lx\n", hr);
|
||||
TRACE("returning 0x%08x\n", hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -1877,38 +1927,210 @@ static HRESULT _SHRegisterCommonShellFolders(void)
|
|||
TRACE("\n");
|
||||
hr = _SHRegisterFolders(HKEY_LOCAL_MACHINE, NULL, szSHUserFolders,
|
||||
szSHFolders, folders, sizeof(folders) / sizeof(folders[0]));
|
||||
TRACE("returning 0x%08lx\n", hr);
|
||||
TRACE("returning 0x%08x\n", hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
static HRESULT _SHRegisterSetupShellFolders(void)
|
||||
/******************************************************************************
|
||||
* _SHAppendToUnixPath [Internal]
|
||||
*
|
||||
* Helper function for _SHCreateSymbolicLinks. Appends pwszSubPath (or the
|
||||
* corresponding resource, if IS_INTRESOURCE) to the unix base path 'szBasePath'
|
||||
* and replaces backslashes with slashes.
|
||||
*
|
||||
* PARAMS
|
||||
* szBasePath [IO] The unix base path, which will be appended to (CP_UNXICP).
|
||||
* pwszSubPath [I] Sub-path or resource id (use MAKEINTRESOURCEW).
|
||||
*
|
||||
* RETURNS
|
||||
* Success: TRUE,
|
||||
* Failure: FALSE
|
||||
*/
|
||||
static inline BOOL _SHAppendToUnixPath(char *szBasePath, LPCWSTR pwszSubPath) {
|
||||
WCHAR wszSubPath[MAX_PATH];
|
||||
int cLen = strlen(szBasePath);
|
||||
char *pBackslash;
|
||||
|
||||
if (IS_INTRESOURCE(pwszSubPath)) {
|
||||
if (!LoadStringW(shell32_hInstance, LOWORD(pwszSubPath), wszSubPath, MAX_PATH)) {
|
||||
/* Fall back to hard coded defaults. */
|
||||
switch (LOWORD(pwszSubPath)) {
|
||||
case IDS_PERSONAL:
|
||||
lstrcpyW(wszSubPath, PersonalW);
|
||||
break;
|
||||
case IDS_MYMUSIC:
|
||||
lstrcpyW(wszSubPath, My_MusicW);
|
||||
break;
|
||||
case IDS_MYPICTURES:
|
||||
lstrcpyW(wszSubPath, My_PicturesW);
|
||||
break;
|
||||
case IDS_MYVIDEO:
|
||||
lstrcpyW(wszSubPath, My_VideoW);
|
||||
break;
|
||||
default:
|
||||
ERR("LoadString(%d) failed!\n", LOWORD(pwszSubPath));
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
lstrcpyW(wszSubPath, pwszSubPath);
|
||||
}
|
||||
|
||||
if (szBasePath[cLen-1] != '/') szBasePath[cLen++] = '/';
|
||||
|
||||
if (!WideCharToMultiByte(CP_ACP, 0, wszSubPath, -1, szBasePath + cLen,
|
||||
FILENAME_MAX - cLen, NULL, NULL))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
pBackslash = szBasePath + cLen;
|
||||
while ((pBackslash = strchr(pBackslash, '\\'))) *pBackslash = '/';
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
#if 0
|
||||
/******************************************************************************
|
||||
* _SHCreateSymbolicLinks [Internal]
|
||||
*
|
||||
* Sets up symbol links for various shell folders to point into the users home
|
||||
* directory. We do an educated guess about what the user would probably want:
|
||||
* - If there is a 'My Documents' directory in $HOME, the user probably wants
|
||||
* wine's 'My Documents' to point there. Furthermore, we imply that the user
|
||||
* is a Windows lover and has no problem with wine creating 'My Pictures',
|
||||
* 'My Music' and 'My Video' subfolders under '$HOME/My Documents', if those
|
||||
* do not already exits. We put appropriate symbolic links in place for those,
|
||||
* too.
|
||||
* - If there is no 'My Documents' directory in $HOME, we let 'My Documents'
|
||||
* point directly to $HOME. We assume the user to be a unix hacker who does not
|
||||
* want wine to create anything anywhere besides the .wine directory. So, if
|
||||
* there already is a 'My Music' directory in $HOME, we symlink the 'My Music'
|
||||
* shell folder to it. But if not, we symlink it to $HOME directly. The same
|
||||
* holds fo 'My Pictures' and 'My Video'.
|
||||
* - The Desktop shell folder is symlinked to '$HOME/Desktop', if that does
|
||||
* exists and left alone if not.
|
||||
* ('My Music',... above in fact means LoadString(IDS_MYMUSIC))
|
||||
*/
|
||||
static void _SHCreateSymbolicLinks(void)
|
||||
{
|
||||
static const UINT folders[] = {
|
||||
CSIDL_PROGRAM_FILES_COMMON,
|
||||
CSIDL_PROGRAM_FILES,
|
||||
};
|
||||
UINT aidsMyStuff[] = { IDS_MYPICTURES, IDS_MYVIDEO, IDS_MYMUSIC }, i;
|
||||
int acsidlMyStuff[] = { CSIDL_MYPICTURES, CSIDL_MYVIDEO, CSIDL_MYMUSIC };
|
||||
WCHAR wszTempPath[MAX_PATH];
|
||||
char szPersonalTarget[FILENAME_MAX], *pszPersonal;
|
||||
char szMyStuffTarget[FILENAME_MAX], *pszMyStuff;
|
||||
char szDesktopTarget[FILENAME_MAX], *pszDesktop;
|
||||
struct stat statFolder;
|
||||
const char *pszHome;
|
||||
HRESULT hr;
|
||||
|
||||
TRACE("\n");
|
||||
hr = _SHRegisterFolders(HKEY_LOCAL_MACHINE, NULL, szSHSetupFolders,
|
||||
szSHSetupFolders, folders, sizeof(folders) / sizeof(folders[0]));
|
||||
TRACE("returning 0x%08lx\n", hr);
|
||||
return hr;
|
||||
/* Create all necessary profile sub-dirs up to 'My Documents' and get the unix path. */
|
||||
hr = SHGetFolderPathW(NULL, CSIDL_PERSONAL|CSIDL_FLAG_CREATE, NULL,
|
||||
SHGFP_TYPE_DEFAULT, wszTempPath);
|
||||
if (FAILED(hr)) return;
|
||||
pszPersonal = wine_get_unix_file_name(wszTempPath);
|
||||
if (!pszPersonal) return;
|
||||
|
||||
pszHome = getenv("HOME");
|
||||
if (pszHome && !stat(pszHome, &statFolder) && S_ISDIR(statFolder.st_mode)) {
|
||||
strcpy(szPersonalTarget, pszHome);
|
||||
if (_SHAppendToUnixPath(szPersonalTarget, MAKEINTRESOURCEW(IDS_PERSONAL)) &&
|
||||
!stat(szPersonalTarget, &statFolder) && S_ISDIR(statFolder.st_mode))
|
||||
{
|
||||
/* '$HOME/My Documents' exists. Create 'My Pictures', 'My Videos' and
|
||||
* 'My Music' subfolders or fail silently if they already exist. */
|
||||
for (i = 0; i < sizeof(aidsMyStuff)/sizeof(aidsMyStuff[0]); i++) {
|
||||
strcpy(szMyStuffTarget, szPersonalTarget);
|
||||
if (_SHAppendToUnixPath(szMyStuffTarget, MAKEINTRESOURCEW(aidsMyStuff[i])))
|
||||
mkdir(szMyStuffTarget);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* '$HOME/My Documents' doesn't exists, but '$HOME' does. */
|
||||
strcpy(szPersonalTarget, pszHome);
|
||||
}
|
||||
|
||||
/* Replace 'My Documents' directory with a symlink of fail silently if not empty. */
|
||||
rmdir(pszPersonal);
|
||||
symlink(szPersonalTarget, pszPersonal);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* '$HOME' doesn't exist. Create 'My Pictures', 'My Videos' and 'My Music' subdirs
|
||||
* in '%USERPROFILE%\\My Documents' or fail silently if they already exist. */
|
||||
strcpy(szPersonalTarget, pszPersonal);
|
||||
for (i = 0; i < sizeof(aidsMyStuff)/sizeof(aidsMyStuff[0]); i++) {
|
||||
strcpy(szMyStuffTarget, szPersonalTarget);
|
||||
if (_SHAppendToUnixPath(szMyStuffTarget, MAKEINTRESOURCEW(aidsMyStuff[i])))
|
||||
mkdir(szMyStuffTarget);
|
||||
}
|
||||
}
|
||||
|
||||
HeapFree(GetProcessHeap(), 0, pszPersonal);
|
||||
|
||||
/* Create symbolic links for 'My Pictures', 'My Video' and 'My Music'. */
|
||||
for (i=0; i < sizeof(aidsMyStuff)/sizeof(aidsMyStuff[0]); i++) {
|
||||
/* Create the current 'My Whatever' folder and get it's unix path. */
|
||||
hr = SHGetFolderPathW(NULL, acsidlMyStuff[i]|CSIDL_FLAG_CREATE, NULL,
|
||||
SHGFP_TYPE_DEFAULT, wszTempPath);
|
||||
if (FAILED(hr)) continue;
|
||||
pszMyStuff = wine_get_unix_file_name(wszTempPath);
|
||||
if (!pszMyStuff) continue;
|
||||
|
||||
strcpy(szMyStuffTarget, szPersonalTarget);
|
||||
if (_SHAppendToUnixPath(szMyStuffTarget, MAKEINTRESOURCEW(aidsMyStuff[i])) &&
|
||||
!stat(szMyStuffTarget, &statFolder) && S_ISDIR(statFolder.st_mode))
|
||||
{
|
||||
/* If there's a 'My Whatever' directory where 'My Documents' links to, link to it. */
|
||||
rmdir(pszMyStuff);
|
||||
symlink(szMyStuffTarget, pszMyStuff);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Else link to where 'My Documents' itself links to. */
|
||||
rmdir(pszMyStuff);
|
||||
symlink(szPersonalTarget, pszMyStuff);
|
||||
}
|
||||
HeapFree(GetProcessHeap(), 0, pszMyStuff);
|
||||
}
|
||||
|
||||
/* Last but not least, the Desktop folder */
|
||||
strcpy(szDesktopTarget, pszHome);
|
||||
if (_SHAppendToUnixPath(szDesktopTarget, DesktopW) &&
|
||||
!stat(szDesktopTarget, &statFolder) && S_ISDIR(statFolder.st_mode))
|
||||
{
|
||||
hr = SHGetFolderPathW(NULL, CSIDL_DESKTOPDIRECTORY|CSIDL_FLAG_CREATE, NULL,
|
||||
SHGFP_TYPE_DEFAULT, wszTempPath);
|
||||
if (SUCCEEDED(hr) && (pszDesktop = wine_get_unix_file_name(wszTempPath)))
|
||||
{
|
||||
rmdir(pszDesktop);
|
||||
symlink(szDesktopTarget, pszDesktop);
|
||||
HeapFree(GetProcessHeap(), 0, pszDesktop);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Register the default values in the registry, as some apps seem to depend
|
||||
* on their presence. The set registered was taken from Windows XP.
|
||||
*/
|
||||
HRESULT SHELL_RegisterShellFolders(void)
|
||||
{
|
||||
HRESULT hr = _SHRegisterUserShellFolders(TRUE);
|
||||
HRESULT hr;
|
||||
|
||||
/* Set up '$HOME' targeted symlinks for 'My Documents', 'My Pictures',
|
||||
* 'My Video', 'My Music' and 'Desktop' in advance, so that the
|
||||
* _SHRegister*ShellFolders() functions will find everything nice and clean
|
||||
* and thus will not attempt to create them in the profile directory. */
|
||||
#if 0
|
||||
_SHCreateSymbolicLinks();
|
||||
#endif
|
||||
|
||||
hr = _SHRegisterUserShellFolders(TRUE);
|
||||
if (SUCCEEDED(hr))
|
||||
hr = _SHRegisterUserShellFolders(FALSE);
|
||||
if (SUCCEEDED(hr))
|
||||
hr = _SHRegisterCommonShellFolders();
|
||||
if (SUCCEEDED(hr))
|
||||
hr = _SHRegisterSetupShellFolders();
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -1992,7 +2214,7 @@ HRESULT WINAPI SHGetFolderLocation(
|
|||
{
|
||||
HRESULT hr = E_INVALIDARG;
|
||||
|
||||
TRACE("%p 0x%08x %p 0x%08lx %p\n",
|
||||
TRACE("%p 0x%08x %p 0x%08x %p\n",
|
||||
hwndOwner, nFolder, hToken, dwReserved, ppidl);
|
||||
|
||||
if (!ppidl)
|
||||
|
@ -2008,6 +2230,10 @@ HRESULT WINAPI SHGetFolderLocation(
|
|||
*ppidl = _ILCreateDesktop();
|
||||
break;
|
||||
|
||||
case CSIDL_PERSONAL:
|
||||
*ppidl = _ILCreateMyDocuments();
|
||||
break;
|
||||
|
||||
case CSIDL_INTERNET:
|
||||
*ppidl = _ILCreateIExplore();
|
||||
break;
|
||||
|
@ -2020,10 +2246,6 @@ HRESULT WINAPI SHGetFolderLocation(
|
|||
*ppidl = _ILCreatePrinters();
|
||||
break;
|
||||
|
||||
case CSIDL_FONTS:
|
||||
FIXME("virtual font folder");
|
||||
break;
|
||||
|
||||
case CSIDL_BITBUCKET:
|
||||
*ppidl = _ILCreateBitBucket();
|
||||
break;
|
||||
|
|
|
@ -18,12 +18,9 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#ifndef __SHFLDR_H
|
||||
#define __SHFLDR_H
|
||||
|
||||
#define CHARS_IN_GUID 39
|
||||
|
||||
typedef struct {
|
||||
|
@ -42,7 +39,7 @@ LPCWSTR GetNextElementW (LPCWSTR pszNext, LPWSTR pszOut, DWORD dwOut);
|
|||
HRESULT SHELL32_ParseNextElement (IShellFolder2 * psf, HWND hwndOwner, LPBC pbc, LPITEMIDLIST * pidlInOut,
|
||||
LPOLESTR szNext, DWORD * pEaten, DWORD * pdwAttributes);
|
||||
HRESULT SHELL32_GetItemAttributes (IShellFolder * psf, LPCITEMIDLIST pidl, LPDWORD pdwAttributes);
|
||||
HRESULT SHELL32_GetDisplayNameOfChild (IShellFolder2 * psf, LPCITEMIDLIST pidl, DWORD dwFlags, LPSTR szOut,
|
||||
HRESULT SHELL32_GetDisplayNameOfChild (IShellFolder2 * psf, LPCITEMIDLIST pidl, DWORD dwFlags, LPWSTR szOut,
|
||||
DWORD dwOutLen);
|
||||
|
||||
HRESULT SHELL32_BindToChild (LPCITEMIDLIST pidlRoot,
|
||||
|
@ -53,7 +50,7 @@ LPITEMIDLIST SHELL32_CreatePidlFromBindCtx(IBindCtx *pbc, LPCWSTR path);
|
|||
|
||||
static inline int SHELL32_GUIDToStringA (REFGUID guid, LPSTR str)
|
||||
{
|
||||
return sprintf(str, "{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
|
||||
return sprintf(str, "{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
|
||||
guid->Data1, guid->Data2, guid->Data3,
|
||||
guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3],
|
||||
guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7]);
|
||||
|
@ -72,7 +69,8 @@ static inline int SHELL32_GUIDToStringW (REFGUID guid, LPWSTR str)
|
|||
guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7]);
|
||||
}
|
||||
|
||||
void SHELL_FS_ProcessDisplayFilename(LPSTR szPath, DWORD dwFlags);
|
||||
void SHELL_FS_ProcessDisplayFilename(LPWSTR szPath, DWORD dwFlags);
|
||||
BOOL SHELL_FS_HideExtension(LPWSTR pwszPath);
|
||||
|
||||
#endif /* __SHFLDR_H */
|
||||
DEFINE_GUID( CLSID_UnixFolder, 0xcc702eb2, 0x7dc5, 0x11d9, 0xc6, 0x87, 0x00, 0x04, 0x23, 0x8a, 0x01, 0xcd );
|
||||
DEFINE_GUID( CLSID_UnixDosFolder, 0x9d20aae8, 0x0625, 0x44b0, 0x9c, 0xa7, 0x71, 0x88, 0x9c, 0x22, 0x54, 0xd9 );
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
@ -63,8 +63,6 @@ typedef struct {
|
|||
const IShellFolder2Vtbl *lpVtbl;
|
||||
LONG ref;
|
||||
|
||||
CLSID *pclsid;
|
||||
|
||||
/* both paths are parsible from the desktop */
|
||||
LPWSTR sPathTarget; /* complete path to target used for enumeration and ChangeNotify */
|
||||
LPITEMIDLIST pidlRoot; /* absolute pidl */
|
||||
|
@ -76,7 +74,7 @@ typedef struct {
|
|||
#define _IUnknown_(This) (IShellFolder*)&(This->lpVtbl)
|
||||
#define _IShellFolder_(This) (IShellFolder*)&(This->lpVtbl)
|
||||
|
||||
static shvheader DesktopSFHeader[] = {
|
||||
static const shvheader DesktopSFHeader[] = {
|
||||
{IDS_SHV_COLUMN1, SHCOLSTATE_TYPE_STR | SHCOLSTATE_ONBYDEFAULT, LVCFMT_RIGHT, 15},
|
||||
{IDS_SHV_COLUMN2, SHCOLSTATE_TYPE_STR | SHCOLSTATE_ONBYDEFAULT, LVCFMT_RIGHT, 10},
|
||||
{IDS_SHV_COLUMN3, SHCOLSTATE_TYPE_STR | SHCOLSTATE_ONBYDEFAULT, LVCFMT_RIGHT, 10},
|
||||
|
@ -119,32 +117,12 @@ static HRESULT WINAPI ISF_Desktop_fnQueryInterface(
|
|||
|
||||
static ULONG WINAPI ISF_Desktop_fnAddRef (IShellFolder2 * iface)
|
||||
{
|
||||
IGenericSFImpl *This = (IGenericSFImpl *)iface;
|
||||
ULONG refCount = InterlockedIncrement(&This->ref);
|
||||
|
||||
TRACE ("(%p)->(count=%lu)\n", This, refCount - 1);
|
||||
|
||||
return refCount;
|
||||
return 2; /* non-heap based object */
|
||||
}
|
||||
|
||||
static ULONG WINAPI ISF_Desktop_fnRelease (IShellFolder2 * iface)
|
||||
{
|
||||
IGenericSFImpl *This = (IGenericSFImpl *)iface;
|
||||
ULONG refCount = InterlockedDecrement(&This->ref);
|
||||
|
||||
TRACE ("(%p)->(count=%lu)\n", This, refCount + 1);
|
||||
|
||||
if (!refCount)
|
||||
{
|
||||
TRACE ("-- destroying IShellFolder(%p)\n", This);
|
||||
if (This->pidlRoot)
|
||||
SHFree (This->pidlRoot);
|
||||
if (This->sPathTarget)
|
||||
SHFree (This->sPathTarget);
|
||||
LocalFree ((HLOCAL) This);
|
||||
return 0;
|
||||
}
|
||||
return refCount;
|
||||
return 1; /* non-heap based object */
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
|
@ -186,8 +164,13 @@ static HRESULT WINAPI ISF_Desktop_fnParseDisplayName (IShellFolder2 * iface,
|
|||
}
|
||||
else if (PathGetDriveNumberW (lpszDisplayName) >= 0)
|
||||
{
|
||||
/* it's a filesystem path with a drive. Let MyComputer parse it */
|
||||
pidlTemp = _ILCreateMyComputer ();
|
||||
/* it's a filesystem path with a drive. Let MyComputer/UnixDosFolder parse it */
|
||||
#if 0
|
||||
if (UNIXFS_is_rooted_at_desktop())
|
||||
pidlTemp = _ILCreateGuid(PT_GUID, &CLSID_UnixDosFolder);
|
||||
else
|
||||
#endif
|
||||
pidlTemp = _ILCreateMyComputer ();
|
||||
szNext = lpszDisplayName;
|
||||
}
|
||||
else if (PathIsUNCW(lpszDisplayName))
|
||||
|
@ -246,7 +229,7 @@ static HRESULT WINAPI ISF_Desktop_fnParseDisplayName (IShellFolder2 * iface,
|
|||
|
||||
*ppidl = pidlTemp;
|
||||
|
||||
TRACE ("(%p)->(-- ret=0x%08lx)\n", This, hr);
|
||||
TRACE ("(%p)->(-- ret=0x%08x)\n", This, hr);
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
@ -265,7 +248,7 @@ static BOOL CreateDesktopEnumList(IEnumIDList *list, DWORD dwFlags)
|
|||
BOOL ret = TRUE;
|
||||
WCHAR szPath[MAX_PATH];
|
||||
|
||||
TRACE("(%p)->(flags=0x%08lx)\n", list, dwFlags);
|
||||
TRACE("(%p)->(flags=0x%08x)\n", list, dwFlags);
|
||||
|
||||
/* enumerate the root folders */
|
||||
if (dwFlags & SHCONTF_FOLDERS)
|
||||
|
@ -320,7 +303,7 @@ static HRESULT WINAPI ISF_Desktop_fnEnumObjects (IShellFolder2 * iface,
|
|||
{
|
||||
IGenericSFImpl *This = (IGenericSFImpl *)iface;
|
||||
|
||||
TRACE ("(%p)->(HWND=%p flags=0x%08lx pplist=%p)\n",
|
||||
TRACE ("(%p)->(HWND=%p flags=0x%08x pplist=%p)\n",
|
||||
This, hwndOwner, dwFlags, ppEnumIDList);
|
||||
|
||||
*ppEnumIDList = IEnumIDList_Constructor();
|
||||
|
@ -432,7 +415,7 @@ static HRESULT WINAPI ISF_Desktop_fnGetAttributesOf (IShellFolder2 * iface,
|
|||
SFGAO_CANRENAME | SFGAO_CANDELETE | SFGAO_HASPROPSHEET |
|
||||
SFGAO_DROPTARGET | SFGAO_FILESYSANCESTOR | SFGAO_FOLDER | SFGAO_HASSUBFOLDER;
|
||||
|
||||
TRACE ("(%p)->(cidl=%d apidl=%p mask=%p (0x%08lx))\n",
|
||||
TRACE ("(%p)->(cidl=%d apidl=%p mask=%p (0x%08x))\n",
|
||||
This, cidl, apidl, rgfInOut, rgfInOut ? *rgfInOut : 0);
|
||||
|
||||
if (!rgfInOut)
|
||||
|
@ -462,7 +445,7 @@ static HRESULT WINAPI ISF_Desktop_fnGetAttributesOf (IShellFolder2 * iface,
|
|||
/* make sure SFGAO_VALIDATE is cleared, some apps depend on that */
|
||||
*rgfInOut &= ~SFGAO_VALIDATE;
|
||||
|
||||
TRACE ("-- result=0x%08lx\n", *rgfInOut);
|
||||
TRACE ("-- result=0x%08x\n", *rgfInOut);
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
@ -544,7 +527,7 @@ static HRESULT WINAPI ISF_Desktop_fnGetUIObjectOf (IShellFolder2 * iface,
|
|||
hr = E_OUTOFMEMORY;
|
||||
|
||||
*ppvOut = pObj;
|
||||
TRACE ("(%p)->hr=0x%08lx\n", This, hr);
|
||||
TRACE ("(%p)->hr=0x%08x\n", This, hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -559,40 +542,25 @@ static HRESULT WINAPI ISF_Desktop_fnGetDisplayNameOf (IShellFolder2 * iface,
|
|||
{
|
||||
IGenericSFImpl *This = (IGenericSFImpl *)iface;
|
||||
HRESULT hr = S_OK;
|
||||
LPWSTR pszPath;
|
||||
|
||||
TRACE ("(%p)->(pidl=%p,0x%08lx,%p)\n", This, pidl, dwFlags, strRet);
|
||||
TRACE ("(%p)->(pidl=%p,0x%08x,%p)\n", This, pidl, dwFlags, strRet);
|
||||
pdump (pidl);
|
||||
|
||||
if (!strRet)
|
||||
return E_INVALIDARG;
|
||||
|
||||
strRet->uType = STRRET_CSTR;
|
||||
pszPath = 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))
|
||||
{
|
||||
BOOL defCharUsed;
|
||||
|
||||
WideCharToMultiByte( CP_ACP, 0, This->sPathTarget, -1,
|
||||
strRet->u.cStr, MAX_PATH, NULL, &defCharUsed );
|
||||
if (defCharUsed)
|
||||
{
|
||||
strRet->u.pOleStr = SHAlloc((lstrlenW(This->sPathTarget)+1) *
|
||||
sizeof(WCHAR));
|
||||
if (!strRet->u.pOleStr)
|
||||
hr = E_OUTOFMEMORY;
|
||||
else
|
||||
{
|
||||
strcpyW(strRet->u.pOleStr, This->sPathTarget);
|
||||
strRet->uType = STRRET_WSTR;
|
||||
}
|
||||
}
|
||||
}
|
||||
strcpyW(pszPath, This->sPathTarget);
|
||||
else
|
||||
{
|
||||
HCR_GetClassNameA(&CLSID_ShellDesktop, strRet->u.cStr, MAX_PATH);
|
||||
}
|
||||
HCR_GetClassNameW(&CLSID_ShellDesktop, pszPath, MAX_PATH);
|
||||
}
|
||||
else if (_ILIsPidlSimple (pidl))
|
||||
{
|
||||
|
@ -647,50 +615,70 @@ static HRESULT WINAPI ISF_Desktop_fnGetDisplayNameOf (IShellFolder2 * iface,
|
|||
* Only the folder itself can know it
|
||||
*/
|
||||
hr = SHELL32_GetDisplayNameOfChild (iface, pidl, dwFlags,
|
||||
strRet->u.cStr,
|
||||
pszPath,
|
||||
MAX_PATH);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* parsing name like ::{...} */
|
||||
lstrcpyA (strRet->u.cStr, "::");
|
||||
SHELL32_GUIDToStringA (clsid, &strRet->u.cStr[2]);
|
||||
pszPath[0] = ':';
|
||||
pszPath[1] = ':';
|
||||
SHELL32_GUIDToStringW (clsid, &pszPath[2]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* user friendly name */
|
||||
HCR_GetClassNameA (clsid, strRet->u.cStr, MAX_PATH);
|
||||
HCR_GetClassNameW (clsid, 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))
|
||||
{
|
||||
WideCharToMultiByte(CP_ACP, 0, This->sPathTarget, -1, strRet->u.cStr, MAX_PATH,
|
||||
NULL, NULL);
|
||||
PathAddBackslashA(strRet->u.cStr);
|
||||
cLen = lstrlenA(strRet->u.cStr);
|
||||
lstrcpynW(pszPath, This->sPathTarget, MAX_PATH - 1);
|
||||
PathAddBackslashW(pszPath);
|
||||
cLen = lstrlenW(pszPath);
|
||||
}
|
||||
|
||||
_ILSimpleGetText (pidl, strRet->u.cStr + cLen, MAX_PATH - cLen);
|
||||
|
||||
_ILSimpleGetTextW(pidl, pszPath + cLen, MAX_PATH - cLen);
|
||||
|
||||
if (!_ILIsFolder(pidl))
|
||||
SHELL_FS_ProcessDisplayFilename(strRet->u.cStr, dwFlags);
|
||||
SHELL_FS_ProcessDisplayFilename(pszPath, dwFlags);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* a complex pidl, let the subfolder do the work */
|
||||
hr = SHELL32_GetDisplayNameOfChild (iface, pidl, dwFlags,
|
||||
strRet->u.cStr, MAX_PATH);
|
||||
pszPath, MAX_PATH);
|
||||
}
|
||||
|
||||
TRACE ("-- (%p)->(%s,0x%08lx)\n", This,
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
/* Win9x always returns ANSI strings, NT always returns Unicode strings */
|
||||
if (GetVersion() & 0x80000000)
|
||||
{
|
||||
strRet->uType = STRRET_CSTR;
|
||||
if (!WideCharToMultiByte(CP_ACP, 0, pszPath, -1, strRet->u.cStr, MAX_PATH,
|
||||
NULL, NULL))
|
||||
strRet->u.cStr[0] = '\0';
|
||||
CoTaskMemFree(pszPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
strRet->uType = STRRET_WSTR;
|
||||
strRet->u.pOleStr = pszPath;
|
||||
}
|
||||
}
|
||||
else
|
||||
CoTaskMemFree(pszPath);
|
||||
|
||||
TRACE ("-- (%p)->(%s,0x%08x)\n", This,
|
||||
strRet->uType == STRRET_CSTR ? strRet->u.cStr :
|
||||
debugstr_w(strRet->u.pOleStr), hr);
|
||||
return hr;
|
||||
|
@ -714,7 +702,7 @@ static HRESULT WINAPI ISF_Desktop_fnSetNameOf (IShellFolder2 * iface,
|
|||
{
|
||||
IGenericSFImpl *This = (IGenericSFImpl *)iface;
|
||||
|
||||
FIXME ("(%p)->(%p,pidl=%p,%s,%lu,%p)\n", This, hwndOwner, pidl,
|
||||
FIXME ("(%p)->(%p,pidl=%p,%s,%u,%p)\n", This, hwndOwner, pidl,
|
||||
debugstr_w (lpName), dwFlags, pPidlOut);
|
||||
|
||||
return E_FAIL;
|
||||
|
@ -861,9 +849,8 @@ static const IShellFolder2Vtbl vt_MCFldr_ShellFolder2 =
|
|||
HRESULT WINAPI ISF_Desktop_Constructor (
|
||||
IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv)
|
||||
{
|
||||
IGenericSFImpl *sf;
|
||||
static IGenericSFImpl *cached_sf;
|
||||
WCHAR szMyPath[MAX_PATH];
|
||||
HRESULT r;
|
||||
|
||||
TRACE ("unkOut=%p %s\n", pUnkOuter, shdebugstr_guid (riid));
|
||||
|
||||
|
@ -872,26 +859,31 @@ HRESULT WINAPI ISF_Desktop_Constructor (
|
|||
if (pUnkOuter)
|
||||
return CLASS_E_NOAGGREGATION;
|
||||
|
||||
if (!SHGetSpecialFolderPathW( 0, szMyPath, CSIDL_DESKTOPDIRECTORY, TRUE ))
|
||||
return E_UNEXPECTED;
|
||||
|
||||
sf = LocalAlloc( LMEM_ZEROINIT, sizeof (IGenericSFImpl) );
|
||||
if (!sf)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
sf->ref = 0;
|
||||
sf->lpVtbl = &vt_MCFldr_ShellFolder2;
|
||||
sf->pidlRoot = _ILCreateDesktop(); /* my qualified pidl */
|
||||
sf->sPathTarget = SHAlloc( (lstrlenW(szMyPath) + 1)*sizeof(WCHAR) );
|
||||
lstrcpyW( sf->sPathTarget, szMyPath );
|
||||
|
||||
r = IUnknown_QueryInterface( _IUnknown_(sf), riid, ppv );
|
||||
if (!SUCCEEDED (r))
|
||||
if (!cached_sf)
|
||||
{
|
||||
IUnknown_Release( _IUnknown_(sf) );
|
||||
return r;
|
||||
IGenericSFImpl *sf;
|
||||
|
||||
if (!SHGetSpecialFolderPathW( 0, szMyPath, CSIDL_DESKTOPDIRECTORY, TRUE ))
|
||||
return E_UNEXPECTED;
|
||||
|
||||
sf = LocalAlloc( LMEM_ZEROINIT, sizeof (IGenericSFImpl) );
|
||||
if (!sf)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
sf->ref = 1;
|
||||
sf->lpVtbl = &vt_MCFldr_ShellFolder2;
|
||||
sf->pidlRoot = _ILCreateDesktop(); /* my qualified pidl */
|
||||
sf->sPathTarget = SHAlloc( (lstrlenW(szMyPath) + 1)*sizeof(WCHAR) );
|
||||
lstrcpyW( sf->sPathTarget, szMyPath );
|
||||
|
||||
if (InterlockedCompareExchangePointer((void *)&cached_sf, sf, NULL) != NULL)
|
||||
{
|
||||
/* some other thread already been here */
|
||||
SHFree( sf->pidlRoot );
|
||||
SHFree( sf->sPathTarget );
|
||||
LocalFree( sf );
|
||||
}
|
||||
}
|
||||
|
||||
TRACE ("--(%p)\n", sf);
|
||||
return S_OK;
|
||||
return IUnknown_QueryInterface( _IUnknown_(cached_sf), riid, ppv );
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
/*
|
||||
* file system folder
|
||||
*
|
||||
|
@ -16,7 +17,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
@ -54,8 +55,6 @@
|
|||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL (shell);
|
||||
|
||||
extern BOOL fileMoving;
|
||||
|
||||
/***********************************************************************
|
||||
* IShellFolder implementation
|
||||
*/
|
||||
|
@ -73,7 +72,7 @@ typedef struct {
|
|||
CLSID *pclsid;
|
||||
|
||||
/* both paths are parsible from the desktop */
|
||||
LPSTR sPathTarget; /* complete path to target used for enumeration and ChangeNotify */
|
||||
LPWSTR sPathTarget; /* complete path to target used for enumeration and ChangeNotify */
|
||||
|
||||
LPITEMIDLIST pidlRoot; /* absolute pidl */
|
||||
|
||||
|
@ -180,7 +179,7 @@ static ULONG WINAPI IUnknown_fnAddRef (IUnknown * iface)
|
|||
IGenericSFImpl *This = (IGenericSFImpl *)iface;
|
||||
ULONG refCount = InterlockedIncrement(&This->ref);
|
||||
|
||||
TRACE ("(%p)->(count=%lu)\n", This, refCount - 1);
|
||||
TRACE ("(%p)->(count=%u)\n", This, refCount - 1);
|
||||
|
||||
return refCount;
|
||||
}
|
||||
|
@ -190,15 +189,13 @@ static ULONG WINAPI IUnknown_fnRelease (IUnknown * iface)
|
|||
IGenericSFImpl *This = (IGenericSFImpl *)iface;
|
||||
ULONG refCount = InterlockedDecrement(&This->ref);
|
||||
|
||||
TRACE ("(%p)->(count=%lu)\n", This, refCount + 1);
|
||||
TRACE ("(%p)->(count=%u)\n", This, refCount + 1);
|
||||
|
||||
if (!refCount) {
|
||||
TRACE ("-- destroying IShellFolder(%p)\n", This);
|
||||
|
||||
if (This->pidlRoot)
|
||||
SHFree (This->pidlRoot);
|
||||
if (This->sPathTarget)
|
||||
SHFree (This->sPathTarget);
|
||||
SHFree (This->pidlRoot);
|
||||
SHFree (This->sPathTarget);
|
||||
LocalFree ((HLOCAL) This);
|
||||
}
|
||||
return refCount;
|
||||
|
@ -211,7 +208,7 @@ static const IUnknownVtbl unkvt =
|
|||
IUnknown_fnRelease,
|
||||
};
|
||||
|
||||
static shvheader GenericSFHeader[] = {
|
||||
static const shvheader GenericSFHeader[] = {
|
||||
{IDS_SHV_COLUMN1, SHCOLSTATE_TYPE_STR | SHCOLSTATE_ONBYDEFAULT, LVCFMT_RIGHT, 15},
|
||||
{IDS_SHV_COLUMN2, SHCOLSTATE_TYPE_STR | SHCOLSTATE_ONBYDEFAULT, LVCFMT_RIGHT, 10},
|
||||
{IDS_SHV_COLUMN3, SHCOLSTATE_TYPE_STR | SHCOLSTATE_ONBYDEFAULT, LVCFMT_RIGHT, 10},
|
||||
|
@ -286,7 +283,7 @@ static ULONG WINAPI IShellFolder_fnAddRef (IShellFolder2 * iface)
|
|||
{
|
||||
IGenericSFImpl *This = impl_from_IShellFolder2(iface);
|
||||
|
||||
TRACE ("(%p)->(count=%lu)\n", This, This->ref);
|
||||
TRACE ("(%p)->(count=%u)\n", This, This->ref);
|
||||
|
||||
return IUnknown_AddRef (This->pUnkOuter);
|
||||
}
|
||||
|
@ -298,7 +295,7 @@ static ULONG WINAPI IShellFolder_fnRelease (IShellFolder2 * iface)
|
|||
{
|
||||
IGenericSFImpl *This = impl_from_IShellFolder2(iface);
|
||||
|
||||
TRACE ("(%p)->(count=%lu)\n", This, This->ref);
|
||||
TRACE ("(%p)->(count=%u)\n", This, This->ref);
|
||||
|
||||
return IUnknown_Release (This->pUnkOuter);
|
||||
}
|
||||
|
@ -312,7 +309,7 @@ static ULONG WINAPI IShellFolder_fnRelease (IShellFolder2 * iface)
|
|||
*/
|
||||
LPITEMIDLIST SHELL32_CreatePidlFromBindCtx(IBindCtx *pbc, LPCWSTR path)
|
||||
{
|
||||
static const WCHAR szfsbc[] = {
|
||||
static WCHAR szfsbc[] = {
|
||||
'F','i','l','e',' ','S','y','s','t','e','m',' ',
|
||||
'B','i','n','d',' ','D','a','t','a',0 };
|
||||
IFileSystemBindData *fsbd = NULL;
|
||||
|
@ -406,8 +403,7 @@ IShellFolder_fnParseDisplayName (IShellFolder2 * iface,
|
|||
szNext = GetNextElementW (lpszDisplayName, szElement, MAX_PATH);
|
||||
|
||||
/* build the full pathname to the element */
|
||||
/* lstrcpyW(szPath, This->sPathTarget); */
|
||||
MultiByteToWideChar(CP_ACP, 0, This->sPathTarget, -1, szPath, MAX_PATH);
|
||||
lstrcpynW(szPath, This->sPathTarget, MAX_PATH - 1);
|
||||
PathAddBackslashW(szPath);
|
||||
len = lstrlenW(szPath);
|
||||
lstrcpynW(szPath + len, szElement, MAX_PATH - len);
|
||||
|
@ -435,7 +431,7 @@ IShellFolder_fnParseDisplayName (IShellFolder2 * iface,
|
|||
else
|
||||
*ppidl = NULL;
|
||||
|
||||
TRACE ("(%p)->(-- pidl=%p ret=0x%08lx)\n", This, ppidl ? *ppidl : 0, hr);
|
||||
TRACE ("(%p)->(-- pidl=%p ret=0x%08x)\n", This, ppidl ? *ppidl : 0, hr);
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
@ -453,16 +449,12 @@ IShellFolder_fnEnumObjects (IShellFolder2 * iface, HWND hwndOwner,
|
|||
{
|
||||
IGenericSFImpl *This = impl_from_IShellFolder2(iface);
|
||||
|
||||
TRACE ("(%p)->(HWND=%p flags=0x%08lx pplist=%p)\n", This, hwndOwner,
|
||||
TRACE ("(%p)->(HWND=%p flags=0x%08x pplist=%p)\n", This, hwndOwner,
|
||||
dwFlags, ppEnumIDList);
|
||||
|
||||
*ppEnumIDList = IEnumIDList_Constructor();
|
||||
if (*ppEnumIDList)
|
||||
{
|
||||
WCHAR path[MAX_PATH];
|
||||
MultiByteToWideChar(CP_ACP, 0, This->sPathTarget, -1, path, MAX_PATH);
|
||||
CreateFolderEnumList(*ppEnumIDList, path, dwFlags);
|
||||
}
|
||||
CreateFolderEnumList(*ppEnumIDList, This->sPathTarget, dwFlags);
|
||||
|
||||
TRACE ("-- (%p)->(new ID List: %p)\n", This, *ppEnumIDList);
|
||||
|
||||
|
@ -482,13 +474,11 @@ IShellFolder_fnBindToObject (IShellFolder2 * iface, LPCITEMIDLIST pidl,
|
|||
LPBC pbc, REFIID riid, LPVOID * ppvOut)
|
||||
{
|
||||
IGenericSFImpl *This = impl_from_IShellFolder2(iface);
|
||||
WCHAR szPath[MAX_PATH];
|
||||
|
||||
TRACE ("(%p)->(pidl=%p,%p,%s,%p)\n", This, pidl, pbc,
|
||||
shdebugstr_guid (riid), ppvOut);
|
||||
|
||||
MultiByteToWideChar(CP_ACP, 0, This->sPathTarget, -1, szPath, MAX_PATH);
|
||||
return SHELL32_BindToChild (This->pidlRoot, szPath, pidl, riid,
|
||||
return SHELL32_BindToChild (This->pidlRoot, This->sPathTarget, pidl, riid,
|
||||
ppvOut);
|
||||
}
|
||||
|
||||
|
@ -583,7 +573,7 @@ IShellFolder_fnGetAttributesOf (IShellFolder2 * iface, UINT cidl,
|
|||
|
||||
HRESULT hr = S_OK;
|
||||
|
||||
TRACE ("(%p)->(cidl=%d apidl=%p mask=%p (0x%08lx))\n", This, cidl, apidl,
|
||||
TRACE ("(%p)->(cidl=%d apidl=%p mask=%p (0x%08x))\n", This, cidl, apidl,
|
||||
rgfInOut, rgfInOut ? *rgfInOut : 0);
|
||||
|
||||
if (!rgfInOut)
|
||||
|
@ -615,7 +605,7 @@ IShellFolder_fnGetAttributesOf (IShellFolder2 * iface, UINT cidl,
|
|||
/* make sure SFGAO_VALIDATE is cleared, some apps depend on that */
|
||||
*rgfInOut &= ~SFGAO_VALIDATE;
|
||||
|
||||
TRACE ("-- result=0x%08lx\n", *rgfInOut);
|
||||
TRACE ("-- result=0x%08x\n", *rgfInOut);
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
@ -696,7 +686,7 @@ IShellFolder_fnGetUIObjectOf (IShellFolder2 * iface,
|
|||
|
||||
*ppvOut = pObj;
|
||||
}
|
||||
TRACE ("(%p)->hr=0x%08lx\n", This, hr);
|
||||
TRACE ("(%p)->hr=0x%08x\n", This, hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -753,16 +743,13 @@ BOOL SHELL_FS_HideExtension(LPWSTR szPath)
|
|||
return doHide;
|
||||
}
|
||||
|
||||
void SHELL_FS_ProcessDisplayFilename(LPSTR szPath, DWORD dwFlags)
|
||||
void SHELL_FS_ProcessDisplayFilename(LPWSTR szPath, DWORD dwFlags)
|
||||
{
|
||||
WCHAR pathW[MAX_PATH];
|
||||
|
||||
/*FIXME: MSDN also mentions SHGDN_FOREDITING which is not yet handled. */
|
||||
if (!(dwFlags & SHGDN_FORPARSING) &&
|
||||
((dwFlags & SHGDN_INFOLDER) || (dwFlags == SHGDN_NORMAL))) {
|
||||
MultiByteToWideChar(CP_ACP, 0, szPath, -1, pathW, MAX_PATH);
|
||||
if (SHELL_FS_HideExtension(pathW) && szPath[0] != '.')
|
||||
PathRemoveExtensionA (szPath);
|
||||
if (SHELL_FS_HideExtension(szPath) && szPath[0] != '.')
|
||||
PathRemoveExtensionW(szPath);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -784,23 +771,27 @@ IShellFolder_fnGetDisplayNameOf (IShellFolder2 * iface, LPCITEMIDLIST pidl,
|
|||
DWORD dwFlags, LPSTRRET strRet)
|
||||
{
|
||||
IGenericSFImpl *This = impl_from_IShellFolder2(iface);
|
||||
LPWSTR pszPath;
|
||||
|
||||
HRESULT hr = S_OK;
|
||||
int len = 0;
|
||||
|
||||
TRACE ("(%p)->(pidl=%p,0x%08lx,%p)\n", This, pidl, dwFlags, strRet);
|
||||
TRACE ("(%p)->(pidl=%p,0x%08x,%p)\n", This, pidl, dwFlags, strRet);
|
||||
pdump (pidl);
|
||||
|
||||
if (!pidl || !strRet)
|
||||
return E_INVALIDARG;
|
||||
|
||||
strRet->uType = STRRET_CSTR;
|
||||
|
||||
pszPath = CoTaskMemAlloc((MAX_PATH +1) * sizeof(WCHAR));
|
||||
if (!pszPath)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
if (_ILIsDesktop(pidl)) { /* empty pidl */
|
||||
if ((GET_SHGDN_FOR(dwFlags) & SHGDN_FORPARSING) &&
|
||||
(GET_SHGDN_RELATION(dwFlags) != SHGDN_INFOLDER))
|
||||
{
|
||||
if (This->sPathTarget)
|
||||
lstrcpynA(strRet->u.cStr, This->sPathTarget, MAX_PATH);
|
||||
lstrcpynW(pszPath, This->sPathTarget, MAX_PATH);
|
||||
} else {
|
||||
/* pidl has to contain exactly one non null SHITEMID */
|
||||
hr = E_INVALIDARG;
|
||||
|
@ -810,17 +801,32 @@ IShellFolder_fnGetDisplayNameOf (IShellFolder2 * iface, LPCITEMIDLIST pidl,
|
|||
(GET_SHGDN_RELATION(dwFlags) != SHGDN_INFOLDER) &&
|
||||
This->sPathTarget)
|
||||
{
|
||||
lstrcpynA(strRet->u.cStr, This->sPathTarget, MAX_PATH);
|
||||
PathAddBackslashA(strRet->u.cStr);
|
||||
len = lstrlenA(strRet->u.cStr);
|
||||
lstrcpynW(pszPath, This->sPathTarget, MAX_PATH);
|
||||
PathAddBackslashW(pszPath);
|
||||
len = lstrlenW(pszPath);
|
||||
}
|
||||
_ILSimpleGetText(pidl, strRet->u.cStr + len, MAX_PATH - len);
|
||||
if (!_ILIsFolder(pidl)) SHELL_FS_ProcessDisplayFilename(strRet->u.cStr, dwFlags);
|
||||
_ILSimpleGetTextW(pidl, pszPath + len, MAX_PATH + 1 - len);
|
||||
if (!_ILIsFolder(pidl)) SHELL_FS_ProcessDisplayFilename(pszPath, dwFlags);
|
||||
} else {
|
||||
hr = SHELL32_GetDisplayNameOfChild(iface, pidl, dwFlags, strRet->u.cStr, MAX_PATH);
|
||||
hr = SHELL32_GetDisplayNameOfChild(iface, pidl, dwFlags, pszPath, MAX_PATH);
|
||||
}
|
||||
|
||||
TRACE ("-- (%p)->(%s)\n", This, strRet->u.cStr);
|
||||
if (SUCCEEDED(hr)) {
|
||||
/* Win9x always returns ANSI strings, NT always returns Unicode strings */
|
||||
if (GetVersion() & 0x80000000) {
|
||||
strRet->uType = STRRET_CSTR;
|
||||
if (!WideCharToMultiByte(CP_ACP, 0, pszPath, -1, strRet->u.cStr, MAX_PATH,
|
||||
NULL, NULL))
|
||||
strRet->u.cStr[0] = '\0';
|
||||
CoTaskMemFree(pszPath);
|
||||
} else {
|
||||
strRet->uType = STRRET_WSTR;
|
||||
strRet->u.pOleStr = pszPath;
|
||||
}
|
||||
} else
|
||||
CoTaskMemFree(pszPath);
|
||||
|
||||
TRACE ("-- (%p)->(%s)\n", This, strRet->uType == STRRET_CSTR ? strRet->u.cStr : debugstr_w(strRet->u.pOleStr));
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -844,25 +850,25 @@ static HRESULT WINAPI IShellFolder_fnSetNameOf (IShellFolder2 * iface,
|
|||
LPITEMIDLIST * pPidlOut)
|
||||
{
|
||||
IGenericSFImpl *This = impl_from_IShellFolder2(iface);
|
||||
WCHAR szSrc[MAX_PATH], szDest[MAX_PATH];
|
||||
WCHAR szSrc[MAX_PATH + 1], szDest[MAX_PATH + 1];
|
||||
LPWSTR ptr;
|
||||
BOOL bIsFolder = _ILIsFolder (ILFindLastID (pidl));
|
||||
|
||||
TRACE ("(%p)->(%p,pidl=%p,%s,%lu,%p)\n", This, hwndOwner, pidl,
|
||||
TRACE ("(%p)->(%p,pidl=%p,%s,%u,%p)\n", This, hwndOwner, pidl,
|
||||
debugstr_w (lpName), dwFlags, pPidlOut);
|
||||
|
||||
/* build source path */
|
||||
MultiByteToWideChar(CP_ACP, 0, This->sPathTarget, -1, szSrc, MAX_PATH);
|
||||
lstrcpynW(szSrc, This->sPathTarget, MAX_PATH);
|
||||
ptr = PathAddBackslashW (szSrc);
|
||||
if (ptr)
|
||||
_ILSimpleGetTextW (pidl, ptr, MAX_PATH - (ptr - szSrc));
|
||||
_ILSimpleGetTextW (pidl, ptr, MAX_PATH + 1 - (ptr - szSrc));
|
||||
|
||||
/* build destination path */
|
||||
if (dwFlags == SHGDN_NORMAL || dwFlags & SHGDN_INFOLDER) {
|
||||
MultiByteToWideChar(CP_ACP, 0, This->sPathTarget, -1, szDest, MAX_PATH);
|
||||
lstrcpynW(szDest, This->sPathTarget, MAX_PATH);
|
||||
ptr = PathAddBackslashW (szDest);
|
||||
if (ptr)
|
||||
lstrcpynW(ptr, lpName, MAX_PATH - (ptr - szDest));
|
||||
lstrcpynW(ptr, lpName, MAX_PATH + 1 - (ptr - szDest));
|
||||
} else
|
||||
lstrcpynW(szDest, lpName, MAX_PATH);
|
||||
|
||||
|
@ -969,6 +975,8 @@ IShellFolder_fnGetDetailsOf (IShellFolder2 * iface, LPCITEMIDLIST pidl,
|
|||
psd->str.u.cStr, MAX_PATH);
|
||||
return S_OK;
|
||||
} else {
|
||||
hr = S_OK;
|
||||
psd->str.uType = STRRET_CSTR;
|
||||
/* the data from the pidl */
|
||||
switch (iColumn) {
|
||||
case 0: /* name */
|
||||
|
@ -988,8 +996,6 @@ IShellFolder_fnGetDetailsOf (IShellFolder2 * iface, LPCITEMIDLIST pidl,
|
|||
_ILGetFileAttributes (pidl, psd->str.u.cStr, MAX_PATH);
|
||||
break;
|
||||
}
|
||||
hr = S_OK;
|
||||
psd->str.uType = STRRET_CSTR;
|
||||
}
|
||||
|
||||
return hr;
|
||||
|
@ -1038,7 +1044,7 @@ ISFHelper_fnQueryInterface (ISFHelper * iface, REFIID riid, LPVOID * ppvObj)
|
|||
{
|
||||
IGenericSFImpl *This = impl_from_ISFHelper(iface);
|
||||
|
||||
TRACE ("(%p)->(count=%lu)\n", This, This->ref);
|
||||
TRACE ("(%p)->(count=%u)\n", This, This->ref);
|
||||
|
||||
return IUnknown_QueryInterface (This->pUnkOuter, riid, ppvObj);
|
||||
}
|
||||
|
@ -1047,7 +1053,7 @@ static ULONG WINAPI ISFHelper_fnAddRef (ISFHelper * iface)
|
|||
{
|
||||
IGenericSFImpl *This = impl_from_ISFHelper(iface);
|
||||
|
||||
TRACE ("(%p)->(count=%lu)\n", This, This->ref);
|
||||
TRACE ("(%p)->(count=%u)\n", This, This->ref);
|
||||
|
||||
return IUnknown_AddRef (This->pUnkOuter);
|
||||
}
|
||||
|
@ -1068,20 +1074,21 @@ static ULONG WINAPI ISFHelper_fnRelease (ISFHelper * iface)
|
|||
*/
|
||||
|
||||
static HRESULT WINAPI
|
||||
ISFHelper_fnGetUniqueName (ISFHelper * iface, LPSTR lpName, UINT uLen)
|
||||
ISFHelper_fnGetUniqueName (ISFHelper * iface, LPWSTR pwszName, UINT uLen)
|
||||
{
|
||||
IGenericSFImpl *This = impl_from_ISFHelper(iface);
|
||||
IEnumIDList *penum;
|
||||
HRESULT hr;
|
||||
char szText[MAX_PATH];
|
||||
const char *szNewFolder = "New Folder";
|
||||
WCHAR wszText[MAX_PATH];
|
||||
const WCHAR wszNewFolder[] = {'N','e','w',' ','F','o','l','d','e','r',0 };
|
||||
const WCHAR wszFormat[] = {'%','s',' ','%','d',0 };
|
||||
|
||||
TRACE ("(%p)(%s %u)\n", This, lpName, uLen);
|
||||
TRACE ("(%p)(%p %u)\n", This, pwszName, uLen);
|
||||
|
||||
if (uLen < strlen (szNewFolder) + 4)
|
||||
if (uLen < sizeof(wszNewFolder)/sizeof(WCHAR) + 3)
|
||||
return E_POINTER;
|
||||
|
||||
strcpy (lpName, szNewFolder);
|
||||
lstrcpynW (pwszName, wszNewFolder, uLen);
|
||||
|
||||
hr = IShellFolder_fnEnumObjects (_IShellFolder2_ (This), 0,
|
||||
SHCONTF_FOLDERS | SHCONTF_NONFOLDERS | SHCONTF_INCLUDEHIDDEN, &penum);
|
||||
|
@ -1094,9 +1101,9 @@ next:
|
|||
IEnumIDList_Reset (penum);
|
||||
while (S_OK == IEnumIDList_Next (penum, 1, &pidl, &dwFetched) &&
|
||||
dwFetched) {
|
||||
_ILSimpleGetText (pidl, szText, MAX_PATH);
|
||||
if (0 == strcasecmp (szText, lpName)) {
|
||||
sprintf (lpName, "%s %d", szNewFolder, i++);
|
||||
_ILSimpleGetTextW (pidl, wszText, MAX_PATH);
|
||||
if (0 == lstrcmpiW (wszText, pwszName)) {
|
||||
snprintfW (pwszName, uLen, wszFormat, wszNewFolder, i++);
|
||||
if (i > 99) {
|
||||
hr = E_FAIL;
|
||||
break;
|
||||
|
@ -1117,44 +1124,76 @@ next:
|
|||
*/
|
||||
|
||||
static HRESULT WINAPI
|
||||
ISFHelper_fnAddFolder (ISFHelper * iface, HWND hwnd, LPCSTR lpName,
|
||||
ISFHelper_fnAddFolder (ISFHelper * iface, HWND hwnd, LPCWSTR pwszName,
|
||||
LPITEMIDLIST * ppidlOut)
|
||||
{
|
||||
IGenericSFImpl *This = impl_from_ISFHelper(iface);
|
||||
char lpstrNewDir[MAX_PATH];
|
||||
WCHAR wszNewDir[MAX_PATH];
|
||||
DWORD bRes;
|
||||
HRESULT hres = E_FAIL;
|
||||
|
||||
TRACE ("(%p)(%s %p)\n", This, lpName, ppidlOut);
|
||||
TRACE ("(%p)(%s %p)\n", This, debugstr_w(pwszName), ppidlOut);
|
||||
|
||||
strcpy (lpstrNewDir, This->sPathTarget);
|
||||
PathAppendA(lpstrNewDir, lpName);
|
||||
wszNewDir[0] = 0;
|
||||
if (This->sPathTarget)
|
||||
lstrcpynW(wszNewDir, This->sPathTarget, MAX_PATH);
|
||||
PathAppendW(wszNewDir, pwszName);
|
||||
|
||||
bRes = CreateDirectoryA (lpstrNewDir, NULL);
|
||||
bRes = CreateDirectoryW (wszNewDir, NULL);
|
||||
if (bRes) {
|
||||
SHChangeNotify (SHCNE_MKDIR, SHCNF_PATHA, lpstrNewDir, NULL);
|
||||
SHChangeNotify (SHCNE_MKDIR, SHCNF_PATHW, wszNewDir, NULL);
|
||||
|
||||
hres = S_OK;
|
||||
|
||||
if (ppidlOut)
|
||||
hres = _ILCreateFromPathA(lpstrNewDir, ppidlOut);
|
||||
hres = _ILCreateFromPathW(wszNewDir, ppidlOut);
|
||||
} else {
|
||||
char lpstrText[128 + MAX_PATH];
|
||||
char lpstrTempText[128];
|
||||
char lpstrCaption[256];
|
||||
WCHAR wszText[128 + MAX_PATH];
|
||||
WCHAR wszTempText[128];
|
||||
WCHAR wszCaption[256];
|
||||
|
||||
/* Cannot Create folder because of permissions */
|
||||
LoadStringA (shell32_hInstance, IDS_CREATEFOLDER_DENIED, lpstrTempText,
|
||||
sizeof (lpstrTempText));
|
||||
LoadStringA (shell32_hInstance, IDS_CREATEFOLDER_CAPTION, lpstrCaption,
|
||||
sizeof (lpstrCaption));
|
||||
sprintf (lpstrText, lpstrTempText, lpstrNewDir);
|
||||
MessageBoxA (hwnd, lpstrText, lpstrCaption, MB_OK | MB_ICONEXCLAMATION);
|
||||
LoadStringW (shell32_hInstance, IDS_CREATEFOLDER_DENIED, wszTempText,
|
||||
sizeof (wszTempText));
|
||||
LoadStringW (shell32_hInstance, IDS_CREATEFOLDER_CAPTION, wszCaption,
|
||||
sizeof (wszCaption));
|
||||
sprintfW (wszText, wszTempText, wszNewDir);
|
||||
MessageBoxW (hwnd, wszText, wszCaption, MB_OK | MB_ICONEXCLAMATION);
|
||||
}
|
||||
|
||||
return hres;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* build_paths_list
|
||||
*
|
||||
* Builds a list of paths like the one used in SHFileOperation from a table of
|
||||
* PIDLs relative to the given base folder
|
||||
*/
|
||||
static WCHAR *build_paths_list(LPCWSTR wszBasePath, int cidl, LPCITEMIDLIST *pidls)
|
||||
{
|
||||
WCHAR *wszPathsList;
|
||||
WCHAR *wszListPos;
|
||||
int iPathLen;
|
||||
int i;
|
||||
|
||||
iPathLen = lstrlenW(wszBasePath);
|
||||
wszPathsList = HeapAlloc(GetProcessHeap(), 0, MAX_PATH*sizeof(WCHAR)*cidl+1);
|
||||
wszListPos = wszPathsList;
|
||||
|
||||
for (i = 0; i < cidl; i++) {
|
||||
if (!_ILIsFolder(pidls[i]) && !_ILIsValue(pidls[i]))
|
||||
continue;
|
||||
|
||||
lstrcpynW(wszListPos, wszBasePath, MAX_PATH);
|
||||
/* FIXME: abort if path too long */
|
||||
_ILSimpleGetTextW(pidls[i], wszListPos+iPathLen, MAX_PATH-iPathLen);
|
||||
wszListPos += lstrlenW(wszListPos)+1;
|
||||
}
|
||||
*wszListPos=0;
|
||||
return wszPathsList;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* ISFHelper_fnDeleteItems
|
||||
*
|
||||
|
@ -1165,52 +1204,60 @@ ISFHelper_fnDeleteItems (ISFHelper * iface, UINT cidl, LPCITEMIDLIST * apidl)
|
|||
{
|
||||
IGenericSFImpl *This = impl_from_ISFHelper(iface);
|
||||
UINT i;
|
||||
char szPath[MAX_PATH];
|
||||
BOOL bConfirm = TRUE;
|
||||
SHFILEOPSTRUCTW op;
|
||||
WCHAR wszPath[MAX_PATH];
|
||||
WCHAR *wszPathsList;
|
||||
HRESULT ret;
|
||||
WCHAR *wszCurrentPath;
|
||||
|
||||
TRACE ("(%p)(%u %p)\n", This, cidl, apidl);
|
||||
if (cidl==0) return S_OK;
|
||||
|
||||
/* deleting multiple items so give a slightly different warning */
|
||||
if (cidl != 1) {
|
||||
char tmp[8];
|
||||
if (This->sPathTarget)
|
||||
lstrcpynW(wszPath, This->sPathTarget, MAX_PATH);
|
||||
else
|
||||
wszPath[0] = '\0';
|
||||
PathAddBackslashW(wszPath);
|
||||
wszPathsList = build_paths_list(wszPath, cidl, apidl);
|
||||
|
||||
snprintf (tmp, sizeof (tmp), "%d", cidl);
|
||||
if (!SHELL_ConfirmDialog(ASK_DELETE_MULTIPLE_ITEM, tmp))
|
||||
return E_FAIL;
|
||||
bConfirm = FALSE;
|
||||
ZeroMemory(&op, sizeof(op));
|
||||
op.hwnd = GetActiveWindow();
|
||||
op.wFunc = FO_DELETE;
|
||||
op.pFrom = wszPathsList;
|
||||
op.fFlags = FOF_ALLOWUNDO;
|
||||
if (SHFileOperationW(&op))
|
||||
{
|
||||
WARN("SHFileOperation failed\n");
|
||||
ret = E_FAIL;
|
||||
}
|
||||
else
|
||||
ret = S_OK;
|
||||
|
||||
for (i = 0; i < cidl; i++) {
|
||||
strcpy (szPath, This->sPathTarget);
|
||||
PathAddBackslashA (szPath);
|
||||
_ILSimpleGetText (apidl[i], szPath + strlen (szPath), MAX_PATH);
|
||||
/* we currently need to manually send the notifies */
|
||||
wszCurrentPath = wszPathsList;
|
||||
for (i = 0; i < cidl; i++)
|
||||
{
|
||||
LONG wEventId;
|
||||
|
||||
if (_ILIsFolder (apidl[i])) {
|
||||
LPITEMIDLIST pidl;
|
||||
if (_ILIsFolder(apidl[i]))
|
||||
wEventId = SHCNE_RMDIR;
|
||||
else if (_ILIsValue(apidl[i]))
|
||||
wEventId = SHCNE_DELETE;
|
||||
else
|
||||
continue;
|
||||
|
||||
TRACE ("delete %s\n", szPath);
|
||||
if (!SHELL_DeleteDirectoryA (szPath, bConfirm)) {
|
||||
TRACE ("delete %s failed, bConfirm=%d\n", szPath, bConfirm);
|
||||
return E_FAIL;
|
||||
}
|
||||
pidl = ILCombine (This->pidlRoot, apidl[i]);
|
||||
SHChangeNotify (SHCNE_RMDIR, SHCNF_IDLIST, pidl, NULL);
|
||||
SHFree (pidl);
|
||||
} else if (_ILIsValue (apidl[i])) {
|
||||
LPITEMIDLIST pidl;
|
||||
|
||||
TRACE ("delete %s\n", szPath);
|
||||
if (!SHELL_DeleteFileA (szPath, bConfirm)) {
|
||||
TRACE ("delete %s failed, bConfirm=%d\n", szPath, bConfirm);
|
||||
return E_FAIL;
|
||||
}
|
||||
pidl = ILCombine (This->pidlRoot, apidl[i]);
|
||||
SHChangeNotify (SHCNE_DELETE, SHCNF_IDLIST, pidl, NULL);
|
||||
SHFree (pidl);
|
||||
/* check if file exists */
|
||||
if (GetFileAttributesW(wszCurrentPath) == INVALID_FILE_ATTRIBUTES)
|
||||
{
|
||||
LPITEMIDLIST pidl = ILCombine(This->pidlRoot, apidl[i]);
|
||||
SHChangeNotify(wEventId, SHCNF_IDLIST, pidl, NULL);
|
||||
SHFree(pidl);
|
||||
}
|
||||
|
||||
wszCurrentPath += lstrlenW(wszCurrentPath)+1;
|
||||
}
|
||||
return S_OK;
|
||||
HeapFree(GetProcessHeap(), 0, wszPathsList);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
@ -1233,59 +1280,22 @@ ISFHelper_fnCopyItems (ISFHelper * iface, IShellFolder * pSFFrom, UINT cidl,
|
|||
|
||||
IShellFolder_QueryInterface (pSFFrom, &IID_IPersistFolder2,
|
||||
(LPVOID *) & ppf2);
|
||||
if (ppf2)
|
||||
{
|
||||
if (ppf2) {
|
||||
LPITEMIDLIST pidl;
|
||||
|
||||
if (SUCCEEDED (IPersistFolder2_GetCurFolder (ppf2, &pidl)))
|
||||
{
|
||||
for (i = 0; i < cidl; i++)
|
||||
{
|
||||
if (SUCCEEDED (IPersistFolder2_GetCurFolder (ppf2, &pidl))) {
|
||||
for (i = 0; i < cidl; i++) {
|
||||
SHGetPathFromIDListA (pidl, szSrcPath);
|
||||
PathAddBackslashA (szSrcPath);
|
||||
_ILSimpleGetText (apidl[i], szSrcPath + strlen (szSrcPath),
|
||||
MAX_PATH);
|
||||
|
||||
strcpy (szDstPath, This->sPathTarget);
|
||||
if (!WideCharToMultiByte(CP_ACP, 0, This->sPathTarget, -1, szDstPath, MAX_PATH, NULL, NULL))
|
||||
szDstPath[0] = '\0';
|
||||
PathAddBackslashA (szDstPath);
|
||||
_ILSimpleGetText (apidl[i], szDstPath + strlen (szDstPath),
|
||||
MAX_PATH);
|
||||
TRACE ("copy %s to %s\n", szSrcPath, szDstPath);
|
||||
|
||||
if (fileMoving)
|
||||
{
|
||||
fileMoving = FALSE;
|
||||
SHNotifyMoveFileA(szSrcPath, szDstPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
SHNotifyCopyFileA(szSrcPath, szDstPath, TRUE);
|
||||
}
|
||||
|
||||
/* FIXME: to work with folders we need SHFileOperation!
|
||||
SHFILEOPSTRUCTA op;
|
||||
|
||||
if (fileMoving)
|
||||
{
|
||||
op.wFunc = FO_MOVE;
|
||||
fileMoving = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
op.wFunc = FO_COPY;
|
||||
}
|
||||
|
||||
op.pTo = szDstPath;
|
||||
op.pFrom = szSrcPath;
|
||||
op.fFlags = FOF_SIMPLEPROGRESS;
|
||||
op.hwnd = NULL;
|
||||
op.hNameMappings = NULL;
|
||||
op.lpszProgressTitle = NULL;
|
||||
|
||||
UINT bRes = SHFileOperationA(&op);
|
||||
DbgPrint("CopyItems SHFileOperationA 0x%08x\n", bRes);
|
||||
*/
|
||||
|
||||
MESSAGE ("would copy %s to %s\n", szSrcPath, szDstPath);
|
||||
}
|
||||
SHFree (pidl);
|
||||
}
|
||||
|
@ -1329,7 +1339,7 @@ IFSFldr_PersistFolder3_AddRef (IPersistFolder3 * iface)
|
|||
{
|
||||
IGenericSFImpl *This = impl_from_IPersistFolder3(iface);
|
||||
|
||||
TRACE ("(%p)->(count=%lu)\n", This, This->ref);
|
||||
TRACE ("(%p)->(count=%u)\n", This, This->ref);
|
||||
|
||||
return IUnknown_AddRef (This->pUnkOuter);
|
||||
}
|
||||
|
@ -1343,7 +1353,7 @@ IFSFldr_PersistFolder3_Release (IPersistFolder3 * iface)
|
|||
{
|
||||
IGenericSFImpl *This = impl_from_IPersistFolder3(iface);
|
||||
|
||||
TRACE ("(%p)->(count=%lu)\n", This, This->ref);
|
||||
TRACE ("(%p)->(count=%u)\n", This, This->ref);
|
||||
|
||||
return IUnknown_Release (This->pUnkOuter);
|
||||
}
|
||||
|
@ -1374,26 +1384,28 @@ IFSFldr_PersistFolder3_GetClassID (IPersistFolder3 * iface, CLSID * lpClassId)
|
|||
static HRESULT WINAPI
|
||||
IFSFldr_PersistFolder3_Initialize (IPersistFolder3 * iface, LPCITEMIDLIST pidl)
|
||||
{
|
||||
char sTemp[MAX_PATH];
|
||||
WCHAR wszTemp[MAX_PATH];
|
||||
|
||||
IGenericSFImpl *This = impl_from_IPersistFolder3(iface);
|
||||
|
||||
TRACE ("(%p)->(%p)\n", This, pidl);
|
||||
|
||||
if (This->pidlRoot)
|
||||
SHFree (This->pidlRoot); /* free the old pidl */
|
||||
SHFree (This->pidlRoot); /* free the old pidl */
|
||||
This->pidlRoot = ILClone (pidl); /* set my pidl */
|
||||
|
||||
if (This->sPathTarget)
|
||||
SHFree (This->sPathTarget);
|
||||
SHFree (This->sPathTarget);
|
||||
This->sPathTarget = NULL;
|
||||
|
||||
/* set my path */
|
||||
if (SHGetPathFromIDListA (pidl, sTemp)) {
|
||||
This->sPathTarget = SHAlloc (strlen (sTemp) + 1);
|
||||
strcpy (This->sPathTarget, sTemp);
|
||||
if (SHGetPathFromIDListW (pidl, wszTemp)) {
|
||||
int len = strlenW(wszTemp);
|
||||
This->sPathTarget = SHAlloc((len + 1) * sizeof(WCHAR));
|
||||
if (!This->sPathTarget)
|
||||
return E_OUTOFMEMORY;
|
||||
memcpy(This->sPathTarget, wszTemp, (len + 1) * sizeof(WCHAR));
|
||||
}
|
||||
|
||||
TRACE ("--(%p)->(%s)\n", This, This->sPathTarget);
|
||||
TRACE ("--(%p)->(%s)\n", This, debugstr_w(This->sPathTarget));
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
@ -1423,13 +1435,13 @@ IFSFldr_PersistFolder3_InitializeEx (IPersistFolder3 * iface,
|
|||
IBindCtx * pbc, LPCITEMIDLIST pidlRoot,
|
||||
const PERSIST_FOLDER_TARGET_INFO * ppfti)
|
||||
{
|
||||
char sTemp[MAX_PATH];
|
||||
WCHAR wszTemp[MAX_PATH];
|
||||
|
||||
IGenericSFImpl *This = impl_from_IPersistFolder3(iface);
|
||||
|
||||
TRACE ("(%p)->(%p,%p,%p)\n", This, pbc, pidlRoot, ppfti);
|
||||
if (ppfti)
|
||||
TRACE ("--%p %s %s 0x%08lx 0x%08x\n",
|
||||
TRACE ("--%p %s %s 0x%08x 0x%08x\n",
|
||||
ppfti->pidlTargetFolder, debugstr_w (ppfti->szTargetParsingName),
|
||||
debugstr_w (ppfti->szNetworkProvider), ppfti->dwAttributes,
|
||||
ppfti->csidl);
|
||||
|
@ -1454,20 +1466,33 @@ IFSFldr_PersistFolder3_InitializeEx (IPersistFolder3 * iface,
|
|||
*/
|
||||
if (ppfti) {
|
||||
if (ppfti->csidl != -1) {
|
||||
if (SHGetSpecialFolderPathA (0, sTemp, ppfti->csidl,
|
||||
if (SHGetSpecialFolderPathW (0, wszTemp, ppfti->csidl,
|
||||
ppfti->csidl & CSIDL_FLAG_CREATE)) {
|
||||
__SHCloneStrA (&This->sPathTarget, sTemp);
|
||||
int len = strlenW(wszTemp);
|
||||
This->sPathTarget = SHAlloc((len + 1) * sizeof(WCHAR));
|
||||
if (!This->sPathTarget)
|
||||
return E_OUTOFMEMORY;
|
||||
memcpy(This->sPathTarget, wszTemp, (len + 1) * sizeof(WCHAR));
|
||||
}
|
||||
} else if (ppfti->szTargetParsingName[0]) {
|
||||
__SHCloneStrWtoA (&This->sPathTarget, ppfti->szTargetParsingName);
|
||||
int len = strlenW(ppfti->szTargetParsingName);
|
||||
This->sPathTarget = SHAlloc((len + 1) * sizeof(WCHAR));
|
||||
if (!This->sPathTarget)
|
||||
return E_OUTOFMEMORY;
|
||||
memcpy(This->sPathTarget, ppfti->szTargetParsingName,
|
||||
(len + 1) * sizeof(WCHAR));
|
||||
} else if (ppfti->pidlTargetFolder) {
|
||||
if (SHGetPathFromIDListA (ppfti->pidlTargetFolder, sTemp)) {
|
||||
__SHCloneStrA (&This->sPathTarget, sTemp);
|
||||
if (SHGetPathFromIDListW(ppfti->pidlTargetFolder, wszTemp)) {
|
||||
int len = strlenW(wszTemp);
|
||||
This->sPathTarget = SHAlloc((len + 1) * sizeof(WCHAR));
|
||||
if (!This->sPathTarget)
|
||||
return E_OUTOFMEMORY;
|
||||
memcpy(This->sPathTarget, wszTemp, (len + 1) * sizeof(WCHAR));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TRACE ("--(%p)->(target=%s)\n", This, debugstr_a (This->sPathTarget));
|
||||
TRACE ("--(%p)->(target=%s)\n", This, debugstr_w(This->sPathTarget));
|
||||
pdump (This->pidlRoot);
|
||||
return (This->sPathTarget) ? S_OK : E_FAIL;
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -18,7 +18,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
@ -109,7 +109,7 @@ BOOL SHELL32_GetCustomFolderAttribute(
|
|||
/***************************************************************************
|
||||
* GetNextElement (internal function)
|
||||
*
|
||||
* gets a part of a string till the first backslash
|
||||
* Gets a part of a string till the first backslash.
|
||||
*
|
||||
* PARAMETERS
|
||||
* pszNext [IN] string to get the element from
|
||||
|
@ -125,7 +125,7 @@ LPCWSTR GetNextElementW (LPCWSTR pszNext, LPWSTR pszOut, DWORD dwOut)
|
|||
LPCWSTR pszTail = pszNext;
|
||||
DWORD dwCopy;
|
||||
|
||||
TRACE ("(%s %p 0x%08lx)\n", debugstr_w (pszNext), pszOut, dwOut);
|
||||
TRACE ("(%s %p 0x%08x)\n", debugstr_w (pszNext), pszOut, dwOut);
|
||||
|
||||
*pszOut = 0x0000;
|
||||
|
||||
|
@ -143,7 +143,7 @@ LPCWSTR GetNextElementW (LPCWSTR pszNext, LPWSTR pszOut, DWORD dwOut)
|
|||
else
|
||||
pszTail = NULL;
|
||||
|
||||
TRACE ("--(%s %s 0x%08lx %p)\n", debugstr_w (pszNext), debugstr_w (pszOut), dwOut, pszTail);
|
||||
TRACE ("--(%s %s 0x%08x %p)\n", debugstr_w (pszNext), debugstr_w (pszOut), dwOut, pszTail);
|
||||
return pszTail;
|
||||
}
|
||||
|
||||
|
@ -178,7 +178,7 @@ HRESULT SHELL32_ParseNextElement (IShellFolder2 * psf, HWND hwndOwner, LPBC pbc,
|
|||
ILFree (*pidlInOut);
|
||||
*pidlInOut = pidlTemp;
|
||||
|
||||
TRACE ("-- pidl=%p ret=0x%08lx\n", pidlInOut ? *pidlInOut : NULL, hr);
|
||||
TRACE ("-- pidl=%p ret=0x%08x\n", pidlInOut ? *pidlInOut : NULL, hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -189,17 +189,19 @@ HRESULT SHELL32_ParseNextElement (IShellFolder2 * psf, HWND hwndOwner, LPBC pbc,
|
|||
* via IPersistFolder3 or IPersistFolder.
|
||||
*
|
||||
* NOTES
|
||||
* pathRoot can be NULL for Folders beeing a drive.
|
||||
* In this case the absolute path is build from pidlChild (eg. C:)
|
||||
* pathRoot can be NULL for Folders being a drive.
|
||||
* In this case the absolute path is built from pidlChild (eg. C:)
|
||||
*/
|
||||
static HRESULT SHELL32_CoCreateInitSF (LPCITEMIDLIST pidlRoot, LPCWSTR pathRoot,
|
||||
LPCITEMIDLIST pidlChild, REFCLSID clsid, REFIID riid, LPVOID * ppvOut)
|
||||
LPCITEMIDLIST pidlChild, REFCLSID clsid, LPVOID * ppvOut)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
TRACE ("%p %s %p\n", pidlRoot, debugstr_w(pathRoot), pidlChild);
|
||||
|
||||
if (SUCCEEDED ((hr = SHCoCreateInstance (NULL, clsid, NULL, riid, ppvOut)))) {
|
||||
hr = SHCoCreateInstance(NULL, clsid, NULL, &IID_IShellFolder, ppvOut);
|
||||
if (SUCCEEDED (hr))
|
||||
{
|
||||
LPITEMIDLIST pidlAbsolute = ILCombine (pidlRoot, pidlChild);
|
||||
IPersistFolder *pPF;
|
||||
IPersistFolder3 *ppf;
|
||||
|
@ -222,13 +224,10 @@ static HRESULT SHELL32_CoCreateInitSF (LPCITEMIDLIST pidlRoot, LPCWSTR pathRoot,
|
|||
}
|
||||
|
||||
if (pidlChild) {
|
||||
LPCSTR pszChild = _ILGetTextPointer(pidlChild);
|
||||
int len = lstrlenW(ppfti.szTargetParsingName);
|
||||
|
||||
if (pszChild)
|
||||
MultiByteToWideChar (CP_ACP, 0, pszChild, -1, ppfti.szTargetParsingName + len, MAX_PATH - len);
|
||||
else
|
||||
hr = E_INVALIDARG;
|
||||
if (!_ILSimpleGetTextW(pidlChild, ppfti.szTargetParsingName + len, MAX_PATH - len))
|
||||
hr = E_INVALIDARG;
|
||||
}
|
||||
|
||||
IPersistFolder3_InitializeEx (ppf, NULL, pidlAbsolute, &ppfti);
|
||||
|
@ -240,7 +239,7 @@ static HRESULT SHELL32_CoCreateInitSF (LPCITEMIDLIST pidlRoot, LPCWSTR pathRoot,
|
|||
}
|
||||
ILFree (pidlAbsolute);
|
||||
}
|
||||
TRACE ("-- (%p) ret=0x%08lx\n", *ppvOut, hr);
|
||||
TRACE ("-- (%p) ret=0x%08x\n", *ppvOut, hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -278,7 +277,7 @@ HRESULT SHELL32_BindToChild (LPCITEMIDLIST pidlRoot,
|
|||
|
||||
if ((clsid = _ILGetGUIDPointer (pidlChild))) {
|
||||
/* virtual folder */
|
||||
hr = SHELL32_CoCreateInitSF (pidlRoot, pathRoot, pidlChild, clsid, &IID_IShellFolder, (LPVOID *) & pSF);
|
||||
hr = SHELL32_CoCreateInitSF (pidlRoot, pathRoot, pidlChild, clsid, (LPVOID *)&pSF);
|
||||
} else {
|
||||
/* file system folder */
|
||||
CLSID clsidFolder = CLSID_ShellFSFolder;
|
||||
|
@ -290,13 +289,15 @@ HRESULT SHELL32_BindToChild (LPCITEMIDLIST pidlRoot,
|
|||
lstrcpynW(wszFolderPath, pathRoot, MAX_PATH);
|
||||
pwszPathTail = PathAddBackslashW(wszFolderPath);
|
||||
}
|
||||
MultiByteToWideChar(CP_ACP, 0, _ILGetTextPointer(pidlChild), -1, pwszPathTail, MAX_PATH - (int)(pwszPathTail - wszFolderPath));
|
||||
|
||||
_ILSimpleGetTextW(pidlChild,pwszPathTail,MAX_PATH - (int)(pwszPathTail - wszFolderPath));
|
||||
|
||||
if (SHELL32_GetCustomFolderAttributeFromPath (wszFolderPath,
|
||||
wszDotShellClassInfo, wszCLSID, wszCLSIDValue, CHARS_IN_GUID))
|
||||
CLSIDFromString (wszCLSIDValue, &clsidFolder);
|
||||
|
||||
hr = SHELL32_CoCreateInitSF (pidlRoot, pathRoot, pidlChild,
|
||||
&clsidFolder, &IID_IShellFolder, (LPVOID *)&pSF);
|
||||
hr = SHELL32_CoCreateInitSF (pidlRoot, pathRoot, pidlChild,
|
||||
&clsidFolder, (LPVOID *)&pSF);
|
||||
}
|
||||
ILFree (pidlChild);
|
||||
|
||||
|
@ -311,7 +312,7 @@ HRESULT SHELL32_BindToChild (LPCITEMIDLIST pidlRoot,
|
|||
IShellFolder_Release (pSF);
|
||||
}
|
||||
|
||||
TRACE ("-- returning (%p) %08lx\n", *ppvOut, hr);
|
||||
TRACE ("-- returning (%p) %08x\n", *ppvOut, hr);
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
@ -319,7 +320,7 @@ HRESULT SHELL32_BindToChild (LPCITEMIDLIST pidlRoot,
|
|||
/***********************************************************************
|
||||
* SHELL32_GetDisplayNameOfChild
|
||||
*
|
||||
* Retrives the display name of a child object of a shellfolder.
|
||||
* Retrieves the display name of a child object of a shellfolder.
|
||||
*
|
||||
* For a pidl eg. [subpidl1][subpidl2][subpidl3]:
|
||||
* - it binds to the child shellfolder [subpidl1]
|
||||
|
@ -331,12 +332,12 @@ HRESULT SHELL32_BindToChild (LPCITEMIDLIST pidlRoot,
|
|||
* virtual folders with the registry key WantsFORPARSING set.
|
||||
*/
|
||||
HRESULT SHELL32_GetDisplayNameOfChild (IShellFolder2 * psf,
|
||||
LPCITEMIDLIST pidl, DWORD dwFlags, LPSTR szOut, DWORD dwOutLen)
|
||||
LPCITEMIDLIST pidl, DWORD dwFlags, LPWSTR szOut, DWORD dwOutLen)
|
||||
{
|
||||
LPITEMIDLIST pidlFirst;
|
||||
HRESULT hr = E_INVALIDARG;
|
||||
|
||||
TRACE ("(%p)->(pidl=%p 0x%08lx %p 0x%08lx)\n", psf, pidl, dwFlags, szOut, dwOutLen);
|
||||
TRACE ("(%p)->(pidl=%p 0x%08x %p 0x%08x)\n", psf, pidl, dwFlags, szOut, dwOutLen);
|
||||
pdump (pidl);
|
||||
|
||||
pidlFirst = ILCloneFirst (pidl);
|
||||
|
@ -350,7 +351,8 @@ HRESULT SHELL32_GetDisplayNameOfChild (IShellFolder2 * psf,
|
|||
|
||||
hr = IShellFolder_GetDisplayNameOf (psfChild, pidlNext, dwFlags, &strTemp);
|
||||
if (SUCCEEDED (hr)) {
|
||||
hr = StrRetToStrNA (szOut, dwOutLen, &strTemp, pidlNext);
|
||||
if(!StrRetToStrNW (szOut, dwOutLen, &strTemp, pidlNext))
|
||||
hr = E_FAIL;
|
||||
}
|
||||
IShellFolder_Release (psfChild);
|
||||
}
|
||||
|
@ -358,7 +360,7 @@ HRESULT SHELL32_GetDisplayNameOfChild (IShellFolder2 * psf,
|
|||
} else
|
||||
hr = E_OUTOFMEMORY;
|
||||
|
||||
TRACE ("-- ret=0x%08lx %s\n", hr, szOut);
|
||||
TRACE ("-- ret=0x%08x %s\n", hr, debugstr_w(szOut));
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
@ -367,7 +369,7 @@ HRESULT SHELL32_GetDisplayNameOfChild (IShellFolder2 * psf,
|
|||
* SHELL32_GetItemAttributes
|
||||
*
|
||||
* NOTES
|
||||
* observerd values:
|
||||
* Observed values:
|
||||
* folder: 0xE0000177 FILESYSTEM | HASSUBFOLDER | FOLDER
|
||||
* file: 0x40000177 FILESYSTEM
|
||||
* drive: 0xf0000144 FILESYSTEM | HASSUBFOLDER | FOLDER | FILESYSANCESTOR
|
||||
|
@ -379,11 +381,13 @@ HRESULT SHELL32_GetDisplayNameOfChild (IShellFolder2 * psf,
|
|||
* file: 0x40400177 FILESYSTEM | CANMONIKER
|
||||
* drive 0xF0400154 FILESYSTEM | HASSUBFOLDER | FOLDER | FILESYSANCESTOR | CANMONIKER | CANRENAME (LABEL)
|
||||
*
|
||||
* This function does not set flags!! It only resets flags when necessary.
|
||||
* According to the MSDN documentation this function should not set flags. It claims only to reset flags when necessary.
|
||||
* However it turns out the native shell32.dll _sets_ flags in several cases - so do we.
|
||||
*/
|
||||
HRESULT SHELL32_GetItemAttributes (IShellFolder * psf, LPCITEMIDLIST pidl, LPDWORD pdwAttributes)
|
||||
{
|
||||
DWORD dwAttributes;
|
||||
BOOL has_guid;
|
||||
static const DWORD dwSupportedAttr=
|
||||
SFGAO_CANCOPY | /*0x00000001 */
|
||||
SFGAO_CANMOVE | /*0x00000002 */
|
||||
|
@ -400,24 +404,43 @@ HRESULT SHELL32_GetItemAttributes (IShellFolder * psf, LPCITEMIDLIST pidl, LPDWO
|
|||
SFGAO_FILESYSTEM | /*0x40000000 */
|
||||
SFGAO_HASSUBFOLDER; /*0x80000000 */
|
||||
|
||||
TRACE ("0x%08lx\n", *pdwAttributes);
|
||||
TRACE ("0x%08x\n", *pdwAttributes);
|
||||
|
||||
if (*pdwAttributes & ~dwSupportedAttr)
|
||||
{
|
||||
WARN ("attributes 0x%08lx not implemented\n", (*pdwAttributes & ~dwSupportedAttr));
|
||||
WARN ("attributes 0x%08x not implemented\n", (*pdwAttributes & ~dwSupportedAttr));
|
||||
*pdwAttributes &= dwSupportedAttr;
|
||||
}
|
||||
|
||||
has_guid = _ILGetGUIDPointer(pidl) != NULL;
|
||||
|
||||
dwAttributes = *pdwAttributes;
|
||||
|
||||
if (_ILIsDrive (pidl)) {
|
||||
*pdwAttributes &= SFGAO_HASSUBFOLDER|SFGAO_FILESYSTEM|SFGAO_FOLDER|SFGAO_FILESYSANCESTOR|
|
||||
SFGAO_DROPTARGET|SFGAO_HASPROPSHEET|SFGAO_CANLINK;
|
||||
} else if (_ILGetGUIDPointer (pidl) && HCR_GetFolderAttributes(pidl, &dwAttributes)) {
|
||||
} else if (has_guid && HCR_GetFolderAttributes(pidl, &dwAttributes)) {
|
||||
*pdwAttributes = dwAttributes;
|
||||
} else if (_ILGetDataPointer (pidl)) {
|
||||
dwAttributes = _ILGetFileAttributes (pidl, NULL, 0);
|
||||
|
||||
if (!dwAttributes && has_guid) {
|
||||
WCHAR path[MAX_PATH];
|
||||
STRRET strret;
|
||||
|
||||
/* File attributes are not present in the internal PIDL structure, so get them from the file system. */
|
||||
|
||||
HRESULT hr = IShellFolder_GetDisplayNameOf(psf, pidl, SHGDN_FORPARSING, &strret);
|
||||
|
||||
if (SUCCEEDED(hr)) {
|
||||
hr = StrRetToBufW(&strret, pidl, path, MAX_PATH);
|
||||
|
||||
/* call GetFileAttributes() only for file system paths, not for parsing names like "::{...}" */
|
||||
if (SUCCEEDED(hr) && path[0]!=':')
|
||||
dwAttributes = GetFileAttributesW(path);
|
||||
}
|
||||
}
|
||||
|
||||
/* Set common attributes */
|
||||
*pdwAttributes |= SFGAO_FILESYSTEM | SFGAO_DROPTARGET | SFGAO_HASPROPSHEET | SFGAO_CANDELETE |
|
||||
SFGAO_CANRENAME | SFGAO_CANLINK | SFGAO_CANMOVE | SFGAO_CANCOPY;
|
||||
|
@ -462,7 +485,7 @@ HRESULT SHELL32_GetItemAttributes (IShellFolder * psf, LPCITEMIDLIST pidl, LPDWO
|
|||
} else {
|
||||
*pdwAttributes &= SFGAO_HASSUBFOLDER|SFGAO_FOLDER|SFGAO_FILESYSANCESTOR|SFGAO_DROPTARGET|SFGAO_HASPROPSHEET|SFGAO_CANRENAME|SFGAO_CANLINK;
|
||||
}
|
||||
TRACE ("-- 0x%08lx\n", *pdwAttributes);
|
||||
TRACE ("-- 0x%08x\n", *pdwAttributes);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "windef.h"
|
||||
|
@ -88,6 +88,7 @@ END
|
|||
#include "shell32_Si.rc"
|
||||
#include "shell32_Sk.rc"
|
||||
#include "shell32_Sv.rc"
|
||||
#include "shell32_Tr.rc"
|
||||
#include "shell32_Uk.rc"
|
||||
#include "shell32_Wa.rc"
|
||||
#include "shell32_Zh.rc"
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/*
|
||||
* Copyright 2000 Juergen Schmied
|
||||
* Copyright 2006 Ged Murphy
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -14,7 +13,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#ifndef __WINE_SHELL_RES_H
|
||||
|
@ -34,6 +33,8 @@
|
|||
#define IDS_SHV_COLUMN9 15
|
||||
#define IDS_SHV_COLUMN10 16
|
||||
#define IDS_SHV_COLUMN11 17
|
||||
#define IDS_SHV_COLUMN_DELFROM 18
|
||||
#define IDS_SHV_COLUMN_DELDATE 19
|
||||
|
||||
#define IDS_DESKTOP 20
|
||||
#define IDS_MYCOMPUTER 21
|
||||
|
@ -45,15 +46,6 @@
|
|||
#define IDS_VIEW_LIST 26
|
||||
#define IDS_VIEW_DETAILS 27
|
||||
|
||||
#define IDS_CREATEFOLDER_DENIED 30
|
||||
#define IDS_CREATEFOLDER_CAPTION 31
|
||||
#define IDS_DELETEITEM_CAPTION 32
|
||||
#define IDS_DELETEFOLDER_CAPTION 33
|
||||
#define IDS_DELETEITEM_TEXT 34
|
||||
#define IDS_DELETEMULTIPLE_TEXT 35
|
||||
#define IDS_OVERWRITEFILE_CAPTION 36
|
||||
#define IDS_OVERWRITEFILE_TEXT 37
|
||||
|
||||
#define IDS_RESTART_TITLE 40
|
||||
#define IDS_RESTART_PROMPT 41
|
||||
#define IDS_SHUTDOWN_TITLE 42
|
||||
|
@ -90,166 +82,82 @@
|
|||
#define IDS_DRIVE_CDROM 73
|
||||
#define IDS_DRIVE_NETWORK 74
|
||||
|
||||
#define IDS_CREATEFOLDER_DENIED 128
|
||||
#define IDS_CREATEFOLDER_CAPTION 129
|
||||
#define IDS_DELETEITEM_CAPTION 130
|
||||
#define IDS_DELETEFOLDER_CAPTION 131
|
||||
#define IDS_DELETEITEM_TEXT 132
|
||||
#define IDS_DELETEMULTIPLE_TEXT 133
|
||||
#define IDS_OVERWRITEFILE_CAPTION 134
|
||||
#define IDS_OVERWRITEFILE_TEXT 135
|
||||
#define IDS_DELETESELECTED_TEXT 136
|
||||
#define IDS_TRASHFOLDER_TEXT 137
|
||||
#define IDS_TRASHITEM_TEXT 138
|
||||
#define IDS_TRASHMULTIPLE_TEXT 139
|
||||
#define IDS_CANTTRASH_TEXT 140
|
||||
#define IDS_OVERWRITEFOLDER_TEXT 141
|
||||
|
||||
/* Note: this string is referenced from the registry*/
|
||||
#define IDS_RECYCLEBIN_FOLDER_NAME 8964
|
||||
|
||||
#define IDD_ICON 0x4300
|
||||
#define IDD_MESSAGE 0x4301
|
||||
|
||||
/* these IDs are the same as on native */
|
||||
#define IDD_YESTOALL 0x3207
|
||||
/* browse for folder dialog box */
|
||||
#define IDD_MAKENEWFOLDER 0x3746
|
||||
#define IDD_FOLDERTEXT 0x3745
|
||||
#define IDD_FOLDER 0x3744
|
||||
#define IDD_STATUS 0x3743
|
||||
#define IDD_TITLE 0x3742
|
||||
#define IDD_TREEVIEW 0x3741
|
||||
#define SHELL_EXTENDED_SHORTCUT_DLG 0x4000
|
||||
#define RUN_AS_DIALOG 0x4001
|
||||
|
||||
/*
|
||||
* Do not alter the icon, bitmap + avi resource
|
||||
* numbers they sync with the Windows counterpart
|
||||
*/
|
||||
/* ICONS */
|
||||
#define IDI_SHELL_DOCUMENT 1
|
||||
#define IDI_SHELL_RICH_TEXT 2
|
||||
#define IDI_SHELL_EXE 3
|
||||
#define IDI_SHELL_FOLDER 4
|
||||
#define IDI_SHELL_FOLDER_OPEN 5
|
||||
#define IDI_SHELL_5_12_FLOPPY 6
|
||||
#define IDI_SHELL_3_14_FLOPPY 7
|
||||
#define IDI_SHELL_FLOPPY 8
|
||||
#define IDI_SHELL_DRIVE 9
|
||||
#define IDI_SHELL_DOCUMENT 1
|
||||
#define IDI_SHELL_FOLDER 4
|
||||
#define IDI_SHELL_FOLDER_OPEN 5
|
||||
#define IDI_SHELL_5_12_FLOPPY 6
|
||||
#define IDI_SHELL_3_14_FLOPPY 7
|
||||
#define IDI_SHELL_FLOPPY 8
|
||||
#define IDI_SHELL_DRIVE 9
|
||||
#define IDI_SHELL_NETDRIVE 10
|
||||
#define IDI_SHELL_NETDRIVE2 11 //THIS SHOULD BE #define IDI_SHELL_NETDRIVE_OFF
|
||||
#define IDI_SHELL_NETDRIVE2 11
|
||||
#define IDI_SHELL_CDROM 12
|
||||
#define IDI_SHELL_RAMDISK 13
|
||||
|
||||
#define IDI_SHELL_ENTIRE_NETWORK 14
|
||||
#define IDI_SHELL_NETWORK 15
|
||||
#define IDI_SHELL_MY_COMPUTER 16
|
||||
#define IDI_SHELL_PRINTER 17
|
||||
#define IDI_SHELL_MY_NETWORK_PLACES 18
|
||||
#define IDI_SHELL_COMPUTERS_NEAR_ME 19
|
||||
#define IDI_SHELL_PROGRAMS_FOLDER 20
|
||||
#define IDI_SHELL_RECENT_DOCUMENTS 21
|
||||
#define IDI_SHELL_CONTROL_PANEL 22
|
||||
#define IDI_SHELL_FOLDER_SMALL_XP 20
|
||||
#define IDI_SHELL_SEARCH 23
|
||||
#define IDI_SHELL_HELP 24
|
||||
#define IDI_SHELL_RUN 25
|
||||
#define IDI_SHELL_SHUTDOWN 28
|
||||
#define IDI_SHELL_SHARE 29
|
||||
#define IDI_SHELL_FOLDER_OPEN_LARGE 29
|
||||
#define IDI_SHELL_SHORTCUT 30
|
||||
#define IDI_SHELL_FOLDER_OPEN_SMALL 31
|
||||
#define IDI_SHELL_EMPTY_RECYCLE_BIN 32
|
||||
#define IDI_SHELL_FULL_RECYCLE_BIN 33
|
||||
#define IDI_SHELL_DESKTOP 35
|
||||
#define IDI_SHELL_CONTROL_PANEL2 36
|
||||
#define IDI_SHELL_PROGRAMS_FOLDER2 37
|
||||
#define IDI_SHELL_CONTROL_PANEL 36
|
||||
#define IDI_SHELL_PRINTERS_FOLDER 38
|
||||
#define IDI_SHELL_FONTS_FOLDER 39
|
||||
#define IDI_SHELL_TSKBAR_STARTMENU 40
|
||||
#define IDI_SHELL_CD_MUSIC 41
|
||||
#define IDI_SHELL_FAVORITES 44
|
||||
#define IDI_SHELL_LOGOFF 45
|
||||
#define IDI_SHELL_EXPLORER 46
|
||||
#define IDI_SHELL_TRASH_FILE 142
|
||||
#define IDI_SHELL_CONFIRM_DELETE 161
|
||||
#define IDI_SHELL_MY_DOCUMENTS 235
|
||||
|
||||
#define IDI_SHELL_LOCKED 48
|
||||
|
||||
#define IDI_SHELL_FIND_IN_FILE 134
|
||||
|
||||
#define IDI_SHELL_CONTROL_PANEL3 137
|
||||
#define IDI_SHELL_PRINTER2 138
|
||||
#define IDI_SHELL_INF_FILE 151
|
||||
#define IDI_SHELL_TEXT_FILE 152
|
||||
#define IDI_SHELL_BAT_FILE 153
|
||||
#define IDI_SHELL_SYSTEM_FILE 154
|
||||
#define IDI_SHELL_FONT_FILE 155
|
||||
#define IDI_SHELL_TT_FONT_FILE 156
|
||||
#define IDI_SHELL_FONT_FILE2 157
|
||||
#define IDI_SHELL_RUN2 160
|
||||
|
||||
#define IDI_SHELL_NETWORK_FOLDER 172
|
||||
|
||||
#define IDI_SHELL_EMPTY_RECYCLE_BIN1 191
|
||||
#define IDI_SHELL_FULL_RECYCLE_BIN1 192
|
||||
|
||||
|
||||
#define IDI_SHELL_TURN_OFF 221
|
||||
#define IDI_SHELL_DVD_ROM 222
|
||||
#define IDI_SHELL_MOVIE_FILE 224
|
||||
#define IDI_SHELL_MUSIC_FILE 225
|
||||
|
||||
#define IDI_SHELL_CD_MUSIC2 228
|
||||
|
||||
#define IDI_SHELL_MY_DOCUMENTS 235
|
||||
#define IDI_SHELL_MY_PICTURES 236
|
||||
#define IDI_SHELL_MY_MUSIC 237
|
||||
#define IDI_SHELL_MY_MOVIES 238
|
||||
|
||||
#define IDI_SHELL_PRINTER3 245
|
||||
|
||||
#define IDI_SHELL_CAMERA 248
|
||||
#define IDI_SHELL_OVER_HEAD_PROJ 249
|
||||
#define IDI_SHELL_DISPLAY 250
|
||||
#define IDI_SHELL_PRINT_PICS 252
|
||||
#define IDI_SHELL_EMPTY_RECYCLE_BIN3 254
|
||||
|
||||
#define IDI_SHELL_HELP1 263
|
||||
#define IDI_SHELL_SENDMAIL 265
|
||||
#define IDI_SHELL_ACCESSABILITY 268
|
||||
#define IDI_SHELL_USERS 269
|
||||
#define IDI_SHELL_SCREEN_COLORS 270
|
||||
#define IDI_SHELL_ADD_REM_PROGRAMS 271
|
||||
#define IDI_SHELL_TUNES 277
|
||||
#define IDI_SHELL_USER_ACCOUNTS 279
|
||||
#define IDI_SHELL_HELP_FILE 289
|
||||
#define IDI_SHELL_GO 290
|
||||
#define IDI_SHELL_DVD_DRIVE 291
|
||||
#define IDI_SHELL_CD_ADD_MUSIC 292
|
||||
#define IDI_SHELL_CD 293
|
||||
#define IDI_SHELL_CD_ROM 294
|
||||
#define IDI_SHELL_CDR 295
|
||||
#define IDI_SHELL_CDRW 296
|
||||
#define IDI_SHELL_DVD_RAM 297
|
||||
#define IDI_SHELL_DVDR_ROM 298
|
||||
#define IDI_SHELL_MP3_PLAYER 299
|
||||
#define IDI_SHELL_CD_ROM1 302
|
||||
#define IDI_SHELL_DVD_ROM1 304
|
||||
|
||||
#define IDI_SHELL_CAMERA1 309
|
||||
#define IDI_SHELL_SCANNER 315
|
||||
#define IDI_SHELL_CAMCORDER 317
|
||||
#define IDI_SHELL_DVDRW_ROM 318
|
||||
#define IDI_SHELL_NEW_FOLDER 319
|
||||
#define IDI_SHELL_FAVOTITES 322
|
||||
#define IDI_SHELL_SEARCH1 323
|
||||
#define IDI_SHELL_HELP2 324
|
||||
#define IDI_SHELL_LOGOFF1 325
|
||||
#define IDI_SHELL_PROGRAMS_FOLDER1 326
|
||||
#define IDI_SHELL_RECENT_DOCUMENTS1 327
|
||||
#define IDI_SHELL_RUN1 328
|
||||
#define IDI_SHELL_SHUTDOWN1 329
|
||||
#define IDI_SHELL_CONTROL_PANEL1 330
|
||||
#define IDI_SHELL_IDEA 1001
|
||||
#define IDI_SHELL_HELP_FILE1 1004
|
||||
#define IDI_SHELL_SHUTDOWN2 8240
|
||||
|
||||
/* BITMAPS */
|
||||
#define IDB_SHELL_IEXPLORE_LG 204
|
||||
#define IDB_SHELL_IEXPLORE1_LG 205
|
||||
#define IDB_SHELL_IEXPLORE_SM 206
|
||||
#define IDB_SHELL_IEXPLORE1_SM 207
|
||||
#define IDB_SHELL_EXPLORER_LG 214
|
||||
#define IDB_SHELL_EXPLORER1_LG 215
|
||||
#define IDB_SHELL_EXPLORER_SM 216
|
||||
#define IDB_SHELL_EXPLORER1_SM 217
|
||||
#define IDB_SHELL_UNKNOWN1 225
|
||||
#define IDB_SHELL_UNKNOWN2 226
|
||||
#define IDB_SHELL_UNKNOWN3 227
|
||||
#define IDB_SHELL_UNKNOWN4 228
|
||||
#define IDB_SHELL_UNKNOWN5 230
|
||||
#define IDB_SHELL_UNKNOWN6 231
|
||||
#define IDB_SHELL_UNKNOWN7 245
|
||||
|
||||
/* AVI */
|
||||
#define IDA_SHELL_COPY 160
|
||||
#define IDA_SHELL_COPY1 161
|
||||
#define IDA_SHELL_COPY2 167
|
||||
#define IDA_SHELL_COPY3 168
|
||||
#define IDA_SHELL_RECYCLE 162
|
||||
#define IDA_SHELL_EMPTY_RECYCLE 163
|
||||
#define IDA_SHELL_DELETE 164
|
||||
#define IDA_SHELL_DELETE1 169
|
||||
#define IDA_SHELL_DOWNLOAD 170
|
||||
/*
|
||||
AVI resources, windows shell32 has 14 of them: 150-152 and 160-170
|
||||
FIXME: Need to add them, but for now just let them use the same: searching.avi
|
||||
(also to limit shell32's size)
|
||||
*/
|
||||
#define IDR_AVI_SEARCH 150
|
||||
#define IDR_AVI_SEARCHING 151
|
||||
#define IDR_AVI_FINDCOMPUTER 152
|
||||
#define IDR_AVI_FILEMOVE 160
|
||||
#define IDR_AVI_FILECOPY 161
|
||||
#define IDR_AVI_FILENUKE 163
|
||||
#define IDR_AVI_FILEDELETE 164
|
||||
|
||||
#endif
|
||||
|
|
|
@ -16,9 +16,8 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#define COBJMACROS
|
||||
|
@ -30,7 +29,6 @@
|
|||
#include "windef.h"
|
||||
#include "wingdi.h"
|
||||
#include "pidl.h"
|
||||
#include "shlguid.h"
|
||||
#include "shlobj.h"
|
||||
|
||||
#include "shell32_main.h"
|
||||
|
@ -39,8 +37,6 @@
|
|||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(shell);
|
||||
|
||||
extern BOOL fileMoving;
|
||||
|
||||
/**************************************************************************
|
||||
* IContextMenu Implementation
|
||||
*/
|
||||
|
@ -113,7 +109,7 @@ static ULONG WINAPI ISVBgCm_fnAddRef(IContextMenu2 *iface)
|
|||
BgCmImpl *This = (BgCmImpl *)iface;
|
||||
ULONG refCount = InterlockedIncrement(&This->ref);
|
||||
|
||||
TRACE("(%p)->(count=%lu)\n", This, refCount - 1);
|
||||
TRACE("(%p)->(count=%u)\n", This, refCount - 1);
|
||||
|
||||
return refCount;
|
||||
}
|
||||
|
@ -126,7 +122,7 @@ static ULONG WINAPI ISVBgCm_fnRelease(IContextMenu2 *iface)
|
|||
BgCmImpl *This = (BgCmImpl *)iface;
|
||||
ULONG refCount = InterlockedDecrement(&This->ref);
|
||||
|
||||
TRACE("(%p)->(count=%li)\n", This, refCount + 1);
|
||||
TRACE("(%p)->(count=%i)\n", This, refCount + 1);
|
||||
|
||||
if (!refCount)
|
||||
{
|
||||
|
@ -183,7 +179,7 @@ static HRESULT WINAPI ISVBgCm_fnQueryContextMenu(
|
|||
}
|
||||
DestroyMenu(hMyMenu);
|
||||
|
||||
TRACE("(%p)->returning 0x%lx\n",This,hr);
|
||||
TRACE("(%p)->returning 0x%x\n",This,hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
@ -196,14 +192,14 @@ static void DoNewFolder(
|
|||
{
|
||||
BgCmImpl *This = (BgCmImpl *)iface;
|
||||
ISFHelper * psfhlp;
|
||||
char szName[MAX_PATH];
|
||||
WCHAR wszName[MAX_PATH];
|
||||
|
||||
IShellFolder_QueryInterface(This->pSFParent, &IID_ISFHelper, (LPVOID*)&psfhlp);
|
||||
if (psfhlp)
|
||||
{
|
||||
LPITEMIDLIST pidl;
|
||||
ISFHelper_GetUniqueName(psfhlp, szName, MAX_PATH);
|
||||
ISFHelper_AddFolder(psfhlp, 0, szName, &pidl);
|
||||
ISFHelper_GetUniqueName(psfhlp, wszName, MAX_PATH);
|
||||
ISFHelper_AddFolder(psfhlp, 0, wszName, &pidl);
|
||||
|
||||
if(psv)
|
||||
{
|
||||
|
@ -218,192 +214,6 @@ static void DoNewFolder(
|
|||
}
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
static BOOL DoLink(LPCSTR pSrcFile, LPCSTR pDstFile)
|
||||
{
|
||||
IShellLinkA *psl = NULL;
|
||||
IPersistFile *pPf = NULL;
|
||||
HRESULT hres;
|
||||
WCHAR widelink[MAX_PATH];
|
||||
BOOL ret = FALSE;
|
||||
|
||||
CoInitialize(0);
|
||||
|
||||
hres = CoCreateInstance( &CLSID_ShellLink,
|
||||
NULL,
|
||||
CLSCTX_INPROC_SERVER,
|
||||
&IID_IShellLinkA,
|
||||
(LPVOID )&psl);
|
||||
|
||||
if(SUCCEEDED(hres))
|
||||
{
|
||||
hres = IShellLinkA_QueryInterface(psl, &IID_IPersistFile, (LPVOID *)&pPf);
|
||||
if(FAILED(hres))
|
||||
{
|
||||
ERR("failed QueryInterface for IPersistFile %08lx\n", hres);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
TRACE("shortcut point to %s\n", pSrcFile);
|
||||
|
||||
hres = IShellLinkA_SetPath(psl, pSrcFile);
|
||||
|
||||
if(FAILED(hres))
|
||||
{
|
||||
ERR("failed Set{IDList|Path} %08lx\n", hres);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
MultiByteToWideChar(CP_ACP, 0, pDstFile, -1, widelink, MAX_PATH);
|
||||
|
||||
/* create the short cut */
|
||||
hres = IPersistFile_Save(pPf, widelink, TRUE);
|
||||
|
||||
if(FAILED(hres))
|
||||
{
|
||||
ERR("failed IPersistFile::Save %08lx\n", hres);
|
||||
IPersistFile_Release(pPf);
|
||||
IShellLinkA_Release(psl);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
hres = IPersistFile_SaveCompleted(pPf, widelink);
|
||||
IPersistFile_Release(pPf);
|
||||
IShellLinkA_Release(psl);
|
||||
TRACE("shortcut %s has been created, result=%08lx\n", pDstFile, hres);
|
||||
ret = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
ERR("CoCreateInstance failed, hres=%08lx\n", hres);
|
||||
}
|
||||
|
||||
fail:
|
||||
CoUninitialize();
|
||||
return ret;
|
||||
}
|
||||
|
||||
static BOOL MakeLink(IContextMenu2 *iface)
|
||||
{
|
||||
|
||||
BgCmImpl *This = (BgCmImpl *)iface;
|
||||
BOOL bSuccess = FALSE;
|
||||
IDataObject * pda;
|
||||
|
||||
TRACE("\n");
|
||||
|
||||
if(SUCCEEDED(OleGetClipboard(&pda)))
|
||||
{
|
||||
STGMEDIUM medium;
|
||||
FORMATETC formatetc;
|
||||
|
||||
TRACE("pda=%p\n", pda);
|
||||
|
||||
/* Set the FORMATETC structure*/
|
||||
InitFormatEtc(formatetc, RegisterClipboardFormatA(CFSTR_SHELLIDLIST), TYMED_HGLOBAL);
|
||||
|
||||
/* Get the pidls from IDataObject */
|
||||
if(SUCCEEDED(IDataObject_GetData(pda, &formatetc, &medium)))
|
||||
{
|
||||
LPITEMIDLIST * apidl;
|
||||
LPITEMIDLIST pidl;
|
||||
IShellFolder *psfFrom = NULL, *psfDesktop;
|
||||
|
||||
LPIDA lpcida = GlobalLock(medium.u.hGlobal);
|
||||
TRACE("cida=%p\n", lpcida);
|
||||
|
||||
apidl = _ILCopyCidaToaPidl(&pidl, lpcida);
|
||||
|
||||
/* bind to the source shellfolder */
|
||||
SHGetDesktopFolder(&psfDesktop);
|
||||
if(psfDesktop)
|
||||
{
|
||||
IShellFolder_BindToObject(psfDesktop, pidl, NULL, &IID_IShellFolder, (LPVOID*)&psfFrom);
|
||||
IShellFolder_Release(psfDesktop);
|
||||
}
|
||||
|
||||
if (psfFrom)
|
||||
{
|
||||
/* get source and destination shellfolder */
|
||||
IPersistFolder2 *ppfdst = NULL;
|
||||
IPersistFolder2 *ppfsrc = NULL;
|
||||
IShellFolder_QueryInterface(This->pSFParent, &IID_IPersistFolder2, (LPVOID*)&ppfdst);
|
||||
IShellFolder_QueryInterface(psfFrom, &IID_IPersistFolder2, (LPVOID*)&ppfsrc);
|
||||
|
||||
TRACE("[%p,%p]\n",ppfdst,ppfsrc);
|
||||
|
||||
/* do the link/s */
|
||||
/* hack to get desktop path */
|
||||
if ( (ppfdst && ppfsrc) || (This->bDesktop && ppfsrc) )
|
||||
{
|
||||
int i;
|
||||
char szSrcPath[MAX_PATH];
|
||||
char szDstPath[MAX_PATH];
|
||||
BOOL ret = FALSE;
|
||||
LPITEMIDLIST pidl2;
|
||||
char filename[MAX_PATH];
|
||||
char linkFilename[MAX_PATH];
|
||||
char srcFilename[MAX_PATH];
|
||||
|
||||
IPersistFolder2_GetCurFolder(ppfsrc, &pidl2);
|
||||
SHGetPathFromIDListA (pidl2, szSrcPath);
|
||||
|
||||
if (This->bDesktop)
|
||||
{
|
||||
SHGetSpecialFolderLocation(0, CSIDL_DESKTOPDIRECTORY, &pidl2);
|
||||
SHGetPathFromIDListA (pidl2, szDstPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
IPersistFolder2_GetCurFolder(ppfdst, &pidl2);
|
||||
SHGetPathFromIDListA (pidl2, szDstPath);
|
||||
}
|
||||
|
||||
for (i = 0; i < lpcida->cidl; i++)
|
||||
{
|
||||
_ILSimpleGetText (apidl[i], filename, MAX_PATH);
|
||||
|
||||
TRACE("filename %s\n", filename);
|
||||
|
||||
lstrcpyA(linkFilename, szDstPath);
|
||||
PathAddBackslashA(linkFilename);
|
||||
lstrcatA(linkFilename, "Shortcut to ");
|
||||
lstrcatA(linkFilename, filename);
|
||||
lstrcatA(linkFilename, ".lnk");
|
||||
|
||||
TRACE("linkFilename %s\n", linkFilename);
|
||||
|
||||
lstrcpyA(srcFilename, szSrcPath);
|
||||
PathAddBackslashA(srcFilename);
|
||||
lstrcatA(srcFilename, filename);
|
||||
|
||||
TRACE("srcFilename %s\n", srcFilename);
|
||||
|
||||
ret = DoLink(srcFilename, linkFilename);
|
||||
|
||||
if (ret)
|
||||
{
|
||||
SHChangeNotify(SHCNE_CREATE, SHCNF_PATHA, linkFilename, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(ppfdst) IPersistFolder2_Release(ppfdst);
|
||||
if(ppfsrc) IPersistFolder2_Release(ppfsrc);
|
||||
IShellFolder_Release(psfFrom);
|
||||
}
|
||||
|
||||
_ILFreeaPidl(apidl, lpcida->cidl);
|
||||
SHFree(pidl);
|
||||
|
||||
/* release the medium*/
|
||||
ReleaseStgMedium(&medium);
|
||||
}
|
||||
IDataObject_Release(pda);
|
||||
}
|
||||
return bSuccess;
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* DoPaste
|
||||
*/
|
||||
|
@ -450,27 +260,16 @@ static BOOL DoPaste(
|
|||
{
|
||||
/* get source and destination shellfolder */
|
||||
ISFHelper *psfhlpdst, *psfhlpsrc;
|
||||
|
||||
if (This->bDesktop)
|
||||
{
|
||||
/* unimplemented
|
||||
SHGetDesktopFolder(&psfDesktop);
|
||||
IFSFolder_Constructor(psfDesktop, &IID_ISFHelper, (LPVOID*)&psfhlpdst);
|
||||
IShellFolder_QueryInterface(psfhlpdst, &IID_ISFHelper, (LPVOID*)&psfhlpdst);
|
||||
*/
|
||||
IShellFolder_QueryInterface(This->pSFParent, &IID_ISFHelper, (LPVOID*)&psfhlpdst);
|
||||
}
|
||||
else
|
||||
{
|
||||
IShellFolder_QueryInterface(This->pSFParent, &IID_ISFHelper, (LPVOID*)&psfhlpdst);
|
||||
}
|
||||
|
||||
IShellFolder_QueryInterface(This->pSFParent, &IID_ISFHelper, (LPVOID*)&psfhlpdst);
|
||||
IShellFolder_QueryInterface(psfFrom, &IID_ISFHelper, (LPVOID*)&psfhlpsrc);
|
||||
|
||||
/* do the copy/move */
|
||||
if (psfhlpdst && psfhlpsrc)
|
||||
{
|
||||
ISFHelper_CopyItems(psfhlpdst, psfFrom, lpcida->cidl, (LPCITEMIDLIST*)apidl);
|
||||
/* FIXME handle move
|
||||
ISFHelper_DeleteItems(psfhlpsrc, lpcida->cidl, apidl);
|
||||
*/
|
||||
}
|
||||
if(psfhlpdst) ISFHelper_Release(psfhlpdst);
|
||||
if(psfhlpsrc) ISFHelper_Release(psfhlpsrc);
|
||||
|
@ -485,7 +284,30 @@ static BOOL DoPaste(
|
|||
}
|
||||
IDataObject_Release(pda);
|
||||
}
|
||||
#if 0
|
||||
HGLOBAL hMem;
|
||||
|
||||
OpenClipboard(NULL);
|
||||
hMem = GetClipboardData(CF_HDROP);
|
||||
|
||||
if(hMem)
|
||||
{
|
||||
char * pDropFiles = (char *)GlobalLock(hMem);
|
||||
if(pDropFiles)
|
||||
{
|
||||
int len, offset = sizeof(DROPFILESTRUCT);
|
||||
|
||||
while( pDropFiles[offset] != 0)
|
||||
{
|
||||
len = strlen(pDropFiles + offset);
|
||||
TRACE("%s\n", pDropFiles + offset);
|
||||
offset += len+1;
|
||||
}
|
||||
}
|
||||
GlobalUnlock(hMem);
|
||||
}
|
||||
CloseClipboard();
|
||||
#endif
|
||||
return bSuccess;
|
||||
}
|
||||
|
||||
|
@ -550,10 +372,6 @@ static HRESULT WINAPI ISVBgCm_fnInvokeCommand(
|
|||
DoPaste(iface);
|
||||
break;
|
||||
|
||||
case FCIDM_SHVIEW_INSERTLINK:
|
||||
MakeLink(iface);
|
||||
break;
|
||||
|
||||
case FCIDM_SHVIEW_PROPERTIES:
|
||||
if (This->bDesktop) {
|
||||
ShellExecuteA(lpcmi->hwnd, "open", "rundll32.exe shell32.dll,Control_RunDLL desk.cpl", NULL, NULL, SW_SHOWNORMAL);
|
||||
|
@ -589,7 +407,7 @@ static HRESULT WINAPI ISVBgCm_fnGetCommandString(
|
|||
{
|
||||
BgCmImpl *This = (BgCmImpl *)iface;
|
||||
|
||||
TRACE("(%p)->(idcom=%x flags=%x %p name=%p len=%x)\n",This, idCommand, uFlags, lpReserved, lpszName, uMaxNameLen);
|
||||
TRACE("(%p)->(idcom=%lx flags=%x %p name=%p len=%x)\n",This, idCommand, uFlags, lpReserved, lpszName, uMaxNameLen);
|
||||
|
||||
/* test the existence of the menu items, the file dialog enables
|
||||
the buttons according to this */
|
||||
|
@ -621,7 +439,7 @@ static HRESULT WINAPI ISVBgCm_fnHandleMenuMsg(
|
|||
{
|
||||
BgCmImpl *This = (BgCmImpl *)iface;
|
||||
|
||||
FIXME("(%p)->(msg=%x wp=%x lp=%lx)\n",This, uMsg, wParam, lParam);
|
||||
FIXME("(%p)->(msg=%x wp=%lx lp=%lx)\n",This, uMsg, wParam, lParam);
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
/*
|
||||
* Systray
|
||||
* Systray handling
|
||||
*
|
||||
* Copyright 1999 Kai Morich <kai.morich@bigfoot.de>
|
||||
*
|
||||
* Manage the systray window. That it actually appears in the docking
|
||||
* area of KDE is handled in dlls/x11drv/window.c,
|
||||
* X11DRV_set_wm_hints using KWM_DOCKWINDOW.
|
||||
* Copyright 1999 Kai Morich <kai.morich@bigfoot.de>
|
||||
* Copyright 2004 Mike Hearn, for CodeWeavers
|
||||
* Copyright 2005 Robert Shearman
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -19,381 +17,175 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#define NONAMELESSUNION
|
||||
#define NONAMELESSSTRUCT
|
||||
|
||||
#ifdef HAVE_UNISTD_H
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "winnls.h"
|
||||
#include "wingdi.h"
|
||||
#include "winnls.h"
|
||||
#include "winuser.h"
|
||||
#include "shlobj.h"
|
||||
#include "shellapi.h"
|
||||
#include "shell32_main.h"
|
||||
#include "commctrl.h"
|
||||
|
||||
#include "wine/debug.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(shell);
|
||||
|
||||
typedef struct SystrayItem {
|
||||
HWND hWnd;
|
||||
HWND hWndToolTip;
|
||||
NOTIFYICONDATAW notifyIcon;
|
||||
struct SystrayItem *nextTrayItem;
|
||||
} SystrayItem;
|
||||
|
||||
static SystrayItem *systray=NULL;
|
||||
static int firstSystray=TRUE; /* defer creation of window class until first systray item is created */
|
||||
|
||||
|
||||
#define ICON_SIZE GetSystemMetrics(SM_CXSMICON)
|
||||
/* space around icon (forces icon to center of KDE systray area) */
|
||||
#define ICON_BORDER 4
|
||||
|
||||
|
||||
|
||||
static BOOL SYSTRAY_ItemIsEqual(PNOTIFYICONDATAW pnid1, PNOTIFYICONDATAW pnid2)
|
||||
{
|
||||
if (pnid1->hWnd != pnid2->hWnd) return FALSE;
|
||||
if (pnid1->uID != pnid2->uID) return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static void SYSTRAY_ItemTerm(SystrayItem *ptrayItem)
|
||||
{
|
||||
if(ptrayItem->notifyIcon.hIcon)
|
||||
DestroyIcon(ptrayItem->notifyIcon.hIcon);
|
||||
if(ptrayItem->hWndToolTip)
|
||||
DestroyWindow(ptrayItem->hWndToolTip);
|
||||
if(ptrayItem->hWnd)
|
||||
DestroyWindow(ptrayItem->hWnd);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
static BOOL SYSTRAY_Delete(PNOTIFYICONDATAW pnid)
|
||||
{
|
||||
SystrayItem **ptrayItem = &systray;
|
||||
|
||||
while (*ptrayItem) {
|
||||
if (SYSTRAY_ItemIsEqual(pnid, &(*ptrayItem)->notifyIcon)) {
|
||||
SystrayItem *next = (*ptrayItem)->nextTrayItem;
|
||||
TRACE("%p: %p %s\n", *ptrayItem, (*ptrayItem)->notifyIcon.hWnd, debugstr_w((*ptrayItem)->notifyIcon.szTip));
|
||||
SYSTRAY_ItemTerm(*ptrayItem);
|
||||
|
||||
HeapFree(GetProcessHeap(),0,*ptrayItem);
|
||||
*ptrayItem = next;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
ptrayItem = &((*ptrayItem)->nextTrayItem);
|
||||
}
|
||||
|
||||
return FALSE; /* not found */
|
||||
}
|
||||
|
||||
static LRESULT CALLBACK SYSTRAY_WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
HDC hdc;
|
||||
PAINTSTRUCT ps;
|
||||
|
||||
switch (message) {
|
||||
case WM_PAINT:
|
||||
{
|
||||
RECT rc;
|
||||
SystrayItem *ptrayItem = systray;
|
||||
|
||||
while (ptrayItem) {
|
||||
if (ptrayItem->hWnd==hWnd) {
|
||||
if (ptrayItem->notifyIcon.hIcon) {
|
||||
hdc = BeginPaint(hWnd, &ps);
|
||||
GetClientRect(hWnd, &rc);
|
||||
if (!DrawIconEx(hdc, rc.left+ICON_BORDER, rc.top+ICON_BORDER, ptrayItem->notifyIcon.hIcon,
|
||||
ICON_SIZE, ICON_SIZE, 0, 0, DI_DEFAULTSIZE|DI_NORMAL)) {
|
||||
ERR("Paint(SystrayWindow %p) failed -> removing SystrayItem %p\n", hWnd, ptrayItem);
|
||||
SYSTRAY_Delete(&ptrayItem->notifyIcon);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
ptrayItem = ptrayItem->nextTrayItem;
|
||||
}
|
||||
EndPaint(hWnd, &ps);
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_MOUSEMOVE:
|
||||
case WM_LBUTTONDOWN:
|
||||
case WM_LBUTTONUP:
|
||||
case WM_RBUTTONDOWN:
|
||||
case WM_RBUTTONUP:
|
||||
case WM_MBUTTONDOWN:
|
||||
case WM_MBUTTONUP:
|
||||
{
|
||||
MSG msg;
|
||||
SystrayItem *ptrayItem = systray;
|
||||
|
||||
while ( ptrayItem ) {
|
||||
if (ptrayItem->hWnd == hWnd) {
|
||||
msg.hwnd=hWnd;
|
||||
msg.message=message;
|
||||
msg.wParam=wParam;
|
||||
msg.lParam=lParam;
|
||||
msg.time = GetMessageTime ();
|
||||
msg.pt.x = LOWORD(GetMessagePos ());
|
||||
msg.pt.y = HIWORD(GetMessagePos ());
|
||||
|
||||
SendMessageW(ptrayItem->hWndToolTip, TTM_RELAYEVENT, 0, (LPARAM)&msg);
|
||||
}
|
||||
ptrayItem = ptrayItem->nextTrayItem;
|
||||
}
|
||||
}
|
||||
/* fall through */
|
||||
|
||||
case WM_LBUTTONDBLCLK:
|
||||
case WM_RBUTTONDBLCLK:
|
||||
case WM_MBUTTONDBLCLK:
|
||||
{
|
||||
SystrayItem *ptrayItem = systray;
|
||||
|
||||
while (ptrayItem) {
|
||||
if (ptrayItem->hWnd == hWnd) {
|
||||
if (ptrayItem->notifyIcon.hWnd && ptrayItem->notifyIcon.uCallbackMessage) {
|
||||
if (!PostMessageW(ptrayItem->notifyIcon.hWnd, ptrayItem->notifyIcon.uCallbackMessage,
|
||||
(WPARAM)ptrayItem->notifyIcon.uID, (LPARAM)message)) {
|
||||
ERR("PostMessage(SystrayWindow %p) failed -> removing SystrayItem %p\n", hWnd, ptrayItem);
|
||||
SYSTRAY_Delete(&ptrayItem->notifyIcon);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
ptrayItem = ptrayItem->nextTrayItem;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
return (DefWindowProcW(hWnd, message, wParam, lParam));
|
||||
}
|
||||
return (0);
|
||||
|
||||
}
|
||||
|
||||
|
||||
static BOOL SYSTRAY_RegisterClass(void)
|
||||
{
|
||||
WNDCLASSW wc;
|
||||
static const WCHAR WineSystrayW[] = { 'W','i','n','e','S','y','s','t','r','a','y',0 };
|
||||
|
||||
wc.style = CS_SAVEBITS|CS_DBLCLKS;
|
||||
wc.lpfnWndProc = SYSTRAY_WndProc;
|
||||
wc.cbClsExtra = 0;
|
||||
wc.cbWndExtra = 0;
|
||||
wc.hInstance = 0;
|
||||
wc.hIcon = 0;
|
||||
wc.hCursor = LoadCursorW(0, (LPWSTR)IDC_ARROW);
|
||||
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
|
||||
wc.lpszMenuName = NULL;
|
||||
wc.lpszClassName = WineSystrayW;
|
||||
|
||||
if (!RegisterClassW(&wc)) {
|
||||
ERR("RegisterClass(WineSystray) failed\n");
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static BOOL SYSTRAY_ItemInit(SystrayItem *ptrayItem)
|
||||
{
|
||||
RECT rect;
|
||||
static const WCHAR WineSystrayW[] = { 'W','i','n','e','S','y','s','t','r','a','y',0 };
|
||||
static const WCHAR Wine_SystrayW[] = { 'W','i','n','e','-','S','y','s','t','r','a','y',0 };
|
||||
|
||||
/* Register the class if this is our first tray item. */
|
||||
if ( firstSystray ) {
|
||||
firstSystray = FALSE;
|
||||
if ( !SYSTRAY_RegisterClass() ) {
|
||||
ERR( "RegisterClass(WineSystray) failed\n" );
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/* Initialize the window size. */
|
||||
rect.left = 0;
|
||||
rect.top = 0;
|
||||
rect.right = ICON_SIZE+2*ICON_BORDER;
|
||||
rect.bottom = ICON_SIZE+2*ICON_BORDER;
|
||||
|
||||
ZeroMemory( ptrayItem, sizeof(SystrayItem) );
|
||||
/* Create tray window for icon. */
|
||||
ptrayItem->hWnd = CreateWindowExW( WS_EX_TRAYWINDOW,
|
||||
WineSystrayW, Wine_SystrayW,
|
||||
WS_VISIBLE,
|
||||
CW_USEDEFAULT, CW_USEDEFAULT,
|
||||
rect.right-rect.left, rect.bottom-rect.top,
|
||||
0, 0, 0, 0 );
|
||||
if ( !ptrayItem->hWnd ) {
|
||||
ERR( "CreateWindow(WineSystray) failed\n" );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Create tooltip for icon. */
|
||||
ptrayItem->hWndToolTip = CreateWindowW( TOOLTIPS_CLASSW,NULL,TTS_ALWAYSTIP,
|
||||
CW_USEDEFAULT, CW_USEDEFAULT,
|
||||
CW_USEDEFAULT, CW_USEDEFAULT,
|
||||
ptrayItem->hWnd, 0, 0, 0 );
|
||||
if ( !ptrayItem->hWndToolTip ) {
|
||||
ERR( "CreateWindow(TOOLTIP) failed\n" );
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static void SYSTRAY_ItemSetMessage(SystrayItem *ptrayItem, UINT uCallbackMessage)
|
||||
{
|
||||
ptrayItem->notifyIcon.uCallbackMessage = uCallbackMessage;
|
||||
}
|
||||
|
||||
|
||||
static void SYSTRAY_ItemSetIcon(SystrayItem *ptrayItem, HICON hIcon)
|
||||
{
|
||||
if(ptrayItem->notifyIcon.hIcon)
|
||||
DestroyIcon(ptrayItem->notifyIcon.hIcon);
|
||||
ptrayItem->notifyIcon.hIcon = CopyIcon(hIcon);
|
||||
InvalidateRect(ptrayItem->hWnd, NULL, TRUE);
|
||||
}
|
||||
|
||||
|
||||
static void SYSTRAY_ItemSetTip(SystrayItem *ptrayItem, const WCHAR* szTip, int modify)
|
||||
{
|
||||
TTTOOLINFOW ti;
|
||||
|
||||
lstrcpynW(ptrayItem->notifyIcon.szTip, szTip, sizeof(ptrayItem->notifyIcon.szTip)/sizeof(WCHAR));
|
||||
|
||||
ti.cbSize = sizeof(TTTOOLINFOW);
|
||||
ti.uFlags = 0;
|
||||
ti.hwnd = ptrayItem->hWnd;
|
||||
ti.hinst = 0;
|
||||
ti.uId = 0;
|
||||
ti.lpszText = ptrayItem->notifyIcon.szTip;
|
||||
ti.rect.left = 0;
|
||||
ti.rect.top = 0;
|
||||
ti.rect.right = ICON_SIZE+2*ICON_BORDER;
|
||||
ti.rect.bottom = ICON_SIZE+2*ICON_BORDER;
|
||||
|
||||
if(modify)
|
||||
SendMessageW(ptrayItem->hWndToolTip, TTM_UPDATETIPTEXTW, 0, (LPARAM)&ti);
|
||||
else
|
||||
SendMessageW(ptrayItem->hWndToolTip, TTM_ADDTOOLW, 0, (LPARAM)&ti);
|
||||
}
|
||||
|
||||
|
||||
static BOOL SYSTRAY_Add(PNOTIFYICONDATAW pnid)
|
||||
{
|
||||
SystrayItem **ptrayItem = &systray;
|
||||
static const WCHAR emptyW[] = { 0 };
|
||||
|
||||
/* Find last element. */
|
||||
while( *ptrayItem ) {
|
||||
if ( SYSTRAY_ItemIsEqual(pnid, &(*ptrayItem)->notifyIcon) )
|
||||
return FALSE;
|
||||
ptrayItem = &((*ptrayItem)->nextTrayItem);
|
||||
}
|
||||
/* Allocate SystrayItem for element and add to end of list. */
|
||||
(*ptrayItem) = HeapAlloc(GetProcessHeap(),0,sizeof(SystrayItem));
|
||||
|
||||
/* Initialize and set data for the tray element. */
|
||||
SYSTRAY_ItemInit( (*ptrayItem) );
|
||||
(*ptrayItem)->notifyIcon.uID = pnid->uID; /* only needed for callback message */
|
||||
(*ptrayItem)->notifyIcon.hWnd = pnid->hWnd; /* only needed for callback message */
|
||||
SYSTRAY_ItemSetIcon (*ptrayItem, (pnid->uFlags&NIF_ICON) ?pnid->hIcon :0);
|
||||
SYSTRAY_ItemSetMessage(*ptrayItem, (pnid->uFlags&NIF_MESSAGE)?pnid->uCallbackMessage:0);
|
||||
SYSTRAY_ItemSetTip (*ptrayItem, (pnid->uFlags&NIF_TIP) ?pnid->szTip :emptyW, FALSE);
|
||||
|
||||
TRACE("%p: %p %s\n", (*ptrayItem), (*ptrayItem)->notifyIcon.hWnd,
|
||||
debugstr_w((*ptrayItem)->notifyIcon.szTip));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static BOOL SYSTRAY_Modify(PNOTIFYICONDATAW pnid)
|
||||
{
|
||||
SystrayItem *ptrayItem = systray;
|
||||
|
||||
while ( ptrayItem ) {
|
||||
if ( SYSTRAY_ItemIsEqual(pnid, &ptrayItem->notifyIcon) ) {
|
||||
if (pnid->uFlags & NIF_ICON)
|
||||
SYSTRAY_ItemSetIcon(ptrayItem, pnid->hIcon);
|
||||
if (pnid->uFlags & NIF_MESSAGE)
|
||||
SYSTRAY_ItemSetMessage(ptrayItem, pnid->uCallbackMessage);
|
||||
if (pnid->uFlags & NIF_TIP)
|
||||
SYSTRAY_ItemSetTip(ptrayItem, pnid->szTip, TRUE);
|
||||
|
||||
TRACE("%p: %p %s\n", ptrayItem, ptrayItem->notifyIcon.hWnd, debugstr_w(ptrayItem->notifyIcon.szTip));
|
||||
return TRUE;
|
||||
}
|
||||
ptrayItem = ptrayItem->nextTrayItem;
|
||||
}
|
||||
return FALSE; /* not found */
|
||||
}
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(systray);
|
||||
|
||||
static const WCHAR classname[] = /* Shell_TrayWnd */ {'S','h','e','l','l','_','T','r','a','y','W','n','d','\0'};
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* Shell_NotifyIcon [SHELL32.296]
|
||||
* Shell_NotifyIconA [SHELL32.297]
|
||||
*/
|
||||
BOOL SYSTRAY_Init(void)
|
||||
BOOL WINAPI Shell_NotifyIconA(DWORD dwMessage, PNOTIFYICONDATAA pnid)
|
||||
{
|
||||
return TRUE;
|
||||
NOTIFYICONDATAW nidW;
|
||||
INT cbSize;
|
||||
|
||||
/* Validate the cbSize as Windows XP does */
|
||||
if (pnid->cbSize != NOTIFYICONDATAA_V1_SIZE &&
|
||||
pnid->cbSize != NOTIFYICONDATAA_V2_SIZE &&
|
||||
pnid->cbSize != NOTIFYICONDATAA_V3_SIZE &&
|
||||
pnid->cbSize != sizeof(NOTIFYICONDATAA))
|
||||
{
|
||||
WARN("Invalid cbSize (%d) - using only Win95 fields (size=%d)\n",
|
||||
pnid->cbSize, NOTIFYICONDATAA_V1_SIZE);
|
||||
cbSize = NOTIFYICONDATAA_V1_SIZE;
|
||||
}
|
||||
else
|
||||
cbSize = pnid->cbSize;
|
||||
|
||||
ZeroMemory(&nidW, sizeof(nidW));
|
||||
nidW.cbSize = sizeof(nidW);
|
||||
nidW.hWnd = pnid->hWnd;
|
||||
nidW.uID = pnid->uID;
|
||||
nidW.uFlags = pnid->uFlags;
|
||||
nidW.uCallbackMessage = pnid->uCallbackMessage;
|
||||
nidW.hIcon = pnid->hIcon;
|
||||
|
||||
/* szTip */
|
||||
if (pnid->uFlags & NIF_TIP)
|
||||
MultiByteToWideChar(CP_ACP, 0, pnid->szTip, -1, nidW.szTip, sizeof(nidW.szTip)/sizeof(WCHAR));
|
||||
|
||||
if (cbSize >= NOTIFYICONDATAA_V2_SIZE)
|
||||
{
|
||||
nidW.dwState = pnid->dwState;
|
||||
nidW.dwStateMask = pnid->dwStateMask;
|
||||
|
||||
/* szInfo, szInfoTitle */
|
||||
if (pnid->uFlags & NIF_INFO)
|
||||
{
|
||||
MultiByteToWideChar(CP_ACP, 0, pnid->szInfo, -1, nidW.szInfo, sizeof(nidW.szInfo)/sizeof(WCHAR));
|
||||
MultiByteToWideChar(CP_ACP, 0, pnid->szInfoTitle, -1, nidW.szInfoTitle, sizeof(nidW.szInfoTitle)/sizeof(WCHAR));
|
||||
}
|
||||
|
||||
nidW.u.uTimeout = pnid->u.uTimeout;
|
||||
nidW.dwInfoFlags = pnid->dwInfoFlags;
|
||||
}
|
||||
|
||||
if (cbSize >= NOTIFYICONDATAA_V3_SIZE)
|
||||
nidW.guidItem = pnid->guidItem;
|
||||
|
||||
if (cbSize >= sizeof(NOTIFYICONDATAA))
|
||||
nidW.hBalloonIcon = pnid->hBalloonIcon;
|
||||
return Shell_NotifyIconW(dwMessage, &nidW);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* Shell_NotifyIconW [SHELL32.298]
|
||||
*/
|
||||
BOOL WINAPI Shell_NotifyIconW(DWORD dwMessage, PNOTIFYICONDATAW pnid )
|
||||
BOOL WINAPI Shell_NotifyIconW(DWORD dwMessage, PNOTIFYICONDATAW nid)
|
||||
{
|
||||
BOOL flag=FALSE;
|
||||
TRACE("enter %p %d %ld\n", pnid->hWnd, pnid->uID, dwMessage);
|
||||
switch(dwMessage) {
|
||||
case NIM_ADD:
|
||||
flag = SYSTRAY_Add(pnid);
|
||||
break;
|
||||
case NIM_MODIFY:
|
||||
flag = SYSTRAY_Modify(pnid);
|
||||
break;
|
||||
case NIM_DELETE:
|
||||
flag = SYSTRAY_Delete(pnid);
|
||||
break;
|
||||
}
|
||||
TRACE("leave %p %d %ld=%d\n", pnid->hWnd, pnid->uID, dwMessage, flag);
|
||||
return flag;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* Shell_NotifyIconA [SHELL32.297]
|
||||
* Shell_NotifyIcon [SHELL32.296]
|
||||
*/
|
||||
BOOL WINAPI Shell_NotifyIconA (DWORD dwMessage, PNOTIFYICONDATAA pnid )
|
||||
{
|
||||
BOOL ret;
|
||||
|
||||
PNOTIFYICONDATAW p = HeapAlloc(GetProcessHeap(),0,sizeof(NOTIFYICONDATAW));
|
||||
memcpy(p, pnid, sizeof(NOTIFYICONDATAW));
|
||||
MultiByteToWideChar( CP_ACP, 0, pnid->szTip, -1, p->szTip, sizeof(p->szTip)/sizeof(WCHAR) );
|
||||
p->szTip[sizeof(p->szTip)/sizeof(WCHAR)-1] = 0;
|
||||
|
||||
ret = Shell_NotifyIconW(dwMessage, p );
|
||||
|
||||
HeapFree(GetProcessHeap(),0,p);
|
||||
return ret;
|
||||
HWND tray;
|
||||
COPYDATASTRUCT cds;
|
||||
char *buffer = NULL;
|
||||
|
||||
TRACE("dwMessage = %d, nid->cbSize=%d\n", dwMessage, nid->cbSize);
|
||||
|
||||
/* Validate the cbSize so that WM_COPYDATA doesn't crash the application */
|
||||
if (nid->cbSize != NOTIFYICONDATAW_V1_SIZE &&
|
||||
nid->cbSize != NOTIFYICONDATAW_V2_SIZE &&
|
||||
nid->cbSize != NOTIFYICONDATAW_V3_SIZE &&
|
||||
nid->cbSize != sizeof(NOTIFYICONDATAW))
|
||||
{
|
||||
NOTIFYICONDATAW newNid;
|
||||
|
||||
WARN("Invalid cbSize (%d) - using only Win95 fields (size=%d)\n",
|
||||
nid->cbSize, NOTIFYICONDATAW_V1_SIZE);
|
||||
CopyMemory(&newNid, nid, NOTIFYICONDATAW_V1_SIZE);
|
||||
newNid.cbSize = NOTIFYICONDATAW_V1_SIZE;
|
||||
return Shell_NotifyIconW(dwMessage, &newNid);
|
||||
}
|
||||
|
||||
tray = FindWindowExW(0, NULL, classname, NULL);
|
||||
if (!tray) return FALSE;
|
||||
|
||||
cds.dwData = dwMessage;
|
||||
|
||||
/* FIXME: if statement only needed because we don't support interprocess
|
||||
* icon handles */
|
||||
if (nid->uFlags & NIF_ICON)
|
||||
{
|
||||
ICONINFO iconinfo;
|
||||
BITMAP bmMask;
|
||||
BITMAP bmColour;
|
||||
LONG cbMaskBits;
|
||||
LONG cbColourBits;
|
||||
|
||||
if (!GetIconInfo(nid->hIcon, &iconinfo))
|
||||
goto noicon;
|
||||
|
||||
if (!GetObjectW(iconinfo.hbmMask, sizeof(bmMask), &bmMask) ||
|
||||
!GetObjectW(iconinfo.hbmColor, sizeof(bmColour), &bmColour))
|
||||
{
|
||||
DeleteObject(iconinfo.hbmMask);
|
||||
DeleteObject(iconinfo.hbmColor);
|
||||
goto noicon;
|
||||
}
|
||||
|
||||
cbMaskBits = (bmMask.bmPlanes * bmMask.bmWidth * bmMask.bmHeight * bmMask.bmBitsPixel) / 8;
|
||||
cbColourBits = (bmColour.bmPlanes * bmColour.bmWidth * bmColour.bmHeight * bmColour.bmBitsPixel) / 8;
|
||||
cds.cbData = nid->cbSize + 2*sizeof(BITMAP) + cbMaskBits + cbColourBits;
|
||||
buffer = HeapAlloc(GetProcessHeap(), 0, cds.cbData);
|
||||
if (!buffer)
|
||||
{
|
||||
DeleteObject(iconinfo.hbmMask);
|
||||
DeleteObject(iconinfo.hbmColor);
|
||||
return FALSE;
|
||||
}
|
||||
cds.lpData = buffer;
|
||||
|
||||
memcpy(buffer, nid, nid->cbSize);
|
||||
buffer += nid->cbSize;
|
||||
memcpy(buffer, &bmMask, sizeof(bmMask));
|
||||
buffer += sizeof(bmMask);
|
||||
memcpy(buffer, &bmColour, sizeof(bmColour));
|
||||
buffer += sizeof(bmColour);
|
||||
GetBitmapBits(iconinfo.hbmMask, cbMaskBits, buffer);
|
||||
buffer += cbMaskBits;
|
||||
GetBitmapBits(iconinfo.hbmColor, cbColourBits, buffer);
|
||||
buffer += cbColourBits;
|
||||
|
||||
DeleteObject(iconinfo.hbmMask);
|
||||
DeleteObject(iconinfo.hbmColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
noicon:
|
||||
cds.cbData = nid->cbSize;
|
||||
cds.lpData = nid;
|
||||
}
|
||||
|
||||
SendMessageW(tray, WM_COPYDATA, (WPARAM)nid->hWnd, (LPARAM)&cds);
|
||||
|
||||
/* FIXME: if statement only needed because we don't support interprocess
|
||||
* icon handles */
|
||||
HeapFree(GetProcessHeap(), 0, buffer);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#ifndef __WINE_UNDOCSHELL_H
|
||||
|
@ -455,7 +455,7 @@ int WINAPI PathParseIconLocationAW(LPVOID lpszPath);
|
|||
|
||||
BOOL WINAPI PathIsSameRootAW(LPCVOID lpszPath1, LPCVOID lpszPath2);
|
||||
|
||||
BOOL WINAPI PathFindOnPathAW(LPVOID sFile, LPCVOID sOtherDirs);
|
||||
BOOL WINAPI PathFindOnPathAW(LPVOID sFile, LPCVOID *sOtherDirs);
|
||||
|
||||
/****************************************************************************
|
||||
* Shell Namespace Routines
|
||||
|
|
Loading…
Reference in a new issue