diff --git a/reactos/dll/win32/shell32/fprop.cpp b/reactos/dll/win32/shell32/fprop.cpp index bddaa7f9771..fb7ba7a39e4 100644 --- a/reactos/dll/win32/shell32/fprop.cpp +++ b/reactos/dll/win32/shell32/fprop.cpp @@ -31,52 +31,39 @@ typedef struct _LANGANDCODEPAGE_ } LANGANDCODEPAGE, *LPLANGANDCODEPAGE; EXTERN_C HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY hKey, LPCWSTR pszSubKey, UINT max_iface, IDataObject *pDataObj); +BOOL PathIsExeW(LPCWSTR lpszPath); -static LONG -SH_GetAssociatedApplication(LPCWSTR pwszFileExt, WCHAR *pwszAssocApp) +static VOID +SH_FileGeneralOpensWith(HWND hwndDlg, LPCWSTR pwszExt) { - WCHAR wszBuf[MAX_PATH] = {0}; - LONG result; + WCHAR wszBuf[MAX_PATH] = L""; + WCHAR wszBuf2[MAX_PATH] = L""; DWORD dwSize = sizeof(wszBuf); - result = RegGetValueW(HKEY_CLASSES_ROOT, pwszFileExt, L"", RRF_RT_REG_SZ, NULL, wszBuf, &dwSize); - - if (result == ERROR_SUCCESS) + if (RegGetValueW(HKEY_CLASSES_ROOT, pwszExt, L"", RRF_RT_REG_SZ, NULL, wszBuf, &dwSize) == ERROR_SUCCESS) { - StringCbCat(wszBuf, sizeof(wszBuf), L"\\shell\\open\\command"); - dwSize = MAX_PATH * sizeof(WCHAR); - result = RegGetValueW(HKEY_CLASSES_ROOT, wszBuf, L"", RRF_RT_REG_SZ, NULL, pwszAssocApp, &dwSize); - /* FIXME: Make it return full path instead of - notepad.exe "%1" - %systemroot%\notepad.exe "%1" - etc - Maybe there is code to do that somewhere? - dll\win32\shell32\shlexec.c for example? */ - } + StringCbCatW(wszBuf, sizeof(wszBuf), L"\\shell\\open\\command"); + dwSize = sizeof(wszBuf2); + if (RegGetValueW(HKEY_CLASSES_ROOT, wszBuf, L"", RRF_RT_REG_SZ, NULL, wszBuf2, &dwSize) == ERROR_SUCCESS) + { + /* Get path from command line */ + ExpandEnvironmentStringsW(wszBuf2, wszBuf, _countof(wszBuf)); + PathRemoveArgs(wszBuf); + PathUnquoteSpacesW(wszBuf); + PathRemoveExtension(wszBuf); + LPWSTR pwszFilename = PathFindFileNameW(wszBuf); + pwszFilename[0] = towupper(pwszFilename[0]); + SetDlgItemTextW(hwndDlg, 14007, pwszFilename); + //PathSearchAndQualify(wAssocAppFullPath, wAssocAppFullPath, MAX_PATH); + return; + } else + WARN("RegGetValueW %ls failed\n", wszBuf); + } else + WARN("RegGetValueW %ls failed\n", pwszExt); - if (result != ERROR_SUCCESS) - pwszAssocApp[0] = '\0'; - - return result; -} - -static LONG -SH_FileGeneralOpensWith(HWND hwndDlg, LPCWSTR fileext) -{ - LONG result; - WCHAR wAppName[MAX_PATH] = {0}; - WCHAR wAssocApp[MAX_PATH] = {0}; - - result = SH_GetAssociatedApplication(fileext, wAssocApp); - - if (result == ERROR_SUCCESS) - { - _wsplitpath(wAssocApp, NULL, NULL, wAppName, NULL); - - SetDlgItemTextW(hwndDlg, 14007, wAppName); - } - - return result; + /* Unknown application */ + LoadStringW(shell32_hInstance, IDS_UNKNOWN_APP, wszBuf, _countof(wszBuf)); + SetDlgItemTextW(hwndDlg, 14007, wszBuf); } /************************************************************************* @@ -365,20 +352,21 @@ SH_FileGeneralSetText(HWND hwndDlg, LPCWSTR pwszPath) */ static BOOL -SH_FileGeneralSetFileSizeTime(HWND hwndDlg, LPCWSTR lpfilename, PULARGE_INTEGER lpfilesize) +SH_FileGeneralSetFileSizeTime(HWND hwndDlg, LPCWSTR pwszPath) { - BOOL result; HANDLE hFile; - FILETIME create_time; - FILETIME accessed_time; - FILETIME write_time; - WCHAR resultstr[MAX_PATH]; - LARGE_INTEGER file_size; + FILETIME CreateTime; + FILETIME AccessedTime; + FILETIME WriteTime; + WCHAR wszBuf[MAX_PATH]; + LARGE_INTEGER FileSize; - if (lpfilename == NULL) + if (pwszPath == NULL) return FALSE; - hFile = CreateFileW(lpfilename, + TRACE("SH_FileGeneralSetFileSizeTime %ls\n", pwszPath); + + hFile = CreateFileW(pwszPath, GENERIC_READ, FILE_SHARE_READ, NULL, @@ -388,34 +376,18 @@ SH_FileGeneralSetFileSizeTime(HWND hwndDlg, LPCWSTR lpfilename, PULARGE_INTEGER if (hFile == INVALID_HANDLE_VALUE) { - WARN("failed to open file %s\n", debugstr_w(lpfilename)); + WARN("failed to open file %s\n", debugstr_w(pwszPath)); return FALSE; } - result = GetFileTime(hFile, &create_time, &accessed_time, &write_time); - - if (!result) + if (!GetFileTime(hFile, &CreateTime, &AccessedTime, &WriteTime)) { WARN("GetFileTime failed\n"); + CloseHandle(hFile); return FALSE; } - if (SHFileGeneralGetFileTimeString(&create_time, resultstr)) - { - SetDlgItemTextW(hwndDlg, 14015, resultstr); - } - - if (SHFileGeneralGetFileTimeString(&accessed_time, resultstr)) - { - SetDlgItemTextW(hwndDlg, 14019, resultstr); - } - - if (SHFileGeneralGetFileTimeString(&write_time, resultstr)) - { - SetDlgItemTextW(hwndDlg, 14017, resultstr); - } - - if (!GetFileSizeEx(hFile, &file_size)) + if (!GetFileSizeEx(hFile, &FileSize)) { WARN("GetFileSize failed\n"); CloseHandle(hFile); @@ -424,16 +396,21 @@ SH_FileGeneralSetFileSizeTime(HWND hwndDlg, LPCWSTR lpfilename, PULARGE_INTEGER CloseHandle(hFile); - if (!SH_FormatFileSizeWithBytes((PULARGE_INTEGER)&file_size, - resultstr, - sizeof(resultstr) / sizeof(WCHAR))) - return FALSE; + if (SHFileGeneralGetFileTimeString(&CreateTime, wszBuf)) + SetDlgItemTextW(hwndDlg, 14015, wszBuf); - TRACE("result size %u resultstr %s\n", file_size.QuadPart, debugstr_w(resultstr)); - SetDlgItemTextW(hwndDlg, 14011, resultstr); + if (SHFileGeneralGetFileTimeString(&AccessedTime, wszBuf)) + SetDlgItemTextW(hwndDlg, 14019, wszBuf); - if (lpfilesize) - lpfilesize->QuadPart = (ULONGLONG)file_size.QuadPart; + if (SHFileGeneralGetFileTimeString(&WriteTime, wszBuf)) + SetDlgItemTextW(hwndDlg, 14017, wszBuf); + + if (SH_FormatFileSizeWithBytes((PULARGE_INTEGER)&FileSize, + wszBuf, + sizeof(wszBuf) / sizeof(WCHAR))) + { + SetDlgItemTextW(hwndDlg, 14011, wszBuf); + } return TRUE; } @@ -679,11 +656,9 @@ SH_FileGeneralDlgProc(HWND hwndDlg, LPCWSTR pwszPath = (WCHAR *)ppsp->lParam; if (pwszPath == NULL) { - ERR("no filename\n"); + ERR("no path\n"); break; } - - LPCWSTR pwszExt = PathFindExtensionW(pwszPath); /* set general text properties filename filelocation and icon */ SH_FileGeneralSetText(hwndDlg, pwszPath); @@ -692,10 +667,11 @@ SH_FileGeneralDlgProc(HWND hwndDlg, SH_FileGeneralSetFileType(hwndDlg, pwszPath); /* set opens with */ - SH_FileGeneralOpensWith(hwndDlg, pwszExt); + if (!PathIsExeW(pwszPath)) + SH_FileGeneralOpensWith(hwndDlg, PathFindExtensionW(pwszPath)); /* set file time create/modfied/accessed */ - SH_FileGeneralSetFileSizeTime(hwndDlg, pwszPath, NULL); + SH_FileGeneralSetFileSizeTime(hwndDlg, pwszPath); return TRUE; } @@ -800,32 +776,24 @@ SH_ShowPropertiesDialog(LPCWSTR pwszPath, LPCITEMIDLIST pidlFolder, LPCITEMIDLIS WCHAR wszPath[MAX_PATH]; StringCbCopyW(wszPath, sizeof(wszPath), pwszPath); - // - // get length - // - INT cchPath = wcslen(wszPath); - if (cchPath > 3 && wszPath[cchPath-1] == L'\\') - { - // - // remove trailing \\ at the end of path - // - wszPath[cchPath-1] = L'\0'; - } + /* remove trailing \\ at the end of path */ + PathRemoveBackslashW(wszPath); + /* Handle drives */ if (PathIsRootW(wszPath)) return SH_ShowDriveProperties(wszPath, pidlFolder, apidl); + /* Handle folders */ if (PathIsDirectoryW(wszPath)) return SH_ShowFolderProperties(wszPath, pidlFolder, apidl); - LPCWSTR pwszFilename = PathFindFileNameW(wszPath); - + /* Handle files */ PROPSHEETHEADERW Info; memset(&Info, 0x0, sizeof(PROPSHEETHEADERW)); Info.dwSize = sizeof(PROPSHEETHEADERW); Info.dwFlags = PSH_NOCONTEXTHELP | PSH_PROPTITLE; Info.phpage = hppages; - Info.pszCaption = pwszFilename; + Info.pszCaption = PathFindFileNameW(wszPath); hppages[Info.nPages] = SH_CreatePropertySheetPage("SHELL_FILE_GENERAL_DLG", diff --git a/reactos/dll/win32/shell32/lang/bg-BG.rc b/reactos/dll/win32/shell32/lang/bg-BG.rc index 48ed989da38..d5a5dac552d 100644 --- a/reactos/dll/win32/shell32/lang/bg-BG.rc +++ b/reactos/dll/win32/shell32/lang/bg-BG.rc @@ -771,6 +771,7 @@ BEGIN IDS_FILE_TYPES "FileTypes" IDS_COLUMN_EXTENSION "Extensions" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/ca-ES.rc b/reactos/dll/win32/shell32/lang/ca-ES.rc index 6640bae56c3..31985517dcb 100644 --- a/reactos/dll/win32/shell32/lang/ca-ES.rc +++ b/reactos/dll/win32/shell32/lang/ca-ES.rc @@ -770,4 +770,5 @@ BEGIN IDS_FILE_TYPES "FileTypes" IDS_COLUMN_EXTENSION "Extensions" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/cs-CZ.rc b/reactos/dll/win32/shell32/lang/cs-CZ.rc index 8bcbcc5554a..dae7aa02608 100644 --- a/reactos/dll/win32/shell32/lang/cs-CZ.rc +++ b/reactos/dll/win32/shell32/lang/cs-CZ.rc @@ -758,4 +758,5 @@ BEGIN IDS_FILE_TYPES "FileTypes" IDS_COLUMN_EXTENSION "Extensions" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/da-DK.rc b/reactos/dll/win32/shell32/lang/da-DK.rc index 243f1a642d7..9c3a1af6825 100644 --- a/reactos/dll/win32/shell32/lang/da-DK.rc +++ b/reactos/dll/win32/shell32/lang/da-DK.rc @@ -759,4 +759,5 @@ BEGIN IDS_FILE_TYPES "FileTypes" IDS_COLUMN_EXTENSION "Extensions" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/de-DE.rc b/reactos/dll/win32/shell32/lang/de-DE.rc index 1efb73e9cdc..c41f733fdb7 100644 --- a/reactos/dll/win32/shell32/lang/de-DE.rc +++ b/reactos/dll/win32/shell32/lang/de-DE.rc @@ -775,4 +775,5 @@ BEGIN IDS_FILE_TYPES "Dateitypen" IDS_COLUMN_EXTENSION "Erweiterungen" IDS_BYTES_FORMAT "Bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/el-GR.rc b/reactos/dll/win32/shell32/lang/el-GR.rc index c59eca5fe82..49a27ad0241 100644 --- a/reactos/dll/win32/shell32/lang/el-GR.rc +++ b/reactos/dll/win32/shell32/lang/el-GR.rc @@ -771,4 +771,5 @@ BEGIN IDS_FILE_TYPES "FileTypes" IDS_COLUMN_EXTENSION "Extensions" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/en-GB.rc b/reactos/dll/win32/shell32/lang/en-GB.rc index 324afac92b8..ae4360559a8 100644 --- a/reactos/dll/win32/shell32/lang/en-GB.rc +++ b/reactos/dll/win32/shell32/lang/en-GB.rc @@ -770,4 +770,5 @@ BEGIN IDS_FILE_TYPES "FileTypes" IDS_COLUMN_EXTENSION "Extensions" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/en-US.rc b/reactos/dll/win32/shell32/lang/en-US.rc index 397718dc2cd..9f24ef9dd1b 100644 --- a/reactos/dll/win32/shell32/lang/en-US.rc +++ b/reactos/dll/win32/shell32/lang/en-US.rc @@ -780,4 +780,5 @@ BEGIN IDS_FILE_TYPES "FileTypes" IDS_COLUMN_EXTENSION "Extensions" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/es-ES.rc b/reactos/dll/win32/shell32/lang/es-ES.rc index d0453cc2ac0..ba7a457f78a 100644 --- a/reactos/dll/win32/shell32/lang/es-ES.rc +++ b/reactos/dll/win32/shell32/lang/es-ES.rc @@ -783,4 +783,5 @@ BEGIN IDS_FILE_TYPES "Tipos de archivos" IDS_COLUMN_EXTENSION "Extensiones" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/fi-FI.rc b/reactos/dll/win32/shell32/lang/fi-FI.rc index 281fe5c77bc..c6d27de410e 100644 --- a/reactos/dll/win32/shell32/lang/fi-FI.rc +++ b/reactos/dll/win32/shell32/lang/fi-FI.rc @@ -770,4 +770,5 @@ BEGIN IDS_FILE_TYPES "FileTypes" IDS_COLUMN_EXTENSION "Extensions" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/fr-FR.rc b/reactos/dll/win32/shell32/lang/fr-FR.rc index eeb411f5876..07bc988f915 100644 --- a/reactos/dll/win32/shell32/lang/fr-FR.rc +++ b/reactos/dll/win32/shell32/lang/fr-FR.rc @@ -774,4 +774,5 @@ BEGIN IDS_FILE_TYPES "FileTypes" IDS_COLUMN_EXTENSION "Extensions" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/hu-HU.rc b/reactos/dll/win32/shell32/lang/hu-HU.rc index e0c726d56d9..6306caa61eb 100644 --- a/reactos/dll/win32/shell32/lang/hu-HU.rc +++ b/reactos/dll/win32/shell32/lang/hu-HU.rc @@ -773,4 +773,5 @@ BEGIN IDS_FILE_TYPES "FileTypes" IDS_COLUMN_EXTENSION "Extensions" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/it-IT.rc b/reactos/dll/win32/shell32/lang/it-IT.rc index e016cb53f85..e14d1a75300 100644 --- a/reactos/dll/win32/shell32/lang/it-IT.rc +++ b/reactos/dll/win32/shell32/lang/it-IT.rc @@ -781,4 +781,5 @@ BEGIN IDS_FILE_TYPES "Tipi di file" IDS_COLUMN_EXTENSION "Estensioni" IDS_BYTES_FORMAT "byte" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/ja-JP.rc b/reactos/dll/win32/shell32/lang/ja-JP.rc index 9a1a656288e..a6114b2bb4b 100644 --- a/reactos/dll/win32/shell32/lang/ja-JP.rc +++ b/reactos/dll/win32/shell32/lang/ja-JP.rc @@ -770,4 +770,5 @@ BEGIN IDS_FILE_TYPES "FileTypes" IDS_COLUMN_EXTENSION "Extensions" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/ko-KR.rc b/reactos/dll/win32/shell32/lang/ko-KR.rc index 1dbd3c20787..740f418e0cc 100644 --- a/reactos/dll/win32/shell32/lang/ko-KR.rc +++ b/reactos/dll/win32/shell32/lang/ko-KR.rc @@ -770,4 +770,5 @@ BEGIN IDS_FILE_TYPES "FileTypes" IDS_COLUMN_EXTENSION "Extensions" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/nl-NL.rc b/reactos/dll/win32/shell32/lang/nl-NL.rc index c62ae821877..e209771d8eb 100644 --- a/reactos/dll/win32/shell32/lang/nl-NL.rc +++ b/reactos/dll/win32/shell32/lang/nl-NL.rc @@ -770,4 +770,5 @@ BEGIN IDS_FILE_TYPES "FileTypes" IDS_COLUMN_EXTENSION "Extensions" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/no-NO.rc b/reactos/dll/win32/shell32/lang/no-NO.rc index 8bfc19b53bd..cdaea8ad0a6 100644 --- a/reactos/dll/win32/shell32/lang/no-NO.rc +++ b/reactos/dll/win32/shell32/lang/no-NO.rc @@ -773,4 +773,5 @@ BEGIN IDS_FILE_TYPES "FileTypes" IDS_COLUMN_EXTENSION "Extensions" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/pl-PL.rc b/reactos/dll/win32/shell32/lang/pl-PL.rc index 865f2a27175..750d6dcc3c7 100644 --- a/reactos/dll/win32/shell32/lang/pl-PL.rc +++ b/reactos/dll/win32/shell32/lang/pl-PL.rc @@ -778,4 +778,5 @@ BEGIN IDS_FILE_TYPES "Typy plików" IDS_COLUMN_EXTENSION "Rozszerzenia" IDS_BYTES_FORMAT "bajtów" + IDS_UNKNOWN_APP "Nieznana aplikacja" END diff --git a/reactos/dll/win32/shell32/lang/pt-BR.rc b/reactos/dll/win32/shell32/lang/pt-BR.rc index 3ccb93eae1a..cf001942b99 100644 --- a/reactos/dll/win32/shell32/lang/pt-BR.rc +++ b/reactos/dll/win32/shell32/lang/pt-BR.rc @@ -772,4 +772,5 @@ BEGIN IDS_FILE_TYPES "FileTypes" IDS_COLUMN_EXTENSION "Extensions" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/pt-PT.rc b/reactos/dll/win32/shell32/lang/pt-PT.rc index 03e19804769..f7ad414401e 100644 --- a/reactos/dll/win32/shell32/lang/pt-PT.rc +++ b/reactos/dll/win32/shell32/lang/pt-PT.rc @@ -773,4 +773,5 @@ BEGIN IDS_FILE_TYPES "FileTypes" IDS_COLUMN_EXTENSION "Extensions" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/ro-RO.rc b/reactos/dll/win32/shell32/lang/ro-RO.rc index 2f935b50ba3..9ecc3762ac1 100644 --- a/reactos/dll/win32/shell32/lang/ro-RO.rc +++ b/reactos/dll/win32/shell32/lang/ro-RO.rc @@ -789,5 +789,6 @@ BEGIN IDS_FILE_TYPES "Tipuri" IDS_COLUMN_EXTENSION "Extensii" IDS_BYTES_FORMAT "octeți" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/ru-RU.rc b/reactos/dll/win32/shell32/lang/ru-RU.rc index 51bc428d760..562abb6014b 100644 --- a/reactos/dll/win32/shell32/lang/ru-RU.rc +++ b/reactos/dll/win32/shell32/lang/ru-RU.rc @@ -768,4 +768,5 @@ BEGIN IDS_FILE_TYPES "Типы файлов" IDS_COLUMN_EXTENSION "Расширения" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/sk-SK.rc b/reactos/dll/win32/shell32/lang/sk-SK.rc index f0baf5abf19..369aa719885 100644 --- a/reactos/dll/win32/shell32/lang/sk-SK.rc +++ b/reactos/dll/win32/shell32/lang/sk-SK.rc @@ -778,4 +778,5 @@ BEGIN IDS_FILE_TYPES "FileTypes" IDS_COLUMN_EXTENSION "Extensions" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/sl-SI.rc b/reactos/dll/win32/shell32/lang/sl-SI.rc index df52f6f1131..a90bc24cd1f 100644 --- a/reactos/dll/win32/shell32/lang/sl-SI.rc +++ b/reactos/dll/win32/shell32/lang/sl-SI.rc @@ -770,4 +770,5 @@ BEGIN IDS_FILE_TYPES "FileTypes" IDS_COLUMN_EXTENSION "Extensions" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/sv-SE.rc b/reactos/dll/win32/shell32/lang/sv-SE.rc index 30c4653b9c5..307874d00f4 100644 --- a/reactos/dll/win32/shell32/lang/sv-SE.rc +++ b/reactos/dll/win32/shell32/lang/sv-SE.rc @@ -770,4 +770,5 @@ BEGIN IDS_FILE_TYPES "FileTypes" IDS_COLUMN_EXTENSION "Extensions" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/tr-TR.rc b/reactos/dll/win32/shell32/lang/tr-TR.rc index cc93e9bd3ab..a44ee95e649 100644 --- a/reactos/dll/win32/shell32/lang/tr-TR.rc +++ b/reactos/dll/win32/shell32/lang/tr-TR.rc @@ -770,4 +770,5 @@ BEGIN IDS_FILE_TYPES "FileTypes" IDS_COLUMN_EXTENSION "Extensions" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/uk-UA.rc b/reactos/dll/win32/shell32/lang/uk-UA.rc index af740e57958..c0727683f99 100644 --- a/reactos/dll/win32/shell32/lang/uk-UA.rc +++ b/reactos/dll/win32/shell32/lang/uk-UA.rc @@ -783,4 +783,5 @@ BEGIN IDS_FILE_TYPES "Типи Файлів" IDS_COLUMN_EXTENSION "Розширення" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/zh-CN.rc b/reactos/dll/win32/shell32/lang/zh-CN.rc index b10ffbf7ac2..b55e55b6dbd 100644 --- a/reactos/dll/win32/shell32/lang/zh-CN.rc +++ b/reactos/dll/win32/shell32/lang/zh-CN.rc @@ -758,5 +758,6 @@ BEGIN IDS_FILE_TYPES "FileTypes" IDS_COLUMN_EXTENSION "Extensions" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/lang/zh-TW.rc b/reactos/dll/win32/shell32/lang/zh-TW.rc index 0883a37af25..8896c5c8e22 100644 --- a/reactos/dll/win32/shell32/lang/zh-TW.rc +++ b/reactos/dll/win32/shell32/lang/zh-TW.rc @@ -770,5 +770,6 @@ BEGIN IDS_FILE_TYPES "FileTypes" IDS_COLUMN_EXTENSION "Extensions" IDS_BYTES_FORMAT "bytes" + IDS_UNKNOWN_APP "Unknown application" END diff --git a/reactos/dll/win32/shell32/newmenu.cpp b/reactos/dll/win32/shell32/newmenu.cpp index 1135b211bb4..d7fee8c601b 100644 --- a/reactos/dll/win32/shell32/newmenu.cpp +++ b/reactos/dll/win32/shell32/newmenu.cpp @@ -135,7 +135,7 @@ CNewMenu::SHELLNEW_ITEM *CNewMenu::LoadItem(LPCWSTR pwszExt) { /* Note: We are using ANSI function because strings can be treated as data */ cbData = 0; - DWORD dwFlags = Types[i].bStr ? RRF_RT_REG_SZ|RRF_RT_REG_EXPAND_SZ : RRF_RT_ANY; + DWORD dwFlags = Types[i].bStr ? RRF_RT_REG_SZ : RRF_RT_ANY; if (RegGetValueA(hKey, NULL, Types[i].pszName, dwFlags, NULL, NULL, &cbData) == ERROR_SUCCESS) { if (Types[i].bNeedData && cbData > 0) diff --git a/reactos/dll/win32/shell32/openwithmenu.cpp b/reactos/dll/win32/shell32/openwithmenu.cpp index f367dab8377..ac4ba1d1ecb 100644 --- a/reactos/dll/win32/shell32/openwithmenu.cpp +++ b/reactos/dll/win32/shell32/openwithmenu.cpp @@ -29,6 +29,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell); // "NoInternetOpenWith"=dword:00000001 // +BOOL PathIsExeW(LPCWSTR lpszPath); + class COpenWithList { public: @@ -1350,9 +1352,7 @@ COpenWithMenu::Initialize(LPCITEMIDLIST pidlFolder, TRACE("szPath %s\n", debugstr_w(m_wszPath)); pwszExt = PathFindExtensionW(m_wszPath); - if (!_wcsicmp(pwszExt, L".exe") || !_wcsicmp(pwszExt, L".com") || - !_wcsicmp(pwszExt, L".scr") || !_wcsicmp(pwszExt, L".bat") || - !_wcsicmp(pwszExt, L".cmd") || !_wcsicmp(pwszExt, L".lnk")) + if (PathIsExeW(pwszExt) || !_wcsicmp(pwszExt, L".lnk")) { TRACE("file is a executable or shortcut\n"); return E_FAIL; diff --git a/reactos/dll/win32/shell32/shellpath.cpp b/reactos/dll/win32/shell32/shellpath.cpp index 000c7863cb9..af2bd14c153 100644 --- a/reactos/dll/win32/shell32/shellpath.cpp +++ b/reactos/dll/win32/shell32/shellpath.cpp @@ -177,7 +177,7 @@ static BOOL PathIsExeA (LPCSTR lpszPath) /************************************************************************* * PathIsExeW [internal] */ -static BOOL PathIsExeW (LPCWSTR lpszPath) +BOOL PathIsExeW (LPCWSTR lpszPath) { LPCWSTR lpszExtension = PathGetExtensionW(lpszPath); int i; diff --git a/reactos/dll/win32/shell32/shresdef.h b/reactos/dll/win32/shell32/shresdef.h index 349f4340010..b9036c58987 100644 --- a/reactos/dll/win32/shell32/shresdef.h +++ b/reactos/dll/win32/shell32/shresdef.h @@ -145,6 +145,8 @@ #define IDS_RUNDLG_BROWSE_CAPTION 182 #define IDS_RUNDLG_BROWSE_FILTER 183 +#define IDS_UNKNOWN_APP 190 + #define IDS_OPEN_VERB 300 #define IDS_EXPLORE_VERB 301 #define IDS_RUNAS_VERB 302