diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 000000000..dbe5f8b8f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,61 @@ +name: Bug report +description: Create a report to help us improve +labels: Bug + +body: +- type: markdown + attributes: + value: | + **Please, make sure you are using [latest](https://github.com/Open-Shell/Open-Shell-Menu/releases) `Open-Shell` build before reporting a bug.** + Especially on `Windows 11` you should use 4.4.190 (or newer). +- type: textarea + attributes: + label: Describe the bug + description: A clear and concise description of what the bug is. Screenshots are also encouraged. + placeholder: Please use English for reports and screenshots to allow maintainers to easily understand the issue. + validations: + required: true +- type: dropdown + attributes: + label: Area of issue + description: What component(s) of Open-Shell does this involve? Select all that apply. + multiple: true + options: + - Start menu + - Taskbar + - Windows Explorer + - Internet Explorer + - Installation/Other + validations: + required: true +- type: textarea + attributes: + label: To reproduce + description: Steps to reproduce the behavior + placeholder: | + 1. Go to '...' + 2. Click on '....' + 3. Scroll down to '....' + 4. See error + validations: + required: true +- type: textarea + attributes: + label: Expected behavior + placeholder: What did you expect to happen? +- type: input + attributes: + label: Open-Shell version + placeholder: e.g. 4.4.170 + validations: + required: true +- type: input + attributes: + label: Windows version + placeholder: e.g. Windows 10 22H2 + validations: + required: true +- type: textarea + attributes: + label: Additional context + description: Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000..4534f67c6 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: Github Discussions + url: https://github.com/Open-Shell/Open-Shell-Menu/discussions + about: Please ask and answer questions here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 000000000..a1f4b338c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,39 @@ +name: Feature request +description: Suggest an idea for this project +labels: Enhancement/Feature Request + +body: +- type: textarea + attributes: + label: Is your feature request related to a problem? Please describe. + description: A clear and concise description of what the problem is. + placeholder: Ex. I'm always frustrated when [...] + validations: + required: true +- type: textarea + attributes: + label: Describe the solution you'd like + description: A clear and concise description of what you want to happen. + validations: + required: true +- type: dropdown + attributes: + label: Area of issue + description: What component(s) of Open-Shell does this involve? Select all that apply. + multiple: true + options: + - Start menu + - Taskbar + - Windows Explorer + - Internet Explorer + - Installation/Other + validations: + required: true +- type: textarea + attributes: + label: Alternatives you've considered + description: A clear and concise description of any alternative solutions or features you've considered. +- type: textarea + attributes: + label: Additional context + description: Add any other context or screenshots about the feature request here. diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..f6b1819bc --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,94 @@ +name: Build + +permissions: + contents: read # Default to secure + +on: + pull_request: + branches: + - master + paths: + - 'Src/**' + - 'Localization/**' + - '.github/workflows/build.yml' + + workflow_dispatch: # allows manual trigger for main/master + +jobs: + build: + runs-on: windows-2022 + outputs: + new_version: ${{ steps.versioning.outputs.NEW_VERSION }} + steps: + - name: Checkout code + uses: actions/checkout@v6 + with: + fetch-depth: 0 # Essential to see all tags + + - name: Prepare version + id: versioning + shell: pwsh + run: | + # Fetch latest tag + $latestTag = git describe --tags --abbrev=0 2>$null + + if ($latestTag -notmatch '^v\d+\.\d+\.\d+$') { + Write-Error "Error: Could not find a valid vX.Y.Z tag in history. Found: '$latestTag'" + exit 1 + } + + # Parse and Increment + $version = [version]$latestTag.Substring(1) + $baseVersion = "$($version.Major).$($version.Minor).$($version.Build + 1)" + + # Handle PR Suffix + if ("${{ github.event_name }}" -eq "pull_request") { + $shortSha = "${{ github.event.pull_request.head.sha }}".Substring(0, 7) + $finalVersion = "$baseVersion-pr-$shortSha" + } else { + $finalVersion = $baseVersion + } + + # Export + "NEW_VERSION=$finalVersion" | Out-File -FilePath $env:GITHUB_OUTPUT -Append + Write-Host "Building version: $finalVersion" + + - name: Build + shell: cmd + env: + APPVEYOR_BUILD_VERSION: ${{ steps.versioning.outputs.NEW_VERSION }} + run: Src\Setup\__MakeFinal.bat + + - name: Upload artifacts + uses: actions/upload-artifact@v7 + with: + name: OpenShell + path: | + Src/Setup/Final/ + !Src/Setup/Final/OpenShellLoc.zip + + release: + if: github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/master' # Only manual master builds + needs: build + runs-on: ubuntu-latest # Cheaper/faster than windows for just uploading + permissions: + contents: write # Elevate permissions ONLY for this job + steps: + - name: Download artifacts + uses: actions/download-artifact@v8 + with: + name: OpenShell + + - name: Create GitHub Release + uses: softprops/action-gh-release@v3 + with: + tag_name: v${{ needs.build.outputs.new_version }} + name: ${{ needs.build.outputs.new_version }} + generate_release_notes: true + prerelease: true + files: | + OpenShellSetup*.exe + OpenShellSymbols_*.7z + Utility.exe + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index f3e3bbfc6..75591d3db 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,10 @@ ## ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore +# ignore vscode stuff +.vscode/ +.ionide/ + # User-specific files *.suo *.user @@ -16,12 +20,15 @@ # Build results [Dd]ebug/ [Dd]ebug64/ +[Dd]ebugARM64/ [Dd]ebugPublic/ [Rr]elease/ [Rr]elease64/ +[Rr]eleaseARM64/ [Rr]eleases/ x64/ x86/ +ARM64/ bld/ [Bb]in/ [Oo]bj/ @@ -64,6 +71,7 @@ StyleCopReport.xml *_i.c *_p.c *_i.h +*_h.h *.ilk *.meta *.obj @@ -344,7 +352,6 @@ ASALocalRun/ *.PVS-Studio.* # Classic-Shell specific ignores -Src/StartMenu/Skins/ Src/Setup/Output/ Src/Setup/Final/ Src/Setup/Temp/ diff --git a/Localization/English/ClassicExplorer.html b/Localization/English/ClassicExplorer.html deleted file mode 100644 index 3d0eb8a4a..000000000 --- a/Localization/English/ClassicExplorer.html +++ /dev/null @@ -1,437 +0,0 @@ - - - - - - Classic Explorer - -

Open-Shell website  Classic Explorer


-Classic -Explorer is a plugin for Windows Explorer that: - -
- - -

New copy UI (Windows 7 only)
-

- -In Vista when you copy files and there is a conflict you are presented -with this:
- -
- -Before
- -

What’s wrong with it?

- -

Well, for -starters it is half a screen full of text that you have to read. Also -it is not immediately clear what parts of it are clickable. You have to -move the mouse around to discover the UI like in a Lucas Arts -adventure game. And finally the keyboard usability is awful. To -tell it -“yes, I know what I’m doing, I want to overwrite all files” you have to -press Alt+D, up, up, up, Space! It is harder than performing the Akuma -Kara Demon move in Street Fighter 3. There is a time and a place -for -that stuff and copying files is not it.

- -

The Classic Explorer plugin brings back the simpler dialog box from Windows XP:
-

- -

After
-

- -

It -is immediately clear what is clickable (clue – the buttons at the -bottom), there is easy keyboard navigation (press Y for “Yes”, A to -copy all files) and you can still see which file is newer and which is -larger. And of course just like in Windows XP, holding down Shift while clicking on the No button means "No to All" (or just press Shift+N).
-

- -

If you click -on More… you will get -the original dialog from Windows. From there you -will see all the details and you’ll get an extra option to “Copy, but -keep both files”.

-

Important Note: Only the UI is replaced. The underlying system that does the actual copying is not affected.
-

-


-

- - - -

Alt+Enter in the folder panel

- -Alt+Enter is -universal shortcut across Windows to bring up the properties of the -selection. But newer versions of Windows it doesn’t work in the left -panel that shows the folders. It works fine on the right where the -files are. This is broken compared to Windows XP where Alt+Enter works -in both places. -

To solve the -problem, the Classic Explorer plugin detects when you press Alt+Enter -and shows the properties for the currently selected folder.
-

-


-

- - -

Toolbar for Windows Explorer

-Windows -Explorer in Vista doesn’t have a toolbar like the one in Windows XP. If -you want to go to the parent folder you have to use the breadcrumbs -bar. If you want to copy or delete a file with the mouse you have to -right-click and look for the Delete command. The right-click menu gets -bigger and bigger the more shell extensions you have installed, and -finding the right command can take a while.
-

To solve the problem, the Classic Explorer plugin adds a new toolbar:
-

- - Explorer Toolbar
-
-The available button are: Go Up, Cut, Copy, Paste, Delete, Properties, -Email, Settings. More buttons can be added from the Settings dialog.
-
-Hints:
-    - Hold the Control key when clicking the Up button to open the parent folder in a new Explorer window.
-    - Hold the Shift key when clicking the Delete button to permanently delete a file
- -
- -The new toolbar doesn’t show up in Explorer automatically after -installation. You have to do a few things before you can use it:
- -
    - -
  1. Open a new Windows Explorer window (Win key+E)
  2. -
  3. Turn on the menu in Explorer – Go to Tools (Alt+T), Folder -Options, the View tab, and make sure “Always show menus” is checked.
  4. -
  5. Right click on the menu bar and select “Classic Explorer Bar” to -show the toolbar.
  6. -
  7. If that option is not available (you only see “Lock the -Toolbars”) you may have to enable the plugin from Internet Explorer. -Run IE, right click on its toolbar and select “Classic Explorer Bar”. -It will ask you if you want to enable this add-on. Select “Enable”, -then repeat steps 1 through 3 again.
  8. -
  9. If even then you don't see the toolbar, maybe the browser -extensions are disabled on your system. This is usually the default for -servers. Open the "Internet Options", go to the "Advanced" tab, and check -the option "Enable third-party browser extensions".
    -
  10. - -

-

Status bar
-

-Classic Explorer restores the original Explorer status bar that shows the free disk space and the size of the selected files:
-
-File size in status bar
-
-Unlike the built-in status bar, the selection size is shown even if -more than 100 files are selected. When no files are selected the total -size of all files in the folder is shown.
-
Windows 7 note: Classic Explorer enhances the -default status bar instead of replacing it. To see it, you have to turn -it on first from the View menu. -The status bar is different from the blue -Details Pane you see at the bottom of Explorer. You can turn off the -Details Pane from the Organize menu to save space. Also there is a bug -in the Windows 7 Explorer that sometimes doesn't show any text in the -status bar. Press F5 to refresh the view and get the status text.
-
Windows 8 note: Classic Explorer adds its own -status bar. You should hide the default status bar to save space. -Select the View tab in the ribbon, then click on Options. Select the -View tab in the options. Locate the checkbox "Show status bar" and -uncheck it. -
-
- - -

Settings

You can access the settings of Classic Explorer from the toolbar or from the start menu:
-
-
You can choose from seeing only the basic settings, or all -available settings. Hover over each setting to see a description of -what it's for. Type in the search box to find a setting by name.
-Every setting has a default value. The default value can be constant, -or it may depend on the current system settings. Once you edit a -setting it becomes "modified" and is shown in bold. To revert to the -default value, right-click on the setting.
-
You can save the settings to an XML file, and later load them back. -Press the Backup button to access these functions. From there you can -also reset all settings to their default value.
- -
- -Press OK to store your settings. Most of the settings will be applied -the next time you open a new Explorer window. Small number of settings -will require a log off before you can see the change.
- -
- -Note: All Settings windows are resizable. Resize them and place them where you want them to be. They will remember the new position.
- -
-Here's one example of what can be customized:
- - Title bar tweaks
-
-Click on the Toolbar Buttons tab to customize the toolbar:
-
-
The column on the left shows the current buttons in the toolbar, -and the column on the right lists the buttons you can add to the -toolbar. You can drag and drop buttons from the right column to the -left. You -can rearrange the buttons by dragging them up and down. If you drop one button inside another you will create a sub-menu.
-Hover over each -button to see a short description of what it does. Right-click on each -button to access more functions (like Delete, Rename, etc). From the -right-click menu you can also reset the toolbar to the original state.
-Each item in the left column must have a unique name. This is the -identifier of the item and can only contain English letters, digits and -underscore. Some items (like SEPARATOR) cannot be renamed.
-
-Important Note: Not all available commands have default icons or text. That's because Windows doesn't have icons for things like Undo, Select All, etc. If you want to use such buttons in your toolbar you will have to provide your own icon. See below how to do it.
-
-After you place a button in the toolbar, you can edit it's attributes. Double-click on the button to edit:
-Edit toolbar button
-Here you can select a command for the button, its text and icon. Press the Restore Defaults button to get the default text and icon for the chosen command.
-The command can be:
- -The link can be a path to a file or a folder. If it is a file, that -file will be executed. If it is a folder, that folder will be opened as -a sub-menu (only for top-level buttons).
-
-The icon can be:
- -If the label or the tip attribute start with $ (dollar sign), then the -system will treat it as a name of a string in the ExplorerL10N.ini -file. The actual text will depend on the current language setting. This -is useful when creating a toolbar that can be used by multiple languages.
-
-Note to developers: Buttons for custom commands can be checked or disabled. The toolbar checks the registry key HKCU\Software\OpenShell\ClassicExplorer -for a DWORD value with the name of the button (the name used in left -column). 0 means normal, 1 is disabled and 2 is checked. The toolbar -reads the registry keys on startup. To force the buttons to update -their state after that you need to find all Explorer windows, locate -the child window with class OpenShell.CBandWindow, and post a message WM_CLEAR. This is useful if you are developing a custom exe to be used by the toolbar.
- -
-

Examples for Custom Commands

-

0) Use quotes when necessary

In order to support paths that -contain spaces, you should use quotes around the path parameters. The -quotes are not always required, like in examples 1 and 2 below. Make -sure you test your commands with paths containing spaces to avoid -surprises.
-
-

1) Print the current folder

- -Use this command: cmd.exe /k echo %1. %1 will be replaced by the path of the current folder.
-
-

2) Open the selected file in Notepad

-Use this command: %SystemRoot%\notepad.exe %2. -%2 will be replaced by the full name of the selected file. It doesn't -need to be in quotes because Notepad uses the whole command line as a -file name.
-
-

3) Copy selected files to the parent folder
-

-Create a batch file called C:\CopyParent.bat:
-set list=%1
-set list=%list:"=%
-for /F "delims=" %%i in (%list%) do copy /Y "%%i" ..
-del %1
-
-Use this command: C:\CopyParent.bat "%3". -%3 will be replaced by a text file containing the full names of all -selected files. The batch file will read each line of that text file, -and copy each of the selected files to the parent folder. At the end -the batch file deletes the initial -temp file. The first two set commands remove the quotes from the %1 parameter.
-
-

4) Select all text files

-Create a batch file called C:\SelectText.bat:
-echo select > %1
-dir *.txt /b >> %1
-
-Use this command: C:\SelectText.bat "%5". -%5 will be replaced by a blank text file, where the command must output -the word "select" and a list of files it wants to select. The "dir -*.txt /b" command provides that list.
-
-
- -

Administrative Settings

The settings are -per user and are stored in the registry. By default every user can edit -all of their settings. An administrator can lock specific settings, so -no user can edit them:
-
-In this example the setting "Show Up button" is locked to always be -"Before Back/Forward" and can't be changed by any user. This is achieved -by adding the setting to the HKEY_LOCAL_MACHINE\SOFTWARE\OpenShell\ClassicExplorer registry key. Create a string value called "ShowUpButton" and set it to "BeforeBack".
-
In some cases you may not want to lock the value for all users, but -simply modify the initial value of the setting. In such case add -"_Default" to the name of the value. For example if you want the Up -button to be before Back by default but still allow the users to change -it if they wish, create a string value named "ShowUpButton_Default" and -set it to "BeforeBack".
-
-The easiest way to know the registry name of a setting and its value is to modify it, and then look it up in HKEY_CURRENT_USER\Software\OpenShell\ClassicExplorer\Settings.
-Sometimes you may want to lock a setting to its default value, but you -don't know what the default value is. Then create a DWORD value and set -it to 0xDEFA.
-
-There is also a global setting EnableSettings. Set it to 0 in the -registry to prevent the users from even opening the Settings dialog:
-Disable all settings
-
-You can enable or disable Classic Explorer for individual processes -using the 2 registry settings "ProcessWhiteList" and -"ProcessBlackList". ProcessWhiteList is -a list of processes for which Classic Explorer will load. Use only the -file name of the process (like "notepad.exe"), separate multiple names -with a comma or a semicolon. ProcessBlackList -is a list of processes for which Classic Explorer will not load. You -should only use one of the two lists. If both lists are specified, the -black list will be ignored. The lists are only used when you enable the -features that are supported for processes other than Explorer. At the -moment these features are: the shared overlay icon and the replacements -for the copy dialogs.
-
-Editing the settings through group policies is also supported. Extract the file PolicyDefinitions.zip found in the installation folder and read the document PolicyDefinitions.rtf for more details.
-
- -
- -

Dependencies on Windows settings
-

-Some Classic Explorer settings require specific Windows settings to be enabled:
- - -
- -

Localization

- - - - -The user -interface (except the Settings dialog box) is localized in 35 -languages.
-The Settings dialog box is translated in a smaller number of languages. -The default installation contains only English. More languages can be -downloaded from the translations page. Make sure you download the translation package for the exact version of Open-Shell.
- -
- - diff --git a/Localization/English/ClassicExplorerADMX.txt b/Localization/English/ClassicExplorerADMX.txt deleted file mode 100644 index b29018349..000000000 --- a/Localization/English/ClassicExplorerADMX.txt +++ /dev/null @@ -1,62 +0,0 @@ -; DON'T TRANSLATE ============================================================= - -; disabled -LogLevel.supportedOn = never -ShowFreeSpace2.supportedOn = never -ShowInfoTip2.supportedOn = never - -; os-specific -ReplaceFileUI.supportedOn = win7 -ReplaceFolderUI.supportedOn = win7 -OverwriteAlertLevel.supportedOn = win7 -EnableMore.supportedOn = win7 -MoreProgressDelay.supportedOn = win7 -FileExplorer.supportedOn = win7 -ShowUpButton.supportedOn = win7 -UpIconNormal.supportedOn = win7 -UpIconPressed.supportedOn = win7 -UpIconHot.supportedOn = win7 -UpIconDisabled.supportedOn = win7 -UpIconSize.supportedOn = win7 -FixFolderScroll.supportedOn = win7 -ForceRefreshWin7.supportedOn = win7 -ShowCaption.supportedOn = win7 -ShowIcon.supportedOn = win7 -ShowStatusBar.supportedOn = win881 -ShowZone.supportedOn = win881 - - - -; TRANSLATE =================================================================== - -Title.text = Open-Shell settings -State.text = State: -State1.text = Locked to this value -State2.text = Locked to default -State3.text = Unlocked -State1Help.text = If you set the state to 'Locked to this value', the setting will be locked to the specified value for all users. -State2Help.text = If you set the state to 'Locked to default', the setting will be locked to the default value for all users. The specified value is ignored. -State3Help.text = If you set the state to 'Unlocked', the default value for the setting will be changed to the specified value. Individual users can override the setting. - -ClassicExplorerCat.text = Classic Explorer -ClassicExplorerCatHelp.text = Classic Explorer group policy settings -SUPPORTED_CS404.text = Requires Open-Shell 4.0.4 or later. -SUPPORTED_CS404_WIN7.text = Requires Windows 7. -SUPPORTED_CS404_WIN881.text = Requires Windows 8 or Windows 8.1. - -AddressAltD.nameOverride = Additional shortcut for the address bar -AddressAltD.tipOverride = Enter a letter 'A' to 'Z' to be a shortcut for the address bar in combination with the Alt key -EnableSettings.nameOverride = Enable settings -EnableSettings.tipOverride = Enables the users to edit their own settings -ProcessWhiteList.nameOverride = Process white list -ProcessWhiteList.tipOverride = List of processes that can load Classic Explorer. Use only the file name of the process (like "notepad.exe"), separate multiple names with a comma or semicolon. -ProcessBlackList.nameOverride = Process black list -ProcessBlackList.tipOverride = List of processes that will not load Classic Explorer. Use only the file name of the process (like "notepad.exe"), separate multiple names with a comma or semicolon. -ToolbarItems.nameOverride = Toolbar buttons -ToolbarItems.tipOverride = Select the buttons to be shown in the toolbar.\nThe best way to get the right string is to configure the buttons in the Classic Explorer settings dialog and then look up the value named ToolbarItems in HKCU\Software\OpenShell\ClassicExplorer\Settings -NoInitialToolbar.nameOverride = No initial showing of the toolbar -NoInitialToolbar.tipOverride = When this is checked, the Explorer toolbar will not be automatically displayed - - -; os-specific -FileExplorer.nameOverride = Enable dialogs only in Explorer (improves performance) diff --git a/Localization/English/ClassicIE.html b/Localization/English/ClassicIE.html deleted file mode 100644 index c121d167d..000000000 --- a/Localization/English/ClassicIE.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - - - - - - - Classic IE - -

Open-Shell website  -Classic IE


-Classic IE
-is a -small plugin for Internet Explorer that:
- -
-See the full page title even when it doesn't fit in the tab:
-
-
See the progress and the security zone:
-
-
-

Installation

-When you run Internet Explorer for the first time after installing -Classic IE it may prompt you that a new add-on called ClassicIEBHO is -installed and if you want to enable it. Click on the Enable button. If -you don't get a prompt, go to Tools -> Manage add-ons and make sure ClassicIEBHO is enabled. After enabling the add-on you have to restart Internet Explorer to activate the plugin.
-
-

Settings

-You can access the settings from Tools -> Classic IE Settings -or from the start menu. The settings control the color and the font of -the caption, and what information to display on the status bar.
-
-
You can choose from seeing only the basic settings, or all -available settings. Hover over each setting to see a description of -what it's for. Type in the search box to find a setting by name.
-Every setting has a default value. The default value can be constant, -or it may depend on the current system settings. Once you edit a -setting it becomes "modified" and is shown in bold. To revert to the -default value, right-click on the setting.
- -
-You can save the settings to an XML file, and later load them back. -Press the Backup button to access these functions. From there you can -also reset all settings to their default value.
- - -
- - -Press OK to store your settings. You need to restart Internet Explorer to apply the new settings.
- - -
-

Administrative Settings

-The settings are -per user and are stored in the registry. By default every user can edit -all of their settings. An administrator can lock specific settings, so -no user can edit them. This is achieved by adding the setting to the HKEY_LOCAL_MACHINE\SOFTWARE\OpenShell\ClassicIE registry key.
-
-You may also wish to not lock the setting but only override its initial -value. Then add "_Default" to the name of the registry value.
-
-The easiest way to know the registry name of a setting and its value is to modify it, and then look it up in HKEY_CURRENT_USER\Software\OpenShell\ClassicIE\Settings.
- -Sometimes you may want to lock a setting to its default value, but you -don't know what the default value is. Then create a DWORD value and set -it to 0xDEFA.
- -
- -There is also a global setting EnableSettings. Set it to 0 in the -registry to prevent the users from even opening the Settings dialog:
- -
-
-Editing the settings through group policies is also supported. Extract the file PolicyDefinitions.zip found in the installation folder and read the document PolicyDefinitions.rtf for more details.
-
- diff --git a/Localization/English/ClassicIEADMX.txt b/Localization/English/ClassicIEADMX.txt deleted file mode 100644 index 1d2662b0b..000000000 --- a/Localization/English/ClassicIEADMX.txt +++ /dev/null @@ -1,26 +0,0 @@ -; DON'T TRANSLATE ============================================================= - -LogLevel.supportedOn = never - - - -; TRANSLATE =================================================================== - -Title.text = Open-Shell settings -State.text = State: -State1.text = Locked to this value -State2.text = Locked to default -State3.text = Unlocked -State1Help.text = If you set the state to 'Locked to this value', the setting will be locked to the specified value for all users. -State2Help.text = If you set the state to 'Locked to default', the setting will be locked to the default value for all users. The specified value is ignored. -State3Help.text = If you set the state to 'Unlocked', the default value for the setting will be changed to the specified value. Individual users can override the setting. - -ClassicIECat.text = Classic IE -ClassicIECatHelp.text = Classic IE group policy settings -SUPPORTED_CS404.text = Requires Open-Shell 4.0.4 or later. -SUPPORTED_IE9.text = Requires Internet Explorer 9 or later. - - -EnableSettings.nameOverride = Enable settings -EnableSettings.tipOverride = Enables the users to edit their own settings -CaptionFont.tipAddition = .\n\nThe format is , , . For example "Segoe UI, normal, 9" diff --git a/Localization/English/License.html b/Localization/English/License.html deleted file mode 100644 index 68368e00e..000000000 --- a/Localization/English/License.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - License Agreement - -

Open-Shell website  License Agreement
-


- -Classic Shell 2009-2017, Ivo Beltchev http://www.classicshell.net/
- -Open-Shell 2017-2018, The Open-Shell Team https://github.com/open-shell
-
-BY USING THIS SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE.
-
-If you comply with these license terms, you have the rights below.
-
-
    -
  1. -

    SCOPE OF LICENSE. This agreement only gives you some rights to use the software. The author reserves all other rights.

    -
  2. -
  3. -

    INSTALLATION AND USE RIGHTS. This software is free for both personal and commercial use. You may install and use it on your computers free of charge.

    -
  4. -
  5. -

    REDISTRIBUTION RIGHTS. You may redistribute the software as long as you do it free of charge and you don’t misrepresent the origin of the software.

    -
  6. -
  7. -

    TRADEMARKS. The Open-Shell name and logo are trademarks of the author. Using them to to identify other products or services is not permitted.

    -
  8. -
  9. -

    DISCLAIMER OF WARRANTY. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

    -
  10. -
  11. -

    IN OTHER WORDS: -Basically you can use this software freely for any purpose but don’t be -surprised if it doesn’t work as you expect. You can’t hold the author -responsible for any damages that come to you from using the software. -You can’t profit from selling this software. You got it for free after -all.

    -
  12. -
- - - diff --git a/Localization/English/Links.html b/Localization/English/Links.html deleted file mode 100644 index 36f21b45c..000000000 --- a/Localization/English/Links.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - Open-Shell - -

Open-Shell website  Links


The latest version can be found on the Open-Shell website:
-http://www.classicshell.net/
-
-View the project history here:
-History: http://www.classicshell.net/history/
-
-
-

Get Help

-For answers to frequently asked questions look here:
-FAQ: http://www.classicshell.net/faq/
- -
-If you don't find your answer in the FAQ, try the discussion forums:
-Discussion Forums: http://www.classicshell.net/forum/viewforum.php?f=6
- -
-
-

Report Problems

-Report bugs and feature requests in the development forums:
-Development Forums: http://www.classicshell.net/forum/viewforum.php?f=11
- - diff --git a/Localization/English/Localization.rtf b/Localization/English/Localization.rtf deleted file mode 100644 index 5b573a82f..000000000 --- a/Localization/English/Localization.rtf +++ /dev/null @@ -1,108 +0,0 @@ -{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fprq2\fcharset0 Cambria;}{\f1\fswiss\fprq2\fcharset0 Arial;}{\f2\fnil\fcharset2 Symbol;}} -{\colortbl ;\red0\green0\blue255;} -{\*\listtable -{\list\listhybrid -{\listlevel\levelnfc23\leveljc0\levelstartat1{\leveltext\'01\'B7;}{\levelnumbers;}\f2\jclisttab\tx0} -{\listlevel\levelnfc23\leveljc0\levelstartat1{\leveltext\'01\'B7;}{\levelnumbers;}\f2\jclisttab\tx0}\listid1 }} -{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}} -{\stylesheet{ Normal;}{\s1 heading 1;}{\s2 heading 2;}} -{\*\generator Riched20 10.0.17134}{\*\mmathPr\mnaryLim0\mdispDef1\mwrapIndent1440 }\viewkind4\uc1 -\pard\keepn\widctlpar\s1\sb240\sa60\sl276\slmult1\kerning32\b\f0\fs32 Localization of Open-Shell\par - -\pard\nowidctlpar\kerning0\b0\f1\fs20\par -This file explains the localization system used by Open-Shell and how to translate Open-Shell in new languages.\par -\par - -\pard\keepn\widctlpar\s2\sb240\sa60\sl276\slmult1\b\i\f0\fs28 1. What can be localized\par - -\pard\nowidctlpar\b0\i0\f1\fs20\par -Open-Shell has 2 major systems for providing localized text.\par -\par -The first one is the L10N.ini files. There are 3 files \endash ExplorerL10N.ini, StartMenuL10N.ini and StartMenuHelperL10N.ini. They contain translations for the text in Explorer and the start menu that users will encounter during normal use. These files contain translations for all of the 35 supported languages. Each language is separated in its own section. You will generally not need to edit these files unless you find a typo. If you do, please send the correction to {{\field{\*\fldinst{HYPERLINK "mailto:classicshell@ibeltchev.com" }}{\fldrslt{\ul\cf1\cf1\ul classicshell@ibeltchev.com}}}}\f1\fs20 , so I can fix the typo in the next release.\par -\par -The second system is for localizing the settings UI and the system messages that Open-Shell displays. The translations are packaged into a resource DLL with the name of the language \endash en-US.dll, ja-JP.dll, etc. The DLL can contain:\par - -\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-360\li720 A string table with replacement strings\par -{\pntext\f2\'B7\tab}Dialog resources for the Settings UI\par -{\pntext\f2\'B7\tab}Overrides for text lines in the L10N.ini files\par - -\pard\nowidctlpar\par -The same DLL contains resources for all of the Open-Shell components \endash Classic Explorer, Open-Shell Menu, etc. Generally resources from 2000 to 3000 belong to Classic Explorer, from 3000 to 4000 belong to Open-Shell Menu, from 5000 to 6000 belong to Classic IE, 6000 to 7000 belong to the updater component and from 4000 to 5000 are shared by all components.\par -\par - -\pard\keepn\widctlpar\s2\sb240\sa60\sl276\slmult1\b\i\f0\fs28 2. What else can be localized (if you really want to)\par - -\pard\nowidctlpar\b0\i0\f1\fs20\par -Open-Shell is designed to mainly support localizations for the UI. Localizations for other areas, like the installer and the documentation will require more work.\par -\par -To translate the installer you need to translate the OpenShellText-en-US.wxl file. It contain the text for the installer. One benefit of translating the installer is that you can localize the names of the shortcuts in the Start menu. You also need to translate the OpenShellReadme.rtf file and OpenShellEULA.rtf if you want them to display in your language.\par -\par -To translate the help file you will need to translate the HTML files included in OpenShellLoc.zip. If you install the tool HTML Help Workshop from Microsoft, you will be able to also compile the CHM file and preview it yourself. Use the OpenShell.hhp help project file for that.\par -\par -To translate the group policies you will need to translate the files ClassicExplorerADMX.txt, ClassicIEADMX.txt, OpenShellADMX.txt and MenuADMX.txt. You may also translate the PolicyDefinitions.rtf file.\par -\par -When you are done, send all translations to me and I will prepare an installer for your language. \par -\par -\par - -\pard\keepn\widctlpar\s2\sb240\sa60\sl276\slmult1\b\i\f0\fs28 3. The DLL structure in detail\par - -\pard\nowidctlpar\b0\i0\f1\fs20\par -Look at the provided \b en-US.dll\b0 file. It contains all English resources that can be translated.\par -\b\i Note:\b0 Open-Shell doesn\rquote t need the en-US.dll file. The English text is already built-in. The purpose of the en-US.dll file is to serve as an example and starting point for other languages.\par -\i0\par -The localization DLL contains the following resources:\par -\par - -\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-360\li720 A version resource. It must match the version of Open-Shell it is intended to be used with. The reason is that the text often changes between versions, so translations from one version will not work with the next. You may also use the comments section to list your name as the author.\par - -\pard\nowidctlpar\li720\par - -\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-360\li720 A string table. Provides translations for the UI text in Open-Shell. Use the text from en-US.dll as a source. The string table doesn\rquote t need to include all strings. If a string is missing, it will stay in English.\line\par -{\pntext\f2\'B7\tab}A set of dialog resources. These are the dialog boxes that the Settings UI needs. You can replace the text in the dialogs with your own. You can also resize some of the dialog elements to make the text fit. Like with the strings, if a dialog is missing from the DLL, the English version will be used.\line\par -{\pntext\f2\'B7\tab}A L10N resource (its resource ID must be 1). This is a UTF-16 text file that contains replacement strings for the ini files. For example the ini files do not have the text \ldblquote Settings for Open-Shell Menu\rdblquote translated in all languages (since I don\rquote t know how to say it in all 35 languages). So the DLL can provide the translations for the current language. It is possible to replace even text that is already translated \endash for example if you want to fix a typo in the ini file, or to provide a better version of some text line.\line\par - -\pard\widctlpar\sa200\sl276\slmult1 You can edit a DLL using a resource editor like Visual Studio, Res Hacker, and many others.\par - -\pard\keepn\widctlpar\s2\sb240\sa60\sl276\slmult1\b\i\f0\fs28 4. What if I don\rquote t know how to edit DLLs?\par - -\pard\nowidctlpar\b0\i0\f1\fs20\par -Look at the provided \b en-US.csv\b0 file. It is a tab-separated file in UTF-16 format. You can open it in Excel or any compatible editor. The file contains 4 columns:\par - -\pard -{\listtext\f1\u10625?\tab}\ls1\nowidctlpar\fi-360\li720\b ID\b0 \endash this is the identifier of the text line. There are 3 types of IDs:\par - -\pard -{\listtext\f1\u10625?\tab}\ls1\ilvl1\nowidctlpar\fi-360\li1440 A number, like 2001, 4030, etc. These correspond to the strings in the string table\par -{\listtext\f1 1\tab}A pair of numbers, like 3002/1025. These correspond to strings found in the dialog boxes. The first number is the ID of the dialog, and the second is the ID of the control in that dialog\par -{\listtext\f1 2\tab}Text, like \ldblquote Menu.SettingsTip\rdblquote . These correspond to the lines of the L10N resource\par - -\pard\nowidctlpar\li720\par - -\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-360\li720\b English\b0 \endash this is the original English text\par - -\pard\nowidctlpar\li720\par - -\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-360\li720\b Translation\b0 \endash this column is empty. That\rquote s where you will have to enter the translations for your language\line\par -{\pntext\f2\'B7\tab}\b Comment\b0 \endash some lines contain hints for the meaning of the translation, or instructions for providing better translation. If you are still unclear about something, ask me. I will provide more comments in future versions based on which text lines people find confusing\par - -\pard\nowidctlpar\par -\par -Once you are done, send the CSV file to {{\field{\*\fldinst{HYPERLINK "mailto:classicshell@ibeltchev.com" }}{\fldrslt{\ul\cf1\cf1\ul classicshell@ibeltchev.com}}}}\f1\fs20 and I will convert that text into a DLL and upload it to the Open-Shell website.\par -\par - -\pard\keepn\widctlpar\s2\sb240\sa60\sl276\slmult1\b\i\f0\fs28 5. Special characters\par - -\pard\nowidctlpar\b0\i0\f1\fs20\par -Some text lines in the DLL or the CSV contain special characters. They are:\par -\b\\t\b0 \endash this is the Tab character. Do not enter an actual tab in the text, because the CSVs don\rquote t handle it well\par -\b\\r\b0 \endash this is a carriage return character\par -\b\\n\b0 \endash this is a new line character\par -\b\\\\\b0 - this is the backslash character. You must use \\\\ instead of \\, because a single \\ can be mistaken for a special character\par -\b %d\b0 \endash this is a placeholder for a number. The actual number will be provided at run-time\par -\b %s\b0 \endash this is a placeholder for a string. The actual string will be provided at run-time\par -\par -In general, try to keep the special characters as they are.\par -\par -} - diff --git a/Localization/English/Main.html b/Localization/English/Main.html deleted file mode 100644 index ce136c631..000000000 --- a/Localization/English/Main.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - Open-Shell - -

Open-Shell website  Open-Shell

-Version 4.3.1 – general release

-

What is Open-Shell?

-Open-Shell™ is a collection of usability enhancement for Windows. It -has a customizable Start menu and Start button, it adds a -toolbar for Windows Explorer and supports a variety of smaller features.
-
-
-

System Requirements

-Open-Shell works on Windows 7, Windows 8, Windows 8.1, Windows Server 2008 R2, -Windows Server 2012 and Windows Server 2012 R2. Both 32 and 64-bit versions are -supported (the same installer works for both). Some skins for the start menu -require Aero theme to be enabled. Others require at least Basic theme.
-
-
-

Components


- -Open-Shell has three major components: -
-

Uninstallation

-You can uninstall Open-Shell from Control Panel -> Programs and Features. Another way is  to run the setup again and chose "Remove".
-A logoff may be required to complete the process.
-
- diff --git a/Localization/English/Menu.html b/Localization/English/Menu.html deleted file mode 100644 index 6de14d3ac..000000000 --- a/Localization/English/Menu.html +++ /dev/null @@ -1,349 +0,0 @@ - - - - - - - - - - - - Open-Shell Menu - -

Open-Shell website  -Open-Shell Menu


-Open-Shell Menu
-is a flexible start menu that can mimic the menu behavior of Windows -2000, XP and Windows 7. It has a variety of advanced features: -
    - -
  • Choose between “Classic” and “Windows 7” styles
    -
  • -
  • Drag and drop to let you organize your applications
  • - -
  • Options to show Favorites, expand Control Panel, etc
  • -
  • Shows recently used documents. The number of documents to display -is customizable
  • -
  • Translated in 35 languages, including Right-to-left support for -Arabic and Hebrew
  • -
  • Does not disable the original start menu in Windows. You can -access it by Shift+Click on the start button
  • -
  • Right-click on an item in the menu to delete, rename, sort, or -perform other tasks
  • -
  • The search box helps you find your programs and files without getting in the way of your keyboard shortcuts
  • -
  • Supports jumplists for easy access to recent documents and common tasks
  • -
  • Available for 32 and 64-bit operating systems
  • -
  • Has support for skins, including additional 3rd party skins. Make your own!
  • -
  • Fully customizable in both looks and functionality
  • -
  • Support for Microsoft’s Active Accessibility
  • -
  • Converts the “All Programs” button in the Windows menu into a cascading menu
  • -
  • Implements a customizable start button
    -
  • -
  • Can show, search and launch Windows Store apps (Windows 8)
  • - - - - -
  • And last but not least – it's FREE!
  • -

-

Styles

-The start menu offers 3 styles to choose from.
-

1) Single-column classic style

-
-This style is similar to the menu found in Windows 2000. It has one -column in the main menu with vertical text on the side. you can -customize the order of items, icons and text.
- -Programs, jumplists and search results show as cascading sub-menus.
- -
-

2) Two-column classic style

-
-This style is similar to the Windows XP menu. There are two columns -where you can arrange your menu items. Customize the order, icons and -text.
-Programs, jumplists and search results show as cascading sub-menus.
-
-

3) Windows 7 style
-

-
-This style is similar to the Windows Vista and Windows 7 menu. The -items in the first column are pre-defined to pinned and recent -programs, all programs list and search box. The items in the second -column are fully customizable.
-The jumplists and search results show inside the main menu. The -programs can be inside the main menu or open as a cascading sub-menu.
-This style offers less customizing options than the classic styles, but -has look and feel more familiar to people used to Windows 7.
-
-
-

Operation

-If you have used the start menu in older versions of Windows you’ll -feel right at home:
- - - -

-Press the Windows key or click on the orb in the corner of the -screen to open the start menu.

-

-Hold down Shift while clicking on the orb to access the operating -system's own -start menu. -

-

-Click on an item to execute it. -

-

-Drag a program to change the order of the programs in a menu, or to -move it to another folder. -

-

-Right-click on an item to rename it, delete it, explore it, sort the -menu, or perform other tasks.

-

-Right-click on the orb to edit the settings for the start menu, to view this help file, or to -stop the start menu.
-

-


- -

- -

-Settings

Right-click on the start button to access the settings:
-
-
-You can choose from seeing only the basic settings, or all available -settings. Hover over each setting to see a description of what it's for. Type in the search box to find a setting by name.
- -Every setting has a default value. The default value can be constant, -or it may depend on the current system settings. Once you edit a -setting it becomes "modified" and is shown in bold. To revert to the -default value, right-click on the setting.
-
- -You can save the settings to an XML file, and later load them back. -Press the Backup button to access these functions. From there you can -also reset all settings to their default value.
- - -
- -Most settings will be changed immediately as you edit them. For example -you can edit the start menu, then while the Settings dialog is open, -access the start menu to see the changes. Small number of settings will -require you to exit the start menu before you can see the change.
- -
- - -Note: All Settings windows are resizable. Resize them and place them where you want them to be. They will remember the new position.
- - -
-Click on the Customize Start Menu tab to customize the menu items. Depending on the style you will see different UI.
-
-For classic styles you can customize both columns of the start menu and -create sub-menus. The left column shows the current items in the menu -and the right column shows the available menu items. Drag from the -right to the left to add items to the menu.
-
-
-For the Windows 7 style you can only edit the items for the second column and there are no sub-menus.
-
-

-Double-click on the icon to edit the item properties:
-
-Here you can select a command for the item, its text, icon and other attributes. Press the Restore Defaults button to get the default text and icon for the chosen command.
-
-The command can be:
- -
    -
  • one of the predefined commands - from the dropdown
  • custom executable string -- this can be a name of a program and its arguments, or even a URL -(like http://www.google.com). Environment variables like %SystemRoot% are supported
  • left blank - then if the link attribute is used, it will act as a command
    -
  • -
-The link can be a path to a file or a folder. If it is a file, that -file will be executed. If it is a folder, that folder will be opened as -a sub-menu. Some menu items (like Programs and Favorites) have an implicit -link attribute, so for them the Link box will be disabled.
- -
- -The icon can be:
- -
    -
  • left blank - then if the link attribute points to a file or a folder, the icon of that file or folder will be used
    -
  • resource file,icon ID - for example %windir%\notepad.exe,2. Do not leave space between the file name and the comma. Make sure you are using the icon's resource ID, and not the icon's index. For best results use the [...] button next to the icon box
    -
  • ,icon ID - same as above, but the resource file is the MenuDLL.dll itself. This is useful when referring to the start menu's own icons
    -
  • icon file -  for example C:\Program Files\Mozilla Thunderbird\Email.ico
  • none - this will use a blank icon
  • -
-If the label or the tip attribute start with $ (dollar sign), then the system will treat it as a name of a string in the StartMenuL10N.ini -file. The actual text will depend on the current language setting. This -is useful when creating a menu that can be used by multiple languages.
-
-If you check "Insert Sub-items as Buttons", instead of showing the menu -item itself, the start menu will show the sub-items as a row of -buttons. By default the buttons are centered. You can align them to the -left by adding a separator as the last item, or align them to the right -by adding a separator as the first item. One possible use is to replace -the shutdown menu item with -separate buttons for shutdown, restart, log off, etc.
-
-

Administrative Settings

-The settings are -per user and are stored in the registry. By default every user can edit -all of their settings. An administrator can lock specific settings, so -no user can edit them:
- -
-In this example the setting "Enable right-click menu" is locked to always -be unchecked and can't be changed by any user. This is achieved -by adding the setting to the HKEY_LOCAL_MACHINE\SOFTWARE\OpenShell\Menu registry key. Create a DWORD value called "EnableContextMenu" and set it to 0.
-
-In some cases you may not want to lock the value for all users, but -simply modify the initial value of the setting. In such case add -"_Default" to the name of the value. For example if you want to context -menu to be disabled by default but still allow the users to enable it -if they wish, create a DWORD value named "EnableContextMenu_Default" -and set it to 0.
-
-The easiest way to know the registry name of a setting and its value is to modify it, and then look it up in HKEY_CURRENT_USER\Software\OpenShell\StartMenu\Settings.
- -Sometimes you may want to lock a setting to its default value, but you -don't know what the default value is. Then create a DWORD value and set -it to 0xDEFA.
- -
- -There is also a global setting "EnableSettings". Set it to 0 in the -registry to prevent the users from even opening the Settings dialog:
- -
-
-The start menu also checks most of the group policies set by the administrator. Run gpedit.msc and go to User Configuration -> Administrative Templates -> Start Menu and Taskbar. From there you can disable Run, Shutdown, Help, and other features. (Not available on Home versions of Windows).
-
-Editing the settings through group policies is also supported. Extract the file PolicyDefinitions.zip found in the installation folder and read the document PolicyDefinitions.rtf for more details.
-
-
-

More About Skins

-You can pick from the many pre-installed skins:
-
-Skins for Open-Shell Menu
-
Or you can download and install additional 3rd party skins (from -the main website or from another place). After you download a new skin -you -must copy the .skin file to the Skins directory – usually C:\Program -Files\Open-Shell\Skins. After that it will be available in the settings.
-
-Note: Some skins may be specifically designed for -Classic, Basic, or Aero mode. For example an Aero skin may require -glass support any will look weird if the Classic or Basic theme is -selected. Some Aero skins may also require specific glass color to be -selected.
-
-You can create your own skin. You will need an image editor that -supports alpha channel (like Gimp or Photoshop) and a tool to edit -resource files (like Resource Hacker or Visual Studio). And of course -some talent for graphical design :). Read the Skinning Tutorial before you begin.
-
-

-

Search


-
- The search box lets you search the contents of the start menu, the -programs in the PATH environment variable and the indexed files. You can have the search box -appear as a normal menu item and then you can get to it using the -up/down arrow keys. You can choose to have the search box selected by -default when you open the start menu. Or you can choose to activate the -search box only with the Tab key, so until you press Tab you can use -the keyboard for navigation as if the search box is not there.
-
-The search results show in the main menu if you are using the Windows 7 style or in a sub-menu for the classic styles.
-Click on each category to expand it and see more results. Click on the icon at the end to view all results in Explorer.
-
-The classic styles allow you to register additional "search providers", which you can use to -search for the text from the search box. You run the search program -either by selecting it from the menu, or by -pressing Alt+key. In this example use Alt+A for Agent Ransack.
-
-
-This is done by adding sub-items of the SearchBoxItem in the Customize Start Menu tab:
-
-
-Open each of the sub-items and enter a command to start the search program. If you use %1 in the command, it will be replaced by the contents of the search box. If you use %2 -it will be replaced by the url-style encoded search text. Enter a -label, tip, and icon to complete your menu entry. In the label text you -can use & to mark the accelerator character (for example &Agent Ransack).
-
-Here are a few possible commands:
-Search with Agent Ransack: "C:\Program Files\Agent Ransack\AgentRansack.exe" -r -f "%1"
-Search with Everything: "C:\Program Files\Everything\Everything.exe" -search "%1"
-Search with Google: http://www.google.com/#q=%2
-Search with Bing: http://www.bing.com/search?q=%2
-
-
-

Custom Start Button
-

Open-Shell can add its own start button to the taskbar. It can -even replace the default start button in Windows 7. You can choose from -an Aero-style orb, a rectangular classic button, or -you can make your own. For a custom start button you need an image that -contain the 3 states of the button - normal, hot and pressed:
-Start button images
-The image must be a 32-bit PNG or BMP. By default the width of the -image determines the size of the button. You can override that by -entering a custom width.
-Read the Button Tutorial for more information about creating custom buttons.
-You can find many custom start button images online. Here are few examples:
-http://www.classicshell.net/forum/viewforum.php?f=18
-http://www.sevenforums.com/themes-styles/34951-custom-start-menu-button-collection.html
-
http://www.sevenforums.com/customization/78291-big-group-custom-start-orbs.html
-http://tutoriales13.deviantart.com/art/Orbs-153450418
-
-
-

Localization

- -The user interface (except the Settings dialog box) is localized in 35 -languages.
- -The Settings dialog box is translated in a smaller number of languages. -The default installation contains only English. More languages can be -downloaded from the translations page. Make sure you download the translation package for the exact version of Open-Shell.
- - -
-

Command Line

-The StartMenu.exe supports 5 command line parameters: -open, -toggle, -togglenew, -exit and -settings.
-
-The first two do what the name suggests. One opens the classic start menu, the other -toggles it. You can use the parameters to create a shortcut in your -QuickLaunch bar that opens the start menu. Or to set a hotkey in -programs such as WinKey.
-
-The third one "-togglenew" toggles the default Windows start menu (or start screen). It is useful if -you want to create a shortcut or a hotkey to open the default menu and use the Win -key for the classic menu.
-
-Use "-exit" to exit the start menu. This command will only work if the start menu is not currently busy.
-
-Use "-settings" to open the start menu settings. This is useful for creating a shortcut for editing the settings.
-
-
-

Accessibility

The start menu supports screen readers like JAWS, -or Microsoft's Narrator. If the accessibility support causes problems it can be disabled from the General Behavior tab of the Settings.
- -
- diff --git a/Localization/English/MenuADMX.txt b/Localization/English/MenuADMX.txt deleted file mode 100644 index 712f70eaf..000000000 --- a/Localization/English/MenuADMX.txt +++ /dev/null @@ -1,192 +0,0 @@ -; DON'T TRANSLATE ============================================================= - -; disabled -CrashDump.supportedOn = never -LogLevel.supportedOn = never -OldProgramsAge.supportedOn = never -DefaultMenuStyle.supportedOn = never -MenuItems.supportedOn = never -Skin1.supportedOn = never -SkinOptions1.supportedOn = never -SkinVariation1.supportedOn = never -Skin2.supportedOn = never -SkinVariation2.supportedOn = never -SkinOptions2.supportedOn = never -SkipMetroCount.supportedOn = never -CompatibilityFixes.supportedOn = never - -; skins -SkinC1.supportedOn = classic1 -SkinVariationC1.supportedOn = classic1 -SkinOptionsC1.supportedOn = classic1 -MenuItems1.supportedOn = classic1 -SkinC2.supportedOn = classic2 -SkinVariationC2.supportedOn = classic2 -SkinOptionsC2.supportedOn = classic2 -MenuItems2.supportedOn = classic2 -SkinW7.supportedOn = win7_style -SkinVariationW7.supportedOn = win7_style -SkinOptionsW7.supportedOn = win7_style -MenuItems7.supportedOn = win7_style - -; style-specific -Computer.supportedOn = classic -Favorites.supportedOn = classic -Documents.supportedOn = classic -UserFiles.supportedOn = classic -UserDocuments.supportedOn = classic -UserPictures.supportedOn = classic -ControlPanel.supportedOn = classic -Network.supportedOn = classic -Printers.supportedOn = classic -Shutdown.supportedOn = classic -LogOff.supportedOn = classic -Undock.supportedOn = classic -Search.supportedOn = classic -Help.supportedOn = classic -Run.supportedOn = classic -SearchFilesCommand.supportedOn = classic -SearchResults.supportedOn = classic -SearchResultsMax.supportedOn = classic -MaxMainMenuWidth.supportedOn = classic -MainMenuAnimation.supportedOn = classic -MainMenuAnimationSpeed.supportedOn = classic -MainMenuScrollSpeed.supportedOn = classic -MenuCaption.supportedOn = classic -MenuUsername.supportedOn = classic -ShutdownCommand.supportedOn = win7_style -MinMainHeight.supportedOn = win7_style -ProgramsStyle.supportedOn = win7_style -FoldersFirst.supportedOn = win7_style -OpenPrograms.supportedOn = win7_style -ProgramsMenuDelay.supportedOn = win7_style -ShutdownW7.supportedOn = win7_style -ProgramsWidth.supportedOn = win7_style -JumplistWidth.supportedOn = win7_style - -; windows 7 -CascadeAll.supportedOn = win7 -AllProgramsDelay.supportedOn = win7 -InitiallySelect.supportedOn = win7 -HideUserPic.supportedOn = win7 -SkinA.supportedOn = win7 -SkinVariationA.supportedOn = win7 -SkinOptionsA.supportedOn = win7 - -; metro settings -AllTaskbars.supportedOn = win881 -AllProgramsMetro.supportedOn = win881 -HideProgramsMetro.supportedOn = win881 -RecentMetroApps.supportedOn = win881 -StartScreenShortcut.supportedOn = win881 -SearchMetroApps.supportedOn = win881 -DisableHotCorner.supportedOn = win881 -OpenMouseMonitor.supportedOn = win881 -SkipMetro.supportedOn = win8 - - - -; TRANSLATE =================================================================== - - -Title.text = Open-Shell settings -State.text = State: -State1.text = Locked to this value -State2.text = Locked to default -State3.text = Unlocked -State1Help.text = If you set the state to 'Locked to this value', the setting will be locked to the specified value for all users. -State2Help.text = If you set the state to 'Locked to default', the setting will be locked to the default value for all users. The specified value is ignored. -State3Help.text = If you set the state to 'Unlocked', the default value for the setting will be changed to the specified value. Individual users can override the setting. - -MenuCat.text = Open-Shell Menu -MenuCatHelp.text = Open-Shell Menu group policy settings -SUPPORTED_CS404.text = Requires Open-Shell 4.0.4 or later. -SUPPORTED_CS404_WIN7.text = Requires Windows 7. -SUPPORTED_CS404_WIN78.text = Requires Windows 7 or Windows 8. -SUPPORTED_CS404_WIN781.text = Requires Windows 7 or Windows 8.1. -SUPPORTED_CS404_WIN8.text = Requires Windows 8. -SUPPORTED_CS404_WIN881.text = Requires Windows 8 or Windows 8.1. -SUPPORTED_CS404_WIN81.text = Requires Windows 8.1. -SUPPORTED_CS404_CLASSIC1_STYLE.text = Requires Classic menu style with one column. -SUPPORTED_CS404_CLASSIC2_STYLE.text = Requires Classic menu style with two columns. -SUPPORTED_CS404_CLASSIC_STYLE.text = Requires Classic menu style. -SUPPORTED_CS404_WIN7_STYLE.text = Requires Windows 7 menu style. - - -EnableSettings.nameOverride = Enable settings -EnableSettings.tipOverride = Enables the users to edit their own settings - -MenuStyle.nameOverride = Menu style -MenuStyle.tipOverride = Select the style for the start menu.\nThe style determines the overall look and functionality of the menu. -MenuStyle_Classic1.nameOverride = Classic with one column -MenuStyle_Classic2.nameOverride = Classic with two columns -MenuStyle_Win7.nameOverride = Windows 7 - -MouseClick.nameOverride = Left Click opens -ShiftClick.nameOverride = Shift+Click opens -WinKey.nameOverride = Windows Key opens -ShiftWin.nameOverride = Shift+Win opens -MiddleClick.nameOverride = Middle Click opens -Hover.nameOverride = Hover opens - -; skins -SkinC1.nameOverride = Skin for classic menu with one column -SkinC1.tipOverride = Select the skin to be used by the classic style with one column -SkinVariationC1.nameOverride = Skin variation for classic menu with one column -SkinVariationC1.tipOverride = Select the skin variation to be used by the classic style with one column (for skins that support multiple variations) -SkinOptionsC1.nameOverride = Skin options for classic menu with one column -SkinOptionsC1.tipOverride = Select the skin options to be used by the classic style with one column.\nThe options are a list of hex numbers. The best way to get them is to adjust the options in the Open-Shell Menu settings dialog and then look up the value named SkinOptionsC1 in HKCU\Software\OpenShell\StartMenu\Settings -MenuItems1.nameOverride = Menu items for classic menu with one column -MenuItems1.tipOverride = Select the menu items to be used by the classic style with one column.\nThe best way to get the right string is to configure the items in the Open-Shell Menu settings dialog and then look up the value named MenuItems1 in HKCU\Software\OpenShell\StartMenu\Settings -SkinC2.nameOverride = Skin for classic menu with two columns -SkinC2.tipOverride = Select the skin to be used by the classic style with two columns -SkinVariationC2.nameOverride = Skin variation for classic menu with two columns -SkinVariationC2.tipOverride = Select the skin variation to be used by the classic style with two columns (for skins that support multiple variations) -SkinOptionsC2.nameOverride = Skin options for classic menu with two columns -SkinOptionsC2.tipOverride = Select the skin options to be used by the classic style with two columns.\nThe options are a list of hex numbers. The best way to get them is to adjust the options in the Open-Shell Menu settings dialog and then look up the value named SkinOptionsC2 in HKCU\Software\OpenShell\StartMenu\Settings -MenuItems2.nameOverride = Menu items for classic menu with two columns -MenuItems2.tipOverride = Select the menu items to be used by the classic style with two columns.\nThe best way to get the right string is to configure the items in the Open-Shell Menu settings dialog and then look up the value named MenuItems2 in HKCU\Software\OpenShell\StartMenu\Settings -SkinW7.nameOverride = Skin for the Windows 7 style -SkinW7.tipOverride = Select the skin to be used by the Windows 7 style -SkinVariationW7.nameOverride = Skin variation for the Windows 7 style -SkinVariationW7.tipOverride = Select the skin variation to be used by the Windows 7 style (for skins that support multiple variations) -SkinOptionsW7.nameOverride = Skin options for the Windows 7 style -SkinOptionsW7.tipOverride = Select the skin options to be used by the Windows 7 style.\nThe options are a list of hex numbers. The best way to get them is to adjust the options in the Open-Shell Menu settings dialog and then look up the value named SkinOptionsW7 in HKCU\Software\OpenShell\StartMenu\Settings -MenuItems7.nameOverride = Menu items for the Windows 7 style -MenuItems7.tipOverride = Select the menu items to be used by the Windows 7 style.\nThe best way to get the right string is to configure the items in the Open-Shell Menu settings dialog and then look up the value named MenuItems7 in HKCU\Software\OpenShell\StartMenu\Settings - -; windows 7 -SkinA.nameOverride = Skin for the All Programs sub-menu for the Windows 7 start menu -SkinA.tipOverride = Select the skin to be used by the All Programs sub-menu for the Windows 7 start menu -SkinVariationA.nameOverride = Skin variation for the All Programs sub-menu for the Windows 7 start menu -SkinVariationA.tipOverride = Select the skin variation to be used by the All Programs sub-menu for the Windows 7 start menu (for skins that support multiple variations) -SkinOptionsA.nameOverride = Skin options for the All Programs sub-menu for the Windows 7 start menu -SkinOptionsA.tipOverride = Select the skin options to be used by the All Programs sub-menu for the Windows 7 start menu.\nThe options are a list of hex numbers. The best way to get them is to adjust the options in the Open-Shell Menu settings dialog and then look up the value named SkinOptionsA in HKCU\Software\OpenShell\StartMenu\Settings - -; metro settings -SkipMetro.tipAddition = This setting doesn't work for Windows 8.1. You need to use the built-in Windows setting for booting to Desktop - -; hidden -FolderStartMenu.nameOverride = Start Menu folder -FolderStartMenu.tipOverride = Enter an override for the per-user start menu folder (also overrides the per-user Programs folder).\nThe path can contain environment variables.\nNote: This setting is not editable from the Settings dialog -FolderPrograms.nameOverride = Programs folder -FolderPrograms.tipOverride = Enter an override for the per-user Programs folder.\nThe path can contain environment variables.\nNote: This setting is not editable from the Settings dialog -FolderCommonStartMenu.nameOverride = Common Start Menu folder -FolderCommonStartMenu.tipOverride = Enter an override for the common start menu folder (also overrides the common Programs folder).\nThe path can contain environment variables.\nNote: This setting is not editable from the Settings dialog -FolderCommonPrograms.nameOverride = Common Programs folder -FolderCommonPrograms.tipOverride = Enter an override for the common Programs folder.\nThe path can contain environment variables.\nNote: This setting is not editable from the Settings dialog -AutoStartDelay.nameOverride = Auto-start delay -AutoStartDelay.tipOverride = Enter a delay in ms when launching the start menu automatically during login (does not apply when starting the menu manually by running StartMenu.exe).\nNote: This setting is not editable from the Settings dialog - -; other -StartButtonIcon.tipAddition = The value can be a path to an ICO file or a path to an EXE/DLL and an the ID of the icon -StartButtonPath.tipAddition = The value is a full path to the BMP or PNG file -SoundMain.tipAddition = The value can be a name of a system event or a path to a WAV file -SoundPopup.tipAddition = The value can be a name of a system event or a path to a WAV file -SoundCommand.tipAddition = The value can be a name of a system event or a path to a WAV file -SoundDrop.tipAddition = The value can be a name of a system event or a path to a WAV file -ExpandFolderLinks.tipAddition = Only works for symbolic links (like junctions) and not for plain shortcuts -StartHoverDelay.nameOverride = Hover delay (for Start button) -AllProgramsDelay.nameOverride = Hover delay (for All Programs in Windows 7) -CSMHotkey.tipAddition = .\n\nThe base value is the main key's virtual code. Add 256 for Shift, 512 for Control and 1024 for Alt.\nThe best way to get the value is to select the hotkey in the Open-Shell Menu settings dialog and then look up the value named CSMHotkey in HKCU\Software\OpenShell\StartMenu\Settings -WSMHotkey.tipAddition = .\n\nThe base value is the main key's virtual code. Add 256 for Shift, 512 for Control and 1024 for Alt.\nThe best way to get the value is to select the hotkey in the Open-Shell Menu settings dialog and then look up the value named WSMHotkey in HKCU\Software\OpenShell\StartMenu\Settings diff --git a/Localization/English/OpenShell.hhp b/Localization/English/OpenShell.hhp deleted file mode 100644 index 323719722..000000000 --- a/Localization/English/OpenShell.hhp +++ /dev/null @@ -1,16 +0,0 @@ -[OPTIONS] -Compatibility=1.1 or later -Compiled file=OpenShell.chm -Contents file=OpenShellTOC.hhc -Default topic=Main.html -Display compile progress=Yes -Language=0x409 English (United States) - - -[FILES] -ClassicExplorer.html -Menu.html -ClassicIE.html - -[INFOTYPES] - diff --git a/Localization/English/OpenShellADMX.txt b/Localization/English/OpenShellADMX.txt deleted file mode 100644 index 9219b6f61..000000000 --- a/Localization/English/OpenShellADMX.txt +++ /dev/null @@ -1,19 +0,0 @@ -; TRANSLATE =================================================================== - -Title.text = Open-Shell settings -State.text = State: -State1.text = Locked to this value -State2.text = Locked to default -State3.text = Unlocked -State1Help.text = If you set the state to 'Locked to this value', the setting will be locked to the specified value for all users. -State2Help.text = If you set the state to 'Locked to default', the setting will be locked to the default value for all users. The specified value is ignored. -State3Help.text = If you set the state to 'Unlocked', the default value for the setting will be changed to the specified value. Individual users can override the setting. - -OpenShellCat.text = Open-Shell -OpenShellCatHelp.text = Open-Shell group policy settings -SUPPORTED_CS404.text = Requires Open-Shell 4.0.4 or later. - -Language.nameOverride = Language for Open-Shell components -Language.tipOverride = Select the language to be used by Open-Shell (for example en-US or de-DE). The language will affect the text in the start menu, toolbars, etc. If the appropriate language DLL is installed, the settings UI may also be translated -Update.nameOverride = Enable automatic checks for new versions -Update.tipOverride = When this is checked, Open-Shell will check for new releases every week. You will be notified if there is a new version of the Open-Shell software or a new update for your current language diff --git a/Localization/English/OpenShellEULA.rtf b/Localization/English/OpenShellEULA.rtf deleted file mode 100644 index c7cb5cc94..000000000 Binary files a/Localization/English/OpenShellEULA.rtf and /dev/null differ diff --git a/Localization/English/OpenShellReadme.rtf b/Localization/English/OpenShellReadme.rtf deleted file mode 100644 index de2d4e631..000000000 --- a/Localization/English/OpenShellReadme.rtf +++ /dev/null @@ -1,106 +0,0 @@ -{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fprq2\fcharset0 Cambria;}{\f1\fswiss\fprq2\fcharset0 Calibri;}{\f2\fnil\fcharset2 Symbol;}} -{\colortbl ;\red23\green54\blue93;\red79\green129\blue189;\red0\green112\blue192;\red0\green0\blue255;\red54\green95\blue145;} -{\stylesheet{ Normal;}{\s1 heading 1;}} -{\*\generator Riched20 10.0.17134}{\*\mmathPr\mnaryLim0\mdispDef1\mwrapIndent1440 }\viewkind4\uc1 -\pard\brdrb\brdrs\brdrw20\brsp80 \widctlpar\sa300\qc\cf1\expndtw5\kerning28\f0\fs52 Open-Shell\par - -\pard\widctlpar\cf0\expndtw0\b0\i0\f1\fs22\par -Thank you for installing \cf3\b Open-Shell\'99\cf0\b0 . It adds some missing features to Windows 7, Windows 8, Windows 8.1 and Windows 10 - like a classic start menu, start button, a toolbar for Windows Explorer and others.\par -\par -The latest version can be found on the Open-Shell website:\par -{{\field{\*\fldinst{HYPERLINK http://www.classicshell.net/ }}{\fldrslt{http://www.classicshell.net/\ul0\cf0}}}}\f1\fs22\par -\par -For answers to frequently asked questions look here:\par -{{\field{\*\fldinst{HYPERLINK http://www.classicshell.net/faq/ }}{\fldrslt{http://www.classicshell.net/faq/\ul0\cf0}}}}\f1\fs22\par -\par -Or use the discussion forums to get help:\par -{{\field{\*\fldinst{HYPERLINK http://www.classicshell.net/forum/viewforum.php?f=6 }}{\fldrslt{http://www.classicshell.net/forum/viewforum.php?f=6\ul0\cf0}}}}\f1\fs22\par -\par -Report problems in the Open-Shell development forums:\par -{{\field{\*\fldinst{HYPERLINK http://www.classicshell.net/forum/viewforum.php?f=11 }}{\fldrslt{http://www.classicshell.net/forum/viewforum.php?f=11\ul0\cf0}}}}\f1\fs22\par -\par - -\pard\keep\keepn\widctlpar\s1\sb480\sl276\slmult1\cf5\b\f0\fs28 Open-Shell Menu\par - -\pard\widctlpar\cf0\b0\f1\fs22\par -\cf3\b Open-Shell Menu\cf0 \b0 is a flexible start menu that can mimic the menu behavior of Windows 2000, XP and Windows 7. It has a variety of advanced features:\par -\par - -\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\widctlpar\fi-360\li720 Choose between \ldblquote Classic\rdblquote and \ldblquote Windows 7\rdblquote styles\par -{\pntext\f2\'B7\tab}Drag and drop to let you organize your applications\par -{\pntext\f2\'B7\tab}Options to show Favorites, expand Control Panel, etc\par -{\pntext\f2\'B7\tab}Shows recently used documents. The number of documents to display is customizable\par -{\pntext\f2\'B7\tab}Translated in 35 languages, including Right-to-left support for Arabic and Hebrew\par -{\pntext\f2\'B7\tab}Does not disable the original start menu in Windows. You can access it by Shift+Click on the start button\par -{\pntext\f2\'B7\tab}Right-click on an item in the menu to delete, rename, sort, or perform other tasks\par -{\pntext\f2\'B7\tab}The search box helps you find your programs and files without getting in the way of your keyboard shortcuts\par -{\pntext\f2\'B7\tab}Supports jumplists for easy access to recent documents and common tasks\par -{\pntext\f2\'B7\tab}Available for 32 and 64-bit operating systems\par -{\pntext\f2\'B7\tab}Has support for skins, including additional 3rd party skins. Make your own!\par -{\pntext\f2\'B7\tab}Fully customizable in both looks and functionality\par -{\pntext\f2\'B7\tab}Support for Microsoft\rquote s Active Accessibility\par -{\pntext\f2\'B7\tab}Converts the \ldblquote All Programs\rdblquote button in the Windows menu into a cascading menu\par -{\pntext\f2\'B7\tab}Implements a customizable start button\par -{\pntext\f2\'B7\tab}Can show, search and launch Windows Store apps (Windows 8)\par - -\pard\keep\keepn\widctlpar\s1\sb480\sl276\slmult1\cf5\b\f0\fs28 Classic Explorer\par - -\pard\widctlpar\cf0\b0\f1\fs22\par -\cf3\b Classic Explorer\cf0 \b0 is a plugin for Windows Explorer that:\par -\par - -\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\widctlpar\fi-360\li720 Adds a toolbar to Explorer for some common operations (Go to parent folder, Cut, Copy, Paste, Delete, Properties, Email). The toolbar is fully customizable\par -{\pntext\f2\'B7\tab}Replaces the copy UI in Windows 7 with the more user-friendly \ldblquote classic\rdblquote version similar to Windows XP\par -{\pntext\f2\'B7\tab}Handles Alt+Enter in the folder panel of Windows Explorer and shows the properties of the selected folder\par -{\pntext\f2\'B7\tab}Has options for customizing the folder panel to look more like the Windows XP version or to not fade the expand buttons\par -{\pntext\f2\'B7\tab}Can show the free disk space and the total size of the selected files in the status bar\par -{\pntext\f2\'B7\tab}Can disable the breadcrumbs in the address bar\par -{\pntext\f2\'B7\tab}Fixes a long list of features that are broken in Windows 7 \endash missing icon overlay for shared folders, the jumping folders in the navigation pane, missing sorting headers in list view, and more\par - -\pard\keep\keepn\widctlpar\s1\sb480\sl276\slmult1\cf5\b\f0\fs28 Classic IE\par - -\pard\widctlpar\cf0\b0\f1\fs22\par -\cf3\b Classic IE is a plugin for Internet Explorer 9 and later versions that:\par -\cf0\b0\par - -\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\widctlpar\fi-360\li720 Adds a caption to the title bar so you can see the full title of the page\par -{\pntext\f2\'B7\tab}Shows the security zone in the status bar\par -{\pntext\f2\'B7\tab}Shows the loading progress in the status bar\par - -\pard\keep\keepn\widctlpar\s1\sb480\sl276\slmult1\cf5\b\f0\fs28 Installation instructions\par - -\pard\widctlpar\cf0\b0\f1\fs22\par -The toolbar for Windows Explorer may not show up automatically after installation. You have to do a few things before you can use it.\par -\par -\cf3\b Windows 7:\cf0\b0 Press Alt+V to open the View menu. Open the \ldblquote Toolbars\rdblquote sub-menu and select \ldblquote Classic Exlporer Bar\rdblquote . Keep in mind that the menu will always be displayed as long as the toolbar is visible.\par -\par -\cf3\b Windows 8:\cf0\b0 Press Alt+V to open the View ribbon. Click on the down arrow in the \ldblquote Options\rdblquote section. Select \ldblquote Classic Explorer Bar\rdblquote\par -\par -If these steps don\rquote t work, it may be possible that the Explorer extensions have been disabled. Check the following, then try to show the toolbar again:\par - -\pard -{\pntext\f1 1)\tab}{\*\pn\pnlvlbody\pnf1\pnindent0\pnstart1\pndec{\pntxta)}} -\widctlpar\fi-360\li720 Open Internet Explorer and go to Tools -> Manage add-ons. Locate the add-ons \ldblquote Classic Explorer Bar\rdblquote and \ldblquote ExplorerBHO Class\rdblquote and make sure they are enabled.\par -{\pntext\f1 2)\tab}Maybe the browser extensions are disabled on your system. This is usually the default for Windows Server. Open the "Internet Options", go to the "Advanced" tab, and check the option "Enable third-party browser extensions".\par - -\pard\widctlpar\par -On Windows 7 you have to turn on the status bar from the View menu if you want to see the file sizes.\par -On Windows 8 the Classic Explorer status bar is different from the one in Explorer. You can show/hide the first one from the Classic Explorer settings dialog and show/hide the second one from Explorer\rquote s folder options dialog.\par -\par -The caption in Internet Explorer may not show up automatically after installation. You may get a prompt to enable the ClassicIEBHO plugin. If you get the prompt, select \ldblquote Enable\rdblquote . If you don\rquote t get a prompt, go to Tools -> Manage add-ons and make sure the add-on \ldblquote ClassicIEBHO\rdblquote is enabled. After that restart Internet Explorer.\par - -\pard\keep\keepn\widctlpar\s1\sb480\sl276\slmult1\cf5\b\f0\fs28 Uninstallation\par - -\pard\widctlpar\cf0\b0\f1\fs22\par -To uninstall \cf3\b Open-Shell\cf0\b0 follow these steps:\par - -\pard -{\pntext\f1 1)\tab}{\*\pn\pnlvlbody\pnf1\pnindent0\pnstart1\pndec{\pntxta)}} -\widctlpar\fi-360\li720 Open \b Control Panel -> Programs and Features\b0 and double-click on \b Open-Shell\b0 . Then follow the instructions. You may have to restart Windows to complete the process.\par -{\pntext\f1 2)\tab}If you installed any additional skins for the start menu you will have to delete them manually\par - -\pard\widctlpar\par - -\pard\widctlpar\sa200\sl276\slmult1\par -} - diff --git a/Localization/English/OpenShellTOC.hhc b/Localization/English/OpenShellTOC.hhc deleted file mode 100644 index 9835e2363..000000000 --- a/Localization/English/OpenShellTOC.hhc +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - - -
    -
  • - - - - -
  • - - - - -
      -
    • - - - -
    • - - - -
    • - - - - -
    • - - - - -
    • - - - -
    • - - - -
    • - - - -
    • - - - -
    • - - - -
    • - - - -
    -
  • - - - - -
      -
    • - - - -
    • - - - -
    • - - - -
    • - - - -
    • - - - -
    • - - - -
    • - - - -
    • - - - -
    • - - - -
    -
  • - - - - -
      -
    • - - - -
    • - - - -
    • - - - -
    -
  • - - - - -
  • - - - - -
- diff --git a/Localization/English/OpenShellText-en-US.wxl b/Localization/English/OpenShellText-en-US.wxl deleted file mode 100644 index dd4bc0213..000000000 --- a/Localization/English/OpenShellText-en-US.wxl +++ /dev/null @@ -1,33 +0,0 @@ - - - This installer is only for 32-bit version of Windows. For 64-bit Windows you need to run Setup64. - Open-Shell requires Windows 7 or above. - A newer version of [ProductName] is already installed. The setup will now exit. - Classic Explorer - Classic Explorer adds a toolbar to Windows Explorer, replaces the copy UI and fixes some usability problems - Open-Shell Menu - Open-Shell Menu is a highly customizable replacement for the Windows start menu - Classic IE - Classic IE lets you customize the title bar and the status bar of Internet Explorer - Open-Shell Update - Open-Shell Update checks periodically for new versions - View the Open-Shell documentation - View the Open-Shell introduction - Edit the settings of Classic Explorer - Edit the settings of the classic start menu - Edit the settings of the Internet Explorer title bar and status bar - Edit the settings for Open-Shell's new version check - Create a start menu folder - Open-Shell website - Donate to Open-Shell - Visit us on Facebook - View Readme file - Open-Shell Help - Open-Shell Readme - Open-Shell Update - Classic Explorer Settings - Open-Shell Menu Settings - Classic IE Settings - Open the Start screen - Open-Shell is a collection of usability enhancements for Windows - diff --git a/Localization/English/PolicyDefinitions.rtf b/Localization/English/PolicyDefinitions.rtf deleted file mode 100644 index e68967d15..000000000 Binary files a/Localization/English/PolicyDefinitions.rtf and /dev/null differ diff --git a/Localization/English/en-US.csv b/Localization/English/en-US.csv deleted file mode 100644 index cbea0935d..000000000 Binary files a/Localization/English/en-US.csv and /dev/null differ diff --git a/Localization/English/images/OpenShell.png b/Localization/English/images/OpenShell.png deleted file mode 100644 index 1c1786845..000000000 Binary files a/Localization/English/images/OpenShell.png and /dev/null differ diff --git a/Localization/English/images/acc_locked.png b/Localization/English/images/acc_locked.png deleted file mode 100644 index 0dd5dc9cf..000000000 Binary files a/Localization/English/images/acc_locked.png and /dev/null differ diff --git a/Localization/English/images/after.png b/Localization/English/images/after.png deleted file mode 100644 index bdb89f9e7..000000000 Binary files a/Localization/English/images/after.png and /dev/null differ diff --git a/Localization/English/images/before.png b/Localization/English/images/before.png deleted file mode 100644 index 62f32e903..000000000 Binary files a/Localization/English/images/before.png and /dev/null differ diff --git a/Localization/English/images/button_images.png b/Localization/English/images/button_images.png deleted file mode 100644 index e8bfa3225..000000000 Binary files a/Localization/English/images/button_images.png and /dev/null differ diff --git a/Localization/English/images/button_settings.png b/Localization/English/images/button_settings.png deleted file mode 100644 index 8dcb650f3..000000000 Binary files a/Localization/English/images/button_settings.png and /dev/null differ diff --git a/Localization/English/images/customize_menu.png b/Localization/English/images/customize_menu.png deleted file mode 100644 index ef06aab44..000000000 Binary files a/Localization/English/images/customize_menu.png and /dev/null differ diff --git a/Localization/English/images/explorer_settings.png b/Localization/English/images/explorer_settings.png deleted file mode 100644 index d1d2c15de..000000000 Binary files a/Localization/English/images/explorer_settings.png and /dev/null differ diff --git a/Localization/English/images/ie9_caption.png b/Localization/English/images/ie9_caption.png deleted file mode 100644 index 5d853f7a4..000000000 Binary files a/Localization/English/images/ie9_caption.png and /dev/null differ diff --git a/Localization/English/images/ie9_settings.png b/Localization/English/images/ie9_settings.png deleted file mode 100644 index 47342d5a6..000000000 Binary files a/Localization/English/images/ie9_settings.png and /dev/null differ diff --git a/Localization/English/images/ie9_status.png b/Localization/English/images/ie9_status.png deleted file mode 100644 index ebfb297e1..000000000 Binary files a/Localization/English/images/ie9_status.png and /dev/null differ diff --git a/Localization/English/images/item_settings.png b/Localization/English/images/item_settings.png deleted file mode 100644 index d978eb3d3..000000000 Binary files a/Localization/English/images/item_settings.png and /dev/null differ diff --git a/Localization/English/images/menu_settings.png b/Localization/English/images/menu_settings.png deleted file mode 100644 index 6d99c16b5..000000000 Binary files a/Localization/English/images/menu_settings.png and /dev/null differ diff --git a/Localization/English/images/search1.png b/Localization/English/images/search1.png deleted file mode 100644 index 9c3b5126c..000000000 Binary files a/Localization/English/images/search1.png and /dev/null differ diff --git a/Localization/English/images/search2.png b/Localization/English/images/search2.png deleted file mode 100644 index 049f69e79..000000000 Binary files a/Localization/English/images/search2.png and /dev/null differ diff --git a/Localization/English/images/search3.png b/Localization/English/images/search3.png deleted file mode 100644 index 9de67ebda..000000000 Binary files a/Localization/English/images/search3.png and /dev/null differ diff --git a/Localization/English/images/settings1.png b/Localization/English/images/settings1.png deleted file mode 100644 index fbbb6ffaa..000000000 Binary files a/Localization/English/images/settings1.png and /dev/null differ diff --git a/Localization/English/images/settings2.png b/Localization/English/images/settings2.png deleted file mode 100644 index 45c8d55be..000000000 Binary files a/Localization/English/images/settings2.png and /dev/null differ diff --git a/Localization/English/images/settings3.png b/Localization/English/images/settings3.png deleted file mode 100644 index c72ae673a..000000000 Binary files a/Localization/English/images/settings3.png and /dev/null differ diff --git a/Localization/English/images/settings4.png b/Localization/English/images/settings4.png deleted file mode 100644 index a2ebb4a16..000000000 Binary files a/Localization/English/images/settings4.png and /dev/null differ diff --git a/Localization/English/images/settings5.png b/Localization/English/images/settings5.png deleted file mode 100644 index f4b0c0c84..000000000 Binary files a/Localization/English/images/settings5.png and /dev/null differ diff --git a/Localization/English/images/settings_disable_ex.png b/Localization/English/images/settings_disable_ex.png deleted file mode 100644 index 4bb572d99..000000000 Binary files a/Localization/English/images/settings_disable_ex.png and /dev/null differ diff --git a/Localization/English/images/settings_disable_ie9.png b/Localization/English/images/settings_disable_ie9.png deleted file mode 100644 index 352b100e6..000000000 Binary files a/Localization/English/images/settings_disable_ie9.png and /dev/null differ diff --git a/Localization/English/images/settings_disable_sm.png b/Localization/English/images/settings_disable_sm.png deleted file mode 100644 index d65b65ab3..000000000 Binary files a/Localization/English/images/settings_disable_sm.png and /dev/null differ diff --git a/Localization/English/images/skins.gif b/Localization/English/images/skins.gif deleted file mode 100644 index c9a26cfe6..000000000 Binary files a/Localization/English/images/skins.gif and /dev/null differ diff --git a/Localization/English/images/statusbar.png b/Localization/English/images/statusbar.png deleted file mode 100644 index e9cfc0070..000000000 Binary files a/Localization/English/images/statusbar.png and /dev/null differ diff --git a/Localization/English/images/style1.png b/Localization/English/images/style1.png deleted file mode 100644 index 02cf5be40..000000000 Binary files a/Localization/English/images/style1.png and /dev/null differ diff --git a/Localization/English/images/style2.png b/Localization/English/images/style2.png deleted file mode 100644 index 9bbd1d146..000000000 Binary files a/Localization/English/images/style2.png and /dev/null differ diff --git a/Localization/English/images/style3.png b/Localization/English/images/style3.png deleted file mode 100644 index 67a4f0fc8..000000000 Binary files a/Localization/English/images/style3.png and /dev/null differ diff --git a/Localization/English/images/titlebar.png b/Localization/English/images/titlebar.png deleted file mode 100644 index bbad38bb3..000000000 Binary files a/Localization/English/images/titlebar.png and /dev/null differ diff --git a/Localization/English/images/toolbar.png b/Localization/English/images/toolbar.png deleted file mode 100644 index 7a23fbee3..000000000 Binary files a/Localization/English/images/toolbar.png and /dev/null differ diff --git a/Localization/English/images/toolbar_settings.png b/Localization/English/images/toolbar_settings.png deleted file mode 100644 index 93416f22a..000000000 Binary files a/Localization/English/images/toolbar_settings.png and /dev/null differ diff --git a/Localization/English/images/up_locked.png b/Localization/English/images/up_locked.png deleted file mode 100644 index e1284d868..000000000 Binary files a/Localization/English/images/up_locked.png and /dev/null differ diff --git a/Localization/ExplorerL10N.ini b/Localization/ExplorerL10N.ini deleted file mode 100644 index 2bafcde0a..000000000 --- a/Localization/ExplorerL10N.ini +++ /dev/null @@ -1,2599 +0,0 @@ -; This file contains all localized text for Open-Shell. There is one section per language. -; Every section contains text lines in the form of = . -; Which section is used depends on the current OS setting. If a key is missing from the language section -; it will be searched in the [default] section. In some cases more than one language can be used. -; For example a Japanese system may use English as a secondary language. In that case the search order -; will be [ja-JP] -> [en-US] -> [default]. -; -; ============================================================================= - - -[default] -Toolbar.Settings = Classic Explorer Settings - - -[ar-SA] - Arabic (Saudi Arabia) -Copy.Cancel = إلغاء الأمر -Copy.More = المزيد... -Copy.CopyHere = ن&سخ إلى هذا الموضع -Copy.MoveHere = ن&قل إلى هذا الموضع -Copy.Title = تأكيد استبدال الملف -Copy.Subtitle = يحتوي هذا المجلد على ملف باسم '%s'. -Copy.SubtitleRO = يحتوي هذا المجلد على ملف للقراءة فقط باسم '‎%s'. -Copy.SubtitleSys = يحتوي هذا المجلد مسبقاً على ملف نظام باسم '‎%s'. -Copy.Prompt1 = ‏‏هل تريد استبدال الملف الموجود -Copy.Prompt2 = بهذا؟ -Copy.Yes = &نعم -Copy.No = &لا -Copy.YesAll = نعم لل&كل -Folder.Title = تأكيد استبدال المجلد -Folder.Prompt = هل ما زلت تريد نقل المجلد أو نسخه؟ -Toolbar.GoUp = مستوى واحد لأعلى -Toolbar.Cut = قص -Toolbar.Copy = نسخ -Toolbar.Paste = لصق -Toolbar.PasteShortcut = لصق الاختصار -Toolbar.Delete = حذف -Toolbar.Email = إرسال العناصر المحددة بالبريد الإلكتروني -Toolbar.Properties = خصائص -Toolbar.NewFolder = مجلد جديد -Toolbar.ZipFolder = مجلد جديد مضغوط -Toolbar.ExtraLarge = رموز كبيرة جداً -Toolbar.Large = رموز كبيرة -Toolbar.Medium = رموز متوسطة -Toolbar.Small = رموز صغيرة -Toolbar.List = قائمة -Toolbar.Details = تفاصيل -Toolbar.Tiles = مربعات -Toolbar.Content = محتوى -Toolbar.Undo = تراجع -Toolbar.Redo = إعادة -Toolbar.Refresh = تحديث -Toolbar.Back = الخلف -Toolbar.Forward = الأمام -Toolbar.Stop = إيقاف -Toolbar.Rename = إعادة تسمية -Toolbar.SelectAll = تحديد الكل -Toolbar.CustomizeFolder = تخصيص هذا المجلد -Toolbar.MapDrive = تعيين محرك أقراص الشبكة -Toolbar.DisconnectDrive = قطع اتصال محرك أقراص الشبكة -Toolbar.NavigationPane = جزء التنقل -Toolbar.DetailsPane = جزء التفاصيل -Toolbar.PreviewPane = جزء المعاينة -Toolbar.CopyTo = نسخ إلى -Toolbar.MoveTo = نقل إلى -Toolbar.Deselect = بلا تحديد -Toolbar.InvertSelection = عكس التحديد -Toolbar.FolderOptions = خيارات المجلد -Toolbar.ShowHiddenFiles = الملفات والمجلدات المخفية -Toolbar.ShowSystemFiles = ملفات النظام -Toolbar.ShowExtensions = ملحقات أسماء الملفات -Status.FreeSpace = ‎%s (مساحة القرص الحرة: ‎%s) -Status.Item = عنصر %s -Status.Items = ‎‎%s عنصر/عناصر -Status.ItemSelected = %s عنصر محدد -Status.ItemsSelected = %s عنصر/عناصر محددة - - -[bg-BG] - Bulgarian (Bulgaria) -Copy.Cancel = Отказ -Copy.More = Още... -Copy.CopyHere = &Копирай тук -Copy.MoveHere = Пр&емести тук -Copy.Title = Потвърждаване на заместването на файл -Copy.Subtitle = Тази папка вече съдържа файл с име '%s'. -Copy.SubtitleRO = Тази папка вече съдържа файл само за четене с име '%s'. -Copy.SubtitleSys = Тази папка вече съдържа системен файл с име '%s'. -Copy.Prompt1 = Желаете ли да заместите съществуващия файл -Copy.Prompt2 = с този? -Copy.Yes = &Да -Copy.No = &Не -Copy.YesAll = "Да" за &всички -Folder.Title = Потвърждаване на заместването на папка -Folder.Prompt = Все още ли искате да преместите или копирате папката? -Toolbar.GoUp = Едно ниво нагоре -Toolbar.Cut = Изрежи -Toolbar.Copy = Копирай -Toolbar.Paste = Постави -Toolbar.PasteShortcut = Постави пряк път -Toolbar.Delete = Изтриване -Toolbar.Email = Изпрати избраните елементи по електронната поща -Toolbar.Properties = Свойства -Toolbar.NewFolder = Нова папка -Toolbar.ZipFolder = Нова компресирана със ZIP папка -Toolbar.ExtraLarge = Много големи икони -Toolbar.Large = Големи икони -Toolbar.Medium = Средни икони -Toolbar.Small = Малки икони -Toolbar.List = Списък -Toolbar.Details = Детайли -Toolbar.Tiles = Мозайка -Toolbar.Content = Съдържание -Toolbar.Undo = Отмени -Toolbar.Redo = Върни -Toolbar.Refresh = Обнови -Toolbar.Back = Назад -Toolbar.Forward = Напред -Toolbar.Stop = Спри -Toolbar.Rename = Преименуване -Toolbar.SelectAll = Избери всички -Toolbar.CustomizeFolder = Персонализиране на тази папка -Toolbar.MapDrive = Назначаване на мрежово устройство -Toolbar.DisconnectDrive = Изключване на мрежово устройство -Toolbar.NavigationPane = Навигационен екран -Toolbar.DetailsPane = Екран за подробни данни -Toolbar.PreviewPane = Прозорец за визуализация -Toolbar.CopyTo = Копирай в -Toolbar.MoveTo = Премести в -Toolbar.Deselect = Не избирай нищо -Toolbar.InvertSelection = Обърни селекцията -Toolbar.FolderOptions = Опции за папката -Toolbar.ShowHiddenFiles = Скрити файлове и папки -Toolbar.ShowSystemFiles = Системни файлове -Toolbar.ShowExtensions = Разширения на имената на файлове -Status.FreeSpace = %s (Свободно място на диска: %s) -Status.Item = %s елемент -Status.Items = %s елемента -Status.ItemSelected = %s избран елемент -Status.ItemsSelected = %s избрани елемента - - -[ca-ES] - Catalan (Catalan) -Copy.Cancel = Cancel·lar -Copy.More = Més... -Copy.CopyHere = &Copiar aquí -Copy.MoveHere = &Moure aquí -Copy.Title = Confirmar la substitució de l'arxiu -Copy.Subtitle = Aquesta carpeta ja conté un arxiu amb el nom "%s". -Copy.SubtitleRO = Aquesta carpeta ja conté un arxiu de sols lectura amb el nom "%s". -Copy.SubtitleSys = Aquesta carpeta ja conté un arxiu de sistema amb el nom "%s". -Copy.Prompt1 = Desitja substituir l'arxiu existent -Copy.Prompt2 = per aquest altre? -Copy.Yes = &Sí -Copy.No = &No -Copy.YesAll = Sí a &tot -Folder.Title = Confirmar la substitució de carpetes -Folder.Prompt = Desitja moure o copiar la carpeta de totes maneres? -Toolbar.GoUp = Pujar un nivell -Toolbar.Cut = Retallar -Toolbar.Copy = Copiar -Toolbar.Paste = Enganxar -Toolbar.PasteShortcut = Enganxar accés directe -Toolbar.Delete = Suprimeix -Toolbar.Email = Enviar per correu electrònic els elements següents -Toolbar.Properties = Propietats -Toolbar.NewFolder = Nova carpeta -Toolbar.ZipFolder = Carpeta comprimida (en zip) nova -Toolbar.ExtraLarge = Icones molt grans -Toolbar.Large = Icones grans -Toolbar.Medium = Icones mitjanes -Toolbar.Small = Icones petites -Toolbar.List = Llista -Toolbar.Details = Detalls -Toolbar.Tiles = Mosaics -Toolbar.Content = Contingut -Toolbar.Undo = Desfer -Toolbar.Redo = Refer -Toolbar.Refresh = Actualitzar -Toolbar.Back = Enrera -Toolbar.Forward = Endavant -Toolbar.Stop = Aturar -Toolbar.Rename = Cambiar nom -Toolbar.SelectAll = Seleccionar tot -Toolbar.CustomizeFolder = Personalitzar aquesta carpeta -Toolbar.MapDrive = Conectar a unitat de xarxa -Toolbar.DisconnectDrive = Desconectar unitat de xarxa -Toolbar.NavigationPane = Panell de navegació -Toolbar.DetailsPane = Panell de detalls -Toolbar.PreviewPane = Panell de vista prèvia -Toolbar.CopyTo = Copia a -Toolbar.MoveTo = Desplaça a -Toolbar.Deselect = No en seleccionis cap -Toolbar.InvertSelection = Inverteix la selecció -Toolbar.FolderOptions = Opcions de carpeta -Toolbar.ShowHiddenFiles = Fitxers i carpetes amagats -Toolbar.ShowSystemFiles = Fitxers del sistema -Toolbar.ShowExtensions = Extensions del nom de fitxer -Toolbar.Settings = Ajustaments del Classic Explorer -Status.FreeSpace = %s (espai disponible en disc: %s) -Status.Item = %s element -Status.Items = %s elements -Status.ItemSelected = %s element seleccionat -Status.ItemsSelected = %s elements seleccionats - - -[cs-CZ] - Czech (Czech Republic) -Copy.Cancel = Storno -Copy.More = Další... -Copy.CopyHere = &Kopírovat sem -Copy.MoveHere = &Přesunout sem -Copy.Title = Potvrdit nahrazení souboru -Copy.Subtitle = Tato složka již obsahuje soubor s názvem %s. -Copy.SubtitleRO = Tato složka již obsahuje soubor jen pro čtení s názvem %s. -Copy.SubtitleSys = Tato složka již obsahuje systémový soubor s názvem %s. -Copy.Prompt1 = Chcete nahradit stávající soubor -Copy.Prompt2 = tímto souborem? -Copy.Yes = &Ano -Copy.No = &Ne -Copy.YesAll = Ano vš&em -Folder.Title = Potvrdit nahrazení složky -Folder.Prompt = Opravdu chcete přesunout nebo zkopírovat tuto složku? -Toolbar.GoUp = O úroveň výš -Toolbar.Cut = Vyjmout -Toolbar.Copy = Kopírovat -Toolbar.Paste = Vložit -Toolbar.PasteShortcut = Vložit zástupce -Toolbar.Delete = Odstranit -Toolbar.Email = Odešle vybrané položky e-mailem -Toolbar.Properties = Vlastnosti -Toolbar.NewFolder = Nová složka -Toolbar.ZipFolder = Nová komprimovaná složka (metoda ZIP) -Toolbar.ExtraLarge = Největší ikony -Toolbar.Large = Velké ikony -Toolbar.Medium = Střední ikony -Toolbar.Small = Malé ikony -Toolbar.List = Seznam -Toolbar.Details = Podrobnosti -Toolbar.Tiles = Dlaždice -Toolbar.Content = Obsah -Toolbar.Undo = Zpět -Toolbar.Redo = Znovu -Toolbar.Refresh = Aktualizovat -Toolbar.Back = Zpět -Toolbar.Forward = Vpřed -Toolbar.Stop = Zastavit -Toolbar.Rename = Přejmenovat -Toolbar.SelectAll = Vybrat vše -Toolbar.CustomizeFolder = Vlastní nastavení této složky -Toolbar.MapDrive = Připojit síťovou jednotku -Toolbar.DisconnectDrive = Odpojit síťovou jednotku -Toolbar.NavigationPane = Navigační podokno -Toolbar.DetailsPane = Podokno podrobností -Toolbar.PreviewPane = Podokno náhledu -Toolbar.CopyTo = Kopírovat do -Toolbar.MoveTo = Přesunout do -Toolbar.Deselect = Zrušit výběr -Toolbar.InvertSelection = Invertovat výběr -Toolbar.FolderOptions = Možnosti složky -Toolbar.ShowHiddenFiles = Skryté soubory a složky -Toolbar.ShowSystemFiles = Systémové soubory -Toolbar.ShowExtensions = Přípony názvů souborů -Status.FreeSpace = %s (volné místo na disku: %s) -Status.Item = %s položka -Status.Items = Počet položek: %s -Status.ItemSelected = %s vybraná položka -Status.ItemsSelected = Vybrané položky: %s - - -[da-DK] - Danish (Denmark) -Copy.Cancel = Annuller -Copy.More = Flere... -Copy.CopyHere = &Kopier hertil -Copy.MoveHere = &Flyt hertil -Copy.Title = Bekræft erstatning af fil -Copy.Subtitle = Denne mappe indeholder allerede en fil med navnet '%s'. -Copy.SubtitleRO = Denne mappe indeholder allerede en skrivebeskyttet fil med navnet '%s'. -Copy.SubtitleSys = Denne mappe indeholder allerede en systemfil med navnet '%s'. -Copy.Prompt1 = Vil du erstatte den eksisterende fil -Copy.Prompt2 = med denne fil? -Copy.Yes = &Ja -Copy.No = &Nej -Copy.YesAll = J&a til alle -Folder.Title = Bekræft erstatning af mappe -Folder.Prompt = Vil du flytte mappen alligevel? -Toolbar.GoUp = Et niveau op -Toolbar.Cut = Klip -Toolbar.Copy = Kopier -Toolbar.Paste = Sæt ind -Toolbar.PasteShortcut = Indsæt genvej -Toolbar.Delete = Slet -Toolbar.Email = Send de markerede elementer med e-mail -Toolbar.Properties = Egenskaber -Toolbar.NewFolder = Ny mappe -Toolbar.ZipFolder = Ny ZIP-komprimeret mappe -Toolbar.ExtraLarge = Ekstra store ikoner -Toolbar.Large = Store ikoner -Toolbar.Medium = Mellemstore ikoner -Toolbar.Small = Små ikoner -Toolbar.List = Oversigt -Toolbar.Details = Detaljer -Toolbar.Tiles = Fliser -Toolbar.Content = Indhold -Toolbar.Undo = Fortryd -Toolbar.Redo = Annuller Fortryd -Toolbar.Refresh = Opdater -Toolbar.Back = Tilbage -Toolbar.Forward = Fremad -Toolbar.Stop = Stop -Toolbar.Rename = Omdøb -Toolbar.SelectAll = Marker alt -Toolbar.CustomizeFolder = Tilpas denne mappe -Toolbar.MapDrive = Tilknyt netværksdrev -Toolbar.DisconnectDrive = Afbryd forbindelsen til et netværksdrev -Toolbar.NavigationPane = Navigationsrude -Toolbar.DetailsPane = Detaljerude -Toolbar.PreviewPane = Indholdsrude -Toolbar.CopyTo = Kopiér til -Toolbar.MoveTo = Flyt til -Toolbar.Deselect = Vælg ingen -Toolbar.InvertSelection = Inverter markeringen -Toolbar.FolderOptions = Mappeindstillinger -Toolbar.ShowHiddenFiles = Skjulte filer og mapper -Toolbar.ShowSystemFiles = Systemfiler -Toolbar.ShowExtensions = Filtypenavne -Status.FreeSpace = %s (ledig diskplads: %s) -Status.Item = %s element -Status.Items = %s elementer -Status.ItemSelected = %s markeret element -Status.ItemsSelected = %s markerede elementer - - -[de-DE] - German (Germany) -Copy.Cancel = Abbrechen -Copy.More = Weitere... -Copy.CopyHere = Hierher &kopieren -Copy.MoveHere = Hierher &verschieben -Copy.Title = Ersetzen von Dateien bestätigen -Copy.Subtitle = Dieser Ordner enthält bereits eine Datei "%s". -Copy.SubtitleRO = Der Ordner enthält bereits eine schreibgeschützte Datei "%s". -Copy.SubtitleSys = Der Ordner enthält bereits eine Systemdatei "%s". -Copy.Prompt1 = Möchten Sie die existierende Datei -Copy.Prompt2 = mit dieser ersetzen? -Copy.Yes = &Ja -Copy.No = &Nein -Copy.YesAll = Ja, &alle -Folder.Title = Ersetzen von Ordnern bestätigen -Folder.Prompt = Soll der Ordner trotzdem verschoben bzw. kopiert werden? -Toolbar.GoUp = Eine Ebene nach oben -Toolbar.Cut = Ausschneiden -Toolbar.Copy = Kopieren -Toolbar.Paste = Einfügen -Toolbar.PasteShortcut = Verknüpfung einfügen -Toolbar.Delete = Löschen -Toolbar.Email = Ausgewählte Elemente in E-Mail senden -Toolbar.Properties = Eigenschaften -Toolbar.NewFolder = Neuer Ordner -Toolbar.ZipFolder = Neuer ZIP-komprimierter Ordner -Toolbar.ExtraLarge = Extra große Symbole -Toolbar.Large = Große Symbole -Toolbar.Medium = Mittelgroße Symbole -Toolbar.Small = Kleine Symbole -Toolbar.List = Liste -Toolbar.Details = Details -Toolbar.Tiles = Kacheln -Toolbar.Content = Inhalt -Toolbar.Undo = Rückgängig -Toolbar.Redo = Wiederholen -Toolbar.Refresh = Aktualisieren -Toolbar.Back = Zurück -Toolbar.Forward = Vorwärts -Toolbar.Stop = Beenden -Toolbar.Rename = Umbenennen -Toolbar.SelectAll = Alles auswählen -Toolbar.CustomizeFolder = Ordner anpassen -Toolbar.MapDrive = Netzlaufwerk verbinden -Toolbar.DisconnectDrive = Netzlaufwerk trennen -Toolbar.NavigationPane = Navigationsbereich -Toolbar.DetailsPane = Detailbereich -Toolbar.PreviewPane = Vorschaufenster -Toolbar.CopyTo = Kopieren nach -Toolbar.MoveTo = Verschieben nach -Toolbar.Deselect = Nichts auswählen -Toolbar.InvertSelection = Auswahl umkehren -Toolbar.FolderOptions = Ordneroptionen -Toolbar.ShowHiddenFiles = Versteckte Dateien und Ordner -Toolbar.ShowSystemFiles = Systemdateien -Toolbar.ShowExtensions = Dateinamenerweiterungen -Status.FreeSpace = %s (Freier Speicherplatz: %s) -Status.Item = %s Element -Status.Items = %s Elemente -Status.ItemSelected = %s Element ausgewählt -Status.ItemsSelected = %s Elemente ausgewählt - - -[el-GR] - Greek (Greece) -Copy.Cancel = Άκυρο -Copy.More = Περισσότερα... -Copy.CopyHere = &Αντιγραφή εδώ -Copy.MoveHere = &Μετακίνηση εδώ -Copy.Title = Επιβεβαίωση αντικατάστασης αρχείου -Copy.Subtitle = Αυτός ο φάκελος περιέχει ήδη ένα αρχείο με όνομα "%s". -Copy.SubtitleRO = Αυτός ο φάκελος περιέχει ήδη ένα αρχείο μόνο για ανάγνωση με όνομα "%s". -Copy.SubtitleSys = Αυτός ο φάκελος περιέχει ήδη ένα αρχείο συστήματος με όνομα "%s". -Copy.Prompt1 = Θέλετε να αντικατασταθεί το υπάρχον αρχείο -Copy.Prompt2 = με αυτό το αρχείο; -Copy.Yes = &Ναι -Copy.No = Ό&χι -Copy.YesAll = Ναι σε ό&λα -Folder.Title = Επιβεβαίωση αντικατάστασης φακέλου -Folder.Prompt = Είστε βέβαιοι ότι θέλετε να μετακινηθεί ή να αντιγραφεί ο φάκελος; -Toolbar.GoUp = Ένα επίπεδο επάνω -Toolbar.Cut = Αποκοπή -Toolbar.Copy = Αντιγραφή -Toolbar.Paste = Επικόλληση -Toolbar.PasteShortcut = Επικόλληση συντόμευσης -Toolbar.Delete = Διαγραφή -Toolbar.Email = Ηλεκτρονική ταχυδρόμηση των επιλεγμένων αντικειμένων -Toolbar.Properties = Ιδιότητες -Toolbar.NewFolder = Νέος φάκελος -Toolbar.ZipFolder = Νέος συμπιεσμένος (μορφή zip) φάκελος -Toolbar.ExtraLarge = Πολύ μεγάλα εικονίδια -Toolbar.Large = Μεγάλα εικονίδια -Toolbar.Medium = Μεσαία εικονίδια -Toolbar.Small = Μικρά εικονίδια -Toolbar.List = Λίστα -Toolbar.Details = Λεπτομέρειες -Toolbar.Tiles = Τίτλοι -Toolbar.Content = Περιεχόμενο -Toolbar.Undo = Αναίρεση -Toolbar.Redo = Επανάληψη -Toolbar.Refresh = Ανανέωση -Toolbar.Back = Πίσω -Toolbar.Forward = Εμπρός -Toolbar.Stop = Τέλος -Toolbar.Rename = Μετονομασία -Toolbar.SelectAll = Επιλογή όλων -Toolbar.CustomizeFolder = Προσαρμογή φακέλου -Toolbar.MapDrive = Αντιστοίχιση δίσκου δικτύου -Toolbar.DisconnectDrive = Αποσύνδεση δίσκου δικτύου -Toolbar.NavigationPane = Παράθυρο περιήγησης -Toolbar.DetailsPane = Παράθυρο λεπτομερειών -Toolbar.PreviewPane = Παράθυρο προεπισκόπησης -Toolbar.CopyTo = Αντιγραφή σε -Toolbar.MoveTo = Μετακίνηση σε -Toolbar.Deselect = Καμία επιλογή -Toolbar.InvertSelection = Αναστροφή επιλογής -Toolbar.FolderOptions = Επιλογές φακέλων -Toolbar.ShowHiddenFiles = Κρυφά αρχεία και φάκελοι -Toolbar.ShowSystemFiles = Αρχεία συστήματος -Toolbar.ShowExtensions = Επεκτάσεις ονόματος αρχείων -Status.FreeSpace = %s (Ελεύθερος χώρος στο δίσκο: %s) -Status.Item = %s στοιχείο -Status.Items = %s στοιχεία -Status.ItemSelected = %s επιλεγμένο στοιχείο -Status.ItemsSelected = %s επιλεγμένα στοιχεία - - -[en-US] - English (United States) -Copy.Cancel = Cancel -Copy.More = More... -Copy.CopyHere = &Copy Here -Copy.MoveHere = &Move Here -Copy.Title = Confirm File Replacement -Copy.Subtitle = This folder already contains a file named '%s'. -Copy.SubtitleRO = This folder already contains a read-only file named '%s'. -Copy.SubtitleSys = This folder already contains a system file named '%s'. -Copy.Prompt1 = Would you like to replace the existing file -Copy.Prompt2 = with this one? -Copy.Yes = &Yes -Copy.No = &No -Copy.YesAll = Yes to &All -Folder.Title = Confirm Folder Replace -Folder.Prompt = Do you still want to move or copy the folder? -Toolbar.GoUp = Up One Level -Toolbar.Cut = Cut -Toolbar.Copy = Copy -Toolbar.Paste = Paste -Toolbar.PasteShortcut = Paste Shortcut -Toolbar.Delete = Delete -Toolbar.Email = E-mail the selected items -Toolbar.Properties = Properties -Toolbar.NewFolder = New Folder -Toolbar.ZipFolder = New Compressed (zipped) Folder -Toolbar.ExtraLarge = Extra Large Icons -Toolbar.Large = Large Icons -Toolbar.Medium = Medium Icons -Toolbar.Small = Small Icons -Toolbar.List = List -Toolbar.Details = Details -Toolbar.Tiles = Tiles -Toolbar.Content = Content -Toolbar.Undo = Undo -Toolbar.Redo = Redo -Toolbar.Refresh = Refresh -Toolbar.Back = Back -Toolbar.Forward = Forward -Toolbar.Stop = Stop -Toolbar.Rename = Rename -Toolbar.SelectAll = Select all -Toolbar.CustomizeFolder = Customize this folder -Toolbar.MapDrive = Map network drive -Toolbar.DisconnectDrive = Disconnect network drive -Toolbar.NavigationPane = Navigation pane -Toolbar.DetailsPane = Details pane -Toolbar.PreviewPane = Preview pane -Toolbar.CopyTo = Copy to -Toolbar.MoveTo = Move to -Toolbar.Deselect = Select none -Toolbar.InvertSelection = Invert selection -Toolbar.FolderOptions = Folder options -Toolbar.ShowHiddenFiles = Hidden files and folders -Toolbar.ShowSystemFiles = System files -Toolbar.ShowExtensions = File name extensions -Status.FreeSpace = %s (Disk free space: %s) -Status.Item = %s item -Status.Items = %s items -Status.ItemSelected = %s item selected -Status.ItemsSelected = %s items selected - - -[es-ES] - Spanish (Spain) -Copy.Cancel = Cancelar -Copy.More = Mas... -Copy.CopyHere = &Copiar aquí -Copy.MoveHere = &Mover aquí -Copy.Title = Confirmar el reemplazo de archivo -Copy.Subtitle = Esta carpeta ya contiene un archivo con el nombre "%s". -Copy.SubtitleRO = Esta carpeta ya contiene un archivo de sólo lectura con el nombre "%s". -Copy.SubtitleSys = Esta carpeta ya contiene un archivo de sistema con el nombre "%s". -Copy.Prompt1 = ¿Desea reemplazar el archivo existente -Copy.Prompt2 = por este otro? -Copy.Yes = &Sí -Copy.No = &No -Copy.YesAll = Sí a &todo -Folder.Title = Confirmar el reemplazo de carpetas -Folder.Prompt = ¿Desea mover o copiar la carpeta de todas formas? -Toolbar.GoUp = Subir un nivel -Toolbar.Cut = Cortar -Toolbar.Copy = Copiar -Toolbar.Paste = Pegar -Toolbar.PasteShortcut = Pegar acceso directo -Toolbar.Delete = Eliminar -Toolbar.Email = Enviar por correo electrónico los elementos siguientes -Toolbar.Properties = Propiedades -Toolbar.NewFolder = Nueva carpeta -Toolbar.ZipFolder = Nueva carpeta comprimida (en zip) -Toolbar.ExtraLarge = Iconos muy grandes -Toolbar.Large = Iconos grandes -Toolbar.Medium = Iconos medianos -Toolbar.Small = Iconos pequeños -Toolbar.List = Lista -Toolbar.Details = Detalles -Toolbar.Tiles = Mosaicos -Toolbar.Content = Contenido -Toolbar.Undo = Deshacer -Toolbar.Redo = Rehacer -Toolbar.Refresh = Actualizar -Toolbar.Back = Atrás -Toolbar.Forward = Adelante -Toolbar.Stop = Detener -Toolbar.Rename = Cambiar nombre -Toolbar.SelectAll = Seleccionar todo -Toolbar.CustomizeFolder = Personalizar esta carpeta -Toolbar.MapDrive = Conectar a unidad de red -Toolbar.DisconnectDrive = Desconectar unidad de red -Toolbar.NavigationPane = Panel de navegación -Toolbar.DetailsPane = Panel de detalles -Toolbar.PreviewPane = Panel de vista previa -Toolbar.CopyTo = Copiar a -Toolbar.MoveTo = Mover a -Toolbar.Deselect = No seleccionar ninguno -Toolbar.InvertSelection = Invertir selección -Toolbar.FolderOptions = Opciones de carpeta -Toolbar.ShowHiddenFiles = Archivos y carpetas ocultos -Toolbar.ShowSystemFiles = Archivos de sistema -Toolbar.ShowExtensions = Extensiones de nombre de archivo -Status.FreeSpace = %s (espacio disponible en disco: %s) -Status.Item = %s elemento -Status.Items = %s elementos -Status.ItemSelected = %s elemento seleccionado -Status.ItemsSelected = %s elementos seleccionados - - -[et-EE] - Estonian (Estonia) -Copy.Cancel = Loobu -Copy.More = Veel... -Copy.CopyHere = &Kopeeri siia -Copy.MoveHere = &Teisalda siia -Copy.Title = Kinnitage failiasendus -Copy.Subtitle = See kaust sisaldab juba faili nimega %s. -Copy.SubtitleRO = See kaust sisaldab juba kirjutuskaitstud faili nimega %s. -Copy.SubtitleSys = See kaust sisaldab juba süsteemifaili nimega %s. -Copy.Prompt1 = Kas soovite asendada olemasoleva faili -Copy.Prompt2 = sellega? -Copy.Yes = &Jah -Copy.No = &Ei -Copy.YesAll = &Kõigile jah -Folder.Title = Kinnitage kausta asendamine -Folder.Prompt = Kas soovite kausta ikkagi teisaldada või kopeerida? -Toolbar.GoUp = Taseme võrra üles -Toolbar.Cut = Lõika -Toolbar.Copy = Kopeeri -Toolbar.Paste = Kleebi -Toolbar.PasteShortcut = Kleebi otsetee -Toolbar.Delete = Kustuta -Toolbar.Email = Saada valitud üksused e-postiga -Toolbar.Properties = Atribuudid -Toolbar.NewFolder = Uus kaust -Toolbar.ZipFolder = Uus tihendatud (zip) kaust -Toolbar.ExtraLarge = Eriti suured ikoonid -Toolbar.Large = Suured ikoonid -Toolbar.Medium = Keskmise suurusega ikoonid -Toolbar.Small = Väikesed ikoonid -Toolbar.List = Loend -Toolbar.Details = Üksikasjad -Toolbar.Tiles = Paanid -Toolbar.Content = Sisu -Toolbar.Undo = Võta tagasi -Toolbar.Redo = Tee uuesti -Toolbar.Refresh = Värskenda -Toolbar.Back = Tagasi -Toolbar.Forward = Edasi -Toolbar.Stop = Lõpeta -Toolbar.Rename = Nimeta ümber -Toolbar.SelectAll = Vali kõik -Toolbar.CustomizeFolder = Kohanda seda kausta -Toolbar.MapDrive = Ühenda võrgudraiv -Toolbar.DisconnectDrive = Katkesta võrgudraivi ühendus -Toolbar.NavigationPane = Navigeerimispaan -Toolbar.DetailsPane = Üksikasjapaan -Toolbar.PreviewPane = Eelvaatepaan -Toolbar.CopyTo = Kopeeri asukohta -Toolbar.MoveTo = Teisalda asukohta -Toolbar.Deselect = Ära vali midagi -Toolbar.InvertSelection = Pööra valik -Toolbar.FolderOptions = Kaustasuvandid -Toolbar.ShowHiddenFiles = Peitfailid ja -kaustad -Toolbar.ShowSystemFiles = Süsteemifailid -Toolbar.ShowExtensions = Failinimede laiendid -Status.FreeSpace = %s (vaba kettaruumi: %s) -Status.Item = %s üksus -Status.Items = %s üksust -Status.ItemSelected = Valitud on %s üksus -Status.ItemsSelected = Valitud on %s üksust - - -[fa-IR] - Persian -Copy.Cancel = لغو -Copy.More = بیشتر... -Copy.CopyHere = &کپی به اینجا -Copy.MoveHere = &انتقال به اینجا -Copy.Title = تأیید جایگزینی پرونده -Copy.Subtitle = ‏‏در حال حاضر این پوشه حاوی پرونده‌ای به نام "%s" است. -Copy.SubtitleRO = ‏‏در حال حاضر این پوشه حاوی پرونده‌ای فقط خواندنی به نام "%s" است. -Copy.SubtitleSys = ‏‏در حال حاضر این پوشه حاوی پرونده‌ای سیستمی به نام "%s" است. -Copy.Prompt1 = آیا می‌خواهید پرونده‌ی موجود را جایگزین کنید -Copy.Prompt2 = با این یکی؟ -Copy.Yes = &بله -Copy.No = &خیر -Copy.YesAll = بله برای &همه -Folder.Title = تأیید جایگزینی پوشه -Folder.Prompt = آیا هنوز می‌خواهید پوشه را کپی یا منتقل کنید؟ -Toolbar.GoUp = یک سطح بالاتر -Toolbar.Cut = برش -Toolbar.Copy = کپی -Toolbar.Paste = جایگذاری -Toolbar.PasteShortcut = جایگذاری میانبر -Toolbar.Delete = حذف -Toolbar.Email = مورد انتخابی را با پست الکترونیکی بفرستید -Toolbar.Properties = خصوصیات -Toolbar.NewFolder = پوشه جدید -Toolbar.ZipFolder = پوشه فشرده ‏(زیپ شده)‏ جدید‫ -Toolbar.ExtraLarge = نمادهای خیلی بزرگ -Toolbar.Large = نمادهای بزرگ -Toolbar.Medium = نمادهای متوسط -Toolbar.Small = نمادهای کوچک -Toolbar.List = لیست -Toolbar.Details = جزئیات -Toolbar.Tiles = موزائیک‌ها -Toolbar.Content = محتوا -Toolbar.Undo = لغو عمل -Toolbar.Redo = انجام مجدد -Toolbar.Refresh = تازه‌کردن -Toolbar.Back = عقب -Toolbar.Forward = جلو -Toolbar.Stop = توقف -Toolbar.Rename = تغییر نام -Toolbar.SelectAll = انتخاب همه -Toolbar.CustomizeFolder = سفارشی کردن این پوشه -Toolbar.MapDrive = نگاشت درایو شبکه -Toolbar.DisconnectDrive = قطع اتصال درایو شبکه -Toolbar.NavigationPane = چارچوب پیمایش -Toolbar.DetailsPane = چارچوب جزئیات -Toolbar.PreviewPane = چارچوب پیش‌نمایش -Toolbar.CopyTo = ‏‏کپی در -Toolbar.MoveTo = انتقال به -Toolbar.Deselect = هیچکدام انتخاب نشود -Toolbar.InvertSelection = معکوس کردن انتخاب -Toolbar.FolderOptions = گزینه های پوشه -Toolbar.ShowHiddenFiles = پرونده و پوشه های پنهان -Toolbar.ShowSystemFiles = پرونده های سیستم -Toolbar.ShowExtensions = پسوندهای نام پرونده ها -Toolbar.Settings = تنظیمات کاوشگر کلاسیک -Status.FreeSpace = %s (فضای خالی دیسک: %s) -Status.Item = %s مورد -Status.Items = %s مورد -Status.ItemSelected = %s مورد انتخاب شده -Status.ItemsSelected = %s مورد انتخاب شده - - -[fi-FI] - Finnish (Finland) -Copy.Cancel = Peruuta -Copy.More = Lisää... -Copy.CopyHere = &Kopioi tähän -Copy.MoveHere = &Siirrä tähän -Copy.Title = Vahvista tiedoston korvaus -Copy.Subtitle = Tämä kansio sisältää jo tiedoston %s. -Copy.SubtitleRO = Tämä kansio sisältää jo vain luku -tiedoston %s. -Copy.SubtitleSys = Tämä kansio sisältää jo järjestelmätiedoston %s. -Copy.Prompt1 = Haluatko korvata tiedoston -Copy.Prompt2 = tällä tiedostolla? -Copy.Yes = &Kyllä -Copy.No = &Ei -Copy.YesAll = Kyllä k&aikkiin -Folder.Title = Vahvista kansion korvaus -Folder.Prompt = Haluatko korvata järjestelmässä jo olevan kansion tiedostot siirrettävän tai kopioitavan kansion samannimisillä tiedostoilla? -Toolbar.GoUp = Yksi taso ylöspäin -Toolbar.Cut = Leikkaa -Toolbar.Copy = Kopioi -Toolbar.Paste = Liitä -Toolbar.PasteShortcut = Liitä pikakuvake -Toolbar.Delete = Poista -Toolbar.Email = Lähetä valitut kohteet sähköpostilla -Toolbar.Properties = Ominaisuudet -Toolbar.NewFolder = Uusi kansio -Toolbar.ZipFolder = Uusi pakattu (zip) kansio -Toolbar.ExtraLarge = Suurimmat kuvakkeet -Toolbar.Large = Suuret kuvakkeet -Toolbar.Medium = Keskikokoiset kuvakkeet -Toolbar.Small = Pienet kuvakkeet -Toolbar.List = Luettelo -Toolbar.Details = Tiedot -Toolbar.Tiles = Kuvakkeet ja tiedot -Toolbar.Content = Sisältö -Toolbar.Undo = Kumoa -Toolbar.Redo = Tee uudelleen -Toolbar.Refresh = Päivitä -Toolbar.Back = Edellinen -Toolbar.Forward = Seuraava -Toolbar.Stop = Pysäytä -Toolbar.Rename = Nimeä uudelleen -Toolbar.SelectAll = Valitse kaikki -Toolbar.CustomizeFolder = Mukauta kansiota -Toolbar.MapDrive = Yhdistä verkkoasemaan -Toolbar.DisconnectDrive = Katkaise yhteys verkkoasemaan -Toolbar.NavigationPane = Siirtymisruutu -Toolbar.DetailsPane = Tiedot-ruutu -Toolbar.PreviewPane = Esikatseluruutu -Toolbar.CopyTo = Kopioi kohteeseen -Toolbar.MoveTo = Siirrä kohteeseen -Toolbar.Deselect = Poista valinnat -Toolbar.InvertSelection = Käänteinen valinta -Toolbar.FolderOptions = Kansion asetukset -Toolbar.ShowHiddenFiles = Piilotetut tiedostot ja kansiot -Toolbar.ShowSystemFiles = Järjestelmätiedostot -Toolbar.ShowExtensions = Tiedostotunnisteet -Status.FreeSpace = %s (levyn vapaa tila: %s) -Status.Item = %s kohde -Status.Items = %s kohdetta -Status.ItemSelected = %s kohde valittu -Status.ItemsSelected = %s kohdetta valittu - - -[fr-FR] - French (France) -Copy.Cancel = Annuler -Copy.More = Autres… -Copy.CopyHere = &Copier ici -Copy.MoveHere = &Déplacer ici -Copy.Title = Confirmer le remplacement du fichier -Copy.Subtitle = Ce dossier contient déjà un fichier nommé « %s ». -Copy.SubtitleRO = Ce dossier contient déjà un fichier en lecture seule nommé « %s ». -Copy.SubtitleSys = Ce dossier contient déjà un fichier système nommé « %s ». -Copy.Prompt1 = Faut-il remplacer le fichier existant -Copy.Prompt2 = par celui-ci ? -Copy.Yes = &Oui -Copy.No = &Non -Copy.YesAll = &Tous -Folder.Title = Confirmation du remplacement du dossier -Folder.Prompt = Faut-il vraiment déplacer ou copier le dossier ? -Toolbar.GoUp = Dossier parent -Toolbar.Cut = Couper -Toolbar.Copy = Copier -Toolbar.Paste = Coller -Toolbar.PasteShortcut = Coller le raccourci -Toolbar.Delete = Supprimer -Toolbar.Email = Envoyer les éléments sélectionnés par courrier électronique -Toolbar.Properties = Propriétés -Toolbar.NewFolder = Nouveau dossier -Toolbar.ZipFolder = Nouveau dossier compressé -Toolbar.ExtraLarge = Très grandes icônes -Toolbar.Large = Grandes icônes -Toolbar.Medium = Icônes moyennes -Toolbar.Small = Petites icônes -Toolbar.List = Liste -Toolbar.Details = Détails -Toolbar.Tiles = Mosaïques -Toolbar.Content = Contenu -Toolbar.Undo = Annuler -Toolbar.Redo = Rétablir -Toolbar.Refresh = Actualiser -Toolbar.Back = Précédent -Toolbar.Forward = Suivant -Toolbar.Stop = Arrêter -Toolbar.Rename = Renommer -Toolbar.SelectAll = Sélectionner tout -Toolbar.CustomizeFolder = Personnaliser ce dossier -Toolbar.MapDrive = Connecter un lecteur réseau -Toolbar.DisconnectDrive = Déconnecter un lecteur réseau -Toolbar.NavigationPane = Volet de navigation -Toolbar.DetailsPane = Volet des détails -Toolbar.PreviewPane = Volet de visualisation -Toolbar.CopyTo = Copier vers -Toolbar.MoveTo = Déplacer vers -Toolbar.Deselect = Aucun -Toolbar.InvertSelection = Inverser la sélection -Toolbar.FolderOptions = Options des dossiers -Toolbar.ShowHiddenFiles = Fichiers et dossiers cachés -Toolbar.ShowSystemFiles = Fichiers système -Toolbar.ShowExtensions = Extensions de noms de fichiers -Status.FreeSpace = %s (espace libre : %s) -Status.Item = %s élément -Status.Items = %s éléments -Status.ItemSelected = %s élément sélectionné -Status.ItemsSelected = %s éléments sélectionnés - - -[gd-GB] - Scottish Gaelic (United Kingdom) -Copy.Cancel = Sguir dheth -Copy.More = Barrachd... -Copy.CopyHere = &Cuir an lethbhreac an-seo -Copy.MoveHere = &Gluais an-seo -Copy.Title = Dearbh an cur an àite -Copy.Subtitle = Tha faidhle air a bheil "%s" sa phasgan seo mu thràth. -Copy.SubtitleRO = Tha faidhle air a bheil "%s" sa phasgan seo mu thràth a tha ri leughadh a-mhàin. -Copy.SubtitleSys = Tha faidhle siostaim air a bheil "%s" sa phasgan seo mu thràth. -Copy.Prompt1 = A bheil thu airson am faidhle seo a chur -Copy.Prompt2 = an àite an fhir làithrich? -Copy.Yes = &Tha -Copy.No = &Chan eil -Copy.YesAll = Th&a ris a h-uile -Folder.Title = Dearbh an cur an àite -Folder.Prompt = A bheil thu airson am pasgan a ghluasad fhathast no airson lethbhreac a dhèanamh dheth? -Toolbar.GoUp = Suas aon ìre -Toolbar.Cut = Gearr -Toolbar.Copy = Dàn lethbhreac -Toolbar.Paste = Cuir ann -Toolbar.PasteShortcut = Cuir ann an ath-ghoirid -Toolbar.Delete = Sguab às -Toolbar.Email = Cuir na thagh thu ann am post-d -Toolbar.Properties = Roghainnean -Toolbar.NewFolder = Pasgan ùr -Toolbar.ZipFolder = Pasgan dùmhlaichte (air a shiopadh) ùr -Toolbar.ExtraLarge = Ìomhaigheagan anabarrach mòr -Toolbar.Large = Ìomhaigheagan mòra -Toolbar.Medium = Ìomhaigheagan meadhanach -Toolbar.Small = Ìomhaigheagan beaga -Toolbar.List = Liosta -Toolbar.Details = Mion-fhiosrachadh -Toolbar.Tiles = Leacagan -Toolbar.Content = Susbaint -Toolbar.Undo = Neo-dhèan -Toolbar.Redo = Ath-dhèan -Toolbar.Refresh = Ath-nuadhaich -Toolbar.Back = Air ais -Toolbar.Forward = Air adhart -Toolbar.Stop = Sguir dheth -Toolbar.Rename = Thoir ainm eile air -Toolbar.SelectAll = Tagh na h-uile -Toolbar.CustomizeFolder = Gnàthaich am pasgan seo -Toolbar.MapDrive = Mapaich draibh an lìonraidh -Toolbar.DisconnectDrive = Dì-cheangail draibh an lìonraidh -Toolbar.NavigationPane = Leòsan na seòladaireachd -Toolbar.DetailsPane = Leòsan a' mhion-fhiosrachaidh -Toolbar.PreviewPane = Leòsan an ro-sheallaidh -Toolbar.CopyTo = Cuir lethbhreac gu -Toolbar.MoveTo = Gluais gu -Toolbar.Deselect = Na tagh gin -Toolbar.InvertSelection = Ais-thionndaidh an taghadh -Toolbar.FolderOptions = Roghainnean a' phasgain -Toolbar.ShowHiddenFiles = Faidhlichean is pasgain fhalaichte -Toolbar.ShowSystemFiles = Faidhlichean an t-siostaim -Toolbar.ShowExtensions = Leudachain ainmean nam faidhle -Status.FreeSpace = %s (Àire saor air an diosga: %s) -Status.Item = %s nì -Status.Items = %s nithean -Status.ItemSelected = %s nì air a thaghadh -Status.ItemsSelected = %s nithean air a thaghadh - - -[he-IL] - Hebrew (Israel) -Copy.Cancel = ביטול -Copy.More = עוד... -Copy.CopyHere = הע&תק לכאן -Copy.MoveHere = הע&בר לכאן -Copy.Title = אישור החלפת קובץ -Copy.Subtitle = תיקיה זו מכילה כבר קובץ בשם '‎‎%s‎‏'‏.‏ -Copy.SubtitleRO = תיקיה זו מכילה כבר קובץ המוגדר לקריאה בלבד בשם '‎‎%s‎‏'.‏ -Copy.SubtitleSys = תיקיה זו מכילה כבר קובץ מערכת בשם '‎‎%s‎'‏.‏ -Copy.Prompt1 = ‏‏האם ברצונך להחליף את הקובץ הקיים -Copy.Prompt2 = בקובץ זה? -Copy.Yes = &כן -Copy.No = &לא -Copy.YesAll = כ&ן לכל -Folder.Title = אישור החלפת תיקיה -Folder.Prompt = האם ברצונך להעביר או להעתיק את התיקיה בכל זאת? -Toolbar.GoUp = רמה אחת למעלה -Toolbar.Cut = גזור -Toolbar.Copy = העתק -Toolbar.Paste = הדבק -Toolbar.PasteShortcut = הדבק קיצור דרך -Toolbar.Delete = מחק -Toolbar.Email = שלח את הפריטים הנבחרים בדואר אלקטרוני -Toolbar.Properties = מאפיינים -Toolbar.NewFolder = תיקיה חדשה -Toolbar.ZipFolder = ‫תיקיה ‫דחוסה ‫(מכווצת) ‫חדשה -Toolbar.ExtraLarge = סמלים גדולים מאוד -Toolbar.Large = סמלים גדולים -Toolbar.Medium = סמלים בינוניים -Toolbar.Small = סמלים קטנים -Toolbar.List = רשימה -Toolbar.Details = פרטים -Toolbar.Tiles = משבצות -Toolbar.Content = תוכן -Toolbar.Undo = בטל -Toolbar.Redo = בצע שוב -Toolbar.Refresh = רענן -Toolbar.Back = אחורה -Toolbar.Forward = קדימה -Toolbar.Stop = עצור -Toolbar.Rename = שינוי שם -Toolbar.SelectAll = בחר הכל -Toolbar.CustomizeFolder = התאמה אישית של תיקיה זו -Toolbar.MapDrive = מיפוי כונן רשת -Toolbar.DisconnectDrive = ניתוק כונן רשת -Toolbar.NavigationPane = חלונית ניווט -Toolbar.DetailsPane = חלונית פרטים -Toolbar.PreviewPane = חלונית תצוגה מקדימה -Toolbar.CopyTo = העתק אל -Toolbar.MoveTo = העבר אל -Toolbar.Deselect = אל תבחר -Toolbar.InvertSelection = הפוך בחירה -Toolbar.FolderOptions = אפשרויות תיקיה -Toolbar.ShowHiddenFiles = קבצים ותיקיות מוסתרים -Toolbar.ShowSystemFiles = קבצי מערכת -Toolbar.ShowExtensions = סיומות שמות קבצים -Status.FreeSpace = %s (שטח פנוי בדיסק: %s) -Status.Item = ‏‏%s פריט -Status.Items = %s פריטים -Status.ItemSelected = פריט %s נבחר -Status.ItemsSelected = %s פריטים נבחרו - - -[hr-HR] - Croatian (Croatia) -Copy.DoForAll = Učini to za sljedećih -Copy.Cancel = Odustani -Copy.More = Više... -Copy.CopyHere = &Kopiraj ovdje -Copy.MoveHere = Pr&emjesti ovdje -Copy.Title = Potvrda zamjene datoteke -Copy.Subtitle = Ova mapa već sadrži datoteku naziva '%s'. -Copy.SubtitleRO = Ova mapa već sadrži datoteku samo za čitanje, nazvanu '%s'. -Copy.SubtitleSys = Ova mapa već sadrži sistemsku datoteku, nazvanu '%s'. -Copy.Prompt1 = Želite li zamijeniti postojeću datoteku -Copy.Prompt2 = s ovom? -Copy.Yes = &Da -Copy.No = &Ne -Copy.YesAll = Da za &sve -Folder.Title = Potvrda zamjene mape -Folder.Prompt = Želite li još uvijek premjestiti ili kopirati mapu? -Toolbar.GoUp = Jednu razinu gore -Toolbar.Cut = Izreži -Toolbar.Copy = Kopiraj -Toolbar.Paste = Zalijepi -Toolbar.PasteShortcut = Zalijepi prečac -Toolbar.Delete = Izbriši -Toolbar.Email = Odabrane stavke pošalji e-poštom -Toolbar.Properties = Svojstva -Toolbar.NewFolder = Nova mapa -Toolbar.ZipFolder = Nova komprimirana (zipana) mapa -Toolbar.ExtraLarge = Vrlo velike ikone -Toolbar.Large = Velike ikone -Toolbar.Medium = Srednje ikone -Toolbar.Small = Male ikone -Toolbar.List = Popis -Toolbar.Details = Detalji -Toolbar.Tiles = Pločice -Toolbar.Content = Sadržaj -Toolbar.Undo = Poništi -Toolbar.Redo = Ponovi -Toolbar.Refresh = Osvježi -Toolbar.Back = Natrag -Toolbar.Forward = Naprijed -Toolbar.Stop = Prekini -Toolbar.Rename = Preimenuj -Toolbar.SelectAll = Odaberi sve -Toolbar.CustomizeFolder = Prilagodi ovu mapu -Toolbar.MapDrive = Mapiranje mrežnog pogona -Toolbar.DisconnectDrive = Prekid veze s mrežnim pogonom -Toolbar.NavigationPane = Navigacijsko okno -Toolbar.DetailsPane = Okno s detaljima -Toolbar.PreviewPane = Okno pretpregleda -Toolbar.CopyTo = Kopiraj u -Toolbar.MoveTo = Premjesti u -Toolbar.Deselect = Bez odabira -Toolbar.InvertSelection = Obrni odabir -Toolbar.FolderOptions = Mogućnosti mapa -Toolbar.ShowHiddenFiles = Skrivene datoteke i mape -Toolbar.ShowSystemFiles = Sistemske datoteke -Toolbar.ShowExtensions = Datotečni nastavci -Status.FreeSpace = %s (slobodan prostor na disku: %s) -Status.Item = %s stavka -Status.Items = Broj stavki: %s -Status.ItemSelected = Odabrano stavki: %s -Status.ItemsSelected = Odabrano stavki: %s - - -[hu-HU] - Hungarian (Hungary) -Copy.Cancel = Mégse -Copy.More = Egyebek... -Copy.CopyHere = Más&olás ide -Copy.MoveHere = Át&helyezés ide -Copy.Title = Fájlcsere megerősítése -Copy.Subtitle = A mappa már tartalmaz egy '%s' nevű fájlt. -Copy.SubtitleRO = Ez a mappa már tartalmaz egy '%s' nevű írásvédett fájlt. -Copy.SubtitleSys = Ez a mappa már tartalmaz egy '%s' nevű rendszerfájlt. -Copy.Prompt1 = Kicseréli a létező fájlt -Copy.Prompt2 = ezzel? -Copy.Yes = &Igen -Copy.No = &Nem -Copy.YesAll = Igen, &mindet -Folder.Title = Mappacsere megerősítése -Folder.Prompt = Folytatja a műveletet? -Toolbar.GoUp = Egy szinttel feljebb -Toolbar.Cut = Kivágás -Toolbar.Copy = Másolás -Toolbar.Paste = Beillesztés -Toolbar.PasteShortcut = Parancsikon beillesztése -Toolbar.Delete = Törlés -Toolbar.Email = A kijelölt elemek elküldése e-mailben -Toolbar.Properties = Tulajdonságok -Toolbar.NewFolder = Új mappa -Toolbar.ZipFolder = Új tömörített mappa -Toolbar.ExtraLarge = Extra nagy ikonok -Toolbar.Large = Nagy ikonok -Toolbar.Medium = Közepes ikonok -Toolbar.Small = Kis ikonok -Toolbar.List = Lista -Toolbar.Details = Részletek -Toolbar.Tiles = Mozaik -Toolbar.Content = Tartalom -Toolbar.Undo = Visszavonás -Toolbar.Redo = Mégis -Toolbar.Refresh = Frissítés -Toolbar.Back = Vissza -Toolbar.Forward = Előre -Toolbar.Stop = Leállítás -Toolbar.Rename = Átnevezés -Toolbar.SelectAll = Az összes kijelölése -Toolbar.CustomizeFolder = Mappa testreszabása -Toolbar.MapDrive = Hálózati meghajtó csatlakoztatása -Toolbar.DisconnectDrive = Hálózati meghajtó leválasztása -Toolbar.NavigationPane = Navigációs ablak -Toolbar.DetailsPane = Részletek ablaktábla -Toolbar.PreviewPane = Betekintő ablaktábla -Toolbar.CopyTo = Másolási cél -Toolbar.MoveTo = Áthelyezési cél -Toolbar.Deselect = Kijelölés megszüntetése -Toolbar.InvertSelection = Kijelölés megfordítása -Toolbar.FolderOptions = Mappa beállításai -Toolbar.ShowHiddenFiles = Rejtett fájlok és mappák -Toolbar.ShowSystemFiles = Rendszerfájlok -Toolbar.ShowExtensions = Fájlnévkiterjesztések -Status.FreeSpace = %s (szabad lemezterület: %s) -Status.Item = %s elem -Status.Items = %s elem -Status.ItemSelected = %s kijelölt elem -Status.ItemsSelected = %s kijelölt elem - - -[is-IS] - Icelandic (Iceland) -Toolbar.Settings = Classic Explorer stillingar -Copy.Cancel = Hætta við -Copy.More = Meira... -Copy.CopyHere = &Afrita hingað -Copy.MoveHere = &Færa hingað -Copy.Title = Skipta út skrá -Copy.Subtitle = Endastaðurinn inniheldur þegar skrá með heitinu '%s'. -Copy.SubtitleRO = Endastaðurinn inniheldur þegar skrifvarða skrá með heitinu '%s'. -Copy.SubtitleSys = Endastaðurinn inniheldur þegar stýrikerfisskrá með heitinu '%s'. -Copy.Prompt1 = Viltu skipta út skránni á endastaðnum -Copy.Prompt2 = fyrir þessa skrá? -Copy.Yes = &Já -Copy.No = &Nei -Copy.YesAll = Já við &öllu -Folder.Title = Skipta út möppu -Folder.Prompt = Ertu viss um að þú viljir færa eða afrita möppuna? -Toolbar.GoUp = Upp um eitt þrep -Toolbar.Cut = Klippa -Toolbar.Copy = Afrita -Toolbar.Paste = Líma -Toolbar.PasteShortcut = Líma flýtileið -Toolbar.Delete = Eyða -Toolbar.Email = Senda valin atriði með tölvupósti -Toolbar.Properties = Eiginleikar -Toolbar.NewFolder = Ný mappa -Toolbar.ZipFolder = Ný þjöppuð (zip-þjöppuð) mappa -Toolbar.ExtraLarge = Mjög stór tákn -Toolbar.Large = Stór tákn -Toolbar.Medium = Meðalstór tákn -Toolbar.Small = Lítil tákn -Toolbar.List = Listi -Toolbar.Details = Upplýsingar -Toolbar.Tiles = Reitir -Toolbar.Content = Efni -Toolbar.Undo = Afturkalla -Toolbar.Redo = Endurgera -Toolbar.Refresh = Endurhlaða -Toolbar.Back = Til baka -Toolbar.Forward = Áfram -Toolbar.Stop = Stöðva -Toolbar.Rename = Endurnefna -Toolbar.SelectAll = Velja allt -Toolbar.CustomizeFolder = Sérstilla þessa möppu -Toolbar.MapDrive = Tengja netdrif -Toolbar.DisconnectDrive = Aftengja netdrif -Toolbar.NavigationPane = Yfirlitssvæði -Toolbar.DetailsPane = Upplýsingasvæði -Toolbar.PreviewPane = Forskoðunarsvæði -Toolbar.CopyTo = Afrita til -Toolbar.MoveTo = Færa til -Toolbar.Deselect = Velja ekkert -Toolbar.InvertSelection = Umsnúa vali -Toolbar.FolderOptions = Möppuvalkostir -Toolbar.ShowHiddenFiles = Faldar skrár og möppur -Toolbar.ShowSystemFiles = Kerfisskrár -Toolbar.ShowExtensions = Skráarendingar -Status.FreeSpace = %s (laust pláss: %s) -Status.Item = %s atriði -Status.Items = %s atriði -Status.ItemSelected = %s atriði valin -Status.ItemsSelected = %s atriði valin - - -[it-IT] - Italian (Italy) -Copy.Cancel = Annulla -Copy.More = Altro... -Copy.CopyHere = &Copia qui -Copy.MoveHere = &Sposta qui -Copy.Title = Conferma sostituzione file -Copy.Subtitle = La cartella contiene già un file di nome "%s". -Copy.SubtitleRO = La cartella contiene già un file di sola lettura di nome "%s". -Copy.SubtitleSys = La cartella contiene già un file di sistema di nome "%s". -Copy.Prompt1 = Sostituire il file esistente -Copy.Prompt2 = con questo file? -Copy.Yes = &Sì -Copy.No = &No -Copy.YesAll = Sì t&utti -Folder.Title = Conferma sostituzione cartella -Folder.Prompt = Continuare? -Toolbar.GoUp = Cartella superiore -Toolbar.Cut = Taglia -Toolbar.Copy = Copia -Toolbar.Paste = Incolla -Toolbar.PasteShortcut = Incolla collegamento -Toolbar.Delete = Elimina -Toolbar.Email = Invia gli elementi selezionati via e-mail -Toolbar.Properties = Proprietà -Toolbar.NewFolder = Nuova cartella -Toolbar.ZipFolder = Nuova cartella compressa -Toolbar.ExtraLarge = Icone molto grandi -Toolbar.Large = Icone grandi -Toolbar.Medium = Icone medie -Toolbar.Small = Icone piccole -Toolbar.List = Elenco -Toolbar.Details = Dettagli -Toolbar.Tiles = Titoli -Toolbar.Content = Contenuto -Toolbar.Undo = Annulla -Toolbar.Redo = Ripeti -Toolbar.Refresh = Aggiorna -Toolbar.Back = Indietro -Toolbar.Forward = Avanti -Toolbar.Stop = Termina -Toolbar.Rename = Rinomina -Toolbar.SelectAll = Seleziona tutto -Toolbar.CustomizeFolder = Personalizza cartella -Toolbar.MapDrive = Connetti unità di rete -Toolbar.DisconnectDrive = Disconnetti unità di rete -Toolbar.NavigationPane = Riquadro di spostamento -Toolbar.DetailsPane = Riquadro dettagli -Toolbar.PreviewPane = Riquadro di anteprima -Toolbar.CopyTo = Copia in -Toolbar.MoveTo = Sposta in -Toolbar.Deselect = Deseleziona tutto -Toolbar.InvertSelection = Inverti selezione -Toolbar.FolderOptions = Opzioni cartella -Toolbar.ShowHiddenFiles = Cartelle e file nascosti -Toolbar.ShowSystemFiles = File di sistema -Toolbar.ShowExtensions = Mostra estensioni file -Status.FreeSpace = %s (Spazio disponibile: %s) -Status.Item = %s elemento -Status.Items = Elementi: %s -Status.ItemSelected = %s elemento selezionato -Status.ItemsSelected = %s elementi selezionati - - -[ja-JP] - Japanese (Japan) -Copy.Cancel = キャンセル -Copy.More = その他... -Copy.CopyHere = ここにコピー(&C) -Copy.MoveHere = ここに移動(&M) -Copy.Title = ファイルの上書きの確認 -Copy.Subtitle = このフォルダーには既に '%s' ファイルが存在します。 -Copy.SubtitleRO = このフォルダーには既に読み取り専用ファイル '%s' が含まれています。 -Copy.SubtitleSys = このフォルダーには既にシステム ファイル '%s' が含まれています。 -Copy.Prompt1 = 現在のファイル -Copy.Prompt2 = を次の新しいファイルで置き換えますか? -Copy.Yes = はい(&Y) -Copy.No = いいえ(&N) -Copy.YesAll = すべて上書き(&A) -Folder.Title = フォルダーの上書きの確認 -Folder.Prompt = フォルダーを移動またはコピーしますか? -Toolbar.GoUp = 1 つ上のフォルダーへ -Toolbar.Cut = 切り取り -Toolbar.Copy = コピー -Toolbar.Paste = 貼り付け -Toolbar.PasteShortcut = ショートカットの貼り付け -Toolbar.Delete = 削除 -Toolbar.Email = 選択した項目を電子メールで送信する -Toolbar.Properties = プロパティ -Toolbar.NewFolder = 新しいフォルダー -Toolbar.ZipFolder = 新しい圧縮された (ZIP) フォルダー -Toolbar.ExtraLarge = 特大アイコン -Toolbar.Large = 大アイコン -Toolbar.Medium = 中アイコン -Toolbar.Small = 小アイコン -Toolbar.List = 一覧 -Toolbar.Details = 詳細 -Toolbar.Tiles = 並べて表示 -Toolbar.Content = コンテンツ -Toolbar.Undo = 元に戻す -Toolbar.Redo = やり直し -Toolbar.Refresh = 最新の情報に更新 -Toolbar.Back = 戻る -Toolbar.Forward = 進む -Toolbar.Stop = 中止 -Toolbar.Rename = 名前の変更 -Toolbar.SelectAll = すべて選択 -Toolbar.CustomizeFolder = このフォルダーのカスタマイズ -Toolbar.MapDrive = ネットワーク ドライブの割り当て -Toolbar.DisconnectDrive = ネットワーク ドライブの切断 -Toolbar.NavigationPane = ナビゲーション ウィンドウ -Toolbar.DetailsPane = 詳細ウィンドウ -Toolbar.PreviewPane = プレビュー ウィンドウ -Toolbar.CopyTo = コピー先​​ -Toolbar.MoveTo = 移動先​​ -Toolbar.Deselect = 選択解除 -Toolbar.InvertSelection = 選択の切り替え -Toolbar.FolderOptions = フォルダー オプション -Toolbar.ShowHiddenFiles = ファイルとフォルダーの表示 -Toolbar.ShowSystemFiles = システム ファイル -Toolbar.ShowExtensions = ファイル名拡張子 -Status.FreeSpace = %s (空きディスク領域: %s) -Status.Item = %s 個 -Status.Items = %s 個の項目 -Status.ItemSelected = %s 個の項目を選択 -Status.ItemsSelected = %s 個の項目を選択 - - -[ko-KR] - Korean (Korea) -Copy.Cancel = 취소 -Copy.More = 자세히... -Copy.CopyHere = 여기에 복사(&C) -Copy.MoveHere = 여기로 이동(&M) -Copy.Title = 파일 바꾸기 확인 -Copy.Subtitle = 이 폴더에 이미 '%s' 파일이 있습니다. -Copy.SubtitleRO = 이 폴더에 이미 '%s' 읽기 전용 파일이 있습니다. -Copy.SubtitleSys = 이 폴더에 이미 '%s' 시스템 파일이 있습니다. -Copy.Prompt1 = 기존 파일을 -Copy.Prompt2 = 이 파일로 바꾸시겠습니까? -Copy.Yes = 예(&Y) -Copy.No = 아니오(&N) -Copy.YesAll = 모두 예(&A) -Folder.Title = 폴더 바꾸기 확인 -Folder.Prompt = 폴더를 이동하거나 복사하시겠습니까? -Toolbar.GoUp = 한 수준 위로 -Toolbar.Cut = 잘라내기 -Toolbar.Copy = 복사 -Toolbar.Paste = 붙여넣기 -Toolbar.PasteShortcut = 바로 가기 붙여넣기 -Toolbar.Delete = 삭제 -Toolbar.Email = 항목을 전자 메일로 보내기 -Toolbar.Properties = 속성 -Toolbar.NewFolder = 새 폴더 -Toolbar.ZipFolder = 새 압축(ZIP) 폴더 -Toolbar.ExtraLarge = 아주 큰 아이콘 -Toolbar.Large = 큰 아이콘 -Toolbar.Medium = 보통 아이콘 -Toolbar.Small = 작은 아이콘 -Toolbar.List = 목록 -Toolbar.Details = 자세히 -Toolbar.Tiles = 나란히 보기 -Toolbar.Content = 내용 -Toolbar.Undo = 실행 취소 -Toolbar.Redo = 다시 실행 -Toolbar.Refresh = 새로 고침 -Toolbar.Back = 뒤로 -Toolbar.Forward = 앞으로 -Toolbar.Stop = 중지 -Toolbar.Rename = 이름 바꾸기 -Toolbar.SelectAll = 모두 선택 -Toolbar.CustomizeFolder = 현재 폴더 사용자 지정 -Toolbar.MapDrive = 네트워크 드라이브 연결 -Toolbar.DisconnectDrive = 네트워크 드라이브 연결 끊기 -Toolbar.NavigationPane = 탐색 창 -Toolbar.DetailsPane = 세부 정보 창 -Toolbar.PreviewPane = 미리 보기 창 -Toolbar.CopyTo = 복사 위치 -Toolbar.MoveTo = 이동 위치 -Toolbar.Deselect = 선택 안 함 -Toolbar.InvertSelection = 선택 영역 반전 -Toolbar.FolderOptions = 폴더 옵션 -Toolbar.ShowHiddenFiles = 숨김 파일 및 폴더 -Toolbar.ShowSystemFiles = 시스템 파일 -Toolbar.ShowExtensions = 파일 확장명 -Status.FreeSpace = %s (빈 디스크 공간: %s) -Status.Item = %s 항목 -Status.Items = %s 항목 -Status.ItemSelected = %s개 항목을 선택했습니다. -Status.ItemsSelected = %s개 항목을 선택했습니다. - - -[lt-LT] - Lithuanian (Lithuania) -Copy.Cancel = Atšaukti -Copy.More = Daugiau... -Copy.CopyHere = &Kopijuoti čia -Copy.MoveHere = &Perkelti čia -Copy.Title = Patvirtinti failo pakeitimą -Copy.Subtitle = Šiame aplanke jau yra failas, pavadintas '%s'. -Copy.SubtitleRO = Aplanke jau yra failas, skirtas tik skaityti, pavadintas '%s'. -Copy.SubtitleSys = Aplanke jau yra sistemos failas, pavadintas '%s'. -Copy.Prompt1 = Ar pakeisti esamą failą -Copy.Prompt2 = šiuo? -Copy.Yes = &Taip -Copy.No = &Ne -Copy.YesAll = Taip &viskam -Folder.Title = Patvirtinti aplanko pakeitimą -Folder.Prompt = Ar vis tiek perkelti, ar kopijuoti aplanką? -Toolbar.GoUp = Vienu lygiu aukščiau -Toolbar.Cut = Iškirpti -Toolbar.Copy = Kopijuoti -Toolbar.Paste = Įklijuoti -Toolbar.PasteShortcut = Įklijuoti nuorodą -Toolbar.Delete = Naikinti -Toolbar.Email = Pažymėtus elementus siųsti el. paštu -Toolbar.Properties = Ypatybės -Toolbar.NewFolder = Naujas aplankas -Toolbar.ZipFolder = Naujas suglaudintas (zip) aplankas -Toolbar.ExtraLarge = Padidintos piktogramos -Toolbar.Large = Didelės piktogramos -Toolbar.Medium = Vidutinės piktogramos -Toolbar.Small = Mažos piktogramos -Toolbar.List = Sąrašas -Toolbar.Details = Išsami informacija -Toolbar.Tiles = Išklotinės -Toolbar.Content = Turinys -Toolbar.Undo = Anuliuoti -Toolbar.Redo = Perdaryti -Toolbar.Refresh = Atnaujinti -Toolbar.Back = Atgal į: -Toolbar.Forward = Pirmyn -Toolbar.Stop = Stabdyti -Toolbar.Rename = Pervardyti -Toolbar.SelectAll = Žymėti viską -Toolbar.CustomizeFolder = Tinkinti šį aplanką -Toolbar.MapDrive = Susieti tinklo diską -Toolbar.DisconnectDrive = Atjungti tinklo diską -Toolbar.NavigationPane = Naršymo sritis -Toolbar.DetailsPane = Išsamios informacijos sritis -Toolbar.PreviewPane = Peržiūros sritis -Toolbar.CopyTo = Kopijuoti į -Toolbar.MoveTo = Perkelti į -Toolbar.Deselect = Nieko nežymėti -Toolbar.InvertSelection = Žymėti priešingai -Toolbar.FolderOptions = Aplanko parinktys -Toolbar.ShowHiddenFiles = Paslėpti failai ir aplankai -Toolbar.ShowSystemFiles = Sistemos failai -Toolbar.ShowExtensions = Failų vardų plėtiniai -Status.FreeSpace = %s (Diske laisvos vietos: %s) -Status.Item = %s elementas -Status.Items = %s elementai -Status.ItemSelected = %s pažymėtas elementas -Status.ItemsSelected = Pažymėta elementų: %s - - -[lv-LV] - Latvian (Latvia) -Copy.Cancel = Atcelt -Copy.More = Vēl... -Copy.CopyHere = &Kopēt šeit -Copy.MoveHere = &Pārvietot šeit -Copy.Title = Failu aizstāšanas apstiprināšana -Copy.Subtitle = Šajā mapē jau ir fails '%s'. -Copy.SubtitleRO = Šajā mapē jau ir tikai lasāms fails '%s'. -Copy.SubtitleSys = Šajā mapē jau ir sistēmas fails '%s'. -Copy.Prompt1 = Vai vēlaties aizstāt esošo failu -Copy.Prompt2 = ar šo? -Copy.Yes = &Jā -Copy.No = &Nē -Copy.YesAll = Jā, &visus -Folder.Title = Mapju aizstāšanas apstiprināšana -Folder.Prompt = Vai tiešām vēlaties pārvietot vai kopēt šo mapi? -Toolbar.GoUp = Vienu līmeni augstāk -Toolbar.Cut = Izgriezt -Toolbar.Copy = Kopēt -Toolbar.Paste = Ielīmēt -Toolbar.PasteShortcut = Ielīmēt saīsni -Toolbar.Delete = Dzēst -Toolbar.Email = Nosūtīt atlasītos vienumus pa e-pastu -Toolbar.Properties = Rekvizīti -Toolbar.NewFolder = Jauna mape -Toolbar.ZipFolder = Jauna saspiestā (tilpsaspiestā) mape -Toolbar.ExtraLarge = Ļoti lielas ikonas -Toolbar.Large = Lielas ikonas -Toolbar.Medium = Vidējas ikonas -Toolbar.Small = Mazas ikonas -Toolbar.List = Saraksts -Toolbar.Details = Detaļas -Toolbar.Tiles = Mozaīka -Toolbar.Content = Saturs -Toolbar.Undo = Atsaukt -Toolbar.Redo = Atcelt atsaukšanu -Toolbar.Refresh = Atsvaidzināt -Toolbar.Back = Atpakaļ -Toolbar.Forward = Uz priekšu -Toolbar.Stop = Apturēt -Toolbar.Rename = Pārdēvēt -Toolbar.SelectAll = Atlasīt visus -Toolbar.CustomizeFolder = Pielāgot šo mapi -Toolbar.MapDrive = Kartēt tīkla disku -Toolbar.DisconnectDrive = Atvienot tīkla disku -Toolbar.NavigationPane = Navigācijas rūts -Toolbar.DetailsPane = Detalizētas informācijas rūts -Toolbar.PreviewPane = Priekšskatījuma rūts -Toolbar.CopyTo = Kopēt uz -Toolbar.MoveTo = Pārvietot uz -Toolbar.Deselect = Neatlasīt neko -Toolbar.InvertSelection = Mainīt atlasi uz pretējo -Toolbar.FolderOptions = Mapes opcijas -Toolbar.ShowHiddenFiles = Slēptie faili un mapes -Toolbar.ShowSystemFiles = Sistēmas faili -Toolbar.ShowExtensions = Failu nosaukumu paplašinājumi -Status.FreeSpace = %s (brīvā vieta diskā: %s) -Status.Item = %s vienums -Status.Items = %s vienumi -Status.ItemSelected = Atlasīts %s vienums -Status.ItemsSelected = Atlasīti %s vienumi - - -[mk-MK] - Macedonian (Macedonia) -Copy.Cancel = Откажи -Copy.More = Повеќе... -Copy.CopyHere = Копирај тука -Copy.MoveHere = Премести тука -Copy.Title = Потврди замена на фајл -Copy.Subtitle = Тој фолдер веќе содржи фајл со име '%s'. -Copy.SubtitleRO = Тој фолдер веќе содржи фајл само за читање со име '%s'. -Copy.SubtitleSys = Тој фолдер веќе содржи системски фајл со име '%s'. -Copy.Prompt1 = Дали сакате да замените постоечкиот фајл -Copy.Prompt2 = а тој? -Copy.Yes = Да -Copy.No = Не -Copy.YesAll = "Да" за сите -Folder.Title = Потврда за промена на фолдерот -Folder.Prompt = Сеуште ли сакате да го преместите или копирате фолдерот? -Toolbar.GoUp = Едно ниво нагоре -Toolbar.Cut = Исечи -Toolbar.Copy = Копирај -Toolbar.Paste = Стави -Toolbar.PasteShortcut = Стави краток пат -Toolbar.Delete = Избриши -Toolbar.Email = Испрати ги селектираните фајлови по електронска пошта -Toolbar.Properties = Својства -Toolbar.NewFolder = Нов фолдер -Toolbar.ZipFolder = Нова компресирана (зипувана) папка -Toolbar.ExtraLarge = Многу големи икони -Toolbar.Large = Големи икони -Toolbar.Medium = Средни икони -Toolbar.Small = Мали икони -Toolbar.List = Список -Toolbar.Details = Детали -Toolbar.Tiles = Мозаик -Toolbar.Content = Содржина -Toolbar.Undo = врати -Toolbar.Redo = повтори -Toolbar.Refresh = Обнови -Toolbar.Back = Назад -Toolbar.Forward = Напред -Toolbar.Stop = Застани -Toolbar.Rename = Преименување -Toolbar.SelectAll = Селектирај ги сите -Toolbar.CustomizeFolder = Персонализирање на тој фолдер -Toolbar.MapDrive = Назначување на мрежен уред -Toolbar.DisconnectDrive = Исклучи го мрежниот уред -Toolbar.NavigationPane = Навигационен екран -Toolbar.DetailsPane = Екран за подетални податоци -Toolbar.PreviewPane = Прозорец за визуализација -Toolbar.CopyTo = Копирај во -Toolbar.MoveTo = Премести во -Toolbar.Deselect = Не избирај ништо -Toolbar.InvertSelection = Преврти го изборот -Toolbar.FolderOptions = Опции за папка -Toolbar.ShowHiddenFiles = Сокриени датотеки и папки -Toolbar.ShowSystemFiles = Системски датотеки -Toolbar.ShowExtensions = Датотечни наставки -Status.FreeSpace = %s (Слободно место на дискот: %s) -Status.Item = %s фајл -Status.Items = %s фајлови -Status.ItemSelected = %s селектиран фајл -Status.ItemsSelected = %s селектирани фајлови - - -[nb-NO] - Norwegian, Bokmål (Norway) -Copy.Cancel = Avbryt -Copy.More = Mer... -Copy.CopyHere = &Kopier hit -Copy.MoveHere = &Flytt hit -Copy.Title = Bekreft erstatting av fil -Copy.Subtitle = Mappen inneholder allerede filen %s. -Copy.SubtitleRO = Mappen inneholder allerede den skrivebeskyttede filen %s. -Copy.SubtitleSys = Mappen inneholder allerede systemfilen %s. -Copy.Prompt1 = Vil du erstatte den eksisterende filen -Copy.Prompt2 = med denne? -Copy.Yes = &Ja -Copy.No = &Nei -Copy.YesAll = J&a til alt -Folder.Title = Bekreft erstatting av mappe -Folder.Prompt = Vil du likevel flytte eller kopiere mappen? -Toolbar.GoUp = Opp ett nivå -Toolbar.Cut = Klipp ut -Toolbar.Copy = Kopier -Toolbar.Paste = Lim inn -Toolbar.PasteShortcut = Lim inn snarvei -Toolbar.Delete = Slett -Toolbar.Email = Send valgte elementer via e-post -Toolbar.Properties = Egenskaper -Toolbar.NewFolder = Ny mappe -Toolbar.ZipFolder = Ny komprimert (zippet) mappe -Toolbar.ExtraLarge = Ekstra store ikoner -Toolbar.Large = Store ikoner -Toolbar.Medium = Middels store ikoner -Toolbar.Small = Små ikoner -Toolbar.List = Liste -Toolbar.Details = Detaljer -Toolbar.Tiles = Side ved side -Toolbar.Content = Innhold -Toolbar.Undo = Angre -Toolbar.Redo = Gjør om -Toolbar.Refresh = Oppdater -Toolbar.Back = Tilbake -Toolbar.Forward = Fremover -Toolbar.Stop = Stopp -Toolbar.Rename = Gi nytt navn -Toolbar.SelectAll = Merk alt -Toolbar.CustomizeFolder = Tilpass denne mappen -Toolbar.MapDrive = Koble til nettverksstasjon -Toolbar.DisconnectDrive = Koble fra nettverksstasjon -Toolbar.NavigationPane = Navigasjonsrute -Toolbar.DetailsPane = Detaljrute -Toolbar.PreviewPane = Forhåndsvisningsrute -Toolbar.CopyTo = Kopier til -Toolbar.MoveTo = Flytt til -Toolbar.Deselect = Merk ingenting -Toolbar.InvertSelection = Inverter utvalg -Toolbar.FolderOptions = Mappealternativer -Toolbar.ShowHiddenFiles = Skjulte filer og mapper -Toolbar.ShowSystemFiles = Systemfiler -Toolbar.ShowExtensions = Filtyper -Status.FreeSpace = %s (Ledig plass på disken: %s) -Status.Item = %s element -Status.Items = %s elementer -Status.ItemSelected = %s element er merket -Status.ItemsSelected = %s elementer er merket - - -[nl-NL] - Dutch (Netherlands) -Copy.Cancel = Annuleren -Copy.More = Meer... -Copy.CopyHere = Hierheen &kopiëren -Copy.MoveHere = Hi&erheen verplaatsen -Copy.Title = Vervangen van bestand bevestigen -Copy.Subtitle = In deze map bevindt zich al een bestand met de naam %s. -Copy.SubtitleRO = In deze map bevindt zich al een bestand met het kenmerk Alleen-lezen en de naam %s. -Copy.SubtitleSys = In deze map bevindt zich al een systeembestand met de naam %s. -Copy.Prompt1 = Wilt u het bestaande bestand: -Copy.Prompt2 = vervangen door het onderstaande bestand? -Copy.Yes = &Ja -Copy.No = &Nee -Copy.YesAll = J&a op alles -Folder.Title = Vervangen van map bevestigen -Folder.Prompt = Wilt u de bestanden in de bestaande map vervangen door de bestanden in de map die u verplaatst of kopieert, als de bestanden dezelfde naam hebben? -Toolbar.GoUp = Bovenliggende map -Toolbar.Cut = Knippen -Toolbar.Copy = Kopiëren -Toolbar.Paste = Plakken -Toolbar.PasteShortcut = Snelkoppeling plakken -Toolbar.Delete = Verwijderen -Toolbar.Email = De geselecteerde items per e-mail verzenden -Toolbar.Properties = Eigenschappen -Toolbar.NewFolder = Nieuwe map -Toolbar.ZipFolder = Nieuwe gecomprimeerde (gezipte) map -Toolbar.ExtraLarge = Extra grote pictogrammen -Toolbar.Large = Grote pictogrammen -Toolbar.Medium = Normale pictogrammen -Toolbar.Small = Kleine pictogrammen -Toolbar.List = Lijst -Toolbar.Details = Details -Toolbar.Tiles = Tegels -Toolbar.Content = Inhoud -Toolbar.Undo = Ongedaan maken -Toolbar.Redo = Opnieuw -Toolbar.Refresh = Vernieuwen -Toolbar.Back = Vorige -Toolbar.Forward = Volgende -Toolbar.Stop = Stoppen -Toolbar.Rename = Naam wijzigen -Toolbar.SelectAll = Alles selecteren -Toolbar.CustomizeFolder = Deze map aanpassen -Toolbar.MapDrive = Netwerkverbinding maken -Toolbar.DisconnectDrive = Netwerkverbinding verbreken -Toolbar.NavigationPane = Navigatievenster -Toolbar.DetailsPane = Detailvenster -Toolbar.PreviewPane = Voorbeeldvenster -Toolbar.CopyTo = Kopiëren naar -Toolbar.MoveTo = Verplaatsen naar -Toolbar.Deselect = Niets selecteren -Toolbar.InvertSelection = Selectie omkeren -Toolbar.FolderOptions = Mapopties -Toolbar.ShowHiddenFiles = Verborgen bestanden en mappen -Toolbar.ShowSystemFiles = Systeembestanden -Toolbar.ShowExtensions = Bestandsnaamextensies -Status.FreeSpace = %s (beschikbare schijfruimte: %s) -Status.Item = %s item -Status.Items = %s items -Status.ItemSelected = %s item geselecteerd -Status.ItemsSelected = %s items geselecteerd - - -[pl-PL] - Polish (Poland) -Copy.Cancel = Anuluj -Copy.More = Więcej... -Copy.CopyHere = &Kopiuj tutaj -Copy.MoveHere = Prze&nieś tutaj -Copy.Title = Potwierdź zamianę pliku -Copy.Subtitle = Ten folder zawiera już plik o nazwie „%s”. -Copy.SubtitleRO = Ten folder zawiera już plik tylko do odczytu o nazwie „%s”. -Copy.SubtitleSys = Ten folder zawiera już plik systemowy o nazwie „%s”. -Copy.Prompt1 = Czy chcesz zamienić istniejący plik -Copy.Prompt2 = na następujący? -Copy.Yes = &Tak -Copy.No = &Nie -Copy.YesAll = Tak na &wszystkie -Folder.Title = Potwierdź zamianę folderu -Folder.Prompt = Czy nadal chcesz przenieść lub skopiować ten folder? -Toolbar.GoUp = Do góry o jeden poziom -Toolbar.Cut = Wytnij -Toolbar.Copy = Kopiuj -Toolbar.Paste = Wklej -Toolbar.PasteShortcut = Wklej skrót -Toolbar.Delete = Usuń -Toolbar.Email = Wyślij zaznaczone elementy pocztą e-mail -Toolbar.Properties = Właściwości -Toolbar.NewFolder = Nowy folder -Toolbar.ZipFolder = Nowy folder skompresowany (zip) -Toolbar.ExtraLarge = Bardzo duże ikony -Toolbar.Large = Duże ikony -Toolbar.Medium = Średnie ikony -Toolbar.Small = Małe ikony -Toolbar.List = Lista -Toolbar.Details = Szczegóły -Toolbar.Tiles = Kafelki -Toolbar.Content = Zawartość -Toolbar.Undo = Cofnij -Toolbar.Redo = Wykonaj ponownie -Toolbar.Refresh = Odśwież -Toolbar.Back = Wstecz -Toolbar.Forward = Dalej -Toolbar.Stop = Zatrzymaj -Toolbar.Rename = Zmień nazwę -Toolbar.SelectAll = Zaznacz wszystko -Toolbar.CustomizeFolder = Dostosuj ten folder -Toolbar.MapDrive = Mapuj dysk sieciowy -Toolbar.DisconnectDrive = Odłącz dysk sieciowy -Toolbar.NavigationPane = Okienko nawigacji -Toolbar.DetailsPane = Okienko szczegółów -Toolbar.PreviewPane = Okienko podglądu -Toolbar.CopyTo = Kopiuj do -Toolbar.MoveTo = Przenieś do -Toolbar.Deselect = Nie zaznaczaj nic -Toolbar.InvertSelection = Odwróć zaznaczenie -Toolbar.FolderOptions = Opcje folderów -Toolbar.ShowHiddenFiles = Ukryte pliki i foldery -Toolbar.ShowSystemFiles = Pliki systemowe -Toolbar.ShowExtensions = Rozszerzenia nazw plików -Status.FreeSpace = %s (Wolne miejsce: %s) -Status.Item = %s element -Status.Items = Elementów: %s -Status.ItemSelected = Wybranych elementów: %s -Status.ItemsSelected = Wybranych elementów: %s - - -[pt-BR] - Portuguese (Brazil) -Copy.Cancel = Cancelar -Copy.More = Mais... -Copy.CopyHere = &Copiar Aqui -Copy.MoveHere = Mov&er para Cá -Copy.Title = Confirmar substituição de arquivo -Copy.Subtitle = Esta pasta já contém um arquivo chamado '%s'. -Copy.SubtitleRO = Esta pasta já contém um arquivo somente leitura chamado '%s'. -Copy.SubtitleSys = Esta pasta já contém um arquivo de sistema chamado '%s'. -Copy.Prompt1 = Deseja substituir o arquivo existente -Copy.Prompt2 = por este? -Copy.Yes = &Sim -Copy.No = &Não -Copy.YesAll = Sim para &todos -Folder.Title = Confirmar substituição de pasta -Folder.Prompt = Deseja mover a pasta mesmo assim? -Toolbar.GoUp = Um Nível Acima -Toolbar.Cut = Recortar -Toolbar.Copy = Copiar -Toolbar.Paste = Colar -Toolbar.PasteShortcut = Colar Atalho -Toolbar.Delete = Excluir -Toolbar.Email = Enviar os itens selecionados por email -Toolbar.Properties = Propriedades -Toolbar.NewFolder = Nova Pasta -Toolbar.ZipFolder = Nova Pasta Compactada -Toolbar.ExtraLarge = Ícones Extra Grandes -Toolbar.Large = Ícones Grandes -Toolbar.Medium = Ícones Médios -Toolbar.Small = Ícones Pequenos -Toolbar.List = Lista -Toolbar.Details = Detalhes -Toolbar.Tiles = Lado a Lado -Toolbar.Content = Conteúdo -Toolbar.Undo = Desfazer -Toolbar.Redo = Refazer -Toolbar.Refresh = Atualizar -Toolbar.Back = Voltar -Toolbar.Forward = Avançar -Toolbar.Stop = Parar -Toolbar.Rename = Renomear -Toolbar.SelectAll = Selecionar tudo -Toolbar.CustomizeFolder = Personalizar esta pasta -Toolbar.MapDrive = Mapear unidade de rede -Toolbar.DisconnectDrive = Desconectar unidade de rede -Toolbar.NavigationPane = Painel de navegação -Toolbar.DetailsPane = Painel de detalhes -Toolbar.PreviewPane = Painel de visualização -Toolbar.CopyTo = Copiar para -Toolbar.MoveTo = Mover para -Toolbar.Deselect = Selecionar nenhum -Toolbar.InvertSelection = Inverter seleção -Toolbar.FolderOptions = Opções de pasta -Toolbar.ShowHiddenFiles = Pastas e arquivos ocultos -Toolbar.ShowSystemFiles = Arquivos do sistema -Toolbar.ShowExtensions = Extensões de nomes de arquivos -Status.FreeSpace = %s (espaço livre em disco: %s) -Status.Item = %s item -Status.Items = %s itens -Status.ItemSelected = %s item selecionado -Status.ItemsSelected = %s itens selecionados - - -[pt-PT] - Portuguese (Portugal) -Copy.Cancel = Cancelar -Copy.More = Mais... -Copy.CopyHere = &Copiar para aqui -Copy.MoveHere = &Mover para aqui -Copy.Title = Confirmar substituição de ficheiro(s) -Copy.Subtitle = Esta pasta já contém um ficheiro com o nome '%s'. -Copy.SubtitleRO = Esta pasta já contém um ficheiro só de leitura com o nome '%s'. -Copy.SubtitleSys = Esta pasta já contém um ficheiro de sistema com o nome '%s'. -Copy.Prompt1 = Pretende substituir o ficheiro existente -Copy.Prompt2 = por este? -Copy.Yes = &Sim -Copy.No = &Não -Copy.YesAll = Sim p&ara todos -Folder.Title = Confirmar substituição de pasta(s) -Folder.Prompt = Pretende continuar a mover ou copiar a pasta? -Toolbar.GoUp = Um nível acima -Toolbar.Cut = Cortar -Toolbar.Copy = Copiar -Toolbar.Paste = Colar -Toolbar.PasteShortcut = Colar atalho -Toolbar.Delete = Eliminar -Toolbar.Email = Enviar os itens seleccionados por correio electrónico -Toolbar.Properties = Propriedades -Toolbar.NewFolder = Nova pasta -Toolbar.ZipFolder = Nova Pasta Comprimida (zipada) -Toolbar.ExtraLarge = Ícones muito grandes -Toolbar.Large = Ícones grandes -Toolbar.Medium = Ícones médios -Toolbar.Small = Ícones pequenos -Toolbar.List = Lista -Toolbar.Details = Detalhes -Toolbar.Tiles = Mosaicos -Toolbar.Content = Conteúdo -Toolbar.Undo = Anular -Toolbar.Redo = Refazer -Toolbar.Refresh = Actualizar -Toolbar.Back = Anterior -Toolbar.Forward = Avançar -Toolbar.Stop = Parar -Toolbar.Rename = Mudar o nome -Toolbar.SelectAll = Seleccionar tudo -Toolbar.CustomizeFolder = Personalizar esta pasta -Toolbar.MapDrive = Mapear unidade de rede -Toolbar.DisconnectDrive = Desligar unidade de rede -Toolbar.NavigationPane = Painel de navegação -Toolbar.DetailsPane = Painel de detalhes -Toolbar.PreviewPane = Painel de pré-visualização -Toolbar.CopyTo = Copiar para -Toolbar.MoveTo = Mover para -Toolbar.Deselect = Desmarcar tudo -Toolbar.InvertSelection = Inverter seleção -Toolbar.FolderOptions = Opções de pastas -Toolbar.ShowHiddenFiles = Ficheiros e pastas ocultos -Toolbar.ShowSystemFiles = Ficheiros de sistema -Toolbar.ShowExtensions = Extensões de nome de ficheiro -Status.FreeSpace = %s (Espaço livre em disco: %s) -Status.Item = %s item -Status.Items = %s itens -Status.ItemSelected = %s item seleccionado -Status.ItemsSelected = %s itens seleccionados - - -[ro-RO] - Romanian (Romania) -Copy.Cancel = Revocare -Copy.More = Mai multe... -Copy.CopyHere = &Copiere în acest loc -Copy.MoveHere = &Mutare în acest loc -Copy.Title = Confirmare înlocuire fişier -Copy.Subtitle = Acest folder conţine deja un fişier cu numele '%s'. -Copy.SubtitleRO = Acest folder conţine deja un fişier doar în citire cu numele '%s'. -Copy.SubtitleSys = Acest folder conţine deja un fişier de sistem cu numele '%s'. -Copy.Prompt1 = Înlocuiţi fişierul existent -Copy.Prompt2 = cu acesta? -Copy.Yes = &Da -Copy.No = &Nu -Copy.YesAll = D&a pentru tot -Folder.Title = Confirmare înlocuire folder -Folder.Prompt = Totuşi, mutaţi sau copiaţi folderul? -Toolbar.GoUp = Mai sus cu un nivel -Toolbar.Cut = Decupare -Toolbar.Copy = Copiere -Toolbar.Paste = Lipire -Toolbar.PasteShortcut = Lipire comandă rapidă -Toolbar.Delete = Ștergere -Toolbar.Email = Se trimit prin poştă electronică elementele selectate -Toolbar.Properties = Proprietăți -Toolbar.NewFolder = Folder nou -Toolbar.ZipFolder = Folder comprimat (ZIP) nou -Toolbar.ExtraLarge = Pictograme foarte mari -Toolbar.Large = Pictograme mari -Toolbar.Medium = Pictograme medii -Toolbar.Small = Pictograme mici -Toolbar.List = Listă -Toolbar.Details = Detalii -Toolbar.Tiles = Cadre -Toolbar.Content = Cuprins -Toolbar.Undo = Anulare -Toolbar.Redo = Refacere -Toolbar.Refresh = Reîmprospătare -Toolbar.Back = Înapoi -Toolbar.Forward = Înainte -Toolbar.Stop = Oprire -Toolbar.Rename = Redenumire -Toolbar.SelectAll = Selectare totală -Toolbar.CustomizeFolder = Particularizare folder -Toolbar.MapDrive = Conectare unitate de rețea -Toolbar.DisconnectDrive = Deconectare unitate de rețea -Toolbar.NavigationPane = Panou de navigare -Toolbar.DetailsPane = Panou detalii -Toolbar.PreviewPane = Panou de examinare -Toolbar.CopyTo = Copiere în -Toolbar.MoveTo = Mutare la -Toolbar.Deselect = Deselectare totală -Toolbar.InvertSelection = Inversare selecție -Toolbar.FolderOptions = Opțiuni folder -Toolbar.ShowHiddenFiles = Fișiere și foldere ascunse -Toolbar.ShowSystemFiles = Fișiere de sistem -Toolbar.ShowExtensions = Extensii nume de fișier -Status.FreeSpace = %s (Spațiu liber pe disc: %s) -Status.Item = Element %s -Status.Items = %s elemente -Status.ItemSelected = %s element selectat -Status.ItemsSelected = %s elemente selectate - - -[ru-RU] - Russian (Russia) -Copy.Cancel = Отмена -Copy.More = Подробнее... -Copy.CopyHere = &Копировать -Copy.MoveHere = П&ереместить -Copy.Title = Подтверждение замены файла -Copy.Subtitle = Папка уже содержит файл "%s". -Copy.SubtitleRO = Папка уже содержит доступный только для чтения файл "%s". -Copy.SubtitleSys = Папка уже содержит системный файл "%s". -Copy.Prompt1 = Заменить имеющийся файл -Copy.Prompt2 = следующим файлом? -Copy.Yes = &Да -Copy.No = &Нет -Copy.YesAll = Да - для &всех -Folder.Title = Подтверждение замены папки -Folder.Prompt = Заменить существующие в ней файлы перемещаемыми при совпадении имен? -Toolbar.GoUp = На один уровень вверх -Toolbar.Cut = Вырезать -Toolbar.Copy = Копировать -Toolbar.Paste = Вставить -Toolbar.PasteShortcut = Вставить ярлык -Toolbar.Delete = Удалить -Toolbar.Email = Отправка выбранных объектов по электронной почте -Toolbar.Properties = Свойства -Toolbar.NewFolder = Новая папка -Toolbar.ZipFolder = Новая сжатая ZIP-папка -Toolbar.ExtraLarge = Огромные значки -Toolbar.Large = Крупные значки -Toolbar.Medium = Обычные значки -Toolbar.Small = Мелкие значки -Toolbar.List = Список -Toolbar.Details = Таблица -Toolbar.Tiles = Плитка -Toolbar.Content = Содержимое -Toolbar.Undo = Отменить -Toolbar.Redo = Вернуть -Toolbar.Refresh = Обновить -Toolbar.Back = Назад -Toolbar.Forward = Вперед -Toolbar.Stop = Остановить -Toolbar.Rename = Переименовать -Toolbar.SelectAll = Выделить все -Toolbar.CustomizeFolder = Настроить папку -Toolbar.MapDrive = Подключить сетевой диск -Toolbar.DisconnectDrive = Отключить сетевой диск -Toolbar.NavigationPane = Область переходов -Toolbar.DetailsPane = Область сведений -Toolbar.PreviewPane = Область предпросмотра -Toolbar.CopyTo = Копировать в -Toolbar.MoveTo = Переместить в -Toolbar.Deselect = Снять выделение -Toolbar.InvertSelection = Обратить выделение -Toolbar.FolderOptions = Параметры папок -Toolbar.ShowHiddenFiles = Скрытые файлы и папки -Toolbar.ShowSystemFiles = Системные файлы -Toolbar.ShowExtensions = Расширения имен файлов -Status.FreeSpace = %s (свободно на диске: %s) -Status.Item = %s элемент -Status.Items = Элементов: %s -Status.ItemSelected = Выбран элемент: %s -Status.ItemsSelected = Выбрано элементов: %s - - -[sk-SK] - Slovak (Slovakia) -Copy.Cancel = Zrušiť -Copy.More = Ďalšie... -Copy.CopyHere = &Kopírovať sem -Copy.MoveHere = &Premiestniť sem -Copy.Title = Potvrdenie nahradenia súboru -Copy.Subtitle = Tento priečinok už obsahuje súbor s názvom %s. -Copy.SubtitleRO = Tento priečinok už obsahuje súbor s názvom %s, ktorý je iba na čítanie. -Copy.SubtitleSys = Tento priečinok už obsahuje systémový súbor s názvom %s. -Copy.Prompt1 = Chcete nahradiť existujúci súbor -Copy.Prompt2 = týmto súborom? -Copy.Yes = Án&o -Copy.No = &Nie -Copy.YesAll = Áno pre &všetky -Folder.Title = Potvrdenie nahradenia priečinka -Folder.Prompt = Naozaj chcete premiestniť alebo skopírovať priečinok? -Toolbar.GoUp = O úroveň vyššie -Toolbar.Cut = Vystrihnúť -Toolbar.Copy = Kopírovať -Toolbar.Paste = Prilepiť -Toolbar.PasteShortcut = Prilepiť odkaz -Toolbar.Delete = Odstrániť -Toolbar.Email = Vybraté položky odoslať e-mailom -Toolbar.Properties = Vlastnosti -Toolbar.NewFolder = Nový priečinok -Toolbar.ZipFolder = Nový komprimovaný priečinok (ZIP) -Toolbar.ExtraLarge = Veľmi veľké ikony -Toolbar.Large = Veľké ikony -Toolbar.Medium = Stredne veľké ikony -Toolbar.Small = Malé ikony -Toolbar.List = Zoznam -Toolbar.Details = Podrobnosti -Toolbar.Tiles = Dlaždice -Toolbar.Content = Obsah -Toolbar.Undo = Späť -Toolbar.Redo = Znova -Toolbar.Refresh = Obnoviť -Toolbar.Back = Dozadu -Toolbar.Forward = Dopredu -Toolbar.Stop = Zastaviť -Toolbar.Rename = Premenovať -Toolbar.SelectAll = Vybrať všetko -Toolbar.CustomizeFolder = Prispôsobiť priečinok -Toolbar.MapDrive = Pripojiť sieťovú jednotku -Toolbar.DisconnectDrive = Odpojiť sieťovú jednotku -Toolbar.NavigationPane = Navigačná tabla -Toolbar.DetailsPane = Tabla podrobností -Toolbar.PreviewPane = Tabla ukážky -Toolbar.CopyTo = Kopírovať do -Toolbar.MoveTo = Premiestniť do -Toolbar.Deselect = Zrušiť výber -Toolbar.InvertSelection = Invertovať výber -Toolbar.FolderOptions = Možnosti priečinka -Toolbar.ShowHiddenFiles = Skryté súbory a priečinky -Toolbar.ShowSystemFiles = Systémové súbory -Toolbar.ShowExtensions = Prípony názvov súborov -Status.FreeSpace = %s (voľné miesto na disku: %s) -Status.Item = %s položka -Status.Items = Počet položiek: %s -Status.ItemSelected = Počet vybratých položiek: %s -Status.ItemsSelected = Počet vybratých položiek: %s - - -[sl-SI] - Slovenian (Slovenia) -Copy.Cancel = Prekliči -Copy.More = Dodatno ... -Copy.CopyHere = &Kopiraj sem -Copy.MoveHere = &Premakni sem -Copy.Title = Potrditev zamenjave datoteke -Copy.Subtitle = Ta mapa že vsebuje datoteko z imenom »%s«. -Copy.SubtitleRO = Ta mapa že vsebuje datoteko samo za branje z imenom »%s«. -Copy.SubtitleSys = Ta mapa že vsebuje sistemsko datoteko z imenom »%s«. -Copy.Prompt1 = Ali želite zamenjati obstoječo datoteko -Copy.Prompt2 = s to datoteko? -Copy.Yes = &Da -Copy.No = &Ne -Copy.YesAll = Da za &vse -Folder.Title = Potrditev zamenjave mape -Folder.Prompt = Ali še vedno želite premakniti ali kopirati mapo? -Toolbar.GoUp = V nadrejeno mapo -Toolbar.Cut = Izreži -Toolbar.Copy = Kopiraj -Toolbar.Paste = Prilepi -Toolbar.PasteShortcut = Prilepi bližnjico -Toolbar.Delete = Izbriši -Toolbar.Email = Pošlji izbrane elemente prek e-pošte -Toolbar.Properties = Lastnosti -Toolbar.NewFolder = Nova mapa -Toolbar.ZipFolder = Nova stisnjena mapa -Toolbar.ExtraLarge = Izredno velike ikone -Toolbar.Large = Velike ikone -Toolbar.Medium = Srednje velike ikone -Toolbar.Small = Male ikone -Toolbar.List = Seznam -Toolbar.Details = Podrobnosti -Toolbar.Tiles = Ploščice -Toolbar.Content = Vsebina -Toolbar.Undo = Razveljavi -Toolbar.Redo = Uveljavi -Toolbar.Refresh = Osveži -Toolbar.Back = Nazaj -Toolbar.Forward = Naprej -Toolbar.Stop = Ustavi -Toolbar.Rename = Preimenuj -Toolbar.SelectAll = Izberi vse -Toolbar.CustomizeFolder = Prilagodi mapo -Toolbar.MapDrive = Preslikaj omrežni pogon -Toolbar.DisconnectDrive = Prekini povezavo z omrežnim pogonom -Toolbar.NavigationPane = Podokno za krmarjenje -Toolbar.DetailsPane = Podokno s podrobnostmi -Toolbar.PreviewPane = Podokno za predogled -Toolbar.CopyTo = Kopiraj v -Toolbar.MoveTo = Premakni v -Toolbar.Deselect = Ne izberi ničesar -Toolbar.InvertSelection = Preobrni izbor -Toolbar.FolderOptions = Možnosti mape -Toolbar.ShowHiddenFiles = Skrite datoteke in mape -Toolbar.ShowSystemFiles = Sistemske datoteke -Toolbar.ShowExtensions = Datotečne pripone -Status.FreeSpace = %s (Nezaseden prostor na disku: %s) -Status.Item = %s predmet -Status.Items = Št. predmetov: %s -Status.ItemSelected = Izbrano je to število elementov: %s -Status.ItemsSelected = Izbrano je to število elementov: %s - - -[sr-Latn-CS] - Serbian (Latin, Serbia) -Copy.Cancel = Otkaži -Copy.More = Više... -Copy.CopyHere = &Kopiraj ovde -Copy.MoveHere = &Premesti ovde -Copy.Title = Potvrdite zamenu datoteke -Copy.Subtitle = Ova fascikla već sadrži datoteku po imenu '%s'. -Copy.SubtitleRO = Ova fascikla već sadrži datoteku samo za čitanje po imenu '%s'. -Copy.SubtitleSys = Ova fascikla već sadrži sistemsku datoteku po imenu '%s'. -Copy.Prompt1 = Želite li da zamenite postojeću datoteku -Copy.Prompt2 = ovom? -Copy.Yes = &Da -Copy.No = &Ne -Copy.YesAll = Da za &sve -Folder.Title = Potvrdite zamenu fascikle -Folder.Prompt = Želite li zaista da premestite ili kopirate ovu fasciklu? -Toolbar.GoUp = Jedan nivo nagore -Toolbar.Cut = Iseci -Toolbar.Copy = Kopiraj -Toolbar.Paste = Nalepi -Toolbar.PasteShortcut = Nalepi prečicu -Toolbar.Delete = Izbriši -Toolbar.Email = Pošalji izabrane stavke e-poštom -Toolbar.Properties = Svojstva -Toolbar.NewFolder = Nova fascikla -Toolbar.ZipFolder = Nova komprimovana (zipovana) fascikla -Toolbar.ExtraLarge = Veoma velike ikone -Toolbar.Large = Velike ikone -Toolbar.Medium = Srednje ikone -Toolbar.Small = Male ikone -Toolbar.List = Lista -Toolbar.Details = Detalji -Toolbar.Tiles = Naporedno slaganje -Toolbar.Content = Sadržaj -Toolbar.Undo = Opozovi radnju -Toolbar.Redo = Ponovi radnju -Toolbar.Refresh = Osveži -Toolbar.Back = Nazad -Toolbar.Forward = Napred -Toolbar.Stop = Zaustavi -Toolbar.Rename = Preimenuj -Toolbar.SelectAll = Izaberi sve -Toolbar.CustomizeFolder = Prilagođavanje fascikle -Toolbar.MapDrive = Mapiraj mrežni disk -Toolbar.DisconnectDrive = Prekini vezu sa mrežnim diskom -Toolbar.NavigationPane = Okno za navigaciju -Toolbar.DetailsPane = Okno sa detaljima -Toolbar.PreviewPane = Okno za pregled -Toolbar.CopyTo = Kopiraj u -Toolbar.MoveTo = Premesti u -Toolbar.Deselect = Nemoj da izabereš nijedno -Toolbar.InvertSelection = Obrni izbor -Toolbar.FolderOptions = Opcije fascikle -Toolbar.ShowHiddenFiles = Skrivene datoteke i fascikle -Toolbar.ShowSystemFiles = Sistemske datoteke -Toolbar.ShowExtensions = Oznake tipa datoteke -Status.FreeSpace = %s (slobodan prostor na disku: %s) -Status.Item = %s stavka -Status.Items = %s stavki -Status.ItemSelected = %s izabrana stavka -Status.ItemsSelected = %s izabranih stavki - - -[sv-SE] - Swedish (Sweden) -Copy.Cancel = Avbryt -Copy.More = Mer... -Copy.CopyHere = K&opiera hit -Copy.MoveHere = &Flytta hit -Copy.Title = Bekräfta ersättning av fil -Copy.Subtitle = Den här mappen innehåller redan en fil med namnet %s. -Copy.SubtitleRO = Den här mappen innehåller redan en skrivskyddad fil med namnet %s. -Copy.SubtitleSys = Den här mappen innehåller redan en systemfil med namnet %s. -Copy.Prompt1 = Vill du ersätta den befintliga filen -Copy.Prompt2 = med följande fil? -Copy.Yes = &Ja -Copy.No = &Nej -Copy.YesAll = Ersätt &alla -Folder.Title = Bekräfta ersättning av mapp -Folder.Prompt = Vill du ersätta filerna i den mappen om de har samma namn som filerna i mappen som flyttas eller kopieras? -Toolbar.GoUp = Upp en nivå -Toolbar.Cut = Klipp ut -Toolbar.Copy = Kopiera -Toolbar.Paste = Klistra in -Toolbar.PasteShortcut = Klistra in genväg -Toolbar.Delete = Ta bort -Toolbar.Email = Skicka de markerade objekten i e-postmeddelanden -Toolbar.Properties = Egenskaper -Toolbar.NewFolder = Ny mapp -Toolbar.ZipFolder = Ny komprimerad mapp -Toolbar.ExtraLarge = Extra stora ikoner -Toolbar.Large = Stora ikoner -Toolbar.Medium = Medelstora ikoner -Toolbar.Small = Små ikoner -Toolbar.List = Lista -Toolbar.Details = Detaljerad lista -Toolbar.Tiles = Sammanfattning -Toolbar.Content = Innehåll -Toolbar.Undo = Ångra -Toolbar.Redo = Gör om -Toolbar.Refresh = Uppdatera -Toolbar.Back = Bakåt -Toolbar.Forward = Framåt -Toolbar.Stop = Stoppa -Toolbar.Rename = Byt namn -Toolbar.SelectAll = Markera alla -Toolbar.CustomizeFolder = Anpassa den här mappen -Toolbar.MapDrive = Anslut nätverksenhet -Toolbar.DisconnectDrive = Koppla från nätverksenhet -Toolbar.NavigationPane = Navigeringsfönstret -Toolbar.DetailsPane = Informationsfönstret -Toolbar.PreviewPane = Förhandsgranskningsfönstret -Toolbar.CopyTo = Kopiera till -Toolbar.MoveTo = Flytta till -Toolbar.Deselect = Avmarkera alla -Toolbar.InvertSelection = Invertera markering -Toolbar.FolderOptions = Mappalternativ -Toolbar.ShowHiddenFiles = Dolda filer och mappar -Toolbar.ShowSystemFiles = Systemfiler -Toolbar.ShowExtensions = Filnamnstillägg -Status.FreeSpace = %s (Ledigt utrymme: %s) -Status.Item = %s objekt -Status.Items = %s objekt -Status.ItemSelected = %s objekt markerat -Status.ItemsSelected = %s objekt markerade - - -[th-TH] - Thai (Thailand) -Copy.Cancel = ยกเลิก -Copy.More = เพิ่มเติม... -Copy.CopyHere = คัด&ลอกมาที่นี่ -Copy.MoveHere = ย้&ายมาที่นี่ -Copy.Title = ยืนยันการแทนที่แฟ้ม -Copy.Subtitle = โฟลเดอร์นี้มีแฟ้มชื่อ '%s' อยู่แล้ว -Copy.SubtitleRO = โฟลเดอร์นี้มีแฟ้มแบบอ่านอย่างเดียวที่ชื่อ '%s' อยู่แล้ว -Copy.SubtitleSys = โฟลเดอร์นี้มีแฟ้มระบบที่ชื่อ '%s' อยู่แล้ว -Copy.Prompt1 = คุณต้องการแทนที่แฟ้มที่มีอยู่ -Copy.Prompt2 = ด้วยแฟ้มนี้หรือไม่ -Copy.Yes = ใ&ช่ -Copy.No = ไ&ม่ใช่ -Copy.YesAll = ใช่&ทั้งหมด -Folder.Title = การยืนยันการแทนที่โฟลเดอร์ -Folder.Prompt = ถ้าแฟ้มในโฟลเดอร์ที่มีอยู่มีชื่อเดียวกันกับแฟ้มในโฟลเดอร์ที่คุณกำลังย้ายหรือคัดลอก แฟ้มเหล่านั้นจะถูกแทนที่ คุณยังต้องการที่จะย้ายหรือคัดลอกโฟลเดอร์หรือไม่ -Toolbar.GoUp = เลื่อนขึ้นหนึ่งระดับ -Toolbar.Cut = ตัด -Toolbar.Copy = คัดลอก -Toolbar.Paste = วาง -Toolbar.PasteShortcut = วางทางลัด -Toolbar.Delete = ลบ -Toolbar.Email = ส่งอีเมลรายการที่เลือก -Toolbar.Properties = คุณสมบัติ -Toolbar.NewFolder = สร้างโฟลเดอร์ -Toolbar.ZipFolder = โฟลเดอร์ที่บีบอัดใหม่ -Toolbar.ExtraLarge = ไอคอนขนาดใหญ่พิเศษ -Toolbar.Large = ไอคอนขนาดใหญ่ -Toolbar.Medium = ไอคอนขนาดกลาง -Toolbar.Small = ไอคอนขนาดเล็ก -Toolbar.List = รายการ -Toolbar.Details = รายละเอียด -Toolbar.Tiles = เรียงต่อกัน -Toolbar.Content = เนื้อหา -Toolbar.Undo = เลิกทำ -Toolbar.Redo = ทำซ้ำ -Toolbar.Refresh = ฟื้นฟู -Toolbar.Back = ย้อนกลับ -Toolbar.Forward = ไปข้างหน้า -Toolbar.Stop = หยุด -Toolbar.Rename = เปลี่ยนชื่อ -Toolbar.SelectAll = เลือกทั้งหมด -Toolbar.CustomizeFolder = กำหนดโฟลเดอร์นี้เอง -Toolbar.MapDrive = แมปไดรฟ์เครือข่าย -Toolbar.DisconnectDrive = ยกเลิกการเชื่อมต่อไดรฟ์เครือข่าย -Toolbar.NavigationPane = บานหน้าต่างนำทาง -Toolbar.DetailsPane = บานหน้าต่างแสดงรายละเอียด -Toolbar.PreviewPane = บานหน้าต่างแสดงตัวอย่าง -Toolbar.CopyTo = คัดลอกไปที่ -Toolbar.MoveTo = ย้ายไปที่ -Toolbar.Deselect = ไม่เลือกเลย -Toolbar.InvertSelection = สลับส่วนที่เลือก -Toolbar.FolderOptions = ตัวเลือกโฟลเดอร์ -Toolbar.ShowHiddenFiles = แฟ้มและโฟลเดอร์ที่ซ่อนไว้ -Toolbar.ShowSystemFiles = แฟ้มระบบ -Toolbar.ShowExtensions = ส่วนขยายของแฟ้ม -Status.FreeSpace = %s (เนื้อที่ว่างดิสก์: %s) -Status.Item = %s รายการ -Status.Items = %s รายการ -Status.ItemSelected = เลือก %s รายการ -Status.ItemsSelected = เลือก %s รายการ - - -[tr-TR] - Turkish (Turkey) -Copy.Cancel = İptal -Copy.More = Tümü... -Copy.CopyHere = Buraya &Kopyala -Copy.MoveHere = Buraya &Taşı -Copy.Title = Dosya Değişimini Onayla -Copy.Subtitle = Bu klasörde zaten '%s' adlı bir dosya var. -Copy.SubtitleRO = Bu klasörde zaten '%s' adlı salt okunur bir dosya var. -Copy.SubtitleSys = Bu klasörde zaten '%s' adlı bir sistem dosyası var. -Copy.Prompt1 = Varolan dosyayı -Copy.Prompt2 = aşağıdaki dosya ile değiştirmek istiyor musunuz? -Copy.Yes = &Evet -Copy.No = &Hayır -Copy.YesAll = &Tümüne Evet -Folder.Title = Klasör Değişimini Onayla -Folder.Prompt = Klasörü taşımak ya da kopyalamak istiyor musunuz? -Toolbar.GoUp = Bir Düzey Yukarı -Toolbar.Cut = Kes -Toolbar.Copy = Kopyala -Toolbar.Paste = Yapıştır -Toolbar.PasteShortcut = Kısayol Yapıştır -Toolbar.Delete = Sil -Toolbar.Email = Seçili öğeleri e-postayla gönder -Toolbar.Properties = Özellikler -Toolbar.NewFolder = Yeni Klasör -Toolbar.ZipFolder = Yeni Sıkıştırılmış Klasör -Toolbar.ExtraLarge = Çok Büyük Simgeler -Toolbar.Large = Büyük Simgeler -Toolbar.Medium = Orta Boy Simgeler -Toolbar.Small = Küçük Simgeler -Toolbar.List = Listele -Toolbar.Details = Ayrıntılar -Toolbar.Tiles = Döşemeler -Toolbar.Content = İçerik -Toolbar.Undo = Geri Al -Toolbar.Redo = Yinele -Toolbar.Refresh = Yenile -Toolbar.Back = Geri -Toolbar.Forward = İleri -Toolbar.Stop = Durdur -Toolbar.Rename = Yeniden Adlandır -Toolbar.SelectAll = Tümünü seç -Toolbar.CustomizeFolder = Bu klasörü özelleştir -Toolbar.MapDrive = Ağ sürücüsüne bağlan -Toolbar.DisconnectDrive = Ağ sürücüsü bağlantısını kes -Toolbar.NavigationPane = Gezinti bölmesi -Toolbar.DetailsPane = Ayrıntılar bölmesi -Toolbar.PreviewPane = Önizleme bölmesi -Toolbar.CopyTo = Kopyalama hedefi -Toolbar.MoveTo = Taşıma hedefi -Toolbar.Deselect = Hiçbirini seçme -Toolbar.InvertSelection = Diğerlerini seç -Toolbar.FolderOptions = Klasör seçenekleri -Toolbar.ShowHiddenFiles = Gizli dosya ve klasörler -Toolbar.ShowSystemFiles = Sistem dosyaları -Toolbar.ShowExtensions = Dosya adı uzantıları -Status.FreeSpace = %s (Boş disk boş alanı: %s) -Status.Item = %s öğe -Status.Items = %s öğe -Status.ItemSelected = %s öğe seçili -Status.ItemsSelected = %s öğe seçili - - -[uk-UA] - Ukrainian (Ukraine) -Copy.Cancel = Скасувати -Copy.More = Додатково... -Copy.CopyHere = &Копіювати сюди -Copy.MoveHere = П&еремістити -Copy.Title = Підтвердження заміни файлу -Copy.Subtitle = Ця папка вже містить файл з ім'ям "%s". -Copy.SubtitleRO = Ця папка вже містить доступний лише для читання файл з ім'ям "%s". -Copy.SubtitleSys = Ця папка вже містить системний файл з ім'ям "%s". -Copy.Prompt1 = Замінити наявний файл -Copy.Prompt2 = на цей файл? -Copy.Yes = &Так -Copy.No = &Ні -Copy.YesAll = Так для &всіх -Folder.Title = Підтвердження заміни папки -Folder.Prompt = Розпочати переміщення або копіювання папки? -Toolbar.GoUp = На один рівень вгору -Toolbar.Cut = Вирізати -Toolbar.Copy = Копіювати -Toolbar.Paste = Вставити -Toolbar.PasteShortcut = Вставити ярлик -Toolbar.Delete = Видалити -Toolbar.Email = Надіслати виділені об'єкти електронною поштою -Toolbar.Properties = Властивості -Toolbar.NewFolder = Створити папку -Toolbar.ZipFolder = Нова стиснута ZIP-папка -Toolbar.ExtraLarge = Величезні піктограми -Toolbar.Large = Великі піктограми -Toolbar.Medium = Середні піктограми -Toolbar.Small = Дрібні піктограми -Toolbar.List = Список -Toolbar.Details = Таблиця -Toolbar.Tiles = Мозаїка -Toolbar.Content = Вміст -Toolbar.Undo = Скасувати -Toolbar.Redo = Повторити -Toolbar.Refresh = Оновити -Toolbar.Back = Назад -Toolbar.Forward = Вперед -Toolbar.Stop = Зупинити -Toolbar.Rename = Перейменувати -Toolbar.SelectAll = Вибрати всі -Toolbar.CustomizeFolder = Настроїти папку -Toolbar.MapDrive = Підключити мережний диск -Toolbar.DisconnectDrive = Відключити мережний диск -Toolbar.NavigationPane = Область переходів -Toolbar.DetailsPane = Область відомостей -Toolbar.PreviewPane = Область перегляду -Toolbar.CopyTo = Копіювати -Toolbar.MoveTo = Перемістити -Toolbar.Deselect = Скасувати виділення -Toolbar.InvertSelection = Обернути виділення -Toolbar.FolderOptions = Параметри папки -Toolbar.ShowHiddenFiles = Приховані файли й папки -Toolbar.ShowSystemFiles = Системні файли -Toolbar.ShowExtensions = Розширення імен файлів -Status.FreeSpace = %s (Доступно на диску: %s) -Status.Item = %s елемент -Status.Items = %s елементів -Status.ItemSelected = Вибрано елемент: %s -Status.ItemsSelected = Вибрано елементів: %s - - -[zh-CN] - Chinese (Simplified) -Copy.Cancel = 取消 -Copy.More = 其他... -Copy.CopyHere = 复制到当前位置(&C) -Copy.MoveHere = 移动到当前位置(&M) -Copy.Title = 确认文件替换 -Copy.Subtitle = 此文件夹已包含一个名为“%s”的文件。 -Copy.SubtitleRO = 此文件夹已包括一个名为“%s”的只读文件。 -Copy.SubtitleSys = 此文件夹已包括一个名为“%s”的系统文件。 -Copy.Prompt1 = 是否将现有文件 -Copy.Prompt2 = 替换为 -Copy.Yes = 是(&Y) -Copy.No = 否(&N) -Copy.YesAll = 全部(&A) -Folder.Title = 确认文件夹替换 -Folder.Prompt = 是否移动或复制文件夹? -Toolbar.GoUp = 向上一级 -Toolbar.Cut = 剪切 -Toolbar.Copy = 复制 -Toolbar.Paste = 粘贴 -Toolbar.PasteShortcut = 粘贴快捷方式 -Toolbar.Delete = 删除 -Toolbar.Email = 以电子邮件形式发送所选项目 -Toolbar.Properties = 属性 -Toolbar.NewFolder = 新文件夹 -Toolbar.ZipFolder = 新建压缩的(zipped)文件夹 -Toolbar.ExtraLarge = 超大图标 -Toolbar.Large = 大图标 -Toolbar.Medium = 中等图标 -Toolbar.Small = 小图标 -Toolbar.List = 列表 -Toolbar.Details = 详细信息 -Toolbar.Tiles = 平铺 -Toolbar.Content = 内容 -Toolbar.Undo = 撤消 -Toolbar.Redo = 恢复 -Toolbar.Refresh = 刷新 -Toolbar.Back = 后退 -Toolbar.Forward = 前进 -Toolbar.Stop = 停止 -Toolbar.Rename = 重命名 -Toolbar.SelectAll = 全选 -Toolbar.CustomizeFolder = 自定义文件夹 -Toolbar.MapDrive = 映射网络驱动器 -Toolbar.DisconnectDrive = 断开网络驱动器 -Toolbar.NavigationPane = 导航窗格 -Toolbar.DetailsPane = 细节窗格 -Toolbar.PreviewPane = 预览窗格 -Toolbar.CopyTo = 复制到​​ -Toolbar.MoveTo = 移动到​​ -Toolbar.Deselect = 全部取消 -Toolbar.InvertSelection = 反向选择 -Toolbar.FolderOptions = 文件夹选项 -Toolbar.ShowHiddenFiles = 隐藏文件和文件夹 -Toolbar.ShowSystemFiles = 系统文件 -Toolbar.ShowExtensions = 文件扩展名 -Status.FreeSpace = %s (磁盘可用空间: %s) -Status.Item = %s 项 -Status.Items = %s 个项目 -Status.ItemSelected = 已选择 %s 项 -Status.ItemsSelected = 已选择 %s 个项 - - -[zh-HK] - Chinese (Traditional) -Copy.Cancel = 取消 -Copy.More = 其他... -Copy.CopyHere = 複製到這裡(&C) -Copy.MoveHere = 移動到這裡(&M) -Copy.Title = 確認取代檔案 -Copy.Subtitle = 這個資料夾已經有一個名稱為 '%s' 的檔案。 -Copy.SubtitleRO = 這個資料夾已經有一個名稱為 '%s' 的唯讀檔。 -Copy.SubtitleSys = 這個資料夾已經有一個名稱為 '%s' 的系統檔。 -Copy.Prompt1 = 您要將目前的檔案 -Copy.Prompt2 = 取代成這個檔案嗎? -Copy.Yes = 是(&Y) -Copy.No = 否(&N) -Copy.YesAll = 全部取代(&A) -Folder.Title = 確認取代資料夾 -Folder.Prompt = 仍然要移動或複製資料夾? -Toolbar.GoUp = 上移一層 -Toolbar.Cut = 剪下 -Toolbar.Copy = 複製 -Toolbar.Paste = 貼上 -Toolbar.PasteShortcut = 貼上捷徑 -Toolbar.Delete = 刪除 -Toolbar.Email = 以電子郵件傳送選取的項目 -Toolbar.Properties = 內容 -Toolbar.NewFolder = 新增資料夾 -Toolbar.ZipFolder = 新壓縮 (zipped) 資料夾 -Toolbar.ExtraLarge = 特大圖示 -Toolbar.Large = 大圖示 -Toolbar.Medium = 中圖示 -Toolbar.Small = 小圖示 -Toolbar.List = 清單 -Toolbar.Details = 詳細資料 -Toolbar.Tiles = 並排 -Toolbar.Content = 內容 -Toolbar.Undo = 復原 -Toolbar.Redo = 重做 -Toolbar.Refresh = 重新整理 -Toolbar.Back = 上一頁 -Toolbar.Forward = 下一頁 -Toolbar.Stop = 停止 -Toolbar.Rename = 重新命名 -Toolbar.SelectAll = 全選 -Toolbar.CustomizeFolder = 自訂此資料夾 -Toolbar.MapDrive = 連線網路磁碟機 -Toolbar.DisconnectDrive = 中斷網路磁碟機 -Toolbar.NavigationPane = 瀏覽窗格 -Toolbar.DetailsPane = 詳細資料窗格 -Toolbar.PreviewPane = 預覽窗格 -Toolbar.CopyTo = 複製到​​ -Toolbar.MoveTo = 移至​​ -Toolbar.Deselect = 全部不選 -Toolbar.InvertSelection = 反向選擇 -Toolbar.FolderOptions = 資料夾選項 -Toolbar.ShowHiddenFiles = 隱藏的檔案和資料夾 -Toolbar.ShowSystemFiles = 系統檔 -Toolbar.ShowExtensions = 副檔名 -Status.FreeSpace = %s (磁碟可用空間: %s) -Status.Item = %s 個項目 -Status.Items = %s 個項目 -Status.ItemSelected = 選取了 %s 個項目 -Status.ItemsSelected = 選取了 %s 個項目 - - -[zh-TW] - Chinese (Traditional) -Copy.Cancel = 取消 -Copy.More = 其他... -Copy.CopyHere = 複製到這裡(&C) -Copy.MoveHere = 移動到這裡(&M) -Copy.Title = 確認取代檔案 -Copy.Subtitle = 這個資料夾已經有一個名稱為 '%s' 的檔案。 -Copy.SubtitleRO = 這個資料夾已經有一個名稱為 '%s' 的唯讀檔。 -Copy.SubtitleSys = 這個資料夾已經有一個名稱為 '%s' 的系統檔。 -Copy.Prompt1 = 您要將目前的檔案 -Copy.Prompt2 = 取代成這個檔案嗎? -Copy.Yes = 是(&Y) -Copy.No = 否(&N) -Copy.YesAll = 全部取代(&A) -Folder.Title = 確認取代資料夾 -Folder.Prompt = 仍然要移動或複製資料夾? -Toolbar.GoUp = 上移一層 -Toolbar.Cut = 剪下 -Toolbar.Copy = 複製 -Toolbar.Paste = 貼上 -Toolbar.PasteShortcut = 貼上捷徑 -Toolbar.Delete = 刪除 -Toolbar.Email = 以電子郵件傳送選取的項目 -Toolbar.Properties = 內容 -Toolbar.NewFolder = 新增資料夾 -Toolbar.ZipFolder = 新壓縮 (zipped) 資料夾 -Toolbar.ExtraLarge = 特大圖示 -Toolbar.Large = 大圖示 -Toolbar.Medium = 中圖示 -Toolbar.Small = 小圖示 -Toolbar.List = 清單 -Toolbar.Details = 詳細資料 -Toolbar.Tiles = 並排 -Toolbar.Content = 內容 -Toolbar.Undo = 復原 -Toolbar.Redo = 重做 -Toolbar.Refresh = 重新整理 -Toolbar.Back = 上一頁 -Toolbar.Forward = 下一頁 -Toolbar.Stop = 停止 -Toolbar.Rename = 重新命名 -Toolbar.SelectAll = 全選 -Toolbar.CustomizeFolder = 自訂此資料夾 -Toolbar.MapDrive = 連線網路磁碟機 -Toolbar.DisconnectDrive = 中斷網路磁碟機 -Toolbar.NavigationPane = 瀏覽窗格 -Toolbar.DetailsPane = 詳細資料窗格 -Toolbar.PreviewPane = 預覽窗格 -Toolbar.CopyTo = 複製到​​ -Toolbar.MoveTo = 移至​​ -Toolbar.Deselect = 全部不選 -Toolbar.InvertSelection = 反向選擇 -Toolbar.FolderOptions = 資料夾選項 -Toolbar.ShowHiddenFiles = 隱藏的檔案和資料夾 -Toolbar.ShowSystemFiles = 系統檔 -Toolbar.ShowExtensions = 副檔名 -Status.FreeSpace = %s (磁碟可用空間: %s) -Status.Item = %s 個項目 -Status.Items = %s 個項目 -Status.ItemSelected = 選取了 %s 個項目 -Status.ItemsSelected = 選取了 %s 個項目 diff --git a/Localization/StartMenuHelperL10N.ini b/Localization/StartMenuHelperL10N.ini deleted file mode 100644 index 14aef2afe..000000000 Binary files a/Localization/StartMenuHelperL10N.ini and /dev/null differ diff --git a/Localization/StartMenuL10N.ini b/Localization/StartMenuL10N.ini deleted file mode 100644 index 29a58b337..000000000 --- a/Localization/StartMenuL10N.ini +++ /dev/null @@ -1,5596 +0,0 @@ -; This file contains all localized text for Open-Shell Menu. There is one section per language. -; Every section contains text lines in the form of = . -; Which section is used depends on the current OS setting. If a key is missing from the language section -; it will be searched in the [default] section. In some cases more than one language can be used. -; For example a Japanese system may use English as a secondary language. In that case the search order -; will be [ja-JP] -> [en-US] -> [default]. -; -; ============================================================================= - - -[default] -Menu.ClassicSettings = Open-Shell &Menu -Menu.SettingsTip = Settings for Open-Shell Menu - - -[ar-SA] - Arabic (Saudi Arabia) -Menu.Programs = البرا&مج -Menu.Apps = التطبيقات -Menu.AllPrograms = كافة البرامج -Menu.Back = الخلف -Menu.Favorites = المف&ضلة -Menu.Documents = المستن&دات -Menu.Settings = إ&عدادات -Menu.Search = بح&ث -Menu.SearchBox = بحث -Menu.SearchPrograms = البحث في البرامج والملفات -Menu.SearchInternet = بحث في إنترنت -Menu.Searching = يتم الآن البحث... -Menu.NoMatch = لا توجد أية عناصر تطابق البحث. -Menu.MoreResults = الاطلاع على مزيد من النتائج -Menu.Help = التع&ليمات والدعم -Menu.Run = تش&غيل... -Menu.Logoff = ت&سجيل خروج %s‎ -Menu.SwitchUser = تبديل المست&خدم -Menu.Lock = تأ&مين -Menu.LogOffShort = ت&سجيل الخروج -Menu.Undock = إلغاء إرساء ال&كمبيوتر -Menu.Disconnect = &قطع الاتصال -Menu.ShutdownBox = إيقا&ف التشغيل... -Menu.Shutdown = إيقاف الت&شغيل -Menu.Restart = إعادة التش&غيل -Menu.ShutdownUpdate = التحديث وإيقاف التشغيل -Menu.RestartUpdate = تثبيت التحديثات وإعادة التشغيل -Menu.Sleep = &سكون -Menu.Hibernate = إ&سبات -Menu.ControlPanel = لوحة التح&كم -Menu.PCSettings = إعدادات الكمبيوتر -Menu.Security = أمان Windows -Menu.Network = ا&تصالات الشبكة -Menu.Printers = &طابعات -Menu.Taskbar = &شريط المهام والقائمة "ابدأ" -Menu.SearchFiles = عن &ملفات أو مجلدات... -Menu.SearchPrinter = عن &طابعة -Menu.SearchComputers = عن أجهزة &كمبيوتر -Menu.UserFilesTip = يحتوي على مجلدات للمستندات والصور والموسيقى وغير ذلك من الملفات الخاصة بك. -Menu.UserDocumentsTip = يحتوي على خطابات وتقارير ومستندات وملفات أخرى. -Menu.UserPicturesTip = يحتوي على صور فوتوغرافية رقمية وصور وملفات رسومية. -Menu.UserMusicTip = يحتوي على ملفات الموسيقى والصوت الأخرى. -Menu.UserVideosTip = يحتوي على أفلام وملفات فيديو أخرى. -Menu.NetworkTip = ‏‏عرض اتصالات الشبكة الموجودة على هذا الكمبيوتر والمساعدة في إنشاء اتصالات جديدة -Menu.PrintersTip = إضافة الطابعات المحلية وطابعات الشبكة وإزالتها وتكوينها. -Menu.TaskbarTip = ‏‏تخصيص القائمة "ابدأ" وشريط المهام مثل أنواع العناصر التي سيتم عرضها وطريقة عرضها -Menu.ControlPanelTip = ‏‏تغيير الإعدادات وتخصيص وظائف الكمبيوتر. -Menu.DocumentsLibTip = الوصول إلى الخطابات والتقارير والملاحظات وغير ذلك من أنواع المستندات. -Menu.MusicLibTip = تشغيل ملفات الموسيقى وملفات الصوت الأخرى. -Menu.PicturesLibTip = عرض الصور الرقمية وتنظيمها. -Menu.VideosLibTip = مشاهدة الأفلام المنزلية ومقاطع الفيديو الرقمية الأخرى. -Menu.RecordingsLibTip = مشاهدة برامج التلفزيون المسجلة على الكمبيوتر. -Menu.DownloadTip = البحث عن تنزيلات إنترنت والارتباطات بمواقع ويب المفضلة. -Menu.HomegroupTip = الوصول إلى المكتبات والمجلدات المشتركة من قِبل أشخاص آخرين في مجموعة المشاركة المنزلية. -Menu.RunTip = فتح برنامج أو مجلد أو مستند أو موقع على ويب. -Menu.HelpTip = العثور على مواضيع "التعليمات"، والبرامج التعليمية واستكشاف الأخطاء وإصلاحها وخدمات الدعم الأخرى. -Menu.ProgramsTip = فتح قائمة من البرامج. -Menu.SearchFilesTip = البحث عن المستندات والموسيقى والصور والبريد الإلكتروني وغير ذلك. -Menu.GamesTip = تشغيل الألعاب وإدارتها على الكمبيوتر. -Menu.SecurityTip = بدء تشغيل خيارات أمان Windows لتغيير كلمة المرور أو تبديل المستخدم أو بدء إدارة المهام. -Menu.SearchComputersTip = البحث عن أجهزة كمبيوتر على الشبكة -Menu.SearchPrintersTip = البحث عن طابعة -Menu.AdminToolsTip = تكوين الإعدادات الإدارية للكمبيوتر -Menu.ShutdownTip = إغلاق كافة البرامج المفتوحة وإيقاف تشغيل Windows، ثم إيقاف تشغيل الكمبيوتر. -Menu.RestartTip = إغلاق كافة البرامج المفتوحة وإيقاف تشغيل Windows، ثم تشغيله مرة أخرى. -Menu.SleepTip = حفظ جلسة العمل في الذاكرة ووضع الكمبيوتر في حالة الطاقة المنخفضة حتى يمكن استئناف العمل بسرعة. -Menu.HibernateTip = حفظ جلسة العمل وإيقاف تشغيل الكمبيوتر. وعند تشغيل الكمبيوتر يقوم Windows باستعادة الجلسة. -Menu.LogOffTip = ‏‏أغلق البرامج وقم بتسجيل الخروج. -Menu.DisconnectTip = قطع الاتصال بجلسة العمل. يمكنك إعادة الاتصال بجلسة العمل هذه عند تسجيل الدخول مرة أخرى. -Menu.LockTip = تأمين هذا الكمبيوتر. -Menu.UndockTip = إزالة الكمبيوتر المحمول من محطة إرساء. -Menu.SwitchUserTip = تبديل المستخدمين بدون إغلاق البرامج. -Menu.Empty = (فارغ) -Menu.Features = البرامج والميزات -Menu.FeaturesTip = إزالة تثبيت البرامج الموجودة على الكمبيوتر أو تغييرها. -Menu.SearchPeople = عن أ&شخاص... -Menu.SortByName = فرز &حسب الاسم -Menu.Open = ف&تح -Menu.OpenAll = &فتح كافة المستخدمين -Menu.Explore = ا&ستكشاف -Menu.ExploreAll = است&كشاف كافة المستخدمين -Menu.MenuSettings = إعدادات -Menu.MenuHelp = تعليمات -Menu.MenuExit = إنهاء -Menu.LogoffTitle = تسجيل الخروج من Windows -Menu.LogoffPrompt = هل تريد بالتأكيد تسجيل الخروج؟ -Menu.LogoffYes = &تسجيل الخروج -Menu.LogoffNo = &لا -Menu.RenameTitle = إعادة تسمية -Menu.RenamePrompt = الاسم الج&ديد: -Menu.RenameOK = حسنا -Menu.RenameCancel = إلغاء الأمر -Menu.Organize = تنظيم قائمة "ابدأ" -Menu.Expand = تو&سيع -Menu.Collapse = &طي -Menu.NewFolder = مجلد جديد -Menu.NewShortcut = اختصار جديد -Menu.AutoArrange = ترتيب تل&قائي -Menu.ActionOpen = فتح -Menu.ActionClose = إغلاق -Menu.ActionExecute = تنفيذ -Menu.RemoveList = إزالة من هذه ال&قائمة -Menu.RemoveAll = م&سح قائمة العناصر الحديثة -Menu.Explorer = مستكشف Windows -Menu.Start = ابدأ -Menu.StartScreen = شاشة البدء -Menu.StartMenu = القائمة "ابدأ" (Windows) -Menu.PinStart = تثبيت بالقائمة "ابدأ". -Menu.PinStartCs = تثبيت بالقائمة "ابدأ". (Open-Shell) -Menu.UnpinStartCs = إزالة التثبيت من القائمة "ابدأ" (Open-Shell) -Menu.MonitorOff = إيقاف تشغيل شاشة العرض -Menu.RemoveHighlight = إزالة التمييز -Menu.Uninstall = إز&الة التثبيت -Menu.UninstallTitle = إزالة التثبيت -Menu.UninstallPrompt = ‏‏هل تريد بالتأكيد إزالة تثبيت %s؟ -Search.CategorySettings = الإعدادات -Search.CategoryPCSettings = إعدادات الكمبيوتر -Search.CategoryPrograms = البرامج -Search.CategoryDocuments = المستندات -Search.CategoryMusic = الموسيقى -Search.CategoryPictures = الصور -Search.CategoryVideos = ملفات فيديو -Search.CategoryFiles = الملفات -Search.CategoryInternet = إنترنت -JumpList.Recent = حديث -JumpList.Frequent = متكرر -JumpList.Tasks = المهام -JumpList.Pinned = مثبت -JumpList.Pin = ت&ثبيت بهذه القائمة -JumpList.Unpin = إزا&لة التثبيت من هذه القائمة -JumpList.Remove = إزالة من ه&ذه القائمة -JumpList.PinTip = تثبيت بهذه القائمة -JumpList.UnpinTip = إزالة التثبيت من هذه القائمة - - -[bg-BG] - Bulgarian (Bulgaria) -Menu.Programs = &Програми -Menu.Apps = Приложения -Menu.AllPrograms = Всички програми -Menu.Back = Назад -Menu.Favorites = Пре&дпочитани -Menu.Documents = Док&ументи -Menu.Settings = &Настройки -Menu.Search = &Търсене -Menu.SearchBox = Търсене -Menu.SearchPrograms = Търсене на програми и файлове -Menu.SearchInternet = Търсене в интернет -Menu.Searching = Търсене... -Menu.NoMatch = Няма елементи, отговарящи на вашето търсене. -Menu.MoreResults = Показване на повече резултати -Menu.Help = Помо&щ и поддръжка -Menu.Run = &Изпълнение... -Menu.Logoff = Изли&зане на %s -Menu.SwitchUser = Смяна на потр&ебител -Menu.Lock = З&аключване -Menu.LogOffShort = Из&лизане -Menu.Undock = Откачи компют&ъра -Menu.Disconnect = Пр&екъсване на връзката -Menu.ShutdownBox = Изк&лючване... -Menu.Shutdown = Изк&лючване -Menu.Restart = &Рестартиране -Menu.ShutdownUpdate = Актуализиране и изключване -Menu.RestartUpdate = Актуализиране и рестартиране -Menu.Sleep = &Заспиване -Menu.Hibernate = &Хибернация -Menu.ControlPanel = &Контролен панел -Menu.PCSettings = Настройки на компютъра -Menu.Security = Защита на Windows -Menu.Network = &Мрежови връзки -Menu.Printers = Принт&ери -Menu.Taskbar = &Лента на задачите и меню "Старт" -Menu.SearchFiles = За &файловете или папките... -Menu.SearchPrinter = За &принтер -Menu.SearchComputers = За &компютри -Menu.UserFilesTip = Съдържа папки за документи, изображения, музика и други ваши файлове. -Menu.UserDocumentsTip = Съдържа писма, отчети и други документи и файлове. -Menu.UserPicturesTip = Съдържа цифрови снимки, изображения и графични файлове. -Menu.UserMusicTip = Съдържа музика и други аудио файлове. -Menu.UserVideosTip = Съдържа филми и други видео файлове. -Menu.NetworkTip = Показва съществуващи връзки на мрежата в този компютър и ви помага да създадете нови -Menu.PrintersTip = Добавяне, премахване и конфигуриране на локални и мрежови принтери. -Menu.TaskbarTip = Персонализиране на менюто "Старт" и лентата на задачите, като напр. типовете елементи, които ще бъдат показани, както и начина на тяхната поява. -Menu.ControlPanelTip = Промяна на настройките и персонализиране на функционалността на компютъра. -Menu.DocumentsLibTip = Достъп до писма, отчети, бележки и други видове документи. -Menu.MusicLibTip = Възпроизвеждане на музика и други аудио файлове. -Menu.PicturesLibTip = Преглед и организиране на цифрови картини. -Menu.VideosLibTip = Гледане на домашни филми и други цифрови видеозаписи. -Menu.RecordingsLibTip = Гледане на записани на компютъра ТВ програми. -Menu.DownloadTip = Търсене на изтеглени файлове от интернет и връзки към предпочитани връзки. -Menu.HomegroupTip = Достъп до библиотеки и папки, споделени от други хора в домашната ви мрежа. -Menu.RunTip = Отваря програма, папка, документ или уеб сайт. -Menu.HelpTip = Намерете теми от "Помощ", уроци, отстраняване на неизправности и други поддържащи услуги. -Menu.ProgramsTip = Отваря списък на програмите. -Menu.SearchFilesTip = Търсете документи, музика, картини, електронна поща и др. -Menu.GamesTip = Играйте и управлявайте игрите на своя компютър. -Menu.SecurityTip = Стартирайте опциите за защита на Windows, за да смените парола, да смените потребител или да стартирате диспечера на задачите. -Menu.SearchComputersTip = Търсене на компютри в мрежата -Menu.SearchPrintersTip = Търсене на принтер -Menu.AdminToolsTip = Конфигуриране на административните настройки на компютъра. -Menu.ShutdownTip = Затваря всички отворени програми, изключва Windows и изключва компютъра. -Menu.RestartTip = Затваря всички отворени програми, изключва Windows и после отново стартира Windows. -Menu.SleepTip = Запазва сесията ви в паметта и поставя компютъра в състояние на ниско енергопотребление, така че да можете бързо да възобновите работа. -Menu.HibernateTip = Запазва сесията ви в паметта и изключва компютъра. Когато включите компютъра, Windows възстановява сесията ви. -Menu.LogOffTip = Затваряне на програмите и излизане. -Menu.DisconnectTip = Прекратява връзката с вашата сесия. Можете да се свържете с тази сесия отново, когато влезете отново. -Menu.LockTip = Заключване на този компютър. -Menu.UndockTip = Премахва вашия лаптоп или ноутбук компютър от базова станция. -Menu.SwitchUserTip = Смяна на потребителите потребители без да се затварят програмите. -Menu.Empty = (Празно) -Menu.Features = Програми и компоненти -Menu.FeaturesTip = Деинсталиране или промяна на програми на компютъра. -Menu.SearchPeople = За хо&ра... -Menu.SortByName = &Сортирай по име -Menu.Open = &Отвори -Menu.OpenAll = О&твори "Всички потребители" -Menu.Explore = &Преглед -Menu.ExploreAll = Пре&глед на "Всички потребители" -Menu.MenuSettings = Настройки -Menu.MenuHelp = Помощ -Menu.MenuExit = Изход -Menu.LogoffTitle = Излизане от Windows -Menu.LogoffPrompt = Наистина ли искате да излезете? -Menu.LogoffYes = &Излизане -Menu.LogoffNo = &Не -Menu.RenameTitle = Преименуване -Menu.RenamePrompt = &Ново име: -Menu.RenameOK = OK -Menu.RenameCancel = Отказ -Menu.Organize = Организиране на менюто "Старт" -Menu.Expand = &Разгъни -Menu.Collapse = С&вий -Menu.NewFolder = Нова папка -Menu.NewShortcut = Нов пряк път -Menu.AutoArrange = &Автоматично подреждане -Menu.ActionOpen = Отвори -Menu.ActionClose = Затвори -Menu.ActionExecute = Изпълнение -Menu.RemoveList = Премахни &от този списък -Menu.RemoveAll = И&зчисти списъка с последни програми -Menu.Explorer = Windows Explorer -Menu.Start = Старт -Menu.StartScreen = Стартов екран -Menu.StartMenu = Меню "Старт" (Windows) -Menu.PinStart = Закачи към менюто "Старт" -Menu.PinStartCs = Закачи към менюто "Старт" (Open-Shell) -Menu.UnpinStartCs = Откачи от менюто "Старт" (Open-Shell) -Menu.MonitorOff = Изключване на дисплея -Menu.RemoveHighlight = Премахни осветяването -Menu.Uninstall = &Деинсталирай -Menu.UninstallTitle = Деинсталиране -Menu.UninstallPrompt = Наистина ли искате да деинсталирате %s? -Search.CategorySettings = Настройки -Search.CategoryPCSettings = Настройки на компютъра -Search.CategoryPrograms = Програми -Search.CategoryDocuments = Документи -Search.CategoryMusic = Музика -Search.CategoryPictures = Картини -Search.CategoryVideos = Видеозаписи -Search.CategoryFiles = Файлове -Search.CategoryInternet = Интернет -JumpList.Recent = Последни -JumpList.Frequent = Често Използвани -JumpList.Tasks = Задачи -JumpList.Pinned = Закачени -JumpList.Pin = За&качи към този списък -JumpList.Unpin = &Откачи от този списък -JumpList.Remove = Према&хни от този списък -JumpList.PinTip = Закачи към този списък -JumpList.UnpinTip = Откачи от този списък - - -[ca-ES] - Catalan (Catalan) -Menu.Programs = &Programes -Menu.Apps = Aplicacions -Menu.AllPrograms = Tots els programes -Menu.Back = Enrera -Menu.Favorites = Fa&vorits -Menu.Documents = Docu&ments -Menu.Settings = Con&figuració -Menu.Search = &Cercar -Menu.SearchBox = Cercar -Menu.SearchPrograms = Cercar programes i arxius -Menu.SearchInternet = Cercar a Internet -Menu.Searching = Cercant... -Menu.NoMatch = Ningún element coincideix amb el criteri de cerca. -Menu.MoreResults = Veure més resultats -Menu.Help = &Ajuda i suport técnic -Menu.Run = &Executar... -Menu.Logoff = &Tancar sessió de %s -Menu.SwitchUser = Canviar d'usuari -Menu.Lock = Bloquejar -Menu.LogOffShort = Tancar sessió -Menu.Undock = De&sacoblar equip -Menu.Disconnect = &Desconectar -Menu.ShutdownBox = Apaga&r... -Menu.Shutdown = &Apagar -Menu.Restart = &Reiniciar -Menu.ShutdownUpdate = Actualitzar i apagar -Menu.RestartUpdate = Actualitzar i reiniciar -Menu.Sleep = &Suspendre -Menu.Hibernate = &Hibernar -Menu.ControlPanel = &Panell de control -Menu.PCSettings = Configuració de l'ordinador -Menu.Security = Seguretat de Windows -Menu.Network = &Conexions de xarxa -Menu.Printers = &Impressores -Menu.Taskbar = &Barra de tasques i Menú Inicia -Menu.SearchFiles = &Arxius o carpetes... -Menu.SearchPrinter = I&mpressores -Menu.SearchComputers = Equip&s -Menu.UserFilesTip = Conté carpetes per a Documents, Imatges, Música i altres arxius que li pertanyen. -Menu.UserDocumentsTip = Conté cartes, informes, i altres documents i arxius. -Menu.UserPicturesTip = Conté fotos digitals, imatges i arxius de gràfics. -Menu.UserMusicTip = Conté música i altres arxius d'àudio. -Menu.UserVideosTip = Conté pel·lícules i altres arxius de vídeo. -Menu.NetworkTip = Mostra les conexions de xarxa existents a aquest equip i ajuda a crear altres noves -Menu.PrintersTip = Agrega, treu i configura impressores locals i de xarxa. -Menu.TaskbarTip = Personalitza el Menú Inicia i la barra de tasques, el tipus d'elements que es mostren i la forma en que tenen que mostrar-se. -Menu.ControlPanelTip = Canviï la configuració i personalitzi la funcionalitat del seu equip. -Menu.DocumentsLibTip = Obtengui accés a cartes, informes, notes i altra classe de documents. -Menu.MusicLibTip = Reprodueixi música i altres arxius d'àudio. -Menu.PicturesLibTip = Vegi i organitzi imatges digitals. -Menu.VideosLibTip = Vegi pel·lícules doméstiques i altres vídeos digitals. -Menu.RecordingsLibTip = Vegi programes de televisió gravats a l'equip. -Menu.DownloadTip = Cerqui descàrregues de Internet i vincles als seus llocs web favorits. -Menu.HomegroupTip = Obtengui accés a les biblioteques i carpetes que comparteixen altres usuaris del seu grup a la llar. -Menu.RunTip = Obre un programa, una carpeta, un document o un lloc web. -Menu.HelpTip = Cerqui temes d'Ajuda, tutorials, resoldre problemes i altres serveis de suport tècnic. -Menu.ProgramsTip = Obre una llista dels seus programes. -Menu.SearchFilesTip = Cercar documents, música, imatges, correu electrònic i més. -Menu.GamesTip = Jugui i administri els jocs a l'equip. -Menu.SecurityTip = Iniciï Opcions de seguretat de Windows per a canviar la contrasenya, canviar d'usuari o iniciar l'Administrador de tasques. -Menu.SearchComputersTip = Cercar equips a la xarxa -Menu.SearchPrintersTip = Cercar una impressora -Menu.AdminToolsTip = Faci configuracions administratives a l'equip -Menu.ShutdownTip = Tanca tots els programes oberts, tanca Windows i, després, apaga l'equip. -Menu.RestartTip = Tanca tots els programes oberts, tanca Windows i després inicia Windows de nou. -Menu.SleepTip = Manté la memoria de la sessió i posa l'equip en un estat de baixa energia per a que pugui continuar treballant ràpidament al reanudar. -Menu.HibernateTip = Guarda la sessió i apaga l'equip. Quan iniciï l'equip, Windows restaurarà la sessió. -Menu.LogOffTip = Tancar els programes i la sessió. -Menu.DisconnectTip = Desconnecta sessió. Pots reconectar-se a aquesta sessió quan torni a iniciar sessió. -Menu.LockTip = Bloquejar aquest equip. -Menu.UndockTip = Treu un equip portàtil o de mà de l'estació de acoblament. -Menu.SwitchUserTip = Canviar d'usuari sense tancar els programes. -Menu.Empty = (Buit) -Menu.Features = Programes i característiques -Menu.FeaturesTip = Desinstal·li o canviï programes a l'equip. -Menu.SearchPeople = &Persones... -Menu.SortByName = Ordenar per &Nom -Menu.Open = &Obrir -Menu.OpenAll = Ob&rir tots els usuaris -Menu.Explore = E&xplorar -Menu.ExploreAll = &Explorar tots els usuaris -Menu.MenuSettings = Configuració -Menu.MenuHelp = Ajuda -Menu.MenuExit = Sortir -Menu.LogoffTitle = Tancar la sessió a Windows -Menu.LogoffPrompt = Està segur de que desitja tancar la sessió? -Menu.LogoffYes = &Tancar sessió -Menu.LogoffNo = &No -Menu.RenameTitle = Canviar nom -Menu.RenamePrompt = &Nou nom: -Menu.RenameOK = Acceptar -Menu.RenameCancel = Cancel·lar -Menu.Organize = Organitzar el Menú Inicia -Menu.Expand = &Expandir -Menu.Collapse = &Contraure -Menu.NewFolder = Nova carpeta -Menu.NewShortcut = Nou accés directe -Menu.AutoArrange = Organi&tzació automàtica -Menu.ActionOpen = Obrir -Menu.ActionClose = Tancar -Menu.ActionExecute = Executar -Menu.RemoveList = &Treure d'aquesta llista -Menu.RemoveAll = &Borrar llista d'elements recents -Menu.Explorer = Explorador de Windows -Menu.Start = Inicia -Menu.StartScreen = Pantalla Inicia -Menu.StartMenu = Menú Inicia (Windows) -Menu.PinStart = Ancorar al Menú Inicia -Menu.PinStartCs = Ancorar al Menú Inicia (Open-Shell) -Menu.UnpinStartCs = Desancorar del Menú Inicia (Open-Shell) -Menu.MonitorOff = Apaga la pantalla -Menu.RemoveHighlight = Suprimeix la marca -Menu.Uninstall = &Desinstal·la -Menu.UninstallTitle = Desinstal·la -Menu.UninstallPrompt = Esteu segur que voleu desinstal·lar el %s? -Menu.ClassicSettings = Open-Shell &Menú -Menu.SettingsTip = Ajustaments del Open-Shell Menú -Search.CategorySettings = Configuració -Search.CategoryPCSettings = Configuració de l'ordinador -Search.CategoryPrograms = Programes -Search.CategoryDocuments = Documents -Search.CategoryMusic = Música -Search.CategoryPictures = Imatges -Search.CategoryVideos = Vídeos -Search.CategoryFiles = Arxius -Search.CategoryInternet = Internet -JumpList.Recent = Recent -JumpList.Frequent = Freqüent -JumpList.Tasks = Tasques -JumpList.Pinned = Ancorat -JumpList.Pin = &Ancorar a aquesta llista -JumpList.Unpin = &Desancorar d'aquesta llista -JumpList.Remove = &Treure d'aquesta llista -JumpList.PinTip = Ancorar a aquesta llista -JumpList.UnpinTip = Desancorar d'aquesta llista - - -[cs-CZ] - Czech (Czech Republic) -Menu.Programs = &Programy -Menu.Apps = Aplikace -Menu.AllPrograms = Všechny programy -Menu.Back = Zpět -Menu.Favorites = Oblíbené položk&y -Menu.Documents = Doku&menty -Menu.Settings = N&astavení -Menu.Search = &Hledat -Menu.SearchBox = Hledat -Menu.SearchPrograms = Prohledat programy a soubory -Menu.SearchInternet = Vyhledat v Internetu -Menu.Searching = Vyhledávání... -Menu.NoMatch = Hledání neodpovídají žádné položky. -Menu.MoreResults = Zobrazit další výsledky -Menu.Help = &Nápověda a podpora -Menu.Run = Spus&tit... -Menu.Logoff = Odhlásit &uživatele %s -Menu.SwitchUser = &Přepnout uživatele -Menu.Lock = &Uzamknout -Menu.LogOffShort = Odh&lásit se -Menu.Undock = Vyjmout z dokova&cí stanice -Menu.Disconnect = O&dpojit -Menu.ShutdownBox = &Vypnout... -Menu.Shutdown = &Vypnout -Menu.Restart = &Restartovat -Menu.ShutdownUpdate = Aktualizovat a vypnout -Menu.RestartUpdate = Aktualizovat a restartovat -Menu.Sleep = &Režim spánku -Menu.Hibernate = &Hibernace -Menu.ControlPanel = Ovláda&cí panely -Menu.PCSettings = Nastavení počítače -Menu.Security = Zabezpečení systému Windows -Menu.Network = &Síťová připojení -Menu.Printers = &Tiskárny -Menu.Taskbar = &Hlavní panel a nabídka Start -Menu.SearchFiles = &Soubory či složky... -Menu.SearchPrinter = &Tiskárnu -Menu.SearchComputers = &Počítače -Menu.UserFilesTip = Obsahuje složky pro Dokumenty, Obrázky, Hudbu a další vaše soubory. -Menu.UserDocumentsTip = Obsahuje dopisy, hlášení a další soubory a dokumenty. -Menu.UserPicturesTip = Obsahuje digitální fotografie, obrázky a grafické soubory. -Menu.UserMusicTip = Obsahuje hudební a další zvukové soubory. -Menu.UserVideosTip = Obsahuje filmy a další video soubory. -Menu.NetworkTip = Zobrazí existující síťová připojení a usnadňuje vytvoření nových připojení. -Menu.PrintersTip = Slouží k přidávání, odebírání a konfigurování místních a síťových tiskáren. -Menu.TaskbarTip = Umožňuje upravit nabídku start a hlavní panel (například typy a způsob zobrazení položek). -Menu.ControlPanelTip = Změňte nastavení a přizpůsobte funkčnost svého počítače. -Menu.DocumentsLibTip = Umožňuje přístup k dopisům, zprávám, poznámkám a jiným druhům dokumentů. -Menu.MusicLibTip = Umožňuje přehrávat hudební a jiné zvukové soubory. -Menu.PicturesLibTip = Umožňuje prohlížet a organizovat digitální obrázky. -Menu.VideosLibTip = Umožňuje sledování domácích videí a dalších digitálních videozáznamů. -Menu.RecordingsLibTip = Umožňuje sledování televizních programů nahraných v počítači. -Menu.DownloadTip = Umožňuje hledání položek ke stažení na Internetu a odkazů na oblíbené weby. -Menu.HomegroupTip = Přistupujte ke knihovnám a složkám sdíleným dalšími uživateli v domácí skupině. -Menu.RunTip = Otevře složku, program, dokument nebo webovou stránku. -Menu.HelpTip = Umožní vyhledávat témata nápovědy, kurzy, řešení problémů a další služby podpory. -Menu.ProgramsTip = Zobrazí seznam programů v počítači. -Menu.SearchFilesTip = Umožňuje vyhledávat dokumenty, hudbu, obrázky, e-maily a další. -Menu.GamesTip = Umožňuje hrát a spravovat hry v počítači. -Menu.SecurityTip = Spustí možnosti zabezpečení systému Windows, ve kterých lze změnit heslo, přepnout uživatele nebo spustit Správce úloh. -Menu.SearchComputersTip = Hledat počítače v síti -Menu.SearchPrintersTip = Hledat tiskárnu -Menu.AdminToolsTip = Konfiguruje nastavení počítače pro správu. -Menu.ShutdownTip = Ukončí všechny spuštěné programy, ukončí systém Windows a potom vypne počítač. -Menu.RestartTip = Ukončí všechny spuštěné programy, ukončí systém Windows a potom znovu spustí systém Windows. -Menu.SleepTip = Ponechá relaci v paměti a uvede počítač do režimu nízké spotřeby, takže je možné rychle pokračovat v práci. -Menu.HibernateTip = Uloží relaci a vypne počítač. Po zapnutí počítače systém Windows relaci obnoví. -Menu.LogOffTip = Umožňuje ukončit programy a odhlásit uživatele. -Menu.DisconnectTip = Odpojí vaši relaci. K relaci se můžete opět připojit při dalším přihlášení. -Menu.LockTip = Uzamkne počítač. -Menu.UndockTip = Vyjme přenosný počítač z dokovací stanice. -Menu.SwitchUserTip = Přepne uživatele bez ukončování programů. -Menu.Empty = (prázdné) -Menu.Features = Programy a funkce -Menu.FeaturesTip = Odinstaluje nebo změní programy v počítači. -Menu.SearchPeople = Oso&by... -Menu.SortByName = Seřadit podle &názvu -Menu.Open = &Otevřít -Menu.OpenAll = Ot&evřít položky všech uživatele -Menu.Explore = Proz&koumat -Menu.ExploreAll = P&rocházet položky všech uživatelů -Menu.MenuSettings = Nastavení -Menu.MenuHelp = Nápověda -Menu.MenuExit = Ukončit -Menu.LogoffTitle = Odhlásit se od systému Windows -Menu.LogoffPrompt = Opravdu se chcete odhlásit? -Menu.LogoffYes = &Odhlásit se -Menu.LogoffNo = &Ne -Menu.RenameTitle = Přejmenovat -Menu.RenamePrompt = &Nový název: -Menu.RenameOK = OK -Menu.RenameCancel = Storno -Menu.Organize = Uspořádat nabídku Start -Menu.Expand = Ro&zbalit -Menu.Collapse = S&balit -Menu.NewFolder = Nová složka -Menu.NewShortcut = Nový zástupce -Menu.AutoArrange = &Rovnat automaticky -Menu.ActionOpen = Otevřít -Menu.ActionClose = Zavřít -Menu.ActionExecute = Spouštět -Menu.RemoveList = &Odebrat z tohoto seznamu -Menu.RemoveAll = Smazat seznam pos&ledních položek -Menu.Explorer = Průzkumník Windows -Menu.Start = Start -Menu.StartScreen = Úvodní obrazovka -Menu.StartMenu = Nabídka Start (Windows) -Menu.PinStart = Připnout k nabídce Start -Menu.PinStartCs = Připnout k nabídce Start (Open-Shell) -Menu.UnpinStartCs = Odepnout z nabídky Start (Open-Shell) -Menu.MonitorOff = Vypnout zobrazení -Menu.RemoveHighlight = Odebrat nejzajímavější místo -Menu.Uninstall = &Odinstalovat -Menu.UninstallTitle = Odinstalovat -Menu.UninstallPrompt = Opravdu chcete odinstalovat položku %s? -Search.CategorySettings = Nastavení -Search.CategoryPCSettings = Nastavení počítače -Search.CategoryPrograms = Programy -Search.CategoryDocuments = Dokumenty -Search.CategoryMusic = Hudba -Search.CategoryPictures = Obrázky -Search.CategoryVideos = Videa -Search.CategoryFiles = Soubory -Search.CategoryInternet = Internet -JumpList.Recent = Poslední -JumpList.Frequent = Nejčastěji používané -JumpList.Tasks = Úlohy -JumpList.Pinned = Připnuté -JumpList.Pin = &Připnout do tohoto seznamu -JumpList.Unpin = &Odepnout z tohoto seznamu -JumpList.Remove = O&debrat z tohoto seznamu -JumpList.PinTip = Připnout do tohoto seznamu -JumpList.UnpinTip = Odepnout z tohoto seznamu - - -[da-DK] - Danish (Denmark) -Menu.Programs = &Programmer -Menu.Apps = Apps -Menu.AllPrograms = Alle programmer -Menu.Back = Tilbage -Menu.Favorites = &Favoritter -Menu.Documents = &Dokumenter -Menu.Settings = &Indstillinger -Menu.Search = S&øg -Menu.SearchBox = Søg -Menu.SearchPrograms = Søg i alle programmer og filer -Menu.SearchInternet = Søg på internettet -Menu.Searching = Søger... -Menu.NoMatch = Ingen elementer svarede til dine søgekriterier. -Menu.MoreResults = Se flere resultater -Menu.Help = &Hjælp og support -Menu.Run = &Kør... -Menu.Logoff = L&og %s af -Menu.SwitchUser = S&kift bruger -Menu.Lock = &Lås -Menu.LogOffShort = Log &af -Menu.Undock = Fradock &computer -Menu.Disconnect = &Afbryd forbindelsen -Menu.ShutdownBox = &Luk computeren... -Menu.Shutdown = &Luk computeren -Menu.Restart = &Genstart -Menu.ShutdownUpdate = Opdater og luk -Menu.RestartUpdate = Opdater og genstart -Menu.Sleep = Sl&umre -Menu.Hibernate = &Dvale -Menu.ControlPanel = &Kontrolpanel -Menu.PCSettings = Pc-indstillinger -Menu.Security = Windows Sikkerhed -Menu.Network = &Netværksforbindelser -Menu.Printers = &Printere -Menu.Taskbar = &Proceslinje og menuen Start -Menu.SearchFiles = efter &Filer eller mapper... -Menu.SearchPrinter = efter &Printer -Menu.SearchComputers = efter &Computere -Menu.UserFilesTip = Indeholder mapper for Dokumenter, Billeder, Musik og andre filer, der tilhører dig. -Menu.UserDocumentsTip = Indeholder breve, rapporter og andre dokumenter og filer -Menu.UserPicturesTip = Indeholder digitale fotos, billeder og grafikfiler -Menu.UserMusicTip = Indeholder musik og andre lydfiler -Menu.UserVideosTip = Indeholder film og andre videofiler -Menu.NetworkTip = Viser eksisterende netværksforbindelser på computeren og hjælper dig med at oprette nye forbindelser -Menu.PrintersTip = Tilføjer, fjerner og konfigurerer printere lokalt og på netværket -Menu.TaskbarTip = Tilpas menuen Start og proceslinjen f.eks. hvilken type elementer, der skal vises, og hvordan de skal vises -Menu.ControlPanelTip = Rediger indstillinger, og tilpas computerens funktioner. -Menu.DocumentsLibTip = Få adgang til breve, rapporter, notater og andre slags dokumenter. -Menu.MusicLibTip = Afspil musik og andre lydfiler. -Menu.PicturesLibTip = Få vist og organiser digitale billeder. -Menu.VideosLibTip = Se film og andre digitale videoer. -Menu.RecordingsLibTip = Se tv-programmer optaget på computeren. -Menu.DownloadTip = Find internetoverførsler og links til yndlingswebsteder. -Menu.HomegroupTip = Få adgang til biblioteker og mapper, der deles af andre i hjemmegruppen. -Menu.RunTip = Åbner et program, en mappe, et dokument eller et websted -Menu.HelpTip = Find emner i Hjælp, selvstudier, fejlfinding og andre supporttjenester -Menu.ProgramsTip = Åbner en liste over dine programmer -Menu.SearchFilesTip = Søg efter dokumenter, musik, billeder, e-mails m.m. -Menu.GamesTip = Spil og administrer spil på computeren -Menu.SecurityTip = Start sikkerhedsindstillingerne i Windows for at skifte adgangskode, ændre bruger eller starte Jobliste. -Menu.SearchComputersTip = Søg efter computere på netværket -Menu.SearchPrintersTip = Søg efter en printer -Menu.AdminToolsTip = Konfigurerer administrative indstillinger for computeren -Menu.ShutdownTip = Lukker alle åbne programmer, lukker Windows og slukker derefter for computeren. -Menu.RestartTip = Lukker alle åbne programmer, lukker Windows og starter derefter Windows igen. -Menu.SleepTip = Bevarer sessionen i hukommelsen og sætter computeren i strømbesparelsestilstand, så du hurtigt kan fortsætte dit arbejde. -Menu.HibernateTip = Gemmer sessionen og slukker for computeren. Når du tænder for computeren, gendanner Windows sessionen. -Menu.LogOffTip = Luk programmer, og log af. -Menu.DisconnectTip = Afbryder sessionen. Du kan genoprette forbindelsen til sessionen, når du logger på igen. -Menu.LockTip = Lås denne computer -Menu.UndockTip = Fjerner din bærbare computer fra en dockingstation. -Menu.SwitchUserTip = Skift brugere uden at lukke programmer. -Menu.Empty = (Tom) -Menu.Features = Installerede programmer og funktioner -Menu.FeaturesTip = Fjern eller rediger programmer på din computer. -Menu.SearchPeople = Efter &personer... -Menu.SortByName = So&rter efter navn -Menu.Open = Å&bn -Menu.OpenAll = &Åbn mappen Alle brugere -Menu.Explore = &Stifinder -Menu.ExploreAll = &Gennemse mappen Alle brugere -Menu.MenuSettings = Indstillinger -Menu.MenuHelp = Hjælp -Menu.MenuExit = Afslut -Menu.LogoffTitle = Log af Windows -Menu.LogoffPrompt = Vil du logge af? -Menu.LogoffYes = &Log af -Menu.LogoffNo = &Nej -Menu.RenameTitle = Omdøb -Menu.RenamePrompt = &Nyt navn: -Menu.RenameOK = OK -Menu.RenameCancel = Annuller -Menu.Organize = Organiser menuen Start -Menu.Expand = &Udvid -Menu.Collapse = S&kjul -Menu.NewFolder = Ny mappe -Menu.NewShortcut = Ny genvej -Menu.AutoArrange = &Arranger automatisk -Menu.ActionOpen = Åbn -Menu.ActionClose = Luk -Menu.ActionExecute = Kør -Menu.RemoveList = Fjern &fra denne liste -Menu.RemoveAll = &Ryd listen over seneste elementer -Menu.Explorer = Windows Stifinder -Menu.Start = Start -Menu.StartScreen = Startskærm -Menu.StartMenu = Menuen Start (Windows) -Menu.PinStart = Fastgør til menuen Start -Menu.PinStartCs = Fastgør til menuen Start (Open-Shell) -Menu.UnpinStartCs = Frigør fra menuen Start (Open-Shell) -Menu.MonitorOff = Sluk skærmen -Menu.RemoveHighlight = Fjern centralt punkt -Menu.Uninstall = &Fjern -Menu.UninstallTitle = Fjern -Menu.UninstallPrompt = Er du sikker på, at du vil fjerne %s? -Search.CategorySettings = Indstillinger -Search.CategoryPCSettings = Pc-indstillinger -Search.CategoryPrograms = Programmer -Search.CategoryDocuments = Dokumenter -Search.CategoryMusic = Musik -Search.CategoryPictures = Billeder -Search.CategoryVideos = Videoer -Search.CategoryFiles = Filer -Search.CategoryInternet = Internet -JumpList.Recent = Seneste -JumpList.Frequent = Ofte -JumpList.Tasks = Opgaver -JumpList.Pinned = Fastgjort -JumpList.Pin = F&astgør til listen -JumpList.Unpin = &Frigør fra listen -JumpList.Remove = Fje&rn fra denne liste -JumpList.PinTip = Fastgør til listen -JumpList.UnpinTip = Frigør fra listen - - -[de-DE] - German (Germany) -Menu.Programs = &Programme -Menu.Apps = Apps -Menu.AllPrograms = Alle Programme -Menu.Back = Zurück -Menu.Favorites = &Favoriten -Menu.Documents = &Dokumente -Menu.Settings = &Einstellungen -Menu.Search = &Suchen -Menu.SearchBox = Suchen -Menu.SearchPrograms = Programme/Dateien durchsuchen -Menu.SearchInternet = Internet durchsuchen -Menu.Searching = Suchvorgang... -Menu.NoMatch = Es wurden keine Suchergebnisse gefunden. -Menu.MoreResults = Weitere Ergebnisse anzeigen -Menu.Help = &Hilfe und Support -Menu.Run = A&usführen... -Menu.Logoff = "%s" ab&melden -Menu.SwitchUser = &Benutzer wechseln -Menu.Lock = &Sperren -Menu.LogOffShort = &Abmelden -Menu.Undock = Abd&ocken -Menu.Disconnect = &Trennen -Menu.ShutdownBox = He&runterfahren... -Menu.Shutdown = &Herunterfahren -Menu.Restart = &Neu starten -Menu.ShutdownUpdate = Aktualisieren und herunterfahren -Menu.RestartUpdate = Aktualisieren und neu starten -Menu.Sleep = &Energie sparen -Menu.Hibernate = &Ruhezustand -Menu.ControlPanel = S&ystemsteuerung -Menu.PCSettings = PC-Einstellungen -Menu.Security = Windows-Sicherheit -Menu.Network = &Netzwerkverbindungen -Menu.Printers = &Drucker -Menu.Taskbar = &Taskleiste und Startmenü -Menu.SearchFiles = Nach &Dateien oder Ordnern... -Menu.SearchPrinter = Nach &Druckern -Menu.SearchComputers = Nach &Computern -Menu.UserFilesTip = Enthält Ordner für Dokumente, Bilder, Musik und andere Dateien, die Ihnen gehören. -Menu.UserDocumentsTip = Enthält Briefe, Berichte und andere Dokumente und Dateien. -Menu.UserPicturesTip = Enthält digitale Fotos, Bilder und Grafikdateien. -Menu.UserMusicTip = Enthält Musik- und andere Audiodateien. -Menu.UserVideosTip = Enthält Filme und andere Videodateien. -Menu.NetworkTip = Zeigt vorhandene Netzwerkverbindungen an und hilft bei der Erstellung von neuen Verbindungen. -Menu.PrintersTip = Fügt lokale und Netzwerkdrucker hinzu, entfernt und konfiguriert diese. -Menu.TaskbarTip = Passt das Startmenü und die Taskleiste an, z.B. die Auswahl anzuzeigender Elementtypen und deren Darstellung. -Menu.ControlPanelTip = Ändert Einstellungen, und passt die Funktionalität des Computers an. -Menu.DocumentsLibTip = Greift auf Briefe, Berichte, Notizen und andere Dokumente zu. -Menu.MusicLibTip = Gibt Musik und andere Audiodateien wieder. -Menu.PicturesLibTip = Zeigt digitale Bilder an und verwaltet sie. -Menu.VideosLibTip = Sehen Sie sich private Filme und andere digitale Videos an. -Menu.RecordingsLibTip = Sehen Sie sich auf dem Computer aufgezeichnete TV-Programme an. -Menu.DownloadTip = Sucht nach Internetdownloads und Links zu bevorzugten Websites. -Menu.HomegroupTip = Greift auf Bibliotheken und Ordner zu, die von anderen Personen in der Heimnetzgruppe freigegeben werden. -Menu.RunTip = Öffnet ein Programm, einen Ordner, ein Dokument oder eine Website. -Menu.HelpTip = Sucht Hilfethemen, Lernprogramme, Problembehandlung und andere Supportdienste. -Menu.ProgramsTip = Öffnet eine Liste der Programme. -Menu.SearchFilesTip = Sucht nach Dokumenten, Musik, Bildern, E-Mail und mehr. -Menu.GamesTip = Verwaltet Spiele auf dem Computer. -Menu.SecurityTip = Öffnet die Windows-Sicherheitsoptionen, um Kennwörter zu ändern, sich als anderer Benutzer anzumelden oder den Task-Manager zu starten. -Menu.SearchComputersTip = Nach Computern im Netzwerk suchen -Menu.SearchPrintersTip = Nach einem Drucker suchen -Menu.AdminToolsTip = Konfigurieren Sie Verwaltungseinstellungen für den Computer. -Menu.ShutdownTip = Schließt alle offenen Programme, fährt Windows herunter, und schaltet den Computer aus. -Menu.RestartTip = Schließt alle offenen Programme, fährt Windows herunter, und führt einen Neustart durch. -Menu.SleepTip = Speichert die Sitzung im Arbeitsspeicher und versetzt den Computer in einen Energiesparmodus, so dass die Sitzung schnell wiederhergestellt werden kann. -Menu.HibernateTip = Speichert die Sitzung und schaltet den Computer aus. Wenn Sie den Computer einschalten, wird die Sitzung wiederhergestellt. -Menu.LogOffTip = Schließt Programme und führt die Abmeldung aus. -Menu.DisconnectTip = Trennt diese Sitzung. Sie können eine Verbindung mit dieser Sitzung erneut herstellen, wenn Sie sich das nächste Mal anmelden. -Menu.LockTip = Sperrt diesen Computer. -Menu.UndockTip = Entfernt den Laptop- bzw. Notebookcomputer aus der Dockingstation. -Menu.SwitchUserTip = Wechselt Benutzer, ohne Programme zu schließen. -Menu.Empty = (Leer) -Menu.Features = Programme und Funktionen -Menu.FeaturesTip = Deinstalliert oder ändert Programme auf dem Computer. -Menu.SearchPeople = &Nach Personen... -Menu.SortByName = &Nach Namen sortieren -Menu.Open = Ö&ffnen -Menu.OpenAll = Öffnen - &Alle Benutzer -Menu.Explore = &Explorer -Menu.ExploreAll = E&xplorer - Alle Benutzer -Menu.MenuSettings = Einstellungen -Menu.MenuHelp = Hilfe -Menu.MenuExit = Beenden -Menu.LogoffTitle = Windows-Abmeldung -Menu.LogoffPrompt = Möchten Sie sich wirklich abmelden? -Menu.LogoffYes = &Abmelden -Menu.LogoffNo = &Nein -Menu.RenameTitle = Umbenennen -Menu.RenamePrompt = &Neuer Name: -Menu.RenameOK = OK -Menu.RenameCancel = Abbrechen -Menu.Organize = Startmenü organisieren -Menu.Expand = &Erweitern -Menu.Collapse = &Reduzieren -Menu.NewFolder = Neuer Ordner -Menu.NewShortcut = Neue Verknüpfung -Menu.AutoArrange = Automatisch a&nordnen -Menu.ActionOpen = Öffnen -Menu.ActionClose = Schließen -Menu.ActionExecute = Ausführen -Menu.RemoveList = &Aus Liste entfernen -Menu.RemoveAll = &Liste zuletzt verwendeter Elemente löschen -Menu.Explorer = Windows-Explorer -Menu.Start = Start -Menu.StartScreen = Startseite -Menu.StartMenu = Startmenü (Windows) -Menu.PinStart = An Startmenü anheften -Menu.PinStartCs = An Startmenü anheften (Open-Shell) -Menu.UnpinStartCs = Vom Startmenü lösen (Open-Shell) -Menu.MonitorOff = Bildschirm ausschalten -Menu.RemoveHighlight = Haupttreffer entfernen -Menu.Uninstall = &Deinstallieren -Menu.UninstallTitle = Deinstallieren -Menu.UninstallPrompt = Möchten Sie %s wirklich deinstallieren? -Search.CategorySettings = Einstellungen -Search.CategoryPCSettings = PC-Einstellungen -Search.CategoryPrograms = Programme -Search.CategoryDocuments = Dokumente -Search.CategoryMusic = Musik -Search.CategoryPictures = Bilder -Search.CategoryVideos = Videos -Search.CategoryFiles = Dateien -Search.CategoryInternet = Internet -JumpList.Recent = Zuletzt verwendet -JumpList.Frequent = Häufig -JumpList.Tasks = Aufgaben -JumpList.Pinned = Angeheftet -JumpList.Pin = An diese Liste an&heften -JumpList.Unpin = V&on dieser Liste lösen -JumpList.Remove = &Aus Liste entfernen -JumpList.PinTip = An diese Liste anheften -JumpList.UnpinTip = Von dieser Liste lösen - - -[el-GR] - Greek (Greece) -Menu.Programs = &Προγράμματα -Menu.Apps = Εφαρμογές -Menu.AllPrograms = Όλα τα προγράμματα -Menu.Back = Πίσω -Menu.Favorites = Αγαπ&ημένα -Menu.Documents = Έ&γγραφα -Menu.Settings = Ρυ&θμίσεις -Menu.Search = &Αναζήτηση -Menu.SearchBox = Αναζήτηση -Menu.SearchPrograms = Αναζήτηση προγραμμάτων και αρχείων -Menu.SearchInternet = Αναζήτηση στο Internet -Menu.Searching = Αναζήτηση... -Menu.NoMatch = Δεν βρέθηκαν αποτελέσματα για την αναζήτησή σας. -Menu.MoreResults = Περισσότερα αποτελέσματα -Menu.Help = &Βοήθεια και υποστήριξη -Menu.Run = Εκτέ&λεση... -Menu.Logoff = Αποσύν&δεση %s -Menu.SwitchUser = Α&λλαγή χρήστη -Menu.Lock = &Κλείδωμα -Menu.LogOffShort = &Αποσύνδεση -Menu.Undock = Απαγκύρωση &υπολογιστή -Menu.Disconnect = Απο&σύνδεση -Menu.ShutdownBox = &Τερματισμός... -Menu.Shutdown = &Τερματισμός λειτουργίας -Menu.Restart = &Επανεκκίνηση -Menu.ShutdownUpdate = Ενημέρωση και τερματισμός λειτουργίας -Menu.RestartUpdate = Ενημέρωση και επανεκκίνηση -Menu.Sleep = Αναστολή &λειτουργίας -Menu.Hibernate = &Αδρανοποίηση -Menu.ControlPanel = Πί&νακας Ελέγχου -Menu.PCSettings = Ρυθμίσεις υπολογιστή -Menu.Security = Ασφάλεια των Windows -Menu.Network = &Συνδέσεις Δικτύου -Menu.Printers = Εκτυπ&ωτές -Menu.Taskbar = &Γραμμή εργασιών και μενού "Έναρξη" -Menu.SearchFiles = Για αρ&χεία ή φακέλους... -Menu.SearchPrinter = Για &Εκτυπωτή -Menu.SearchComputers = Για υ&πολογιστές -Menu.UserFilesTip = Περιέχει φακέλους για έγγραφα, εικόνες, μουσική και άλλα αρχεία που σας ανήκουν. -Menu.UserDocumentsTip = Περιέχει επιστολές, αναφορές και άλλα έγγραφα και αρχεία. -Menu.UserPicturesTip = Περιέχει ψηφιακές φωτογραφίες, εικόνες και αρχεία γραφικών. -Menu.UserMusicTip = Περιέχει μουσική και άλλα αρχεία ήχου. -Menu.UserVideosTip = Περιέχει ταινίες και άλλα αρχεία βίντεο. -Menu.NetworkTip = Εμφανίζει τις επίκαιρες συνδέσεις δικτύου σε αυτόν τον υπολογιστή και σας βοηθά στη δημιουργία νέων συνδέσεων -Menu.PrintersTip = Προσθήκη, κατάργηση και ρύθμιση παραμέτρων των τοπικών εκτυπωτών και των εκτυπωτών δικτύου. -Menu.TaskbarTip = Προσαρμογή του μενού "Έναρξη" και της γραμμής εργασιών, όπως των τύπων των προς εμφάνιση στοιχείων και πώς πρέπει να εμφανίζονται. -Menu.ControlPanelTip = Αλλάξτε τις ρυθμίσεις και προσαρμόστε τη λειτουργικότητα του υπολογιστή. -Menu.DocumentsLibTip = Πρόσβαση σε επιστολές, αναφορές, σημειώσεις και άλλους τύπους εγγράφων. -Menu.MusicLibTip = Αναπαραγωγή μουσικής και άλλων αρχείων ήχου. -Menu.PicturesLibTip = Προβολή και οργάνωση ψηφιακών εικόνων. -Menu.VideosLibTip = Παρακολούθηση οικιακών ταινιών και άλλων ψηφιακών βίντεο. -Menu.RecordingsLibTip = Παρακολούθηση τηλεοπτικών προγραμμάτων που έχουν εγγραφεί στον υπολογιστή σας. -Menu.DownloadTip = Εύρεση λήψεων Internet και συνδέσεων προς αγαπημένες τοποθεσίες Web. -Menu.HomegroupTip = Η πρόσβαση σε βιβλιοθήκες και φακέλους είναι κοινή από άλλα άτομα στην οικιακή ομάδα σας. -Menu.RunTip = Ανοίγει ένα πρόγραμμα, φάκελο, έγγραφο ή τοποθεσία Web. -Menu.HelpTip = Βρείτε θέματα Βοήθειας, εγχειρίδια εκμάθησης, λύσεις αντιμετώπισης προβλημάτων και άλλες υπηρεσίες υποστήριξης. -Menu.ProgramsTip = Ανοίγει μια λίστα των προγραμμάτων σας. -Menu.SearchFilesTip = Αναζητήστε έγγραφα, μουσική, εικόνες, αλληλογραφία και πολλά άλλα. -Menu.GamesTip = Χρήση και διαχείριση παιχνιδιών στον υπολογιστή σας. -Menu.SecurityTip = Εκκίνηση Επιλογών ασφαλείας των Windows για αλλαγή κωδικού πρόσβασης, αλλαγή χρήστη ή έναρξη της διαχείρισης εργασιών. -Menu.SearchComputersTip = Αναζήτηση υπολογιστή στο δίκτυο -Menu.SearchPrintersTip = Αναζήτηση ενός εκτυπωτή -Menu.AdminToolsTip = Ρύθμιση των παραμέτρων διαχείρισης του υπολογιστή σας. -Menu.ShutdownTip = Κλείνει όλα τα ανοικτά προγράμματα, τερματίζει τα Windows και, στη συνέχεια, τερματίζει τη λειτουργία του υπολογιστή. -Menu.RestartTip = Κλείνει όλα τα ανοικτά προγράμματα, τερματίζει τα Windows και, στη συνέχεια, πραγματοποιεί επανεκκίνηση των Windows. -Menu.SleepTip = Διατηρεί την περίοδο λειτουργίας στη μνήμη και θέτει τον υπολογιστή σε κατάσταση χαμηλής ενέργειας, ώστε να μπορείτε να συνεχίσετε γρήγορα την εργασία σας. -Menu.HibernateTip = Αποθηκεύει την περίοδο λειτουργίας και απενεργοποιεί τον υπολογιστή. Όταν ενεργοποιήσετε τον υπολογιστή, τα Windows θα επαναφέρουν την περίοδο λειτουργίας σας. -Menu.LogOffTip = Κλείστε τα προγράμματα και αποσυνδεθείτε. -Menu.DisconnectTip = Αποσυνδέει την περίοδο λειτουργίας σας. Μπορείτε να συνδεθείτε ξανά σε αυτήν την περίοδο λειτουργίας την επόμενη φορά που θα εισέλθετε. -Menu.LockTip = Κλείδωμα αυτού του υπολογιστή. -Menu.UndockTip = Αφαιρεί τον φορητό υπολογιστή σας από ένα σταθμό αγκύρωσης. -Menu.SwitchUserTip = Αλλαγή χρηστών χωρίς κλείσιμο των προγραμμάτων. -Menu.Empty = (Κενό) -Menu.Features = Προγράμματα και δυνατότητες -Menu.FeaturesTip = Κατάργηση εγκατάστασης ή αλλαγή των προγραμμάτων του υπολογιστή σας. -Menu.SearchPeople = Για ά&τομα... -Menu.SortByName = Ταξι&νόμηση κατά όνομα -Menu.Open = Άν&οιγμα -Menu.OpenAll = Άνοιγμα ό&λων των χρηστών -Menu.Explore = Ε&ξερεύνηση -Menu.ExploreAll = &Εξερεύνηση όλων των χρηστών -Menu.MenuSettings = Ρυθμίσεις -Menu.MenuHelp = Βοήθεια -Menu.MenuExit = Έξοδος -Menu.LogoffTitle = Αποσύνδεση των Windows -Menu.LogoffPrompt = Είστε βέβαιοι ότι θέλετε να αποσυνδεθείτε; -Menu.LogoffYes = Αποσύ&νδεση -Menu.LogoffNo = Ό&χι -Menu.RenameTitle = Μετονομασία -Menu.RenamePrompt = &Νέο όνομα: -Menu.RenameOK = ΟΚ -Menu.RenameCancel = Άκυρο -Menu.Organize = Οργάνωση μενού "Έναρξη" -Menu.Expand = Ανάπτυ&ξη -Menu.Collapse = Σύμπτ&υξη -Menu.NewFolder = Νέος φάκελος -Menu.NewShortcut = Νέα συντόμευση -Menu.AutoArrange = &Αυτόματη τακτοποίηση -Menu.ActionOpen = Άνοιγμα -Menu.ActionClose = Kλείσιμο -Menu.ActionExecute = Εκτέλεση -Menu.RemoveList = Κατά&ργηση από τη λίστα -Menu.RemoveAll = &Εκκαθάριση λίστας πρόσφατων στοιχείων -Menu.Explorer = Εξερεύνηση των Windows -Menu.Start = Έναρξη -Menu.StartScreen = Οθόνη Έναρξης -Menu.StartMenu = Μενού "Έναρξη" (Windows) -Menu.PinStart = Καρφίτσωμα στο μενού "Έναρξη" -Menu.PinStartCs = Καρφίτσωμα στο μενού "Έναρξη" (Open-Shell) -Menu.UnpinStartCs = Ξεκαρφίτσωμα από το μενού "Έναρξη" (Open-Shell) -Menu.MonitorOff = Απενεργοποίηση της οθόνης -Menu.RemoveHighlight = Κατάργηση επισήμανσης -Menu.Uninstall = &Κατάργηση εγκατάστασης -Menu.UninstallTitle = Κατάργηση εγκατάστασης -Menu.UninstallPrompt = Είστε βέβαιοι ότι θέλετε να καταργήσετε την εγκατάσταση του %s; -Search.CategorySettings = Ρυθμίσεις -Search.CategoryPCSettings = Ρυθμίσεις υπολογιστή -Search.CategoryPrograms = Προγράμματα -Search.CategoryDocuments = Έγγραφα -Search.CategoryMusic = Μουσική -Search.CategoryPictures = Εικόνες -Search.CategoryVideos = Βίντεο -Search.CategoryFiles = Αρχεία -Search.CategoryInternet = Ιnternet -JumpList.Recent = Πρόσφατα -JumpList.Frequent = Στοιχεία που επιλέγονται συχνότερα -JumpList.Tasks = Εργασίες -JumpList.Pinned = Καρφιτσωμένα -JumpList.Pin = &Καρφίτσωμα σε αυτήν τη λίστα -JumpList.Unpin = &Ξεκαρφίτσωμα από αυτήν τη λίστα -JumpList.Remove = Κατά&ργηση από τη λίστα -JumpList.PinTip = Καρφίτσωμα σε αυτήν τη λίστα -JumpList.UnpinTip = Ξεκαρφίτσωμα από αυτήν τη λίστα - - -[en-US] - English (United States) -Menu.Programs = &Programs -Menu.Apps = Apps -Menu.AllPrograms = All Programs -Menu.Back = Back -Menu.Favorites = F&avorites -Menu.Documents = &Documents -Menu.Settings = &Settings -Menu.Search = Sear&ch -Menu.SearchBox = Search -Menu.SearchPrograms = Search programs and files -Menu.SearchInternet = Search the Internet -Menu.Searching = Searching... -Menu.NoMatch = No items match your search. -Menu.MoreResults = See more results -Menu.Help = &Help and Support -Menu.Run = &Run... -Menu.Logoff = &Log Off %s -Menu.SwitchUser = S&witch user -Menu.Lock = L&ock -Menu.LogOffShort = &Log off -Menu.Undock = Undock Comput&er -Menu.Disconnect = D&isconnect -Menu.ShutdownBox = Sh&ut Down... -Menu.Shutdown = Sh&ut Down -Menu.Restart = &Restart -Menu.ShutdownUpdate = Update and shut down -Menu.RestartUpdate = Update and restart -Menu.Sleep = &Sleep -Menu.Hibernate = &Hibernate -Menu.ControlPanel = &Control Panel -Menu.PCSettings = Settings -Menu.Security = Windows Security -Menu.Network = &Network Connections -Menu.Printers = &Printers -Menu.Taskbar = &Taskbar and Start Menu -Menu.SearchFiles = For &Files or Folders... -Menu.SearchPrinter = For &Printer -Menu.SearchComputers = For &Computers -Menu.UserFilesTip = Contains folders for Documents, Pictures, Music, and other files that belong to you. -Menu.UserDocumentsTip = Contains letters, reports, and other documents and files. -Menu.UserPicturesTip = Contains digital photos, images, and graphic files. -Menu.UserMusicTip = Contains music and other audio files. -Menu.UserVideosTip = Contains movies and other video files. -Menu.NetworkTip = Displays existing network connections on this computer and helps you create new ones -Menu.PrintersTip = Add, remove, and configure local and network printers. -Menu.TaskbarTip = Customize the Start Menu and the taskbar, such as the types of items to be displayed and how they should appear. -Menu.ControlPanelTip = Change settings and customize the functionality of your computer. -Menu.DocumentsLibTip = Access letters, reports, notes, and other kinds of documents. -Menu.MusicLibTip = Play music and other audio files. -Menu.PicturesLibTip = View and organize digital pictures. -Menu.VideosLibTip = Watch home movies and other digital videos. -Menu.RecordingsLibTip = Watch TV programs recorded on your computer. -Menu.DownloadTip = Find Internet downloads and links to favorite websites. -Menu.HomegroupTip = Access libraries and folders shared by other people in your homegroup. -Menu.RunTip = Opens a program, folder, document, or web site. -Menu.HelpTip = Find Help topics, tutorials, troubleshooting, and other support services. -Menu.ProgramsTip = Opens a list of your programs. -Menu.SearchFilesTip = Search for documents, music, pictures, email and more. -Menu.GamesTip = Play and manage games on your computer. -Menu.SecurityTip = Launch Windows Security Options to Change Password, Switch User, or Start Task Manager. -Menu.SearchComputersTip = Search for computers on the network -Menu.SearchPrintersTip = Search for a printer -Menu.AdminToolsTip = Configure administrative settings for your computer. -Menu.ShutdownTip = Closes all open programs, shuts down Windows, and then turns off your computer. -Menu.RestartTip = Closes all open programs, shuts down Windows, and then starts Windows again. -Menu.SleepTip = Keeps your session in memory and puts the computer in a low-power state so that you can quickly resume working. -Menu.HibernateTip = Saves your session and turns off the computer. When you turn on the computer, Windows restores your session. -Menu.LogOffTip = Close programs and log off. -Menu.DisconnectTip = Disconnects your session. You can reconnect to this session when you log on again. -Menu.LockTip = Lock this computer. -Menu.UndockTip = Removes your laptop or notebook computer from a docking station. -Menu.SwitchUserTip = Switch users without closing programs. -Menu.Empty = (Empty) -Menu.Features = Programs and Features -Menu.FeaturesTip = Uninstall or change programs on your computer. -Menu.SearchPeople = For &People... -Menu.SortByName = Sort &by Name -Menu.Open = &Open -Menu.OpenAll = O&pen All Users -Menu.Explore = &Explore -Menu.ExploreAll = E&xplore All Users -Menu.MenuSettings = Settings -Menu.MenuHelp = Help -Menu.MenuExit = Exit -Menu.LogoffTitle = Log Off Windows -Menu.LogoffPrompt = Are you sure you want to log off? -Menu.LogoffYes = &Log Off -Menu.LogoffNo = &No -Menu.RenameTitle = Rename -Menu.RenamePrompt = &New name: -Menu.RenameOK = OK -Menu.RenameCancel = Cancel -Menu.Organize = Organize Start menu -Menu.Expand = Exp&and -Menu.Collapse = Coll&apse -Menu.NewFolder = New Folder -Menu.NewShortcut = New Shortcut -Menu.AutoArrange = &Auto Arrange -Menu.ActionOpen = Open -Menu.ActionClose = Close -Menu.ActionExecute = Execute -Menu.RemoveList = Remove &from this list -Menu.RemoveAll = C&lear recent items list -Menu.Explorer = Windows Explorer -Menu.Start = Start -Menu.StartScreen = Start Screen -Menu.StartMenu = Start Menu (Windows) -Menu.PinStart = Pin to Start menu -Menu.PinStartCs = Pin to Start menu (Open-Shell) -Menu.UnpinStartCs = Unpin from Start menu (Open-Shell) -Menu.MonitorOff = Turn the display off -Menu.RemoveHighlight = Remove highlight -Menu.Uninstall = &Uninstall -Menu.UninstallTitle = Uninstall -Menu.UninstallPrompt = Are you sure you want to uninstall %s? -Search.CategorySettings = Settings -Search.CategoryPCSettings = Modern Settings -Search.CategoryPrograms = Programs -Search.CategoryDocuments = Documents -Search.CategoryMusic = Music -Search.CategoryPictures = Pictures -Search.CategoryVideos = Videos -Search.CategoryFiles = Files -Search.CategoryInternet = Internet -JumpList.Recent = Recent -JumpList.Frequent = Frequent -JumpList.Tasks = Tasks -JumpList.Pinned = Pinned -JumpList.Pin = P&in to this list -JumpList.Unpin = &Unpin from this list -JumpList.Remove = Remove &from this list -JumpList.PinTip = Pin to this list -JumpList.UnpinTip = Unpin from this list - - -[es-ES] - Spanish (Spain) -Menu.Programs = &Programas -Menu.Apps = Aplicaciones -Menu.AllPrograms = Todos los programas -Menu.Back = Atrás -Menu.Favorites = Fa&voritos -Menu.Documents = Docu&mentos -Menu.Settings = Con&figuración -Menu.Search = &Buscar -Menu.SearchBox = Buscar -Menu.SearchPrograms = Buscar programas y archivos -Menu.SearchInternet = Buscar en Internet -Menu.Searching = Buscando... -Menu.NoMatch = Ningún elemento coincide con el criterio de búsqueda. -Menu.MoreResults = Ver más resultados -Menu.Help = &Ayuda y soporte técnico -Menu.Run = &Ejecutar... -Menu.Logoff = &Cerrar sesión de %s -Menu.SwitchUser = Cam&biar de usuario -Menu.Lock = Bl&oquear -Menu.LogOffShort = C&errar sesión -Menu.Undock = De&sacoplar equipo -Menu.Disconnect = &Desconectar -Menu.ShutdownBox = Apaga&r... -Menu.Shutdown = &Apagar -Menu.Restart = &Reiniciar -Menu.ShutdownUpdate = Actualizar y apagar -Menu.RestartUpdate = Actualizar y reiniciar -Menu.Sleep = &Suspender -Menu.Hibernate = &Hibernar -Menu.ControlPanel = &Panel de control -Menu.PCSettings = Configuración de tu PC -Menu.Security = Seguridad de Windows -Menu.Network = &Conexiones de red -Menu.Printers = &Impresoras -Menu.Taskbar = &Barra de tareas y menú Inicio -Menu.SearchFiles = &Archivos o carpetas... -Menu.SearchPrinter = I&mpresoras -Menu.SearchComputers = Equip&os -Menu.UserFilesTip = Contiene carpetas para Documentos, Imágenes, Música y otros archivos que le pertenecen. -Menu.UserDocumentsTip = Contiene cartas, informes, y otros documentos y archivos. -Menu.UserPicturesTip = Contiene fotos digitales, imágenes y archivos de gráficos. -Menu.UserMusicTip = Contiene música y otros archivos de audio. -Menu.UserVideosTip = Contiene películas y otros archivos de vídeo. -Menu.NetworkTip = Muestra las conexiones de red existentes en este equipo y ayuda a crear otras nuevas -Menu.PrintersTip = Agrega, quita y configura impresoras locales y de red. -Menu.TaskbarTip = Personaliza el menú Inicio y la barra de tareas, el tipo de elementos que se muestra y la forma en que deben aparecer. -Menu.ControlPanelTip = Cambie la configuración y personalice la funcionalidad de su equipo. -Menu.DocumentsLibTip = Obtenga acceso a cartas, informes, notas y otra clase de documentos. -Menu.MusicLibTip = Reproduzca música y otros archivos de audio. -Menu.PicturesLibTip = Vea y organice imágenes digitales. -Menu.VideosLibTip = Vea películas domésticas y otros vídeos digitales. -Menu.RecordingsLibTip = Vea programas de televisión grabados en el equipo. -Menu.DownloadTip = Busque descargas de Internet y vínculos a sus sitios web favoritos. -Menu.HomegroupTip = Obtenga acceso a las bibliotecas y carpetas que comparten otros usuarios de su grupo en el hogar. -Menu.RunTip = Abre un programa, una carpeta, un documento o un sitio web. -Menu.HelpTip = Busque temas de Ayuda, tutoriales, solucionar problemas y otros servicios de soporte técnico. -Menu.ProgramsTip = Abre una lista de sus programas. -Menu.SearchFilesTip = Buscar documentos, música, imágenes, correo electrónico y más. -Menu.GamesTip = Juegue y administre los juegos en el equipo. -Menu.SecurityTip = Inicie Opciones de seguridad de Windows para cambiar la contraseña, cambiar de usuario o iniciar el Administrador de tareas. -Menu.SearchComputersTip = Buscar equipos en la red -Menu.SearchPrintersTip = Buscar una impresora -Menu.AdminToolsTip = Haga configuraciones administrativas en el equipo -Menu.ShutdownTip = Cierra todos los programas abiertos, cierra Windows y, después, apaga el equipo. -Menu.RestartTip = Cierra todos los programas abiertos, cierra Windows y después inicia Windows de nuevo. -Menu.SleepTip = Mantiene la memoria de la sesión y pone el equipo en un estado de baja energía para que pueda continuar trabajando rápidamente. -Menu.HibernateTip = Guarda la sesión y apaga el equipo. Cuando inicie el equipo, Windows restaurará la sesión. -Menu.LogOffTip = Cerrar los programas y la sesión. -Menu.DisconnectTip = Desconecta su sesión. Puede reconectarse a esta sesión cuando vuelva a iniciar sesión. -Menu.LockTip = Bloquear este equipo. -Menu.UndockTip = Quita un equipo portátil o de mano de la estación de acoplamiento. -Menu.SwitchUserTip = Cambiar de usuario sin cerrar los programas. -Menu.Empty = (Vacío) -Menu.Features = Programas y características -Menu.FeaturesTip = Desinstale o cambie programas en el equipo. -Menu.SearchPeople = &Personas... -Menu.SortByName = Ordenar por &Nombre -Menu.Open = &Abrir -Menu.OpenAll = Ab&rir todos los usuarios -Menu.Explore = E&xplorar -Menu.ExploreAll = &Explorar todos los usuarios -Menu.MenuSettings = Configuración -Menu.MenuHelp = Ayuda -Menu.MenuExit = Salir -Menu.LogoffTitle = Cerrar la sesión en Windows -Menu.LogoffPrompt = ¿Está seguro de que desea cerrar la sesión? -Menu.LogoffYes = &Cerrar sesión -Menu.LogoffNo = &No -Menu.RenameTitle = Cambiar nombre -Menu.RenamePrompt = &Nuevo nombre: -Menu.RenameOK = Aceptar -Menu.RenameCancel = Cancelar -Menu.Organize = Organizar el menú Inicio -Menu.Expand = &Expandir -Menu.Collapse = &Contraer -Menu.NewFolder = Nueva carpeta -Menu.NewShortcut = Nuevo acceso directo -Menu.AutoArrange = Organi&zación automática -Menu.ActionOpen = Abrir -Menu.ActionClose = Cerrar -Menu.ActionExecute = Ejecutar -Menu.RemoveList = &Quitar de esta lista -Menu.RemoveAll = &Borrar lista de elementos recientes -Menu.Explorer = Explorador de Windows -Menu.Start = Inicio -Menu.StartScreen = Pantalla Inicio -Menu.StartMenu = Menú Inicio (Windows) -Menu.PinStart = Anclar al menú Inicio -Menu.PinStartCs = Anclar al menú Inicio (Open-Shell) -Menu.UnpinStartCs = Desanclar del menú Inicio (Open-Shell) -Menu.MonitorOff = Apagar pantalla -Menu.RemoveHighlight = Quitar como elemento destacado -Menu.Uninstall = &Desinstalar -Menu.UninstallTitle = Desinstalar -Menu.UninstallPrompt = ¿Está seguro de que desea desinstalar %s? -Search.CategorySettings = Configuración -Search.CategoryPCSettings = Configuración de tu PC -Search.CategoryPrograms = Programas -Search.CategoryDocuments = Documentos -Search.CategoryMusic = Música -Search.CategoryPictures = Imágenes -Search.CategoryVideos = Vídeos -Search.CategoryFiles = Archivos -Search.CategoryInternet = Internet -JumpList.Recent = Reciente -JumpList.Frequent = Frecuente -JumpList.Tasks = Tareas -JumpList.Pinned = Anclado -JumpList.Pin = &Anclar a esta lista -JumpList.Unpin = &Desanclar de esta lista -JumpList.Remove = &Quitar de esta lista -JumpList.PinTip = Anclar a esta lista -JumpList.UnpinTip = Desanclar de esta lista - - -[et-EE] - Estonian (Estonia) -Menu.Programs = &Programmid -Menu.Apps = Rakendused -Menu.AllPrograms = Kõik programmid -Menu.Back = Tagasi -Menu.Favorites = &Lemmikud -Menu.Documents = &Dokumendid -Menu.Settings = &Sätted -Menu.Search = O&tsi -Menu.SearchBox = Otsi -Menu.SearchPrograms = Programmide ja failide otsing -Menu.SearchInternet = Otsi Internetist -Menu.Searching = Otsimine... -Menu.NoMatch = Teie otsingule ei vasta ükski üksus. -Menu.MoreResults = Kuva rohkem tulemeid -Menu.Help = Sp&ikker ja tugi -Menu.Run = &Käivita... -Menu.Logoff = L&ogi välja kasutaja %s -Menu.SwitchUser = V&aheta kasutajat -Menu.Lock = &Lukusta -Menu.LogOffShort = &Logi välja -Menu.Undock = Doki a&rvuti lahti -Menu.Disconnect = K&atkesta ühendus -Menu.ShutdownBox = S&ule arvuti... -Menu.Shutdown = &Sule arvuti -Menu.Restart = &Taaskäivita -Menu.ShutdownUpdate = Värskenda ja sule -Menu.RestartUpdate = Värskenda ja taaskäivita -Menu.Sleep = &Unerežiim -Menu.Hibernate = &Talveunerežiim -Menu.ControlPanel = &Juhtpaneel -Menu.PCSettings = Arvutisätted -Menu.Security = Windowsi turvalisus -Menu.Network = Võrguühe&ndused -Menu.Printers = &Printerid -Menu.Taskbar = &Tegumiriba ja menüü Start -Menu.SearchFiles = &Failid või kaustad... -Menu.SearchPrinter = &Printer -Menu.SearchComputers = &Arvutitele -Menu.UserFilesTip = Sisaldab dokumentide, piltide, muusika ning teiste teile kuuluvate failide kaustu. -Menu.UserDocumentsTip = Sisaldab kirju, aruandeid ja muid dokumente ning faile. -Menu.UserPicturesTip = Sisaldab digitaalfotosid, pilte ja graafikafaile. -Menu.UserMusicTip = Sisaldab muusikat ja muid helifaile. -Menu.UserVideosTip = Sisaldab filme ja muid videofaile. -Menu.NetworkTip = Kuvab selles arvutis olemasolevad võrguühendused ja aitab luua uusi -Menu.PrintersTip = Lisa, eemalda ja konfigureeri kohalikke ning võrguprintereid. -Menu.TaskbarTip = Saate kohandada menüüd Start ja tegumiriba, näiteks seal kuvatavate üksuste tüüpe ja kuvamisviisi. -Menu.ControlPanelTip = Arvuti sätete muutmine ja funktsioonide kohandamine. -Menu.DocumentsLibTip = Juurdepääs kirjadele, aruannetele, märkmetele ja muudele dokumentidele. -Menu.MusicLibTip = Muusika ja muude helifailide esitamine. -Menu.PicturesLibTip = Digipiltide vaatamine ja korraldamine. -Menu.VideosLibTip = Kodu- ja muude digivideote vaatamine. -Menu.RecordingsLibTip = Arvutisse salvestatud telesaadete vaatamine. -Menu.DownloadTip = Internetist allalaaditavate failide ja lemmikveebisaidi linkide otsimine. -Menu.HomegroupTip = Juurdepääs teiste kodurühma inimeste ühiskasutusse antud teekidele ja kaustadele. -Menu.RunTip = Avab programmi, kausta, dokumendi või veebisaidi. -Menu.HelpTip = Otsige spikriteemasid, õpikuid, tõrkeotsinguid ja muid tugiteenuseid. -Menu.ProgramsTip = Kuvab programmide loendi. -Menu.SearchFilesTip = Otsige dokumente, muusikat, pilte, meile ja muud. -Menu.GamesTip = Mängige ja hallake oma arvutis mänge. -Menu.SecurityTip = Parooli muutmiseks, kasutaja vahetamiseks või tegumihalduri käivitamiseks avage Windowsi turbe suvandid. -Menu.SearchComputersTip = Otsi võrgus olevaid arvuteid -Menu.SearchPrintersTip = Otsi printerit -Menu.AdminToolsTip = Arvuti haldussätete konfigureerimine. -Menu.ShutdownTip = Suleb kõik avatud programmid, suleb Windowsi ja lülitab arvuti välja. -Menu.RestartTip = Suleb kõik avatud programmid, sulgeb Windowsi ning seejärel käivitab Windowsi uuesti. -Menu.SleepTip = Säilitab teie seansi mälus ja lülitab arvuti energiasäästurežiimi, et saaksite kiiresti töötamist jätkata. -Menu.HibernateTip = Salvestab teie seansi ning lülitab arvuti välja. Kui lülitate arvuti sisse, taastab Windows teie seansi. -Menu.LogOffTip = Programmide sulgemine ja väljalogimine. -Menu.DisconnectTip = Katkestab teie seansi. Saate selle seansiga ühenduse taastada, kui uuesti sisse logite. -Menu.LockTip = Selle arvuti lukustamine. -Menu.UndockTip = Eemaldab teie sülearvuti dokkimisjaamast. -Menu.SwitchUserTip = Kasutaja vahetamine ilma programme sulgemata. -Menu.Empty = (Tühi) -Menu.Features = Programmid ja funktsioonid -Menu.FeaturesTip = Desinstallige või muutke programme oma arvutis. -Menu.SearchPeople = &Inimesi... -Menu.SortByName = Sor&di nime järgi -Menu.Open = &Ava -Menu.OpenAll = A&va kaust Kõik kasutajad -Menu.Explore = Uu&ri -Menu.ExploreAll = Uur&i kausta Kõik kasutajad -Menu.MenuSettings = Sätted -Menu.MenuHelp = Spikker -Menu.MenuExit = Välju -Menu.LogoffTitle = Windowsist väljalogimine -Menu.LogoffPrompt = Kas soovite kindlasti välja logida? -Menu.LogoffYes = Lo&gi välja -Menu.LogoffNo = &Ei -Menu.RenameTitle = Ümbernimetamine -Menu.RenamePrompt = &Uus nimi: -Menu.RenameOK = OK -Menu.RenameCancel = Loobu -Menu.Organize = Korralda menüü Start -Menu.Expand = &Laienda -Menu.Collapse = A&henda -Menu.NewFolder = Uus kaust -Menu.NewShortcut = Uus otsetee -Menu.AutoArrange = &Korralda automaatselt -Menu.ActionOpen = Ava -Menu.ActionClose = Sule -Menu.ActionExecute = Täida -Menu.RemoveList = Eemal&da sellest loendist -Menu.RemoveAll = Tü&hjenda hiljutiste üksuste loend -Menu.Explorer = Windows Explorer -Menu.Start = Start -Menu.StartScreen = Avakuva -Menu.StartMenu = Menüü Start (Windows) -Menu.PinStart = Kinnita menüüsse Start -Menu.PinStartCs = Kinnita menüüsse Start (Open-Shell) -Menu.UnpinStartCs = Eemalda menüüst Start (Open-Shell) -Menu.MonitorOff = Lülitage kuvar välja -Menu.RemoveHighlight = Eemalda esiletõst -Menu.Uninstall = &Desinstalli -Menu.UninstallTitle = Desinstalli -Menu.UninstallPrompt = Kas soovite kindlasti desinstallida %s? -Search.CategorySettings = Sätted -Search.CategoryPCSettings = Arvutisätted -Search.CategoryPrograms = Programmid -Search.CategoryDocuments = Dokumendid -Search.CategoryMusic = Muusika -Search.CategoryPictures = Pildid -Search.CategoryVideos = Videod -Search.CategoryFiles = Failid -Search.CategoryInternet = Internet -JumpList.Recent = Hiljutised -JumpList.Frequent = Sagedased -JumpList.Tasks = Toimingud -JumpList.Pinned = Kinnitatud -JumpList.Pin = &Kinnita sellesse loendisse -JumpList.Unpin = &Eemalda sellest loendist -JumpList.Remove = Eemal&da sellest loendist -JumpList.PinTip = Kinnita sellesse loendisse -JumpList.UnpinTip = Eemalda sellest loendist - - -[fa-IR] - Persian -Menu.Programs = &برنامه‌ها -Menu.Apps = برنامه‌ها -Menu.AllPrograms = همه برنامه‌ها -Menu.Back = عقب -Menu.Favorites = علا&قه‌مندی‌ها -Menu.Documents = ا&سناد -Menu.Settings = تن&ظیمات -Menu.Search = &جستجو -Menu.SearchBox = جستجو -Menu.SearchPrograms = جستجوی برنامه‌ها و پرونده‌ها -Menu.SearchInternet = جستجوی اینترنت -Menu.Searching = در حال جستجو... -Menu.NoMatch = ‏‏هیچ موردی با جستجوی شما مطابقت ندارد. -Menu.MoreResults = دیدن نتایج بیشتر -Menu.Help = را&هنمایی و پشتیبانی -Menu.Run = &اجرا... -Menu.Logoff = &خروج از سیستم %s -Menu.SwitchUser = تعویض کاربر -Menu.Lock = قفل کردن -Menu.LogOffShort = خروج از سیستم -Menu.Undock = جداسازی را&یانه از محل استقرار -Menu.Disconnect = ق&طع ارتباط -Menu.ShutdownBox = خامو&ش کردن... -Menu.Shutdown = خامو&ش کردن... -Menu.Restart = &راه‌اندازی مجدد -Menu.ShutdownUpdate = به‌روزرسانی و خاموش کردن -Menu.RestartUpdate = به‌روزرسانی و راه‌اندازی مجدد -Menu.Sleep = خ&واب -Menu.Hibernate = خاموشی &موقت -Menu.ControlPanel = &صفحه کنترل -Menu.PCSettings = تنظیمات رایانه -Menu.Security = امنیت ویندوز -Menu.Network = اتصالات شب&که -Menu.Printers = &چاپگرها -Menu.Taskbar = &نوار وظیفه و منوی شروع -Menu.SearchFiles = برای &پرونده‌ها و پوشه‌ها... -Menu.SearchPrinter = برای &چاپگر -Menu.SearchComputers = برای &رایانه‌ها -Menu.UserFilesTip = شامل پوشه‌های اسناد، تصاویر، موسیقی‌ها و پرونده‌های دیگری است که به شما تعلق دارد. -Menu.UserDocumentsTip = شامل نامه‌ها، اخبار و اسناد و پرونده‌های دیگر است. -Menu.UserPicturesTip = شامل عکس‌های دیجیتالی، تصاویر و پرونده‌های گرافیکی است. -Menu.UserMusicTip = شامل موسیقی‌ها و دیگر پرونده‌های صوتی است. -Menu.UserVideosTip = شامل فیلم‌ها و دیگر پرونده‌های ویدئویی است. -Menu.NetworkTip = ‏‏اتصالات شبکه موجود روی رایانه را نمایش می‌دهد و به شما در ایجاد اتصالات جدید کمک می کند -Menu.PrintersTip = چاپگرهای محلی و شبکه را اضافه، حذف و پیکربندی کنید. -Menu.TaskbarTip = ‏‏منوی "شروع" و نوار وظیفه را سفارشی می کند، مانند انواع موارد و نحوه نمایش آنها. -Menu.ControlPanelTip = تنظیمات را تغییر داده و عملکرد رایانه را سفارشی کنید. -Menu.DocumentsLibTip = دسترسی به نامه‌ها، گزارش‌ها، یادداشت‌ها، و انواع دیگر مدارک. -Menu.MusicLibTip = پخش موسیقی و پرونده‌های صوتی دیگر. -Menu.PicturesLibTip = مشاهده و سازماندهی تصاویر دیجیتالی. -Menu.VideosLibTip = تماشای فیلم‌های خانوادگی و سایر فیلم‌های دیجیتالی. -Menu.RecordingsLibTip = تماشای برنامه‌های تلویزیونی ضبط شده در رایانه شما. -Menu.DownloadTip = یافتن بارگیری‌های اینترنتی و پیوند به وب‌سایت‌های دلخواه. -Menu.HomegroupTip = به کتابخانه‌ها و پوشه‌هایی که دیگران به اشتراک گذاشته‌اند در گروه خانگی خود دسترسی پیدا کنید. -Menu.RunTip = یک برنامه، پوشه، سند یا وب‌سایت را باز می‌کند. -Menu.HelpTip = پیدا کردن عناوین راهنما، آموزش، رفع اشکال، و خدمات پشتیبانی دیگر. -Menu.ProgramsTip = فهرستی از برنامه‌های شما را باز می‌کند. -Menu.SearchFilesTip = جستجو برای سندها، موسیقی‌ها، تصاویر، پست الکترونیکی و موارد دیگر. -Menu.GamesTip = بازی کردن و مدیریت بازی‌های رایانه شما. -Menu.SecurityTip = راه‌اندازی گزینه‌های امنیتی ویندوز برای تغییر رمز ورود، تعویض کاربر یا شروع کنترل‌گر فعالیت‌ها. -Menu.SearchComputersTip = جستجو برای رایانه‌ها در شبکه -Menu.SearchPrintersTip = جستجو برای چاپگر -Menu.AdminToolsTip = پیکربندی تنظیمات مدیریت برای رایانه شما. -Menu.ShutdownTip = همه برنامه‌های باز را می‌بندد، ویندوز را خاموش می‌کند و سپس رایانه شما را خاموش می‌کند. -Menu.RestartTip = همه برنامه‌های باز را می‌بندد، ویندوز را خاموش می‌کند و سپس ویندوز را مجدداً راه‌اندازی می‌کند. -Menu.SleepTip = جلسه شما را در حافظه نگه می‌دارد و رایانه را در حالت مصرف برق کمتر قرار می‌دهد تا شما سریعاً بتوانید به کار خود برگردید. -Menu.HibernateTip = جلسه شما را ذخیره و رایانه را خاموش می‌کند. وقتی که رایانه را روشن می‌کنید، ویندوز جلسه شما را باز می‌گرداند. -Menu.LogOffTip = ‏‏برنامه‌ها را ببندید و از سیستم خارج شوید. -Menu.DisconnectTip = جلسه شما را قطع می‌کند. می‌توانید هنگامی که دوباره به سیستم وارد می‌شوید مجدداً به این جلسه وصل شوید. -Menu.LockTip = این رایانه را قفل کنید. -Menu.UndockTip = رایانه کیفی یا نوت‌بوک خود را از محل استقرار جدا کنید. -Menu.SwitchUserTip = تعویض کاربران بدون بستن برنامه‌ها. -Menu.Empty = (خالی) -Menu.Features = برنامه‌ها و ویژگی‌ها -Menu.FeaturesTip = برنامه‌های رایانه خود را تغییر داده یا پاک کنید. -Menu.SearchPeople = برای ا&فراد... -Menu.SortByName = &ترتیب بر اساس نام -Menu.Open = با&ز کردن -Menu.OpenAll = باز کردن تمام &کاربرها -Menu.Explore = کاو&ش -Menu.ExploreAll = کاوش ت&مام کاربرها -Menu.MenuSettings = تنظیمات -Menu.MenuHelp = راهنما -Menu.MenuExit = خروج -Menu.LogoffTitle = خروج از ویندوز -Menu.LogoffPrompt = آیا برای خروج از سیستم مطمئن هستید؟ -Menu.LogoffYes = خروج از س&یستم -Menu.LogoffNo = &خیر -Menu.RenameTitle = تغییر نام -Menu.RenamePrompt = نام &جدید: -Menu.RenameOK = تایید -Menu.RenameCancel = لغو -Menu.Organize = سازماندهی منوی شروع -Menu.Expand = با&ز شدن -Menu.Collapse = جمع &شدن -Menu.NewFolder = پوشه جدید -Menu.NewShortcut = میانبر جدید -Menu.AutoArrange = ترتیب خو&دکار -Menu.ActionOpen = باز کردن -Menu.ActionClose = بستن -Menu.ActionExecute = اجرا -Menu.RemoveList = حذف از این &لیست -Menu.RemoveAll = &پاک کردن لیست موارد اخیر -Menu.Explorer = کاوشگر ویندوز -Menu.Start = شروع -Menu.StartScreen = صفحه شروع -Menu.StartMenu = منوی آغاز (Windows) -Menu.PinStart = سنجاق کردن به منوی شروع -Menu.PinStartCs = سنجاق کردن به منوی شروع (Open-Shell) -Menu.UnpinStartCs = برداشتن از منوی شروع (Open-Shell) -Menu.MonitorOff = خاموش کردن صفحه نمایش -Menu.RemoveHighlight = حذف هایلایت -Menu.Uninstall = ل&غو نصب -Menu.UninstallTitle = لغو نصب -Menu.UninstallPrompt = ‏‏آیا مطمئنید می خواهید %s را لغو نصب کنید؟ -Menu.ClassicSettings = منوی ش&روع کلاسیک -Menu.SettingsTip = تنظیمات منوی شروع کلاسیک -Search.CategorySettings = تنظیمات -Search.CategoryPCSettings = تنظیمات رایانه -Search.CategoryPrograms = برنامه‌ها -Search.CategoryDocuments = اسناد -Search.CategoryMusic = موسیقی -Search.CategoryPictures = تصاویر -Search.CategoryVideos = فیلم‌ها -Search.CategoryFiles = پرونده‌ها -Search.CategoryInternet = اینترنت -JumpList.Recent = اخیر -JumpList.Frequent = مکرر -JumpList.Tasks = وظایف -JumpList.Pinned = سنجاق شده -JumpList.Pin = سن&جاق کردن به این لیست -JumpList.Unpin = &برداشتن از این لیست -JumpList.Remove = ح&ذف از این لیست -JumpList.PinTip = سننجاق کردن به این لیست -JumpList.UnpinTip = برداشتن از این لیست - - -[fi-FI] - Finnish (Finland) -Menu.Programs = O&hjelmat -Menu.Apps = Sovellukset -Menu.AllPrograms = Kaikki ohjelmat -Menu.Back = Takaisin -Menu.Favorites = &Suosikit -Menu.Documents = &Tiedostot -Menu.Settings = &Asetukset -Menu.Search = &Etsi -Menu.SearchBox = Etsi -Menu.SearchPrograms = Hae ohjelmista ja tiedostoista -Menu.SearchInternet = Etsi Internetistä -Menu.Searching = Etsitään... -Menu.NoMatch = Hakuehtoja täyttäviä kohteita ei löytynyt. -Menu.MoreResults = Näytä lisää tuloksia -Menu.Help = &Ohje ja tuki -Menu.Run = Suo&rita... -Menu.Logoff = Kirjaa &ulos: %s -Menu.SwitchUser = &Vaihda käyttäjää -Menu.Lock = Luk&itse -Menu.LogOffShort = &Kirjaudu ulos -Menu.Undock = &Poista tietokone -Menu.Disconnect = &Katkaise yhteys -Menu.ShutdownBox = Sa&mmuta... -Menu.Shutdown = &Sammuta -Menu.Restart = Käynnistä &uudelleen -Menu.ShutdownUpdate = Päivitä ja sammuta -Menu.RestartUpdate = Päivitä ja käynnistä uudelleen -Menu.Sleep = L&epotila -Menu.Hibernate = &Horrostila -Menu.ControlPanel = &Ohjauspaneeli -Menu.PCSettings = Tietokoneen asetukset -Menu.Security = Windowsin suojaus -Menu.Network = &Verkkoyhteydet -Menu.Printers = T&ulostimet -Menu.Taskbar = &Tehtäväpalkki ja Käynnistä-valikko -Menu.SearchFiles = &Tiedostoja tai kansioita... -Menu.SearchPrinter = &Tulostimia -Menu.SearchComputers = Tiet&okoneita -Menu.UserFilesTip = Sisältää kansiot asiakirjoille, kuville, musiikille ja muille tiedostoillesi. -Menu.UserDocumentsTip = Sisältää asiakirjoja, tekstitiedostoja ja muita tiedostoja. -Menu.UserPicturesTip = Sisältää digitaalisia kuvia ja grafiikkatiedostoja. -Menu.UserMusicTip = Musiikki- ja äänitiedostojen tallennuspaikka. -Menu.UserVideosTip = Videotiedostojen tallennuspaikka. -Menu.NetworkTip = Näyttää tämän tietokoneen verkkoyhteydet ja auttaa uusien luomisessa -Menu.PrintersTip = Lisää, poistaa ja määrittää paikallisia ja verkossa olevia tulostimia. -Menu.TaskbarTip = Mukauttaa Käynnistä-valikon ja tehtäväpalkin asetuksia, kuten ilmaisinalueen kohteiden näyttötapaa. -Menu.ControlPanelTip = Muuta asetuksia ja muokkaa tietokoneen toimintaa. -Menu.DocumentsLibTip = Käytä kirjeitä, raportteja, muistiinpanoja ja muunlaisia asiakirjoja. -Menu.MusicLibTip = Toista musiikkia ja muita äänitiedostoja. -Menu.PicturesLibTip = Katsele digitaalisia kuvia ja järjestä niitä. -Menu.VideosLibTip = Katsele kotivideoita ja muita digitaalisia videoita. -Menu.RecordingsLibTip = Katsele tietokoneeseen tallennettuja TV-ohjelmia. -Menu.DownloadTip = Löydä ladattavia Internet-tiedostoja ja suosikkisivustojen linkkejä. -Menu.HomegroupTip = Käytä kotiryhmäsi muiden jäsenien jakamia kirjastoja ja kansioita. -Menu.RunTip = Avaa kansion, tiedoston tai WWW-sivun. -Menu.HelpTip = Etsi ohjeaiheita, opetusohjelmia, vianmääritystietoja ja muita tukipalveluja. -Menu.ProgramsTip = Avaa ohjelmaluettelon. -Menu.SearchFilesTip = Etsi asiakirjoja, musiikkia, kuvia, sähköpostiviestejä ja muita tiedostoja. -Menu.GamesTip = Pelaa ja käsittele tietokoneessa olevia pelejä. -Menu.SecurityTip = Avaa Windowsin suojausasetukset, jotta voit vaihtaa salasanan, vaihtaa käyttäjää tai käynnistää Tehtävienhallinnan. -Menu.SearchComputersTip = Etsi tietokoneita verkosta -Menu.SearchPrintersTip = Etsi tulostimia -Menu.AdminToolsTip = Määritä tietokoneen hallinta-asetukset. -Menu.ShutdownTip = Sulkee kaikki ohjelmat ja Windowsin sekä sammuttaa tietokoneen. -Menu.RestartTip = Sulkee kaikki avoimet ohjelmat ja Windowsin ja käynnistää sitten Windowsin uudelleen. -Menu.SleepTip = Säilyttää istunnon muistissa ja siirtää tietokoneen virransäästötilaan, jotta voit nopeasti jatkaa työskentelyä. -Menu.HibernateTip = Tallentaa istunnon ja sammuttaa tietokoneen. Kun käynnistät tietokoneen, Windows jatkaa istuntoa. -Menu.LogOffTip = Sulje ohjelmat ja kirjaudu ulos. -Menu.DisconnectTip = Katkaisee yhteyden istuntoon. Voit muodostaa yhteyden tähän istuntoon uudelleen kirjauduttaessa uudelleen. -Menu.LockTip = Lukitse tämä tietokone. -Menu.UndockTip = Poistaa kannettavan tietokoneen telakointiasemasta. -Menu.SwitchUserTip = Vaihda käyttäjiä sulkematta ohjelmia. -Menu.Empty = (Tyhjä) -Menu.Features = Ohjelmat ja toiminnot -Menu.FeaturesTip = Poista tai muuta tietokoneessa olevia ohjelmia. -Menu.SearchPeople = &Henkilöitä... -Menu.SortByName = &Lajittele nimen mukaan -Menu.Open = &Avaa -Menu.OpenAll = Avaa &kaikki käyttäjät -Menu.Explore = &Resurssienhallinta -Menu.ExploreAll = &Selaa kaikkia käyttäjiä -Menu.MenuSettings = Asetukset -Menu.MenuHelp = Ohje -Menu.MenuExit = Lopeta -Menu.LogoffTitle = Kirjaudu ulos Windowsista -Menu.LogoffPrompt = Haluatko varmasti kirjautua ulos? -Menu.LogoffYes = &Kirjaudu ulos -Menu.LogoffNo = E&i -Menu.RenameTitle = Nimeä uudelleen -Menu.RenamePrompt = &Uusi nimi: -Menu.RenameOK = OK -Menu.RenameCancel = Peruuta -Menu.Organize = Järjestä Käynnistä-valikko -Menu.Expand = &Laajenna -Menu.Collapse = &Kutista -Menu.NewFolder = Uusi kansio -Menu.NewShortcut = Uusi pikakuvake -Menu.AutoArrange = &Järjestä automaattisesti -Menu.ActionOpen = Avaa -Menu.ActionClose = Sulje -Menu.ActionExecute = Suorita -Menu.RemoveList = &Poista luettelosta -Menu.RemoveAll = &Tyhjennä viimeisimpien tiedostojen luettelo -Menu.Explorer = Resurssienhallinta -Menu.Start = Käynnistä -Menu.StartScreen = Aloitusnäyttö -Menu.StartMenu = Käynnistä-valikko (Windows) -Menu.PinStart = Kiinnitä Käynnistä-valikkoon -Menu.PinStartCs = Kiinnitä Käynnistä-valikkoon (Open-Shell) -Menu.UnpinStartCs = Poista kiinnitys Käynnistä-valikosta (Open-Shell) -Menu.MonitorOff = Sammuta näyttö -Menu.RemoveHighlight = Poista tärkeä kohde -Menu.Uninstall = &Poista asennus -Menu.UninstallTitle = Poista asennus -Menu.UninstallPrompt = Haluatko varmasti poistaa kohteen %s asennuksen? -Search.CategorySettings = Asetukset -Search.CategoryPCSettings = Tietokoneen asetukset -Search.CategoryPrograms = Ohjelmat -Search.CategoryDocuments = Tiedostot -Search.CategoryMusic = Musiikki -Search.CategoryPictures = Kuvat -Search.CategoryVideos = Videot -Search.CategoryFiles = Tiedostoja -Search.CategoryInternet = Internet -JumpList.Recent = Viimeksi käytetyt tiedostot -JumpList.Frequent = Usein käytetty -JumpList.Tasks = Tehtävät -JumpList.Pinned = Kiinnitetty -JumpList.Pin = Kiinnitä &tähän luetteloon -JumpList.Unpin = Poista &kiinnitys tästä luettelosta -JumpList.Remove = &Poista luettelosta -JumpList.PinTip = Kiinnitä tähän luetteloon -JumpList.UnpinTip = Poista kiinnitys tästä luettelosta - - -[fr-FR] - French (France) -Menu.Programs = Progra&mmes -Menu.Apps = Applications -Menu.AllPrograms = Tous les programmes -Menu.Back = Précédent -Menu.Favorites = Fa&voris -Menu.Documents = Doc&uments -Menu.Settings = &Paramètres -Menu.Search = Rec&hercher -Menu.SearchBox = Rechercher -Menu.SearchPrograms = Rechercher les programmes et fichiers -Menu.SearchInternet = Rechercher sur Internet -Menu.Searching = Recherche… -Menu.NoMatch = Aucun élément ne correspond à la recherche. -Menu.MoreResults = Voir plus de résultats -Menu.Help = &Aide et support -Menu.Run = E&xécuter… -Menu.Logoff = Fermer la sessi&on %s… -Menu.SwitchUser = &Changer d’utilisateur -Menu.Lock = Verr&ouiller -Menu.LogOffShort = &Fermer la session -Menu.Undock = R&etirer l’ordinateur -Menu.Disconnect = &Déconnecter -Menu.ShutdownBox = Arrê&ter… -Menu.Shutdown = A&rrêter -Menu.Restart = &Redémarrer -Menu.ShutdownUpdate = Mettre à jour et arrêter -Menu.RestartUpdate = Mettre à jour et redémarrer -Menu.Sleep = Mettre en &veille -Menu.Hibernate = &Mettre en veille prolongée -Menu.ControlPanel = &Panneau de configuration -Menu.PCSettings = Paramètres du PC -Menu.Security = Sécurité de Windows -Menu.Network = &Connexions réseau -Menu.Printers = &Imprimantes -Menu.Taskbar = &Barre des tâches et menu Démarrer -Menu.SearchFiles = Des &fichiers ou des dossiers… -Menu.SearchPrinter = Une i&mprimante -Menu.SearchComputers = Des &ordinateurs -Menu.UserFilesTip = Contient des dossiers pour les documents, les images, la musique et d’autres fichiers utilisateur. -Menu.UserDocumentsTip = Ouvrir des lettres, rapports et autres documents et fichiers. -Menu.UserPicturesTip = Contient des photos numériques, des images et des fichiers graphiques. -Menu.UserMusicTip = Contient de la musique et des fichiers audio. -Menu.UserVideosTip = Contient des films et des fichiers vidéo. -Menu.NetworkTip = Affiche les connexions réseau existantes sur cet ordinateur et vous aide à en créer de nouvelles -Menu.PrintersTip = Ajouter, supprimer ou configurer des imprimantes locales ou en réseau. -Menu.TaskbarTip = Personnalise le menu Démarrer et la barre des tâches, notamment les types d’éléments à afficher et l’aspect à leur donner. -Menu.ControlPanelTip = Modifier les paramètres et personnaliser la fonctionnalité de l’ordinateur. -Menu.DocumentsLibTip = Accéder aux lettres, rapports et notes et à d’autres types de documents. -Menu.MusicLibTip = Écouter de la musique et des fichiers audio. -Menu.PicturesLibTip = Afficher et organiser les images. -Menu.VideosLibTip = Regarder des films et d’autres vidéos numériques à la maison. -Menu.RecordingsLibTip = Regarder les programmes TV enregistrés sur cet ordinateur. -Menu.DownloadTip = Rechercher des téléchargements Internet et des liens vers les sites Web favoris. -Menu.HomegroupTip = Accéder aux bibliothèques et aux dossiers partagés par les autres membres du groupe résidentiel. -Menu.RunTip = Ouvrir un programme, un dossier, un document ou un site Web. -Menu.HelpTip = Rechercher des rubriques d’aide, des didacticiels, des informations de dépannage et d’autres services d’assistance. -Menu.ProgramsTip = Afficher tous les programmes présents sur cet ordinateur. -Menu.SearchFilesTip = Rechercher des documents, des morceaux de musique, des images, des messages et bien plus encore. -Menu.GamesTip = Jouer des parties et gérer les jeux de cet ordinateur. -Menu.SecurityTip = Lancer les Options de sécurité Windows pour modifier le mot de passe, changer d’utilisateur ou ouvrir le gestionnaire des tâches. -Menu.SearchComputersTip = Rechercher des ordinateurs sur le réseau -Menu.SearchPrintersTip = Rechercher une imprimante -Menu.AdminToolsTip = Configurer les paramètres d’administration de cet ordinateur. -Menu.ShutdownTip = Fermer tous les programmes ouverts, arrêter Windows et éteindre cet ordinateur. -Menu.RestartTip = Fermer tous les programmes ouverts, arrêter Windows puis redémarrer Windows. -Menu.SleepTip = Conserver cette session en mémoire en plaçant l’ordinateur en mode de consommation réduite, pour permettre de reprendre rapidement le travail. -Menu.HibernateTip = Enregistrer cette session et éteindre l’ordinateur. Lors du redémarrage de l’ordinateur, la session sera restaurée. -Menu.LogOffTip = Fermer les programmes et cette session. -Menu.DisconnectTip = Se déconnecter de cette session. Il sera possible de se reconnecter à cette session à l’ouverture d’une nouvelle session. -Menu.LockTip = Verrouiller cet ordinateur. -Menu.UndockTip = Retirer l’ordinateur portable de sa station d’accueil. -Menu.SwitchUserTip = Changer d’utilisateur sans fermer les programmes. -Menu.Empty = (Vide) -Menu.Features = Programmes et fonctionnalités -Menu.FeaturesTip = Désinstaller ou modifier des programmes sur cet ordinateur. -Menu.SearchPeople = Des &personnes… -Menu.SortByName = Trier par &nom -Menu.Open = &Ouvrir -Menu.OpenAll = Ouvrir &tous les utilisateurs -Menu.Explore = E&xplorer -Menu.ExploreAll = &Explorer Tous les utilisateurs -Menu.MenuSettings = Paramètres -Menu.MenuHelp = Aide -Menu.MenuExit = Quitter -Menu.LogoffTitle = Fermeture de session Windows -Menu.LogoffPrompt = Faut-il vraiment fermer cette session ? -Menu.LogoffYes = &Fermer la session -Menu.LogoffNo = &Non -Menu.RenameTitle = Renommer -Menu.RenamePrompt = &Nouveau nom : -Menu.RenameOK = OK -Menu.RenameCancel = Annuler -Menu.Organize = Organiser le menu Démarrer -Menu.Expand = &Développer -Menu.Collapse = &Réduire -Menu.NewFolder = Nouveau dossier -Menu.NewShortcut = Nouveau raccourci -Menu.AutoArrange = &Réorganisation automatique -Menu.ActionOpen = Ouvrir -Menu.ActionClose = Fermer -Menu.ActionExecute = Exécuter -Menu.RemoveList = &Supprimer de cette liste -Menu.RemoveAll = Effacer les é&léments récents -Menu.Explorer = Explorateur Windows -Menu.Start = Démarrer -Menu.StartScreen = Écran d’accueil -Menu.StartMenu = Menu Démarrer (Windows) -Menu.PinStart = Épingler au menu Démarrer -Menu.PinStartCs = Épingler au menu Démarrer (Open-Shell) -Menu.UnpinStartCs = Détacher du menu Démarrer (Open-Shell) -Menu.MonitorOff = Éteindre l’affichage -Menu.RemoveHighlight = Supprimer la recommandation -Menu.Uninstall = &Désinstaller -Menu.UninstallTitle = Désinstaller -Menu.UninstallPrompt = Faut-il vraiment désinstaller %s ? -Search.CategorySettings = Paramètres -Search.CategoryPCSettings = Paramètres du PC -Search.CategoryPrograms = Programmes -Search.CategoryDocuments = Documents -Search.CategoryMusic = Musique -Search.CategoryPictures = Images -Search.CategoryVideos = Vidéos -Search.CategoryFiles = Fichiers -Search.CategoryInternet = Internet -JumpList.Recent = Récent -JumpList.Frequent = Fréquent -JumpList.Tasks = Tâches -JumpList.Pinned = Épinglé -JumpList.Pin = Ép&ingler à cette liste -JumpList.Unpin = &Détacher de cette liste -JumpList.Remove = Suppri&mer de cette liste -JumpList.PinTip = Épingler à cette liste -JumpList.UnpinTip = Détacher de cette liste - - -[gd-GB] - Scottish Gaelic (United Kingdom) -Menu.Programs = &Prògraman -Menu.Apps = Aplacaidean -Menu.AllPrograms = Na h-uile prògram -Menu.Back = Air ais -Menu.Favorites = &Annsachdan -Menu.Documents = &Sgrìobhainnean -Menu.Settings = R&oghainnean -Menu.Search = &Lorg -Menu.SearchBox = Lorg -Menu.SearchPrograms = Lorg prògraman is faidhlichean -Menu.SearchInternet = Lorg air an eadar-lìon -Menu.Searching = Ga lorg... -Menu.NoMatch = Chan eil dad a' freagairt ris na lorg thu. -Menu.MoreResults = Faic barrachd thoraidhean -Menu.Help = Cob&hair is taic -Menu.Run = &Ruith... -Menu.Logoff = C&làraich %s a-mach -Menu.SwitchUser = Gearr leum gu cleachdaiche eile -Menu.Lock = Glais -Menu.LogOffShort = Clàraich a-mach -Menu.Undock = N&eo-dhocaich an coimpiutair -Menu.Disconnect = Dì-cheanga&il -Menu.ShutdownBox = &Dùin sìos... -Menu.Shutdown = &Dùin sìos -Menu.Restart = &Ath-thòisich -Menu.ShutdownUpdate = Ùraich is dùin sìos -Menu.RestartUpdate = Ùraich is ath-thòisich -Menu.Sleep = C&uir na chadal -Menu.Hibernate = &Geamhraich -Menu.ControlPanel = A' &phanail-smachd -Menu.PCSettings = Roghainnean a' PC -Menu.Security = Tèarainteachd Windows -Menu.Network = Cea&nglaichean lìonraidh -Menu.Printers = Clò-&bhualadairean -Menu.Taskbar = Bàr nan sao&thair is an clàr-taice tòiseachaidh -Menu.SearchFiles = Airson &faidhlichean no pasganan... -Menu.SearchPrinter = Airson clò-&bhualadair -Menu.SearchComputers = Airson &coimpiutairean -Menu.UserFilesTip = Tha pasgain airson sgrìobhainnean, dealbhan, ceòl is na faidhlichean eile agad ann. -Menu.UserDocumentsTip = Tha litrichean, aithisgean, sgrìobhainnean is faidhlichean eile ann. -Menu.UserPicturesTip = Tha dealbhan digiteach, ìomhaighean is faidhlichean grafaigeach ann. -Menu.UserMusicTip = Tha faidhlichean ciùil is fuaime ann. -Menu.UserVideosTip = Tha filmichean is faidhlichean video eile ann. -Menu.NetworkTip = Seallaidh e ceanglaichean lìonraidh a tha air a' choimpiutair seo 's cuidichidh e a' cruthachadh feadhainn ùra -Menu.PrintersTip = Cuir ris, thoir air falbh is rèitich clò-bhualadairean ionadail is lìonraidh. -Menu.TaskbarTip = Gnàthaich an clàr-taice tòiseachaidh agus bàr nan saothair, can seòrsa nan nithean a chithear agus mar a nochdas iad. -Menu.ControlPanelTip = Atharraich na roghainnean is gnàthaich comas-gnìomh a' choimpiutair agad. -Menu.DocumentsLibTip = Dèan inntrigeadh do litrichean, aithisgean, nòtaichean is sgrìobhainnean eile. -Menu.MusicLibTip = Cluich ceòl is faidhlichean fuaime eile. -Menu.PicturesLibTip = Faic is cuir air dòigh dealbhan digiteach. -Menu.VideosLibTip = Coimhead air filmichean dachaigh is videothan digiteach eile. -Menu.RecordingsLibTip = Coimhead air prògraman TBh a chlàraich thu air a' choimpiutair agad. -Menu.DownloadTip = Lorg rudan ri luchdadh a-nuas on eadar-lìon is ceanglaichean ris na làraichean-lìn as fhearr leat. -Menu.HomegroupTip = Dèan inntrigeadh do leabharlannan is pasgain air an co-roinneadh le daoine eile sa bhuidhinn dachaigh agad. -Menu.RunTip = Fosglaidh seo prògram, pasgan, sgrìobhainn no làrach-lìn. -Menu.HelpTip = Lorg cuspairean na cobharach, treòirean, fuasgladh dhuilgheadasan is seirbheisean taice eile. -Menu.ProgramsTip = Fosglaidh seo liosta nam prògraman agad. -Menu.SearchFilesTip = Lorg sgrìobhainnean, ceòl, dealbhan, puist-d is mòran a bharrachd. -Menu.GamesTip = Cluich is stiùir geamannan air a' choimpiutair agad. -Menu.SecurityTip = Tòisich roghainnean tèarainteachd Windows gus facal-faire atharrachadh, suidseadh eadar cleachdaichean no manaidsear nan saothair a thòiseachadh. -Menu.SearchComputersTip = Lorg coimpiutairean air an lìonra -Menu.SearchPrintersTip = Lorg clò-bhualadair -Menu.AdminToolsTip = Rèitich roghainnean rianaire air a' choimpiutair agad. -Menu.ShutdownTip = Dùinidh seo a h-uile prògram fosgailte, dùinidh e sìos Windows agus cuiridh e dheth an coimpiutair agad. -Menu.RestartTip = Dùinidh seo a h-uile prògram fosgailte, dùinidh e sìos Windows agus tòisichidh e Windows às ùr. -Menu.SleepTip = Cumaidh seo an seisean agad na chuimhne agus cuiridh e an coimpiutair na staid nach cleachd ach beagan cumhachd airson 's gun urrainn dhut tòiseachadh air d' obair a-rithist gu luath. -Menu.HibernateTip = Sàbhailidh seo an seisean agad is cuiridh e dheth an coimpiutair. Nuair a chuireas tu air an coimpiutair a-rithist, aisigidh Windows an seisean dhut. -Menu.LogOffTip = Dùin na prògraman is clàraich a-mach. -Menu.DisconnectTip = Dì-cheanglaidh seo an seisean agad. 'S urrainn dhut ceangal ris an t-seisean seo às ùr nuair a chlàraicheas tu a-steach a-rithist. -Menu.LockTip = Glais an coimpiutair seo. -Menu.UndockTip = Bheir seo an laptop no notebook agad air falbh on stèisean docaidh. -Menu.SwitchUserTip = Gearr leum eadar cleachdaichean gun na prògraman a dhùnadh. -Menu.Empty = (Falamh) -Menu.Features = Prògraman is feartan -Menu.FeaturesTip = Dì-stàlaich no atharraich prògraman air a' choimpiutair agad. -Menu.SearchPeople = Airson &daoine... -Menu.SortByName = Seòrsaich a-rèir ain&m -Menu.Open = F&osgail -Menu.OpenAll = &Fosgail a h-uile cleachdaiche -Menu.Explore = &Rùraich -Menu.ExploreAll = Rùraic&h a h-uile cleachdaiche -Menu.MenuSettings = Roghainnean -Menu.MenuHelp = Cobhair -Menu.MenuExit = Fàg an-seo -Menu.LogoffTitle = Clàraich a-mach à Windows -Menu.LogoffPrompt = A bheil thu cinnteach gu bheil thu airson clàradh a-mach? -Menu.LogoffYes = &Clàraich a-mach -Menu.LogoffNo = Cha&n eil -Menu.RenameTitle = Thoir ainm ùr air -Menu.RenamePrompt = An &t-ainm ùr: -Menu.RenameOK = Ceart ma-thàa -Menu.RenameCancel = Sguir dheth -Menu.Organize = Cuir air dòigh an clàr-taice tòiseachaidh -Menu.Expand = Leud&aich -Menu.Collapse = Co-the&annaich -Menu.NewFolder = Pasgan ùr -Menu.NewShortcut = Ath-ghoirid ùr -Menu.AutoArrange = C&uir air dòigh gu fèin-obrachail -Menu.ActionOpen = Fosgail -Menu.ActionClose = Dùin -Menu.ActionExecute = Cuir an gnìomh -Menu.RemoveList = Thoir air &falbh on liosta seo -Menu.RemoveAll = Fa&lamhaich liosta nan nithean a bha fosgailte o chionn goirid -Menu.Explorer = Windows Explorer -Menu.Start = Tòisich -Menu.StartScreen = An sgrìn-tòiseachaidh -Menu.StartMenu = Start Menu (Windows) -Menu.PinStart = Prìnich ris a' chlàr-taice tòiseachaidh -Menu.PinStartCs = Prìnich ris a' chlàr-taice tòiseachaidh (Open-Shell) -Menu.UnpinStartCs = Dì-phrìnich on chlàr-taice tòiseachaidh (Open-Shell) -Menu.MonitorOff = Cuir an t-uidheam-taisbeanaidh dheth -Menu.RemoveHighlight = Remove highlight -Menu.Uninstall = &Dì-stàlaich -Menu.UninstallTitle = Dì-stàlaich -Menu.UninstallPrompt = A bheil thu cinnteach gu bheil thu airson %s a dhì-stàladh? -Search.CategorySettings = Roghainnean -Search.CategoryPCSettings = Roghainnean a' PC -Search.CategoryPrograms = Prògraman -Search.CategoryDocuments = Sgrìobhainnean -Search.CategoryMusic = Ceòl -Search.CategoryPictures = Dealbhan -Search.CategoryVideos = Videothan -Search.CategoryFiles = Faidhlichean -Search.CategoryInternet = An t-eadar-lìon -JumpList.Recent = O chionn goirid -JumpList.Frequent = Gu tric -JumpList.Tasks = Saothraichean -JumpList.Pinned = Prìnichte -JumpList.Pin = Prìn&ich ris an liosta seo -JumpList.Unpin = Dì-phrìnich &on liosta seo -JumpList.Remove = Thoir air &falbh on liosta seo -JumpList.PinTip = Prìnich ris an liosta seo -JumpList.UnpinTip = Dì-phrìnich on liosta seo - - -[he-IL] - Hebrew (Israel) -Menu.Programs = &תוכניות -Menu.Apps = אפליקציות -Menu.AllPrograms = כל התוכניות -Menu.Back = הקודם -Menu.Favorites = מו&עדפים -Menu.Documents = מסמכ&ים -Menu.Settings = &הגדרות -Menu.Search = &חפש -Menu.SearchBox = חפש -Menu.SearchPrograms = חפש בתוכניות ובקבצים -Menu.SearchInternet = חפש באינטרנט -Menu.Searching = מחפש... -Menu.NoMatch = ‏‏אין פריטים התואמים לחיפוש שלך. -Menu.MoreResults = הצג תוצאות נוספות -Menu.Help = ע&זרה ותמיכה -Menu.Run = הפע&לה... -Menu.Logoff = י&ציאת %s -Menu.SwitchUser = החלף מש&תמש -Menu.Lock = נ&על -Menu.LogOffShort = &צא -Menu.Undock = &בטל עיגון מחשב -Menu.Disconnect = התנת&קות -Menu.ShutdownBox = &כיבוי... -Menu.Shutdown = &כיבוי -Menu.Restart = &הפעלה מחדש -Menu.ShutdownUpdate = עדכן וכבה -Menu.RestartUpdate = עדכן והפעל מחדש -Menu.Sleep = &שינה -Menu.Hibernate = &מצב שינה -Menu.ControlPanel = &לוח הבקרה -Menu.PCSettings = הגדרות מחשב -Menu.Security = אבטחת Windows -Menu.Network = חיבורי &רשת -Menu.Printers = &מדפסות -Menu.Taskbar = שורת המ&שימות ותפריט התחלה -Menu.SearchFiles = עבור &קבצים או תיקיות... -Menu.SearchPrinter = עבור מ&דפסת -Menu.SearchComputers = עבור &מחשבים -Menu.UserFilesTip = מכיל תיקיות עבור מסמכים, תמונות, מוסיקה וקבצים אחרים השייכים לך. -Menu.UserDocumentsTip = מכיל מכתבים, דוחות ומסמכים וקבצים אחרים. -Menu.UserPicturesTip = תיקיה זו מכילה צילומים דיגיטליים, תמונות וקבצי גרפיקה. -Menu.UserMusicTip = תיקיה זו מכילה קבצי מוסיקה וקבצי שמע אחרים. -Menu.UserVideosTip = תיקיה זו מכילה סרטים וקבצי וידאו אחרים. -Menu.NetworkTip = הצגת חיבורי רשת קיימים במחשב זה ועזרה ביצירת חיבורים חדשים -Menu.PrintersTip = הוסף, הסר והגדר מדפסות מקומיות ומדפסות רשת. -Menu.TaskbarTip = התאם אישית את תפריט התחלה ואת שורת המשימות, כגון סוגי הפריטים שיוצגו ואופן התצוגה שלהם. -Menu.ControlPanelTip = שנה הגדרות והתאם אישית את הפונקציונליות של המחשב שלך. -Menu.DocumentsLibTip = גש למכתבים, דוחות, פתקים וסוגי מסמכים אחרים. -Menu.MusicLibTip = השמע קבצי מוסיקה וקבצי שמע אחרים. -Menu.PicturesLibTip = הצג וארגן תמונות דיגיטליות. -Menu.VideosLibTip = צפה בסרטים ביתיים ובסרטי וידאו דיגיטליים אחרים. -Menu.RecordingsLibTip = צפה בתוכניות טלוויזיה שהוקלטו במחשב שלך. -Menu.DownloadTip = מצא הורדות באינטרנט וקישורים לאתרי אינטרנט מועדפים. -Menu.HomegroupTip = גש לספריות ותיקיות שמשתפים אנשים אחרים בקבוצה הביתית שלך. -Menu.RunTip = פתיחת תוכנית, תיקיה, מסמך או אתר אינטרנט. -Menu.HelpTip = חפש נושאי עזרה, ערכות לימוד, כלי פתרון בעיות ושירותי תמיכה נוספים. -Menu.ProgramsTip = פתיחת רשימה של התוכניות שלך. -Menu.SearchFilesTip = חפש מסמכים, מוסיקה, תמונות, דואר אלקטרוני ועוד. -Menu.GamesTip = שחק ונהל משחקים במחשב. -Menu.SecurityTip = הפעל אפשרויות אבטחה של Windows ל'שנה סיסמה', 'החלף משתמש' או 'הפעל את מנהל המשימות'. -Menu.SearchComputersTip = חפש מחשבים ברשת -Menu.SearchPrintersTip = חפש מדפסת -Menu.AdminToolsTip = קבע תצורה של הגדרות ניהול עבור המחשב. -Menu.ShutdownTip = סגירת כל התוכניות הפתוחות, יציאה מ- Windows ולאחר מכן כיבוי המחשב שלך. -Menu.RestartTip = סגירת כל התוכניות הפתוחות, יציאה מ- Windows ולאחר מכן הפעלה מחדש של Windows. -Menu.SleepTip = שמירת ההפעלה שלך בזיכרון והעברת המחשב למצב צריכת חשמל נמוכה כדי שתוכל לחדש במהירות את העבודה. -Menu.HibernateTip = שמירת ההפעלה שלך וכיבוי המחשב. כאשר תפעיל את המחשב, Windows ישחזר את ההפעלה. -Menu.LogOffTip = סגור תוכניות וצא. -Menu.DisconnectTip = ניתוק ההפעלה שלך. באפשרותך להתחבר מחדש להפעלה זו כשתיכנס שוב. -Menu.LockTip = נעל מחשב זה. -Menu.UndockTip = הסרת המחשב הנישא או מחשב המחברת שלך מתחנת עגינה. -Menu.SwitchUserTip = החלף משתמשים מבלי לסגור תוכניות. -Menu.Empty = (ריק) -Menu.Features = תוכניות ותכונות -Menu.FeaturesTip = הסר התקנה או שנה תוכניות במחשב שלך. -Menu.SearchPeople = עבור &אנשים... -Menu.SortByName = מיין לפי &שם -Menu.Open = &פתח -Menu.OpenAll = פתח את &כל המשתמשים -Menu.Explore = &סייר -Menu.ExploreAll = סיי&ר בכל המשתמשים -Menu.MenuSettings = הגדרות -Menu.MenuHelp = עזרה -Menu.MenuExit = יציאה -Menu.LogoffTitle = יציאה מ- Windows -Menu.LogoffPrompt = האם אתה בטוח שברצונך לצאת? -Menu.LogoffYes = &צא -Menu.LogoffNo = &לא -Menu.RenameTitle = שינוי שם -Menu.RenamePrompt = &שם חדש: -Menu.RenameOK = אישור -Menu.RenameCancel = ביטול -Menu.Organize = ארגן את תפריט התחלה -Menu.Expand = &הרחב -Menu.Collapse = &כווץ -Menu.NewFolder = תיקיה חדשה -Menu.NewShortcut = קיצור דרך חדש -Menu.AutoArrange = סדר &אוטומטית -Menu.ActionOpen = פתח -Menu.ActionClose = סגור -Menu.ActionExecute = בצע -Menu.RemoveList = &הסר מרשימה זו -Menu.RemoveAll = &נקה את רשימת הפריטים האחרונים -Menu.Explorer = סייר Windows -Menu.Start = התחל -Menu.StartScreen = מסך התחל -Menu.StartMenu = תפריט התחלה (Windows) -Menu.PinStart = הצמד לתפריט התחלה -Menu.PinStartCs = הצמד לתפריט התחלה (Open-Shell) -Menu.UnpinStartCs = בטל הצמדה לתפריט התחלה (Open-Shell) -Menu.MonitorOff = כבה את התצוגה -Menu.RemoveHighlight = הסר הבלטה -Menu.Uninstall = ה&סר התקנה -Menu.UninstallTitle = הסר התקנה -Menu.UninstallPrompt = ‏‏האם אתה בטוח שברצונך להסיר את התקנת %s? -Search.CategorySettings = הגדרות -Search.CategoryPCSettings = הגדרות מחשב -Search.CategoryPrograms = תוכניות -Search.CategoryDocuments = מסמכים -Search.CategoryMusic = מוסיקה -Search.CategoryPictures = תמונות -Search.CategoryVideos = סרטי וידאו -Search.CategoryFiles = קבצים -Search.CategoryInternet = אינטרנט -JumpList.Recent = לאחרונה -JumpList.Frequent = תכוף -JumpList.Tasks = משימות -JumpList.Pinned = מוצמד -JumpList.Pin = ה&צמד לרשימה זו -JumpList.Unpin = ב&טל הצמדה לרשימה זו -JumpList.Remove = &הסר מרשימה זו -JumpList.PinTip = הצמד לרשימה זו -JumpList.UnpinTip = בטל הצמדה לרשימה זו - - -[hr-HR] - Croatian (Croatia) -Menu.Programs = Pro&grami -Menu.Apps = Aplikacije -Menu.AllPrograms = Svi programi -Menu.Back = Natrag -Menu.Favorites = &Favoriti -Menu.Documents = &Dokumenti -Menu.Settings = Postav&ke -Menu.Search = T&raži -Menu.SearchBox = Traži -Menu.SearchPrograms = Pretraži programe i datoteke -Menu.SearchInternet = Pretraži internet -Menu.Searching = Pretraživanje... -Menu.NoMatch = Pretraživanje nije dalo rezultata. -Menu.MoreResults = Prikaži još rezultata -Menu.Help = Po&moć i podrška -Menu.Run = &Pokreni... -Menu.Logoff = &Odjava korisnika %s -Menu.SwitchUser = P&romijeni korisnika -Menu.Lock = &Zaključaj -Menu.LogOffShort = &Odjava -Menu.Undock = Ukloni r&ačunalo iz ležišta -Menu.Disconnect = Prekini &vezu -Menu.ShutdownBox = Isklj&uči računalo... -Menu.Shutdown = I&sključi računalo -Menu.Restart = &Ponovo pokreni -Menu.ShutdownUpdate = Ažuriraj i isključi -Menu.RestartUpdate = Ažuriraj i ponovno pokreni -Menu.Sleep = &Spavaj -Menu.Hibernate = &Hibernacija -Menu.ControlPanel = &Upravljačka ploča -Menu.PCSettings = Postavke PC-ja -Menu.Security = Sigurnost sustava Windows -Menu.Network = &Mrežne veze -Menu.Printers = &Pisači -Menu.Taskbar = Programska traka i izbornik &Start -Menu.SearchFiles = Za &datoteke i mape... -Menu.SearchPrinter = Za &pisač -Menu.SearchComputers = Za &računala -Menu.UserFilesTip = Sadrži mape za dokumente, slike, glazbu i druge datoteke koje vam pripadaju. -Menu.UserDocumentsTip = Sadrži digitalne fotografije, slike i grafičke datoteke. -Menu.UserPicturesTip = Sadrži digitalne fotografije, slike i grafičke datoteke. -Menu.UserMusicTip = Sadrži glazbene i druge audio datoteke. -Menu.UserVideosTip = Sadrži filmove i druge videodatoteke. -Menu.NetworkTip = Prikazuje postojeće mrežne veze u računalu i pomaže vam u stvaranju novih -Menu.PrintersTip = Dodajte, uklonite i konfigurirajte lokalne i mrežne pisače. -Menu.TaskbarTip = Prilagodite izbornik Start i programsku traku (npr. odaberite stavke koje će biti prikazane i njihov izgled). -Menu.ControlPanelTip = Promijenite postavke i prilagodite funkcije svog računala. -Menu.DocumentsLibTip = Pristupajte pismima, izvješćima, bilješkama i drugim vrstama dokumenata. -Menu.MusicLibTip = Reproducirajte glazbu i druge audiodatoteke. -Menu.PicturesLibTip = Pregledavajte i organizirajte digitalne slike. -Menu.VideosLibTip = Gledanje kućnih snimki i drugih digitalnih videozapisa. -Menu.RecordingsLibTip = Gledanje TV programa snimljenog na računalu. -Menu.DownloadTip = Traženje internetskih preuzimanja i veza do omiljenih web-mjesta. -Menu.HomegroupTip = Pristupajte bibliotekama i mapama koje zajednički koriste druge osobe u osnovnoj grupi. -Menu.RunTip = Otvara program, mapu, dokument ili web-mjesto. -Menu.HelpTip = Potražite teme Pomoći, vodiče za korisnike, upute za otklanjanje poteškoća i druge servise podrške. -Menu.ProgramsTip = Otvara popis vaših programa. -Menu.SearchFilesTip = Tražite dokumente, glazbu, slike, poruke e-pošte i štošta drugo. -Menu.GamesTip = Igranje i upravljanje igrama na računalu. -Menu.SecurityTip = Pokretanje mogućnosti sigurnosti sustava Windows radi promjene lozinke ili korisnika, odnosno pokretanja Upravitelja zadataka. -Menu.SearchComputersTip = Traži računala u mreži -Menu.SearchPrintersTip = Traži pisač -Menu.AdminToolsTip = Konfigurirajte administrativne postavke računala. -Menu.ShutdownTip = Zatvara sve otvorene programe i isključuje sustav Windows, a zatim i računalo. -Menu.RestartTip = Zatvara sve otvorene programe i isključuje sustav Windows, a zatim ga ponovno pokreće. -Menu.SleepTip = Čuva sesiju u memoriji, a računalo stavlja u stanje male potrošnje radi mogućnosti što bržeg nastavka s radom. -Menu.HibernateTip = Sprema sesiju i gasi računalo. Kada uključite računalo, Windows vraća vašu sesiju. -Menu.LogOffTip = Zatvaranje programa i odjava korisnika. -Menu.DisconnectTip = Prekida vašu sesiju. Možete nastaviti rad u istoj sesiji kada se ponovno prijavite. -Menu.LockTip = Zaključavanje ovog računala. -Menu.UndockTip = Uklanja prijenosno računalo sa stanice za spajanje. -Menu.SwitchUserTip = Promjena korisnika bez zatvaranja programa. -Menu.Empty = (Prazno) -Menu.Features = Programi i značajke -Menu.FeaturesTip = Deinstaliranje ili uklanjanje programa s računala. -Menu.SearchPeople = Za &osobe... -Menu.SortByName = Poredaj po i&menu -Menu.Open = &Otvori -Menu.OpenAll = Ot&vori sve korisnike -Menu.Explore = Ist&raži -Menu.ExploreAll = Istr&aži sve korisnike -Menu.MenuSettings = Postavke -Menu.MenuHelp = Pomoć -Menu.MenuExit = Izlaz -Menu.LogoffTitle = Odjava iz sustava Windows -Menu.LogoffPrompt = Jeste li sigurni da se želite odjaviti? -Menu.LogoffYes = &Odjava -Menu.LogoffNo = &Ne -Menu.RenameTitle = Preimenovanje -Menu.RenamePrompt = &Novi naziv: -Menu.RenameOK = U redu -Menu.RenameCancel = Odustani -Menu.Organize = Organiziranje izbornika Start -Menu.Expand = &Proširi -Menu.Collapse = Saž&mi -Menu.NewFolder = Nova mapa -Menu.NewShortcut = Novi prečac -Menu.AutoArrange = &Posloži automatski -Menu.ActionOpen = Otvori -Menu.ActionClose = Zatvori -Menu.ActionExecute = Izvrši -Menu.RemoveList = Ukloni s &ovog popisa -Menu.RemoveAll = Oč&isti popis nedavnih stavki -Menu.Explorer = Windows Explorer -Menu.Start = Start -Menu.StartScreen = Početni zaslon -Menu.StartMenu = Izbornik Start (Windows) -Menu.PinStart = Prikvači na izbornik Start -Menu.PinStartCs = Prikvači na izbornik Start (Open-Shell) -Menu.UnpinStartCs = Otkvači s izbornika Start (Open-Shell) -Menu.MonitorOff = Isključi prikaz -Menu.RemoveHighlight = Ukloni isticanje -Menu.Uninstall = &Deinstaliraj -Menu.UninstallTitle = Deinstaliraj -Menu.UninstallPrompt = Jeste li sigurni da želite deinstalirati %s iz računala? -Search.CategorySettings = Postavke -Search.CategoryPCSettings = Postavke PC-ja -Search.CategoryPrograms = Programi -Search.CategoryDocuments = Dokumenti -Search.CategoryMusic = Glazba -Search.CategoryPictures = Slike -Search.CategoryVideos = Videozapisi -Search.CategoryFiles = Datoteke -Search.CategoryInternet = Internet -JumpList.Recent = Nedavni -JumpList.Frequent = Učestali -JumpList.Tasks = Zadaci -JumpList.Pinned = Prikvačeni -JumpList.Pin = &Prikvači na ovaj popis -JumpList.Unpin = &Otkvači s ovog popisa -JumpList.Remove = &Ukloni s ovog popisa -JumpList.PinTip = Prikvači na ovaj popis -JumpList.UnpinTip = Otkvači s ovog popisa - - -[hu-HU] - Hungarian (Hungary) -Menu.Programs = &Programok -Menu.Apps = Alkalmazások -Menu.AllPrograms = Minden program -Menu.Back = Vissza -Menu.Favorites = K&edvencek -Menu.Documents = &Dokumentumok -Menu.Settings = &Beállítások -Menu.Search = &Keresés -Menu.SearchBox = Keresés -Menu.SearchPrograms = Keresés programokban és fájlokban -Menu.SearchInternet = Keresés az interneten -Menu.Searching = Keresés... -Menu.NoMatch = Nincs a keresésnek megfelelő elem. -Menu.MoreResults = További eredmények -Menu.Help = &Súgó és támogatás -Menu.Run = F&uttatás... -Menu.Logoff = Ki&jelentkezés - %s -Menu.SwitchUser = &Felhasználóváltás -Menu.Lock = &Zárolás -Menu.LogOffShort = &Kijelentkezés -Menu.Undock = &A számítógép dokkolásának megszüntetése -Menu.Disconnect = Kap&csolat bontása -Menu.ShutdownBox = &Leállítás... -Menu.Shutdown = &Leállítás -Menu.Restart = Új&raindítás -Menu.ShutdownUpdate = Frissítés és leállítás -Menu.RestartUpdate = Frissítés és újraindítás -Menu.Sleep = &Alvó állapot -Menu.Hibernate = &Hibernálás -Menu.ControlPanel = &Vezérlőpult -Menu.PCSettings = Gépház -Menu.Security = Windows rendszerbiztonság -Menu.Network = &Hálózati kapcsolatok -Menu.Printers = &Nyomtatók -Menu.Taskbar = &Tálca és Start menü -Menu.SearchFiles = &Fájlok és mappák... -Menu.SearchPrinter = &Nyomtatók -Menu.SearchComputers = &Számítógépek -Menu.UserFilesTip = A Dokumentumok, a Képek és a Zene mappát, illetve egyéb saját fájljait tartalmazó mappák találhatók itt. -Menu.UserDocumentsTip = Levelek, jelentések és egyéb dokumentumok. -Menu.UserPicturesTip = Digitális fényképek, képek és grafikai fájlok. -Menu.UserMusicTip = Zenéket és egyéb audiofájlokat tartalmaz. -Menu.UserVideosTip = Filmeket és egyéb videofájlokat tartalmaz. -Menu.NetworkTip = A számítógépen már létező hálózati kapcsolatok megjelenítése, segítségével új kapcsolatok hozhatók létre -Menu.PrintersTip = Helyi és hálózati nyomtatók hozzáadása, eltávolítása és konfigurálása. -Menu.TaskbarTip = A Start menü és a tálca elemei megjelenésének testreszabása - pl. milyen típusú elemek jelenjenek meg, és hogyan. -Menu.ControlPanelTip = Beállítások módosítása és a számítógép működésének testreszabása. -Menu.DocumentsLibTip = Levelek, jelentések, feljegyzések és egyéb dokumentumok megnyitása. -Menu.MusicLibTip = Zeneszámok és egyéb hangfájlok lejátszása. -Menu.PicturesLibTip = Digitális képek megjelenítése és rendezése. -Menu.VideosLibTip = Saját készítésű filmek és egyéb digitális videók lejátszása. -Menu.RecordingsLibTip = A számítógépre felvett televízióműsorok lejátszása. -Menu.DownloadTip = Internetes letöltések és kedvenc webhelyekre mutató hivatkozások keresése. -Menu.HomegroupTip = Az otthoni csoport más felhasználói által megosztott könyvtárak és mappák elérése. -Menu.RunTip = Program, mappa, dokumentum vagy webhely megnyitása. -Menu.HelpTip = Súgótémakörök, oktatóanyagok, hibaelhárító anyagok és más támogatási szolgáltatások keresése. -Menu.ProgramsTip = A telepített programok listájának megjelenítése. -Menu.SearchFilesTip = Dokumentumok, zenék, képek, levelek és más elemek keresése. -Menu.GamesTip = A számítógépen található játékok elindítása és kezelése. -Menu.SecurityTip = A Windows biztonsági beállításainak megnyitása a jelszó módosítása, felhasználóváltás vagy a Feladatkezelő indítása céljából. -Menu.SearchComputersTip = Számítógépek keresése a hálózaton -Menu.SearchPrintersTip = Nyomtatók keresése -Menu.AdminToolsTip = Felügyeleti beállítások konfigurálása. -Menu.ShutdownTip = Minden futó program bezárása, a Windows leállítása, majd a számítógép kikapcsolása. -Menu.RestartTip = Minden futó program bezárása, a Windows leállítása, majd a Windows rendszer újraindítása. -Menu.SleepTip = Megőrzi a munkamenetet a memóriában, és kis energiafogyasztású állapotba helyezi a számítógépet, hogy gyorsan lehessen folytatni a munkát. -Menu.HibernateTip = A munkamenet mentése és a számítógép kikapcsolása. A számítógép bekapcsolásakor a Windows visszaállítja a munkamenetet. -Menu.LogOffTip = A programok bezárása és kijelentkezés. -Menu.DisconnectTip = A munkamenet leválasztása. Ismét csatlakozhat ehhez a munkamenethez, ha újra bejelentkezik. -Menu.LockTip = A számítógép zárolása. -Menu.UndockTip = A laptop vagy notebook számítógép dokkolásának megszüntetése. -Menu.SwitchUserTip = Felhasználóváltás a programok bezárása nélkül. -Menu.Empty = (Üres) -Menu.Features = Programok és szolgáltatások -Menu.FeaturesTip = A számítógép programjainak eltávolítása vagy módosítása. -Menu.SearchPeople = &Személyek... -Menu.SortByName = &Név szerinti rendezés -Menu.Open = &Megnyitás -Menu.OpenAll = M&egnyitás - All Users -Menu.Explore = T&allózás -Menu.ExploreAll = Ta&llózás - All Users -Menu.MenuSettings = Beállítások -Menu.MenuHelp = Súgó -Menu.MenuExit = Kilépés -Menu.LogoffTitle = Kijelentkezés a Windowsból -Menu.LogoffPrompt = Biztosan kijelentkezik? -Menu.LogoffYes = &Kijelentkezés -Menu.LogoffNo = &Nem -Menu.RenameTitle = Átnevezés -Menu.RenamePrompt = &Új név: -Menu.RenameOK = OK -Menu.RenameCancel = Mégse -Menu.Organize = A Start menü rendezése -Menu.Expand = K&ibontás -Menu.Collapse = Össze&csukás -Menu.NewFolder = Új mappa -Menu.NewShortcut = Új parancsikon -Menu.AutoArrange = Automatikus &elrendezés -Menu.ActionOpen = Megnyitás -Menu.ActionClose = Bezárás -Menu.ActionExecute = Végrehajtás -Menu.RemoveList = Eltá&volítás a listáról -Menu.RemoveAll = &Legutóbbi elemek listájának törlése -Menu.Explorer = Windows Intéző -Menu.Start = Start -Menu.StartScreen = Kezdőképernyő -Menu.StartMenu = Start menü (Windows) -Menu.PinStart = Rögzítés a Start menün -Menu.PinStartCs = Rögzítés a Start menün (Open-Shell) -Menu.UnpinStartCs = Rögzítés feloldása a Start menün (Open-Shell) -Menu.MonitorOff = Kijelző kikapcsolása -Menu.RemoveHighlight = Kiemelés eltávolítása -Menu.Uninstall = Eltá&volítás -Menu.UninstallTitle = Eltávolítás -Menu.UninstallPrompt = Biztosan el kívánja távolítani a következőt: %s? -Search.CategorySettings = Beállítások -Search.CategoryPCSettings = Gépház -Search.CategoryPrograms = Programs -Search.CategoryDocuments = Dokumentumok -Search.CategoryMusic = Zene -Search.CategoryPictures = Képek -Search.CategoryVideos = Videók -Search.CategoryFiles = Fájl -Search.CategoryInternet = Internet -JumpList.Recent = Legutóbbi -JumpList.Frequent = Gyakori -JumpList.Tasks = Feladatok -JumpList.Pinned = Rögzített -JumpList.Pin = &Rögzítés ebbe a listába -JumpList.Unpin = Rögzítés &feloldása ebben a listában -JumpList.Remove = Eltá&volítás a listáról -JumpList.PinTip = Rögzítés ebbe a listába -JumpList.UnpinTip = Rögzítés feloldása ebben a listában - - -[is-IS] - Icelandic (Iceland) -Menu.ClassicSettings = Open-Shell &Menu -Menu.SettingsTip = Stillingar fyrir Open-Shell Menu -Menu.Programs = &Forrit -Menu.Apps = Snjallforrit -Menu.AllPrograms = Öll forrit -Menu.Back = Til baka -Menu.Favorites = &Eftirlæti -Menu.Documents = &Skjöl -Menu.Settings = S&tillingar -Menu.Search = &Leita -Menu.SearchBox = Leita -Menu.SearchPrograms = Leita í forritum og skrám -Menu.SearchInternet = Leita á vefnum -Menu.Searching = Leita... -Menu.NoMatch = Engin atriði samsvara leitinni. -Menu.MoreResults = Sjá fleiri niðurstöður -Menu.Help = &Hjálp og stuðningur -Menu.Run = &Keyra... -Menu.Logoff = Sk&rá út %s -Menu.SwitchUser = &Skipta um notanda -Menu.Lock = &Læsa -Menu.LogOffShort = Sk&rá út -Menu.Undock = A&ftengja tölvuna -Menu.Disconnect = Afteng&jast -Menu.ShutdownBox = &Ganga frá... -Menu.Shutdown = &Ganga frá -Menu.Restart = &Endurræsa -Menu.ShutdownUpdate = Uppfæra og ganga frá -Menu.RestartUpdate = Uppfæra og endurræsa -Menu.Sleep = &Hvíldarstaða -Menu.Hibernate = Í &dvala -Menu.ControlPanel = Stjórn&borð -Menu.PCSettings = PC stillingar -Menu.Security = Windows öryggi -Menu.Network = &Nettengingar -Menu.Printers = &Prentarar -Menu.Taskbar = &Verkstika og ræsivalmynd -Menu.SearchFiles = Að &skrám eða möppum... -Menu.SearchPrinter = Að &prentara -Menu.SearchComputers = Að &tölvum -Menu.UserFilesTip = Inniheldur möppur fyrir skjöl, myndir, tónlist, og aðrar skrár sem tilheyra þér. -Menu.UserDocumentsTip = Inniheldur bréf, skýrslur, og önnur skjöl og skrár. -Menu.UserPicturesTip = Inniheldur stafrænar ljósmyndir, myndir, og grafískar skrár. -Menu.UserMusicTip = Inniheldur tónlist og aðrar hljóðskrár. -Menu.UserVideosTip = Inniheldur kvikmyndir og aðrar myndbandaskrár. -Menu.NetworkTip = Sýnir tiltækar nettengingar á þessari tölvu og hjálpar þér að búa til nýjar -Menu.PrintersTip = Bæta við, fjarlægja, og grunnstilla staðbundna og samnýtta prentara. -Menu.TaskbarTip = Sérstilla ræsivalmyndina og verkstikuna, svo sem tegundir atriða til að birta og hvernig þau eiga að birtast. -Menu.ControlPanelTip = Breyta stillingum og sérstilla virkni tölvunnar þinnar. -Menu.DocumentsLibTip = Nálgast bréf, skýrslur, minnispunkta, og annars konar skjöl. -Menu.MusicLibTip = Spila tónlist og aðrar hljóðskrár. -Menu.PicturesLibTip = Skoða og raða stafrænum ljósmyndum. -Menu.VideosLibTip = Horfa á heimatilbúnar kvikmyndir og önnur stafræn myndbönd. -Menu.RecordingsLibTip = Horfa á sjónvarpsþáttaupptökur á tölvunni þinni. -Menu.DownloadTip = Finna vefniðurhöl og vefföng eftirlætis vefsvæða. -Menu.HomegroupTip = Nálgast forritasöfn og möppur samnýttar af öðru fólki í heimahópnum þínum. -Menu.RunTip = Opnar forrit, möppu, skjal, eða vefsvæði. -Menu.HelpTip = Finna hjálparefni, kennslu, bilanagreiningu, og aðrar stuðningsþjónustur. -Menu.ProgramsTip = Opnar lista yfir forritin þín. -Menu.SearchFilesTip = Leita að skjölum, tónlist, myndum, tölvupósti og fleiru. -Menu.GamesTip = Spila og stjórna leikjum á tölvunni þinni. -Menu.SecurityTip = Ræsa Windows öryggi til að breyta lykilorði, skipta um notanda, eða ræsa verkstjórnun. -Menu.SearchComputersTip = Leita að tölvum á netinu -Menu.SearchPrintersTip = Leita að prentara -Menu.AdminToolsTip = Grunnstilla stjórnunarstillingar fyrir tölvuna þína. -Menu.ShutdownTip = Lokar öllum opnum forritum, gengur frá Windows, og slekkur svo á tölvunni þinni. -Menu.RestartTip = Lokar öllum opnum forritum, gengur frá Windows, og ræsir síðan Windows að nýju. -Menu.SleepTip = Geymir innskráningu þína í minni og setur tölvuna í orkusparnaðarstöðu svo þú getir snögglega byrjað aftur að vinna. -Menu.HibernateTip = Vistar innskráningu þína og slekkur á tölvunni. Þegar þú kveikir á tölvunni, sækir Windows innskráninguna þína aftur. -Menu.LogOffTip = Loka forritum og skrá út. -Menu.DisconnectTip = Aftengir innskráningu þína. Þú getur tengst þessari innskráningu aftur með því að skrá inn að nýju. -Menu.LockTip = Læsa þessari tölvu. -Menu.UndockTip = Fjarlægir fartölvuna þína úr tengikví. -Menu.SwitchUserTip = Skipta milli notenda án þess að loka forritum. -Menu.Empty = (Tómt) -Menu.Features = Forrit og eiginleikar -Menu.FeaturesTip = Fjarlægja eða breyta forritum á tölvunni þinni. -Menu.SearchPeople = Að &fólki... -Menu.SortByName = Raða &eftir heiti -Menu.Open = &Opna -Menu.OpenAll = O&pna Allir notendur -Menu.Explore = Opna &möppu -Menu.ExploreAll = Opna m&öppu Allir notendur -Menu.MenuSettings = Stillingar -Menu.MenuHelp = Hjálp -Menu.MenuExit = Hætta -Menu.LogoffTitle = Skrá út úr Windows -Menu.LogoffPrompt = Ertu viss um að þú viljir skrá út? -Menu.LogoffYes = &Skrá út -Menu.LogoffNo = &Nei -Menu.RenameTitle = Endurnefna -Menu.RenamePrompt = &Nýtt heiti: -Menu.RenameOK = Í lagi -Menu.RenameCancel = Hætta við -Menu.Organize = Sérstilla ræsivalmynd -Menu.Expand = Þenj&a út -Menu.Collapse = Dr&aga saman -Menu.NewFolder = Ný mappa -Menu.NewShortcut = Ný flýtileið -Menu.AutoArrange = R&aða sjálfkrafa -Menu.ActionOpen = Opna -Menu.ActionClose = Loka -Menu.ActionExecute = Keyra -Menu.RemoveList = &Fjarlægja &úr þessum lista -Menu.RemoveAll = Hreinsa &lista yfir nýlegt -Menu.Explorer = Skráarvafri -Menu.Start = Ræsa -Menu.StartScreen = Ræsiskjár -Menu.StartMenu = Ræsivalmynd (Windows) -Menu.PinStart = Festa við ræsivalmynd -Menu.PinStartCs = Festa við ræsivalmynd (Open-Shell) -Menu.UnpinStartCs = Losa af ræsivalmynd (Open-Shell) -Menu.MonitorOff = Slökkva á skjánum -Menu.RemoveHighlight = Fjarlægja auðkenningu -Menu.Uninstall = Fjarlægja -Menu.UninstallTitle = Fjarlægja -Menu.UninstallPrompt = Ertu viss um að það eigi að fjarlægja %s? -Search.CategorySettings = Stillingar -Search.CategoryPCSettings = Sérstillingar tölvunnar -Search.CategoryPrograms = Forrit -Search.CategoryDocuments = Skjöl -Search.CategoryMusic = Tónlist -Search.CategoryPictures = Myndir -Search.CategoryVideos = Myndbönd -Search.CategoryFiles = Skrár -Search.CategoryInternet = Vefurinn -JumpList.Recent = Nýlegt -JumpList.Frequent = Algengt -JumpList.Tasks = Verk -JumpList.Pinned = Fest -JumpList.Pin = Festa v&ið þennan lista -JumpList.Unpin = L&osa af þessum lista -JumpList.Remove = &Fjarlægja úr þessum lista -JumpList.PinTip = Festa við þennan lista -JumpList.UnpinTip = Losa af þessum lista - - -[it-IT] - Italian (Italy) -Menu.Programs = &Programmi -Menu.Apps = App -Menu.AllPrograms = Tutti i programmi -Menu.Back = Indietro -Menu.Favorites = Pre&feriti -Menu.Documents = &Dati recenti -Menu.Settings = &Impostazioni -Menu.Search = Ce&rca -Menu.SearchBox = Cerca -Menu.SearchPrograms = Cerca programmi e file -Menu.SearchInternet = Cerca in Internet -Menu.Searching = Ricerca in corso... -Menu.NoMatch = Nessun elemento corrisponde ai criteri di ricerca. -Menu.MoreResults = Ulteriori risultati -Menu.Help = &Guida e supporto tecnico -Menu.Run = &Esegui... -Menu.Logoff = Disc&onnetti %s -Menu.SwitchUser = &Cambia utente -Menu.Lock = Bl&occa -Menu.LogOffShort = &Disconnetti -Menu.Undock = Disinseri&sci computer -Menu.Disconnect = Disco&nnetti -Menu.ShutdownBox = &Chiudi sessione... -Menu.Shutdown = &Arresta il sistema -Menu.Restart = &Riavvia il sistema -Menu.ShutdownUpdate = Aggiorna e arresta -Menu.RestartUpdate = Aggiorna e riavvia -Menu.Sleep = &Sospendi -Menu.Hibernate = Metti in &ibernazione -Menu.ControlPanel = &Pannello di controllo -Menu.PCSettings = Impostazioni PC -Menu.Security = Protezione di Windows -Menu.Network = Connessioni di &rete -Menu.Printers = &Stampanti -Menu.Taskbar = &Barra delle applicazioni e menu Start -Menu.SearchFiles = &File o cartelle... -Menu.SearchPrinter = &Per stampante -Menu.SearchComputers = Per &Computer -Menu.UserFilesTip = Contiene cartelle per documenti, immagini, musica e altri file dell'utente. -Menu.UserDocumentsTip = Contiene lettere, rapporti e altri documenti e file. -Menu.UserPicturesTip = Contiene foto digitali, immagini e file di grafica. -Menu.UserMusicTip = Contiene file musicali e audio. -Menu.UserVideosTip = Contiene filmati e altri file video. -Menu.NetworkTip = Visualizza le connessioni di rete del computer e consente di crearne nuove -Menu.PrintersTip = Aggiunge, rimuove e configura stampanti locali e di rete. -Menu.TaskbarTip = Personalizza la visualizzazione degli elementi nel menu Start, barra delle applicazioni e area di notifica. -Menu.ControlPanelTip = Modificare le impostazioni e personalizzare la funzionalità del computer. -Menu.DocumentsLibTip = Accedere a lettere, rapporti, note e ad altri tipi di documenti. -Menu.MusicLibTip = Consente di riprodurre musica e altri file audio. -Menu.PicturesLibTip = Consente di visualizzare e organizzare immagini. -Menu.VideosLibTip = Consente di vedere i propri filmati e altri video digitali. -Menu.RecordingsLibTip = Consente di assistere ai programmi TV registrati nel computer. -Menu.DownloadTip = Consente di trovare i collegamenti ai siti Web preferiti per il download. -Menu.HomegroupTip = Consente di accedere a raccolte e cartelle condivise da altri utenti nel gruppo home. -Menu.RunTip = Consente di aprire un programma, una cartella, un documento o un sito. -Menu.HelpTip = Trovare argomenti della Guida, esercitazioni, risoluzione problemi, e altri servizi di supporto tecnico. -Menu.ProgramsTip = Apre l'elenco dei programmi. -Menu.SearchFilesTip = Cercare documenti, musica, immagini, posta elettronica e altro. -Menu.GamesTip = Consente di giocare e gestire i giochi installati nel computer. -Menu.SecurityTip = Avvia le opzioni di Sicurezza di Windows per modificare la password, cambiare utente o avviare Gestione attività. -Menu.SearchComputersTip = Cerca computer sulla rete -Menu.SearchPrintersTip = Cerca stampante -Menu.AdminToolsTip = Configura le impostazioni amministrative del computer. -Menu.ShutdownTip = Chiude tutti i programmi aperti, arresta Windows e spegne il computer. -Menu.RestartTip = Chiude tutti i programmi aperti e riavvia Windows. -Menu.SleepTip = Mantiene la sessione in memoria e imposta la modalità basso consumo che consente di riprendere rapidamente il lavoro. -Menu.HibernateTip = Salva la sessione e spegne il computer. Quando si riaccende il computer, la sessione verrà ripristinata. -Menu.LogOffTip = Chiude i programmi e disconnette l'utente. -Menu.DisconnectTip = Disconnette dalla sessione. È possibile riconnettersi a questa sessione al prossimo accesso. -Menu.LockTip = Blocca il computer. -Menu.UndockTip = Consente di rimuovere il computer portatile o il notebook dall'alloggiamento di espansione. -Menu.SwitchUserTip = Consente di cambiare utente senza chiudere i programmi. -Menu.Empty = (vuoto) -Menu.Features = Programmi e funzionalità -Menu.FeaturesTip = Disinstalla o modifica i programmi nel computer. -Menu.SearchPeople = &Contatti... -Menu.SortByName = Or&dina per nome -Menu.Open = &Apri -Menu.OpenAll = Apri &cartella Utenti -Menu.Explore = &Esplora -Menu.ExploreAll = Esplora cartella &Utenti -Menu.MenuSettings = Impostazioni -Menu.MenuHelp = Guida -Menu.MenuExit = Esci -Menu.LogoffTitle = Disconnessione da Windows -Menu.LogoffPrompt = Disconnettersi? -Menu.LogoffYes = &Disconnetti -Menu.LogoffNo = &No -Menu.RenameTitle = Rinomina -Menu.RenamePrompt = &Nuovo nome: -Menu.RenameOK = OK -Menu.RenameCancel = Annulla -Menu.Organize = Organizza menu Start -Menu.Expand = &Espandi -Menu.Collapse = Comp&rimi -Menu.NewFolder = Nuova cartella -Menu.NewShortcut = Nuovo collegamento -Menu.AutoArrange = &Disposizione automatica -Menu.ActionOpen = Apri -Menu.ActionClose = Chiudi -Menu.ActionExecute = Esegui -Menu.RemoveList = &Rimuovi da questo elenco -Menu.RemoveAll = Cancella elenco Ogge&tti recenti -Menu.Explorer = Esplora risorse -Menu.Start = Start -Menu.StartScreen = Schermata Start -Menu.StartMenu = Menu Start (Windows) -Menu.PinStart = Aggiungi al menu Start -Menu.PinStartCs = Aggiungi al menu Start (Open-Shell) -Menu.UnpinStartCs = Rimuovi dal menu Start (Open-Shell) -Menu.MonitorOff = Spegne lo schermo -Menu.RemoveHighlight = Rimuovi elemento di rilievo -Menu.Uninstall = &Disinstalla -Menu.UninstallTitle = Disinstalla -Menu.UninstallPrompt = Disinstallare %s? -Search.CategorySettings = Impostazioni -Search.CategoryPCSettings = Impostazioni PC -Search.CategoryPrograms = Programmi -Search.CategoryDocuments = Documenti -Search.CategoryMusic = Musica -Search.CategoryPictures = Immagini -Search.CategoryVideos = Video -Search.CategoryFiles = File -Search.CategoryInternet = Internet -JumpList.Recent = Recenti -JumpList.Frequent = Frequente -JumpList.Tasks = Attività -JumpList.Pinned = Bloccato -JumpList.Pin = Agg&iungi all'elenco -JumpList.Unpin = Rim&uovi dall'elenco -JumpList.Remove = &Rimuovi da questo elenco -JumpList.PinTip = Aggiungi all'elenco -JumpList.UnpinTip = Rimuovi dall'elenco - - -[ja-JP] - Japanese (Japan) -Menu.Programs = プログラム(&P) -Menu.Apps = アプリ -Menu.AllPrograms = すべてのプログラム -Menu.Back = 前に戻る -Menu.Favorites = お気に入り(&A) -Menu.Documents = 最近使った項目(&D) -Menu.Settings = 設定(&S) -Menu.Search = 検索(&C) -Menu.SearchBox = 検索 -Menu.SearchPrograms = プログラムとファイルの検索 -Menu.SearchInternet = インターネットの検索 -Menu.Searching = 検索しています... -Menu.NoMatch = 検索条件に一致する項目はありません。 -Menu.MoreResults = 検索結果の続きを表示 -Menu.Help = ヘルプとサポート(&H) -Menu.Run = ファイル名を指定して実行(&R)... -Menu.Logoff = %s のログオフ(&L) -Menu.SwitchUser = ユーザーの切り替え(&W) -Menu.Lock = ロック(&O) -Menu.LogOffShort = ログオフ(&L) -Menu.Undock = コンピューターの装着解除(&E) -Menu.Disconnect = 切断(&I) -Menu.ShutdownBox = シャットダウン(&U)... -Menu.Shutdown = シャットダウン(&U) -Menu.Restart = 再起動(&R) -Menu.ShutdownUpdate = 更新してシャットダウン -Menu.RestartUpdate = 更新して再起動 -Menu.Sleep = スリープ(&S) -Menu.Hibernate = 休止状態(&H) -Menu.ControlPanel = コントロール パネル(&C) -Menu.PCSettings = 設定 -Menu.Security = Windows セキュリティ -Menu.Network = ネットワーク接続(&N) -Menu.Printers = プリンター(&P) -Menu.Taskbar = タスク バーと [スタート] メニュー(&T) -Menu.SearchFiles = ファイルやフォルダー(&F)... -Menu.SearchPrinter = プリンターの検索(&P) -Menu.SearchComputers = コンピューターの検索(&C) -Menu.UserFilesTip = ユーザーが所有しているドキュメント、画像、音楽などのフォルダーが含まれています。 -Menu.UserDocumentsTip = 手紙、レポート、およびそのほかのドキュメントやファイルが含まれます。 -Menu.UserPicturesTip = デジタル写真、イメージ、および画像ファイルが含まれます。 -Menu.UserMusicTip = 音楽およびそのほかのオーディオ ファイルが含まれます。 -Menu.UserVideosTip = ムービーおよびそのほかのビデオ ファイルが含まれます。 -Menu.NetworkTip = このコンピューターにあるネットワーク接続を表示し、新しい接続の作成をお手伝いします -Menu.PrintersTip = ローカルおよびネットワークのプリンターの追加、削除、および構成を行います。 -Menu.TaskbarTip = [スタート] メニューおよびタスク バーに表示される項目の種類や表示方法をカスタマイズします。 -Menu.ControlPanelTip = 設定を変更し、このコンピューターの機能をカスタマイズします。 -Menu.DocumentsLibTip = 手紙、レポート、メモなどのドキュメントにアクセスします。 -Menu.MusicLibTip = 音楽ファイルやオーディオ ファイルを再生します。 -Menu.PicturesLibTip = デジタル画像を表示および整理します。 -Menu.VideosLibTip = ホーム ビデオとその他のデジタル ビデオを視聴します。 -Menu.RecordingsLibTip = コンピューター上に録画されたテレビ番組を視聴します。 -Menu.DownloadTip = インターネット ダウンロードおよびお気に入りの Web サイトへのリンクを検索します。 -Menu.HomegroupTip = ホームグループ内の他のメンバーが共有するライブラリとフォルダーにアクセスします。 -Menu.RunTip = プログラム、フォルダー、ドキュメントまたは Web サイトを開きます。 -Menu.HelpTip = ヘルプのトピック、チュートリアル、トラブルシューティング、サポート サービスなどを検索します。 -Menu.ProgramsTip = プログラムの一覧を表示します。 -Menu.SearchFilesTip = ドキュメント、音楽ファイル、画像、電子メールなどを検索します。 -Menu.GamesTip = コンピューターにあるゲームのプレイと管理を行います。 -Menu.SecurityTip = Windows セキュリティ オプションを起動して [パスワードの変更]、[ユーザーの切り替え]、[タスク マネージャーの起動] を行います。 -Menu.SearchComputersTip = ネットワークのコンピューターを検索します -Menu.SearchPrintersTip = プリンターを検索します -Menu.AdminToolsTip = コンピューターの管理に関する設定を構成します。 -Menu.ShutdownTip = 開いているプログラムをすべて閉じて、Windows をシャットダウンしてからコンピューターの電源を切ります。 -Menu.RestartTip = 開いているプログラムをすべて閉じて、Windows をシャットダウンしてから、Windows を再起動します。 -Menu.SleepTip = すばやく作業を再開できるように、セッションをメモリに保持してコンピューターを低電力の状態にします。 -Menu.HibernateTip = セッションを保存してコンピューターの電源を切ります。コンピューターの電源を入れたときに、セッションは復元されます。 -Menu.LogOffTip = プログラムを閉じて、ログオフします。 -Menu.DisconnectTip = セッションを切断します。ログオンし直すと、このセッションに再接続できます。 -Menu.LockTip = このコンピューターをロックします。 -Menu.UndockTip = ドッキング ステーションからラップトップやノートブック コンピューターを取り外します。 -Menu.SwitchUserTip = プログラムを閉じずに、ユーザーを切り替えます。 -Menu.Empty = (なし) -Menu.Features = プログラムと機能 -Menu.FeaturesTip = コンピューター上のプログラムをアンインストールまたは変更します。 -Menu.SearchPeople = 人(&P)... -Menu.SortByName = 名前順で並べ替え(&B) -Menu.Open = 開く(&O) -Menu.OpenAll = 開く - All Users(&P) -Menu.Explore = エクスプローラー(&E) -Menu.ExploreAll = エクスプローラー - All Users(&X) -Menu.MenuSettings = 設定 -Menu.MenuHelp = ヘルプ -Menu.MenuExit = 終了 -Menu.LogoffTitle = Windows のログオフ -Menu.LogoffPrompt = ログオフしますか? -Menu.LogoffYes = ログオフ(&L) -Menu.LogoffNo = いいえ(&N) -Menu.RenameTitle = 名前の変更 -Menu.RenamePrompt = 新しい名前(&N): -Menu.RenameOK = OK -Menu.RenameCancel = キャンセル -Menu.Organize = スタート メニューの管理 -Menu.Expand = 展開(&A) -Menu.Collapse = 折りたたみ(&A) -Menu.NewFolder = 新しいフォルダー -Menu.NewShortcut = 新しいショートカット -Menu.AutoArrange = 自動整列(&A) -Menu.ActionOpen = 開く -Menu.ActionClose = 閉じる -Menu.ActionExecute = 実行 -Menu.RemoveList = この一覧から削除(&F) -Menu.RemoveAll = 最近使った項目の一覧のクリア(&L) -Menu.Explorer = エクスプローラー -Menu.Start = スタート -Menu.StartScreen = スタート画面 -Menu.StartMenu = スタート メニュー (Windows) -Menu.PinStart = スタート メニューに表示する -Menu.PinStartCs = スタート メニューに表示する (Open-Shell) -Menu.UnpinStartCs = スタート メニューに表示しない (Open-Shell) -Menu.MonitorOff = 画面をオフにする -Menu.RemoveHighlight = ハイライトの削除 -Menu.Uninstall = アンインストール(&U) -Menu.UninstallTitle = アンインストール -Menu.UninstallPrompt = %s をアンインストールしますか? -Search.CategorySettings = 設定 -Search.CategoryPCSettings = 設定 -Search.CategoryPrograms = プログラム -Search.CategoryDocuments = ドキュメント -Search.CategoryMusic = ミュージック -Search.CategoryPictures = ピクチャ -Search.CategoryVideos = ビデオ -Search.CategoryFiles = ファイル -Search.CategoryInternet = インターネット -JumpList.Recent = 最近使ったもの -JumpList.Frequent = よく使うもの -JumpList.Tasks = タスク -JumpList.Pinned = いつも表示 -JumpList.Pin = いつも表示する(&I) -JumpList.Unpin = いつも表示するものから外す(&U) -JumpList.Remove = この一覧から削除(&F) -JumpList.PinTip = いつも表示する -JumpList.UnpinTip = いつも表示するものから外す - - -[ko-KR] - Korean (Korea) -Menu.Programs = 프로그램(&P) -Menu.Apps = 앱 -Menu.AllPrograms = 모든 프로그램 -Menu.Back = 뒤로 -Menu.Favorites = 즐겨찾기(&A) -Menu.Documents = 문서(&D) -Menu.Settings = 설정(&S) -Menu.Search = 검색(&C) -Menu.SearchBox = 검색 -Menu.SearchPrograms = 프로그램 및 파일 검색 -Menu.SearchInternet = 인터넷 검색 -Menu.Searching = 검색 중... -Menu.NoMatch = 일치하는 항목이 없습니다. -Menu.MoreResults = 자세한 결과 보기 -Menu.Help = 도움말 및 지원(&H) -Menu.Run = 실행(&R)... -Menu.Logoff = %s 로그오프(&L) -Menu.SwitchUser = 사용자 전환(&W) -Menu.Lock = 잠금(&O) -Menu.LogOffShort = 로그오프(&L) -Menu.Undock = 컴퓨터 도킹 해제(&E) -Menu.Disconnect = 연결 끊기(&I) -Menu.ShutdownBox = 시스템 종료(&U)... -Menu.Shutdown = 시스템 종료(&U) -Menu.Restart = 다시 시작(&R) -Menu.ShutdownUpdate = 업데이트 및 종료 -Menu.RestartUpdate = 업데이트 및 다시 시작 -Menu.Sleep = 절전(&S) -Menu.Hibernate = 최대 절전 모드(&H) -Menu.ControlPanel = 제어판(&C) -Menu.PCSettings = PC 설정 -Menu.Security = Windows 보안 -Menu.Network = 네트워크 연결(&N) -Menu.Printers = 프린터(&P) -Menu.Taskbar = 작업 표시줄 및 시작 메뉴(&T) -Menu.SearchFiles = 파일 또는 폴더(&F)... -Menu.SearchPrinter = 프린터(&P) -Menu.SearchComputers = 컴퓨터(&C) -Menu.UserFilesTip = 사용자가 소유한 문서, 사진, 음악 및 기타 파일의 폴더가 있습니다. -Menu.UserDocumentsTip = 편지, 보고서, 기타 문서나 파일이 들어 있습니다. -Menu.UserPicturesTip = 디지털 사진, 이미지 및 그래픽 파일이 들어 있습니다. -Menu.UserMusicTip = 음악 및 기타 오디오 파일이 들어 있습니다. -Menu.UserVideosTip = 음악 및 기타 비디오 파일이 들어 있습니다. -Menu.NetworkTip = 이 컴퓨터의 기존 네트워크 연결을 표시하거나 새로 만드는 것을 도와줍니다. -Menu.PrintersTip = 로컬 및 네트워크 프린터를 추가, 제거, 구성합니다. -Menu.TaskbarTip = 표시되는 항목의 유형 및 표시 방법 등과 같은 시작 메뉴 및 작업 표시줄 설정을 사용자 지정합니다. -Menu.ControlPanelTip = 설정을 변경하고 컴퓨터의 기능을 사용자 지정합니다. -Menu.DocumentsLibTip = 편지, 보고서, 메모 및 기타 문서에 액세스합니다. -Menu.MusicLibTip = 음악 및 기타 오디오 파일을 재생합니다. -Menu.PicturesLibTip = 디지털 사진을 보고 정리합니다. -Menu.VideosLibTip = 홈 동영상 및 기타 디지털 비디오를 시청합니다. -Menu.RecordingsLibTip = 컴퓨터에 녹화된 TV 프로그램을 시청합니다. -Menu.DownloadTip = 인터넷 다운로드 및 즐겨 찾는 웹 사이트에 대한 링크를 찾습니다. -Menu.HomegroupTip = 홈 그룹의 다른 사용자가 공유한 라이브러리 및 폴더에 액세스합니다. -Menu.RunTip = 프로그램, 폴더, 문서 또는 웹 사이트를 엽니다. -Menu.HelpTip = 도움말 항목, 자습서, 문제 해결 및 기타 지원 서비스를 찾습니다. -Menu.ProgramsTip = 프로그램의 목록을 표시합니다. -Menu.SearchFilesTip = 문서, 음악, 사진, 전자 메일 등을 검색합니다. -Menu.GamesTip = 컴퓨터에 있는 게임을 실행 및 관리합니다. -Menu.SecurityTip = 암호를 변경하거나, 사용자를 전환하거나, 작업 관리자를 시작하려면 Windows 보안 옵션을 시작합니다. -Menu.SearchComputersTip = 네트워크에서 컴퓨터 찾기 -Menu.SearchPrintersTip = 프린터 찾기 -Menu.AdminToolsTip = 사용자 컴퓨터의 관리 설정을 구성합니다. -Menu.ShutdownTip = 열려 있는 프로그램을 모두 닫고 Windows를 종료한 다음 컴퓨터를 끕니다. -Menu.RestartTip = 열려 있는 프로그램을 모두 닫고 Windows를 종료한 다음 Windows를 다시 시작합니다. -Menu.SleepTip = 작업을 빠르게 다시 시작할 수 있도록 사용자 세션을 메모리에 저장하고 컴퓨터를 절전 상태로 전환합니다. -Menu.HibernateTip = 사용자 세션을 저장하고 컴퓨터를 끕니다. 컴퓨터를 켜면 Windows에 사용자 세션이 복원됩니다. -Menu.LogOffTip = 프로그램을 닫고 로그오프합니다. -Menu.DisconnectTip = 세션 연결을 끊습니다. 다시 로그온할 때 이 세션에 연결할 수 있습니다. -Menu.LockTip = 이 컴퓨터를 잠급니다. -Menu.UndockTip = 도킹 스테이션에서 랩톱 또는 노트북 컴퓨터를 제거합니다. -Menu.SwitchUserTip = 프로그램을 닫지 않고 사용자를 전환합니다. -Menu.Empty = (비어 있음) -Menu.Features = 프로그램 및 기능 -Menu.FeaturesTip = 컴퓨터의 프로그램을 제거하거나 변경합니다. -Menu.SearchPeople = 사람 찾기(&P)... -Menu.SortByName = 이름순 정렬(&B) -Menu.Open = 열기(&O) -Menu.OpenAll = 열기 - All Users(&P) -Menu.Explore = 탐색(&E) -Menu.ExploreAll = 탐색 - All Users(&X) -Menu.MenuSettings = 설정 -Menu.MenuHelp = 도움말 -Menu.MenuExit = 끝내기 -Menu.LogoffTitle = Windows 로그오프 -Menu.LogoffPrompt = 로그오프하시겠습니까? -Menu.LogoffYes = 로그오프(&L) -Menu.LogoffNo = 아니요(&N) -Menu.RenameTitle = 이름 바꾸기 -Menu.RenamePrompt = 새 이름(&N): -Menu.RenameOK = 확인 -Menu.RenameCancel = 취소 -Menu.Organize = 시작 메뉴 구성 -Menu.Expand = 확장(&A) -Menu.Collapse = 축소(&A) -Menu.NewFolder = 새 폴더 -Menu.NewShortcut = 새 바로 가기 -Menu.AutoArrange = 자동 정렬(&A) -Menu.ActionOpen = 열기 -Menu.ActionClose = 닫기 -Menu.ActionExecute = 실행 -Menu.RemoveList = 이 목록에서 제거(&F) -Menu.RemoveAll = 최근 항목 목록 지우기(&L) -Menu.Explorer = Windows 탐색기 -Menu.Start = 시작 -Menu.StartScreen = 시작 화면 -Menu.StartMenu = 시작 메뉴 (Windows) -Menu.PinStart = 시작 메뉴에 고정 -Menu.PinStartCs = 시작 메뉴에 고정 (Open-Shell) -Menu.UnpinStartCs = 시작 메뉴에서 제거 (Open-Shell) -Menu.MonitorOff = 디스플레이 끄기 -Menu.RemoveHighlight = 추천 취소 -Menu.Uninstall = 제거(&U) -Menu.UninstallTitle = 제거 -Menu.UninstallPrompt = %s 설치를 제거하시겠습니까? -Search.CategorySettings = 설정 -Search.CategoryPCSettings = PC 설정 -Search.CategoryPrograms = 프로그램 -Search.CategoryDocuments = 문서 -Search.CategoryMusic = 음악 -Search.CategoryPictures = 사진 -Search.CategoryVideos = 비디오 -Search.CategoryFiles = 파일 -Search.CategoryInternet = 인터넷 -JumpList.Recent = 최근 항목 -JumpList.Frequent = 자주 사용하는 항목 -JumpList.Tasks = 작업 -JumpList.Pinned = 고정됨 -JumpList.Pin = 이 목록에 고정(&I) -JumpList.Unpin = 이 목록에서 제거(&U) -JumpList.Remove = 이 목록에서 제거(&F) -JumpList.PinTip = 이 목록에 고정 -JumpList.UnpinTip = 이 목록에서 제거 - - -[lt-LT] - Lithuanian (Lithuania) -Menu.Programs = &Programos -Menu.Apps = Programėlės -Menu.AllPrograms = Visos programos -Menu.Back = Atgal -Menu.Favorites = P&arankiniai -Menu.Documents = &Dokumentai -Menu.Settings = Para&metrai -Menu.Search = I&eškoti -Menu.SearchBox = Ieškoti -Menu.SearchPrograms = Ieškoti tarp programų ir failų -Menu.SearchInternet = Ieškoti internete -Menu.Searching = Ieškoma... -Menu.NoMatch = Nėra iešką atitinkančių elementų. -Menu.MoreResults = Rodyti daugiau rezultatų -Menu.Help = &Žinynas ir palaikymas -Menu.Run = &Vykdyti... -Menu.Logoff = I&šeiti %s -Menu.SwitchUser = Perjungti &vartotoją -Menu.Lock = Už&rakinti -Menu.LogOffShort = &Išeiti -Menu.Undock = Kompi&uterį atjungti nuo doko -Menu.Disconnect = A&tsijungti -Menu.ShutdownBox = Išjun>i... -Menu.Shutdown = &Baigti darbą -Menu.Restart = &Paleisti iš naujo -Menu.ShutdownUpdate = Naujinti ir išjungti -Menu.RestartUpdate = Naujinti ir paleisti iš naujo -Menu.Sleep = &Miego būsena -Menu.Hibernate = &Užmigdyti -Menu.ControlPanel = &Valdymo skydas -Menu.PCSettings = PC parametrai -Menu.Security = Windows sauga -Menu.Network = &Tinklo ryšiai -Menu.Printers = &Spausdintuvai -Menu.Taskbar = &Užduočių juosta ir meniu Pradėti -Menu.SearchFiles = Fa&ilams ir aplankams... -Menu.SearchPrinter = S&pausdintuvui -Menu.SearchComputers = &Kompiuteriams -Menu.UserFilesTip = Čia yra aplankai, skirti Dokumentams, Paveikslėliams, Muzikai ir kitoms jums priklausantiems failams. -Menu.UserDocumentsTip = Yra laiškų, ataskaitų ir kitų dokumentų, bei failų. -Menu.UserPicturesTip = Yra skaitmeninių nuotraukų, vaizdų ir grafinių failų. -Menu.UserMusicTip = Yra muzikos ir kitų garso failų. -Menu.UserVideosTip = Yra filmų ir kitų vaizdo failų. -Menu.NetworkTip = Rodomi esantys tinklo ryšiai kompiuteryje ir padedama kurti naujus -Menu.PrintersTip = Įtraukti, šalinti ir konfigūruoti vietinius ir tinklo spausdintuvus. -Menu.TaskbarTip = Tinkinkite meniu Pradėti ir užduočių juostą, pvz., rodyti skirtų elementų tipus ir jų išvaizdą. -Menu.ControlPanelTip = Keiskite parametrus ir tinkinkite savo kompiuterio funkcionalumą. -Menu.DocumentsLibTip = Pasiekite laiškus, ataskaitas, pastabas ir kitų tipų dokumentus. -Menu.MusicLibTip = Leiskite muzikos įrašus ir kitus garso failus. -Menu.PicturesLibTip = Peržiūrėkite ir tvarkykite skaitmeninius paveikslėlius. -Menu.VideosLibTip = Žiūrėkite namų kinus ir kitus skaitmeninius vaizdo įrašus. -Menu.RecordingsLibTip = Žiūrėkite TV programas, įrašytas jūsų kompiuteryje. -Menu.DownloadTip = Ieškokite siūlomų atsisiųsti failų internete ir nuorodų į mėgstamas svetaines. -Menu.HomegroupTip = Pasiekite bibliotekas ir aplankus, kuriuos bendrina kiti jūsų namų grupės nariai. -Menu.RunTip = Atidaro programą, aplanką, dokumentą ar svetainę. -Menu.HelpTip = Ieškokite Žinyno temų, vadovėlių, trikčių šalinimo ir kitų palaikymo paslaugų. -Menu.ProgramsTip = Atidaro programų sąrašą. -Menu.SearchFilesTip = Ieškokite dokumentų, muzikos įrašų, paveikslėlių, el. pašto ir t. t. -Menu.GamesTip = Paleiskite ir valdykite žaidimus kompiuteryje. -Menu.SecurityTip = Paleiskite Windows saugos parinktis, kad pakeistumėte slaptažodį, perjungtumėte vartotoją arba paleistumėte užduočių tvarkytuvą. -Menu.SearchComputersTip = Tinkle ieškoti kompiuterių -Menu.SearchPrintersTip = Ieškoti spausdintuvo -Menu.AdminToolsTip = Konfigūruokite kompiuterio administracinius parametrus. -Menu.ShutdownTip = Uždaro visas atidarytas programas, baigia darbą su Windows ir išjungia kompiuterį. -Menu.RestartTip = Uždaro visas atidarytas programas, Windows ir dar kartą paleidžia Windows. -Menu.SleepTip = Palieka seansą atmintyje ir perjungia kompiuterį veikti eikvojant mažai energijos, kad galėtumėte greitai tęsti darbą. -Menu.HibernateTip = Įrašo seansą ir išjungia kompiuterį. Įjungus kompiuterį, Windows atkuria seansą. -Menu.LogOffTip = Uždaro programas ir išeina. -Menu.DisconnectTip = Atjungiamas seansas. Pakartotinai prisijungti prie šio seanso galėsite dar kartą įėję. -Menu.LockTip = Užrakina šį kompiuterį. -Menu.UndockTip = Iš doko šalinamas nešiojamasis kompiuteris. -Menu.SwitchUserTip = Pakeičia vartotojus neuždarant programų. -Menu.Empty = (Tuščia) -Menu.Features = Programos ir funkcijos -Menu.FeaturesTip = Pašalinkite arba keiskite kompiuterio programas. -Menu.SearchPeople = &Asmenims... -Menu.SortByName = &Rūšiuoti pagal vardus -Menu.Open = &Atidaryti -Menu.OpenAll = A&tidaryti aplanką Visi vartotojai -Menu.Explore = Naršyt&i -Menu.ExploreAll = Na&ršyti visus vartotojus -Menu.MenuSettings = Parametrai -Menu.MenuHelp = Žinynas -Menu.MenuExit = Išeiti -Menu.LogoffTitle = Išeiti iš Windows -Menu.LogoffPrompt = Ar tikrai norite išeiti? -Menu.LogoffYes = I&šeiti -Menu.LogoffNo = &Ne -Menu.RenameTitle = Pervardyti -Menu.RenamePrompt = Naujas &pavadinimas: -Menu.RenameOK = Gerai -Menu.RenameCancel = Atšaukti -Menu.Organize = Tvarkyti pradžios meniu -Menu.Expand = P&lėsti -Menu.Collapse = Su&traukti -Menu.NewFolder = Naujas aplankas -Menu.NewShortcut = Nauja nuoroda -Menu.AutoArrange = Autom&atinis išdėstymas -Menu.ActionOpen = Atidaryti -Menu.ActionClose = Uždaryti -Menu.ActionExecute = Vykdyti -Menu.RemoveList = Šal&inti iš šio sąrašo -Menu.RemoveAll = &Valyti naujausių elementų sąrašą -Menu.Explorer = Windows naršyklė -Menu.Start = Pradėti -Menu.StartScreen = Pradžios ekranas -Menu.StartMenu = Meniu Pradėti (Windows) -Menu.PinStart = Padaryti prieinamą meniu Pradėti -Menu.PinStartCs = Padaryti prieinamą meniu Pradėti (Open-Shell) -Menu.UnpinStartCs = Padaryti neprieinamą meniu Pradėti (Open-Shell) -Menu.MonitorOff = Išjungti ekraną -Menu.RemoveHighlight = Šalinti paryškinimą -Menu.Uninstall = &Pašalinti -Menu.UninstallTitle = Pašalinti -Menu.UninstallPrompt = Ar tikrai norite pašalinti %s? -Search.CategorySettings = Parametrai -Search.CategoryPCSettings = PC parametrai -Search.CategoryPrograms = Programos -Search.CategoryDocuments = Dokumentai -Search.CategoryMusic = Muzika -Search.CategoryPictures = Paveikslėliai -Search.CategoryVideos = Vaizdo įrašai -Search.CategoryFiles = Failai -Search.CategoryInternet = Internetas -JumpList.Recent = Paskutiniai -JumpList.Frequent = Dažniausi -JumpList.Tasks = Užduotys -JumpList.Pinned = Susegta -JumpList.Pin = Į&traukti į šį sąrašą -JumpList.Unpin = P&ašalinti iš šio sąrašo -JumpList.Remove = Pašal&inti iš šio sąrašo -JumpList.PinTip = Įtraukti į šį sąrašą -JumpList.UnpinTip = Pašalinti iš šio sąrašo - - -[lv-LV] - Latvian (Latvia) -Menu.Programs = Pro&grammas -Menu.Apps = Programmas -Menu.AllPrograms = Visas programmas -Menu.Back = Atpakaļ -Menu.Favorites = Mana i&zlase -Menu.Documents = &Dokumenti -Menu.Settings = &Iestatījumi -Menu.Search = &Meklēt -Menu.SearchBox = Meklēt -Menu.SearchPrograms = Meklēt programmas un failus -Menu.SearchInternet = Meklēt internetā -Menu.Searching = Notiek meklēšana... -Menu.NoMatch = Nav vienumu, kas atbilstu meklēšanas kritērijiem. -Menu.MoreResults = Skatīt citus rezultātus -Menu.Help = Pa&līdzība un atbalsts -Menu.Run = Iz&pildīt... -Menu.Logoff = &Atteikties ar vārdu %s -Menu.SwitchUser = Pār&slēgt lietotāju -Menu.Lock = Ai&zslēgt -Menu.LogOffShort = &Atteikties -Menu.Undock = Atdokot dat&oru -Menu.Disconnect = At&vienoties -Menu.ShutdownBox = &Beidzēt... -Menu.Shutdown = &Beidzēšana -Menu.Restart = &Restartēšana -Menu.ShutdownUpdate = Atjaunināt un izslēgt -Menu.RestartUpdate = Atjaunināt un restartēt -Menu.Sleep = &Miega režīms -Menu.Hibernate = &Hibernācija -Menu.ControlPanel = Vadības &panelis -Menu.PCSettings = Datora iestatījumi -Menu.Security = Windows drošība -Menu.Network = &Tīkla savienojumi -Menu.Printers = P&rinteri -Menu.Taskbar = &Uzdevumjosla un izvēlne Sākt -Menu.SearchFiles = &Failus vai mapes... -Menu.SearchPrinter = &Printeri -Menu.SearchComputers = &Datorus -Menu.UserFilesTip = Ietver sadaļu Mani dokumenti, Mani attēli, Mana mūzika mapes un citus failus, kas jums pieder. -Menu.UserDocumentsTip = Satur vēstules, atskaites un citus dokumentus un failus. -Menu.UserPicturesTip = Satur ciparu fotogrāfijas, attēlus un grafikas failus. -Menu.UserMusicTip = Satur mūziku un citus audio failus. -Menu.UserVideosTip = Satur filmas un citus video failus. -Menu.NetworkTip = Parāda šajā datorā esošos tīkla savienojumus un palīdz izveidot jaunus -Menu.PrintersTip = Pievienojiet, noņemiet un konfigurējiet lokālos un tīkla printerus. -Menu.TaskbarTip = Pielāgot izvēlni Sākt un uzdevumjoslu, piemēram, kāda tipa vienumus rādīt un kā tiem ir jāizskatās. -Menu.ControlPanelTip = Mainīt iestatījumus un pielāgot datora funkcionalitāti. -Menu.DocumentsLibTip = Piekļūt vēstulēm, atskaitēm, piezīmēm un cita veida dokumentiem. -Menu.MusicLibTip = Atskaņot mūzikas un citus audio failus. -Menu.PicturesLibTip = Skatīt un organizēt digitālos attēlus. -Menu.VideosLibTip = Skatiet amatieru filmas un citu ciparvideo. -Menu.RecordingsLibTip = Skatiet datorā ierakstītās TV programmas. -Menu.DownloadTip = Atrodiet interneta lejupielādes un saites uz iecienītajām vietnēm. -Menu.HomegroupTip = Piekļūstiet bibliotēkām un mapēm, ko kopīgojušas citas personas mājas grupā. -Menu.RunTip = Atver programmu, mapi, dokumentu vai tīmekļa vietni. -Menu.HelpTip = Atrast palīdzības tēmas, apmācības, problēmu novēršanu un citus atbalsta pakalpojumus. -Menu.ProgramsTip = Atver programmu sarakstu. -Menu.SearchFilesTip = Meklēt dokumentus, mūziku, attēlus, e-pastu un citu. -Menu.GamesTip = Spēlēt un pārvaldīt spēles datorā. -Menu.SecurityTip = Palaist Windows drošības opcijas, lai mainītu paroli, pārslēgtu lietotāju vai startētu Uzdevumu pārvaldnieku. -Menu.SearchComputersTip = Meklēt datorus tīklā -Menu.SearchPrintersTip = Meklēt printeri -Menu.AdminToolsTip = Konfigurēt datora administratīvos iestatījumus. -Menu.ShutdownTip = Aizver visas atvērtās programmas, izslēdz sistēmu Windows un pēc tam izslēdz datoru. -Menu.RestartTip = Aizver visas atvērtās programmas, izslēdz sistēmu Windows un pēc tam to atkal startē. -Menu.SleepTip = Saglabā sesiju atmiņā un pārslēdz datoru mazas jaudas režīmā, lai pēc tam varētu ātri atsākt darbu. -Menu.HibernateTip = Saglabā sesiju un izslēdz datoru. Ieslēdzot datoru, sistēma Windows atjauno sesiju. -Menu.LogOffTip = Aizvērt programmas un atteikties. -Menu.DisconnectTip = Atvieno sesiju. Atkārtoti izveidot savienojumu ar šo sesiju var, vēlreiz piesakoties sistēmā. -Menu.LockTip = Aizslēgt datoru. -Menu.UndockTip = Noņem klēpjdatoru vai piezīmjdatoru no dokstacijas. -Menu.SwitchUserTip = Pārslēgt lietotājus, neaizverot programmas. -Menu.Empty = (Tukšs) -Menu.Features = Programmas un līdzekļi -Menu.FeaturesTip = Noņemt programmu instalāciju vai mainīt programmas datorā. -Menu.SearchPeople = &Personām... -Menu.SortByName = &Kārtot pēc nosaukuma -Menu.Open = A&tvērt -Menu.OpenAll = &Atvērt visus lietotājus -Menu.Explore = &Pārlūkot -Menu.ExploreAll = Pār&lūkot visus lietotājus -Menu.MenuSettings = Iestatījumi -Menu.MenuHelp = Palīdzība -Menu.MenuExit = Iziet -Menu.LogoffTitle = Atteikšanās sistēmā Windows -Menu.LogoffPrompt = Vai tiešām vēlaties atteikties? -Menu.LogoffYes = &Atteikties -Menu.LogoffNo = &Nē -Menu.RenameTitle = Pārdēvēšana -Menu.RenamePrompt = Jaunais &nosaukums: -Menu.RenameOK = Labi -Menu.RenameCancel = Atcelt -Menu.Organize = Organizēt izvēlni Sākt -Menu.Expand = Izv&ērst -Menu.Collapse = Sakļ&aut -Menu.NewFolder = Jauna mape -Menu.NewShortcut = Jauna saīsne -Menu.AutoArrange = &Automātiski sakārtot -Menu.ActionOpen = Atvērt -Menu.ActionClose = Aizvērt -Menu.ActionExecute = Izpildīt -Menu.RemoveList = &Noņemt no šī saraksta -Menu.RemoveAll = &Notīrīt nesen pievienoto vienumu sarakstu -Menu.Explorer = Windows Explorer -Menu.Start = Sākt -Menu.StartScreen = Sākuma ekrāns -Menu.StartMenu = Izvēlne Sākt (Windows) -Menu.PinStart = Piespraust izvēlnei Sākt -Menu.PinStartCs = Piespraust izvēlnei Sākt (Open-Shell) -Menu.UnpinStartCs = Atspraust no izvēlnes Sākt (Open-Shell) -Menu.MonitorOff = Izslēgt displeju -Menu.RemoveHighlight = Noņemt marķējumu -Menu.Uninstall = &Atinstalēt -Menu.UninstallTitle = Atinstalēt -Menu.UninstallPrompt = Vai esat pārliecināts, ka vēlaties atinstalēt %s? -Search.CategorySettings = Iestatījumi -Search.CategoryPCSettings = Datora iestatījumi -Search.CategoryPrograms = Programmas -Search.CategoryDocuments = Dokumenti -Search.CategoryMusic = Mūzika -Search.CategoryPictures = Attēli -Search.CategoryVideos = Video -Search.CategoryFiles = Faili -Search.CategoryInternet = Internets -JumpList.Recent = Nesen izmantotie -JumpList.Frequent = Biežāk atvērtie -JumpList.Tasks = Uzdevumi -JumpList.Pinned = Piesprausts -JumpList.Pin = Pie&spraust šim sarakstam -JumpList.Unpin = &Atspraust no šī saraksta -JumpList.Remove = &Noņemt no šī saraksta -JumpList.PinTip = Piespraust šim sarakstam -JumpList.UnpinTip = Atspraust no šī saraksta - - -[mk-MK] - Macedonian (Macedonia) -Menu.Programs = Програми -Menu.Apps = Апликации -Menu.AllPrograms = Сите програми -Menu.Back = Назад -Menu.Favorites = Омилени -Menu.Documents = Документи -Menu.Settings = Подесувања -Menu.Search = Пребарување -Menu.SearchBox = Поле за пребарување -Menu.SearchPrograms = Барање на програми и фајлови -Menu.SearchInternet = Пребарување на интернет -Menu.Searching = Пребарување... -Menu.NoMatch = Не е пронајдено ништо. -Menu.MoreResults = Дај повеќе резултати -Menu.Help = Помош и поддршка -Menu.Run = Стартувај... -Menu.Logoff = Излегување од -Menu.SwitchUser = Смени го корисникот -Menu.Lock = Заклучување -Menu.LogOffShort = Кратко излегување -Menu.Undock = Откачи го компјутерот -Menu.Disconnect = Прекини ја врската -Menu.ShutdownBox = Исклучи... -Menu.Shutdown = Исклучување -Menu.Restart = Рестартирај -Menu.ShutdownUpdate = Надградба и исклучување -Menu.RestartUpdate = Надградба и рестартирање -Menu.Sleep = Заспивање -Menu.Hibernate = Хибернација -Menu.ControlPanel = Контрол панел -Menu.PCSettings = Параметри на компјутерот -Menu.Security = Заштита на Windows -Menu.Network = Компјутерска Мрежа -Menu.Printers = Принтери -Menu.Taskbar = Таскбар и мени “Старт“ -Menu.SearchFiles = За фајлови или фолдери... -Menu.SearchPrinter = За печатар -Menu.SearchComputers = За компјутери -Menu.UserFilesTip = Содржи фолдери за документи, музика и други ваши фајлови. -Menu.UserDocumentsTip = Содржи документи, слики, фајлови и друго. -Menu.UserPicturesTip = Содржи документи, слики и фајлови. -Menu.UserMusicTip = Содржи музика и други аудио фајлови. -Menu.UserVideosTip = Содржи филмови и други видео фајлови. -Menu.NetworkTip = Покажува постоечки врски на мрежата на тој компјутер и ви овозможува да направите нови -Menu.PrintersTip = Додавање, отстранување и конфигурирање на локални мрежини принтери. -Menu.TaskbarTip = Персонализирање на менито "Старт" и таскбарот на задачите, како на прим. типови на елементи коишто ќе бидат покажани. -Menu.ControlPanelTip = Промена на подесување и пресонализирање на функционалноста на компјутерот. -Menu.DocumentsLibTip = Пристап до писма, белешки и други видови на документи. -Menu.MusicLibTip = Репродукција на музика и други аудио фајлови. -Menu.PicturesLibTip = Преглед и организирање на дигитални слики. -Menu.VideosLibTip = Гледање на домашни филмови и други дигитални видеозаписи. -Menu.RecordingsLibTip = Гледање на снимени на компјутер ТВ програми. -Menu.DownloadTip = Барање на даунлоадирани фајлови од интернет и кон напосакуваните врски. -Menu.HomegroupTip = Достап до директориуми и фолдери, споделени од други луѓе во вашата домашна мрежа. -Menu.RunTip = Отвара програма, фолдер, документ или веб сајт. -Menu.HelpTip = Лоцирајте теми од "Помош", туторијали, отстранување на неисправности и други услуги за поддршка. -Menu.ProgramsTip = Го отвора списокот на програмите. -Menu.SearchFilesTip = Барање на документи, музика, слики,и електронска пошта и друго. -Menu.GamesTip = Играјте и управувајте со игрите на својот компјутер. -Menu.SecurityTip = Стартирајте ги опциите за заштита на Windows, за да промените лозинка, да смените корисник или да стартирате таск менаџер. -Menu.SearchComputersTip = Барање на компјутери во мрежата -Menu.SearchPrintersTip = Барање на печатари -Menu.AdminToolsTip = Конфигурирање на административните подесувања на компјутерот. -Menu.ShutdownTip = Ги затвора сите отворени програми, исклучува Windows и исклучува компјутер. -Menu.RestartTip = Ги затвора сите отворени програми, исклучува Windows и после одново се стартува Windows. -Menu.SleepTip = Ја запазува сесијата во меморија и го поставува компјутерот во систем на штедење на енергија, за да можете брзо да продолжите со работа. -Menu.HibernateTip = Ја запазува сесијата во меморија и исклучува компјутерот. Кога ќе го вклучите компјутерот, Windows ја продолжува вашата сесија. -Menu.LogOffTip = Затварање на програмите и излегување. -Menu.DisconnectTip = Ја прекинува врската со вашата сесија. Можете да се поврзете со таа сесија повторно, кога ќе влезете повторно. -Menu.LockTip = Заклупување на компјутерот. -Menu.UndockTip = Го отстранува вашиот лаптоп или ноутбук комјутер од базната станица. -Menu.SwitchUserTip = Смена на корисниците без да се затвораат програмите. -Menu.Empty = (Празно) -Menu.Features = Програми и компоненти -Menu.FeaturesTip = Деинсталација или промена на програми на компјутерот. -Menu.SearchPeople = За луѓе... -Menu.SortByName = Сортирај по име -Menu.Open = Отвори -Menu.OpenAll = Отвори "Сите корисници" -Menu.Explore = Преглед -Menu.ExploreAll = Преглед на "Сите корисници" -Menu.MenuSettings = Подесувања -Menu.MenuHelp = Помош -Menu.MenuExit = Излез -Menu.LogoffTitle = Излегување од Windows -Menu.LogoffPrompt = Навистина сакате да излезете? -Menu.LogoffYes = Излегување -Menu.LogoffNo = Не -Menu.RenameTitle = Преименување -Menu.RenamePrompt = Ново име: -Menu.RenameOK = OK -Menu.RenameCancel = Откажи -Menu.Organize = Организирање на менито "Старт" -Menu.Expand = Прошири -Menu.Collapse = Собери -Menu.NewFolder = Нов фолдер -Menu.NewShortcut = Нов краток пат -Menu.AutoArrange = Автоматско подредување -Menu.ActionOpen = Отвори -Menu.ActionClose = Затвори -Menu.ActionExecute = Изврши -Menu.RemoveList = Отстрани од тој список -Menu.RemoveAll = Исчисти го списокот од последните програми -Menu.Explorer = Windows Explorer -Menu.Start = Старт -Menu.StartScreen = Почетен екран -Menu.StartMenu = Мени "Старт" (Windows) -Menu.PinStart = Закачи кон менито "Старт" -Menu.PinStartCs = Закачи го кон менито "Старт" (Open-Shell) -Menu.UnpinStartCs = Откачи го од менито "Старт" (Open-Shell) -Menu.MonitorOff = Исклучување на дисплејот -Menu.RemoveHighlight = Remove highlight -Menu.Uninstall = &Деинсталирај -Menu.UninstallTitle = Деинсталирај -Menu.UninstallPrompt = Дали сте сигурни дека сакате да го деинсталирате %s? -Search.CategorySettings = Подесувања -Search.CategoryPCSettings = Параметри на компјутерот -Search.CategoryPrograms = Програми -Search.CategoryDocuments = Документи -Search.CategoryMusic = Музика -Search.CategoryPictures = Слики -Search.CategoryVideos = Видеозаписи -Search.CategoryFiles = Фајлови -Search.CategoryInternet = Интернет -JumpList.Recent = Последни -JumpList.Frequent = Често Користени -JumpList.Tasks = Задачи -JumpList.Pinned = Закачени -JumpList.Pin = Закачи кон тој список -JumpList.Unpin = Откачи од тој список -JumpList.Remove = Отстрани од тој список -JumpList.PinTip = Закачи кон тој список -JumpList.UnpinTip = Откачи од тој список - - -[nb-NO] - Norwegian, Bokmål (Norway) -Menu.Programs = &Programmer -Menu.Apps = Apper -Menu.AllPrograms = Alle programmer -Menu.Back = Tilbake -Menu.Favorites = &Favoritter -Menu.Documents = &Dokumenter -Menu.Settings = &Innstillinger -Menu.Search = &Søk -Menu.SearchBox = Søk -Menu.SearchPrograms = Søk i programmer og filer -Menu.SearchInternet = Søk på Internett -Menu.Searching = Søker... -Menu.NoMatch = Ingen elementer stemmer med søket. -Menu.MoreResults = Se flere resultater -Menu.Help = &Hjelp og støtte -Menu.Run = &Kjør... -Menu.Logoff = &Logg av %s -Menu.SwitchUser = &Bytt bruker -Menu.Lock = L&ås -Menu.LogOffShort = &Logg av -Menu.Undock = Koble fra P&C -Menu.Disconnect = K&oble fra -Menu.ShutdownBox = &Avslutt... -Menu.Shutdown = &Avslutt -Menu.Restart = &Start på nytt -Menu.ShutdownUpdate = Oppdater og slå av -Menu.RestartUpdate = Oppdater og start på nytt -Menu.Sleep = &Hvilemodus -Menu.Hibernate = &Dvalemodus -Menu.ControlPanel = &Kontrollpanel -Menu.PCSettings = PC-innstillinger -Menu.Security = Windows-sikkerhet -Menu.Network = &Nettverkstilkoblinger -Menu.Printers = &Skrivere -Menu.Taskbar = &Oppgavelinje og Start-meny -Menu.SearchFiles = Etter &filer eller mapper... -Menu.SearchPrinter = Etter &skriver -Menu.SearchComputers = Etter &datamaskiner -Menu.UserFilesTip = Inneholder mapper for dokumenter, bilder, musikk og andre filer som tilhører deg. -Menu.UserDocumentsTip = Inneholder brev, rapporter og andre dokumenter og filer. -Menu.UserPicturesTip = Inneholder digitale fotografier, bilder og grafikkfiler. -Menu.UserMusicTip = Inneholder musikk- og andre lydfiler. -Menu.UserVideosTip = Inneholder filmer og andre videofiler. -Menu.NetworkTip = Viser eksisterende tilkoblinger på denne datamaskinen, og hjelper deg med å opprette nye -Menu.PrintersTip = Legg til, fjern og konfigurer lokale skrivere. -Menu.TaskbarTip = Tilpass Start-menyen og oppgavelinjen, for eksempel typen elementer som skal vises, og hvordan de skal vises. -Menu.ControlPanelTip = Endre innstillinger og tilpass funksjonaliteten på datamaskinen. -Menu.DocumentsLibTip = Lagre brev, rapporter, notater og andre typer dokumenter. -Menu.MusicLibTip = Spill av musikk og andre lydfiler. -Menu.PicturesLibTip = Vis og ordne digitale bilder. -Menu.VideosLibTip = Se hjemmefilmer og andre digitale videoer. -Menu.RecordingsLibTip = Se TV-programmer lagret på datamaskinen. -Menu.DownloadTip = Finn Internett-nedlastinger og koblinger til favorittsteder på nettet. -Menu.HomegroupTip = Få tilgang til biblioteker og mapper delt med andre i hjemmegruppen. -Menu.RunTip = Åpner et program, en mappe, et dokument eller et webområde. -Menu.HelpTip = Finn hjelpeemner, opplæring, feilsøking og andre støttetjenester. -Menu.ProgramsTip = Åpner en liste over programmer. -Menu.SearchFilesTip = Søk etter dokumenter, musikk, bilder, e-post og mer. -Menu.GamesTip = Spill og administrer spill på datamaskinen. -Menu.SecurityTip = Start Windows sikkerhetsalternativer for å endre Passord, Bytte bruker eller starte Oppgavebehandling. -Menu.SearchComputersTip = Søk etter datamaskiner på nettverket -Menu.SearchPrintersTip = Søk etter en skriver -Menu.AdminToolsTip = Konfigurer administrative innstillinger for datamaskinen. -Menu.ShutdownTip = Lukker alle åpne programmer, avslutter Windows og slår deretter av datamaskinen. -Menu.RestartTip = Lukker alle åpne programmer, avslutter Windows, og starter deretter Windows på nytt. -Menu.SleepTip = Beholder økten i minnet, og setter datamaskinen i en status med lavt strømforbruk så du raskt kan gjenoppta arbeidet. -Menu.HibernateTip = Lagrer økten, og slår av datamaskinen. Windows gjenoppretter økten når du slår på datamaskinen. -Menu.LogOffTip = Lukk programmer og logg av. -Menu.DisconnectTip = Kobler fra økten. Du kan koble til denne økten når du logger på igjen. -Menu.LockTip = Lås denne datamaskinen. -Menu.UndockTip = Fjerner den bærbare datamaskinen fra en forankringsstasjon. -Menu.SwitchUserTip = Bytt brukere uten å lukke programmer. -Menu.Empty = (Tom) -Menu.Features = Programmer og funksjoner -Menu.FeaturesTip = Avinstaller eller endre programmer på datamaskinen. -Menu.SearchPeople = Etter &personer... -Menu.SortByName = Sorter etter &navn -Menu.Open = Å&pne -Menu.OpenAll = &Åpne mappen All users -Menu.Explore = &Utforsk -Menu.ExploreAll = Utforsk &mappen All users -Menu.MenuSettings = Innstillinger -Menu.MenuHelp = Hjelp -Menu.MenuExit = Avslutt -Menu.LogoffTitle = Logg av Windows -Menu.LogoffPrompt = Er du sikker på at du vil logge av? -Menu.LogoffYes = &Logg av -Menu.LogoffNo = &Nei -Menu.RenameTitle = Gi nytt navn -Menu.RenamePrompt = &Nytt navn: -Menu.RenameOK = OK -Menu.RenameCancel = Avbryt -Menu.Organize = Organiser Start-meny -Menu.Expand = &Utvid -Menu.Collapse = &Minimer -Menu.NewFolder = Ny mappe -Menu.NewShortcut = Ny snarvei -Menu.AutoArrange = O&rdne automatisk -Menu.ActionOpen = Åpne -Menu.ActionClose = Lukk -Menu.ActionExecute = Utføre -Menu.RemoveList = &Fjern fra denne listen -Menu.RemoveAll = &Tøm listen over nylig brukte elementer -Menu.Explorer = Windows Utforsker -Menu.Start = Start -Menu.StartScreen = Startskjerm -Menu.StartMenu = Start-meny (Windows) -Menu.PinStart = Fest til Start-menyen -Menu.PinStartCs = Fest til Start-menyen (Open-Shell) -Menu.UnpinStartCs = Løsne fra Start-menyen (Open-Shell) -Menu.MonitorOff = Slå av skjermen -Menu.RemoveHighlight = Fjern høydepunkt -Menu.Uninstall = &Avinstaller -Menu.UninstallTitle = Avinstaller -Menu.UninstallPrompt = Er du sikker på at du vil avinstallere %s? -Search.CategorySettings = Innstillinger -Search.CategoryPCSettings = PC-innstillinger -Search.CategoryPrograms = Programmer -Search.CategoryDocuments = Dokumenter -Search.CategoryMusic = Musikk -Search.CategoryPictures = Bilder -Search.CategoryVideos = Videoer -Search.CategoryFiles = Filer -Search.CategoryInternet = Internett -JumpList.Recent = Siste -JumpList.Frequent = Ofte -JumpList.Tasks = Oppgaver -JumpList.Pinned = Låst -JumpList.Pin = &Fest til denne listen -JumpList.Unpin = &Løsne fra denne listen -JumpList.Remove = Fjer&n fra denne listen -JumpList.PinTip = Fest til denne listen -JumpList.UnpinTip = Løsne fra denne listen - - -[nl-NL] - Dutch (Netherlands) -Menu.Programs = &Programma's -Menu.Apps = Apps -Menu.AllPrograms = Alle programma's -Menu.Back = Vorige weergave -Menu.Favorites = &Favorieten -Menu.Documents = &Documenten -Menu.Settings = &Instellingen -Menu.Search = &Zoeken -Menu.SearchBox = Zoeken -Menu.SearchPrograms = Programma's en bestanden zoeken -Menu.SearchInternet = Op internet zoeken -Menu.Searching = Zoeken... -Menu.NoMatch = Geen zoekresultaten. -Menu.MoreResults = Meer resultaten weergeven -Menu.Help = &Help en ondersteuning -Menu.Run = &Uitvoeren... -Menu.Logoff = %s af&melden -Menu.SwitchUser = An&dere gebruiker -Menu.Lock = &Vergrendelen -Menu.LogOffShort = Afmel&den -Menu.Undock = &Laptop loskoppelen -Menu.Disconnect = Ver&binding verbreken -Menu.ShutdownBox = &Afsluiten... -Menu.Shutdown = A&fsluiten -Menu.Restart = &Opnieuw opstarten -Menu.ShutdownUpdate = Bijwerken en afsluiten -Menu.RestartUpdate = Bijwerken en opnieuw opstarten -Menu.Sleep = &Slaapstand -Menu.Hibernate = Slui&merstand -Menu.ControlPanel = &Configuratiescherm -Menu.PCSettings = Pc-instellingen -Menu.Security = Windows-beveiliging -Menu.Network = &Netwerkverbindingen -Menu.Printers = &Printers -Menu.Taskbar = &Taakbalk en menu Start -Menu.SearchFiles = Naar &bestanden of mappen... -Menu.SearchPrinter = &Naar printer -Menu.SearchComputers = Naar &computers -Menu.UserFilesTip = Bevat mappen voor documenten, afbeeldingen, muziek en andere bestanden die van u zijn. -Menu.UserDocumentsTip = Dit is de locatie waar u brieven, rapporten, documenten en andere bestanden kunt opslaan -Menu.UserPicturesTip = Dit is de locatie waar u digitale foto's, afbeeldingen en andere grafische bestanden kunt opslaan -Menu.UserMusicTip = Dit is de locatie waar u muziek en andere audiobestanden kunt opslaan -Menu.UserVideosTip = Dit is de locatie waar u filmfragmenten en andere videobestanden kunt opslaan -Menu.NetworkTip = Hiermee worden netwerkverbindingen op deze computer weergegeven en krijgt u hulp bij het maken van nieuwe verbindingen -Menu.PrintersTip = Hiermee kunt u lokale en netwerkprinters toevoegen, verwijderen en configureren -Menu.TaskbarTip = Hiermee kunt u de weergave wijzigen van onderdelen die in het menu Start of op de taakbalk staan -Menu.ControlPanelTip = De instellingen en functionaliteit van uw computer wijzigen -Menu.DocumentsLibTip = Brieven, rapporten, notities en andere soorten documenten openen -Menu.MusicLibTip = Muziek en andere audiobestanden afspelen -Menu.PicturesLibTip = Digitale foto's weergeven en rangschikken -Menu.VideosLibTip = Bekijk zelfgemaakte films en andere digitale video's. -Menu.RecordingsLibTip = Bekijk televisieprogramma's die op de computer zijn opgenomen. -Menu.DownloadTip = Zoek internetdownloads en koppelingen naar favoriete websites. -Menu.HomegroupTip = Toegang krijgen tot bibliotheken en maken die gedeeld worden door andere gebruikers in uw thuisgroep. -Menu.RunTip = Hiermee kunt u een programma starten, map openen of een website bezoeken -Menu.HelpTip = Help-onderwerpen, zelfstudies, probleemoplossingen en andere ondersteuningsdiensten zoeken -Menu.ProgramsTip = Hiermee kunt u een lijst met beschikbare programma's weergeven -Menu.SearchFilesTip = Documenten, muziek, afbeeldingen, e-mailberichten en meer zoeken -Menu.GamesTip = Spellen op uw computer spelen en beheren -Menu.SecurityTip = Start Windows-beveiligingsopties om het wachtwoord te wijzigen, van gebruiker te veranderen of Taakbeheer te starten. -Menu.SearchComputersTip = Computers in het netwerk zoeken -Menu.SearchPrintersTip = Een printer zoeken -Menu.AdminToolsTip = Hiermee kunt u beheerinstellingen voor deze computer configureren -Menu.ShutdownTip = Alle geopende programma's sluiten, Windows afsluiten en vervolgens de computer uitschakelen -Menu.RestartTip = Alle geopende programma's sluiten en vervolgens Windows opnieuw starten -Menu.SleepTip = Uw sessie wordt in het geheugen bewaard en de computer wordt in een toestand van laag energieverbruik gezet, zodat u uw werk snel kunt hervatten. -Menu.HibernateTip = Uw sessie wordt opgeslagen en de computer wordt uitgeschakeld. Als u de computer inschakelt, wordt uw sessie hersteld. -Menu.LogOffTip = Alle programma's sluiten en u afmelden -Menu.DisconnectTip = De sessie beëindigen. U kunt de sessie hervatten door u opnieuw aan te melden. -Menu.LockTip = Deze computer vergrendelen -Menu.UndockTip = Uw draagbare computer loskoppelen van het basisstation -Menu.SwitchUserTip = Een andere gebruiker in staat stellen zich aan te melden zonder programma's te sluiten -Menu.Empty = (leeg) -Menu.Features = Programma's en onderdelen -Menu.FeaturesTip = Programma's op uw computer wijzigen of van uw computer verwijderen -Menu.SearchPeople = &Personen... -Menu.SortByName = S&orteren op naam -Menu.Open = &Openen -Menu.OpenAll = &Alle gebruikers weergeven -Menu.Explore = Ve&rkennen -Menu.ExploreAll = Alle &gebruikers verkennen -Menu.MenuSettings = Instellingen -Menu.MenuHelp = Help -Menu.MenuExit = Afsluiten -Menu.LogoffTitle = Afmelden bij Windows -Menu.LogoffPrompt = Weet u zeker dat u zich wilt afmelden? -Menu.LogoffYes = A&fmelden -Menu.LogoffNo = &Nee -Menu.RenameTitle = Naam wijzigen -Menu.RenamePrompt = &Nieuwe naam: -Menu.RenameOK = OK -Menu.RenameCancel = Annuleren -Menu.Organize = Menu Start organiseren -Menu.Expand = &Uitvouwen -Menu.Collapse = Samen&vouwen -Menu.NewFolder = Nieuwe map -Menu.NewShortcut = Nieuwe snelkoppeling -Menu.AutoArrange = Automatisch sc&hikken -Menu.ActionOpen = Openen -Menu.ActionClose = Sluiten -Menu.ActionExecute = Uitvoeren -Menu.RemoveList = Uit deze lijst &verwijderen -Menu.RemoveAll = Lijst met recente items &wissen -Menu.Explorer = Windows Verkenner -Menu.Start = Start -Menu.StartScreen = Startscherm -Menu.StartMenu = Menu Start (Windows) -Menu.PinStart = Vastmaken aan menu Start -Menu.PinStartCs = Vastmaken aan menu Start (Open-Shell) -Menu.UnpinStartCs = Losmaken van menu Start (Open-Shell) -Menu.MonitorOff = Het beeldscherm uitschakelen -Menu.RemoveHighlight = Aandachtspunt verwijderen -Menu.Uninstall = V&erwijderen -Menu.UninstallTitle = Verwijderen -Menu.UninstallPrompt = Weet u zeker dat u %s wilt verwijderen? -Search.CategorySettings = Instellingen -Search.CategoryPCSettings = Pc-instellingen -Search.CategoryPrograms = Programma's -Search.CategoryDocuments = Documenten -Search.CategoryMusic = Muziek -Search.CategoryPictures = Afbeeldingen -Search.CategoryVideos = Video's -Search.CategoryFiles = Bestanden -Search.CategoryInternet = Internet -JumpList.Recent = Recent -JumpList.Frequent = Vaak gebruikte items -JumpList.Tasks = Taken -JumpList.Pinned = Gepind -JumpList.Pin = &Aan deze lijst vastmaken -JumpList.Unpin = &Van deze lijst losmaken -JumpList.Remove = Uit deze lijst &verwijderen -JumpList.PinTip = Aan deze lijst vastmaken -JumpList.UnpinTip = Van deze lijst losmaken - - -[pl-PL] - Polish (Poland) -Menu.Programs = &Programy -Menu.Apps = Aplikacje -Menu.AllPrograms = Wszystkie programy -Menu.Back = Wstecz -Menu.Favorites = Ulu&bione -Menu.Documents = &Dokumenty -Menu.Settings = &Ustawienia -Menu.Search = &Wyszukaj -Menu.SearchBox = Wyszukaj -Menu.SearchPrograms = Wyszukaj programy i pliki -Menu.SearchInternet = Przeszukaj Internet -Menu.Searching = Trwa wyszukiwanie... -Menu.NoMatch = Żadne elementy nie pasują do kryteriów wyszukiwania. -Menu.MoreResults = Wyświetl więcej wyników -Menu.Help = Pomo&c i obsługa techniczna -Menu.Run = Urucho&m... -Menu.Logoff = Wy&loguj: %s -Menu.SwitchUser = &Przełącz użytkownika -Menu.Lock = &Zablokuj -Menu.LogOffShort = Wy&loguj -Menu.Undock = Oddokuj kompu&ter -Menu.Disconnect = &Rozłącz -Menu.ShutdownBox = Zam&knij... -Menu.Shutdown = &Zamknij -Menu.Restart = &Uruchom ponownie -Menu.ShutdownUpdate = Zaktualizuj i zamknij -Menu.RestartUpdate = Zaktualizuj i uruchom ponownie -Menu.Sleep = &Wstrzymaj -Menu.Hibernate = &Hibernacja -Menu.ControlPanel = Panel &sterowania -Menu.PCSettings = Ustawienia komputera -Menu.Security = Zabezpieczenia systemu Windows -Menu.Network = &Połączenia sieciowe -Menu.Printers = &Drukarki -Menu.Taskbar = Pasek zadań i &menu Start -Menu.SearchFiles = &Pliki lub foldery... -Menu.SearchPrinter = &Drukarki -Menu.SearchComputers = &Komputery -Menu.UserFilesTip = Zawiera foldery na dokumenty, obrazy, muzykę i inne Twoje pliki. -Menu.UserDocumentsTip = Zawiera listy, raporty i inne dokumenty i pliki. -Menu.UserPicturesTip = Zawiera fotografie cyfrowe, obrazy i pliki graficzne. -Menu.UserMusicTip = Zawiera muzykę i inne pliki audio. -Menu.UserVideosTip = Zawiera filmy i inne pliki wideo. -Menu.NetworkTip = Wyświetla istniejące połączenia sieciowe na tym komputerze, oraz ułatwia tworzenie nowych. -Menu.PrintersTip = Dodawaj, usuwaj i konfiguruj drukarki lokalne i sieciowe. -Menu.TaskbarTip = Dostosuj menu Start i pasek zadań, na przykład typy wyświetlanych elementów i sposób ich wyświetlania. -Menu.ControlPanelTip = Zmień ustawienia i dostosuj funkcjonalność tego komputera. -Menu.DocumentsLibTip = Przechowuj listy, raporty, notatki i inne rodzaje dokumentów. -Menu.MusicLibTip = Odtwarzaj muzykę i inne pliki audio. -Menu.PicturesLibTip = Wyświetlaj i organizuj obrazy cyfrowe. -Menu.VideosLibTip = Oglądaj filmy i inne cyfrowe materiały wideo. -Menu.RecordingsLibTip = Oglądaj programy telewizyjne nagrane na komputerze. -Menu.DownloadTip = Znajdź pliki pobrane z Internetu i łącza do ulubionych witryn sieci Web. -Menu.HomegroupTip = Uzyskaj dostęp do bibliotek i folderów udostępnionych w grupie domowej przez inne osoby. -Menu.RunTip = Otwiera program, folder, dokument lub witrynę sieci web. -Menu.HelpTip = Znajdź tematy Pomocy, samouczki, narzędzia do rozwiązywania problemów i inne usługi pomocnicze. -Menu.ProgramsTip = Otwiera listę programów. -Menu.SearchFilesTip = Wyszukuj dokumenty, muzykę, obrazy, wiadomości e-mail i inne elementy. -Menu.GamesTip = Graj i zarządzaj grami na komputerze. -Menu.SecurityTip = Otwórz opcje zabezpieczeń systemu Windows, aby zmienić hasło, przełączyć użytkownika lub uruchomić Menedżera zadań. -Menu.SearchComputersTip = Wyszukiwanie komputerów w sieci -Menu.SearchPrintersTip = Wyszukiwanie drukarki -Menu.AdminToolsTip = Konfiguruje ustawienia administracyjne dla tego komputera. -Menu.ShutdownTip = Zamyka wszystkie otwarte programy, zamyka system Windows, a następnie wyłącza komputer. -Menu.RestartTip = Zamyka wszystkie otwarte programy, zamyka system Windows, a następnie ponownie go uruchamia. -Menu.SleepTip = Zachowuje sesję w pamięci i przełącza komputer w stan niskiego poboru energii, umożliwiając szybkie wznowienie pracy. -Menu.HibernateTip = Zapisuje sesję i wyłącza komputer. Gdy włączysz komputer, system Windows przywróci sesję. -Menu.LogOffTip = Zamknij programy i wyloguj się. -Menu.DisconnectTip = Rozłącza sesję. Po ponownym zalogowaniu można ponownie połączyć się z tą samą sesją. -Menu.LockTip = Zablokuj ten komputer. -Menu.UndockTip = Odłącza komputer przenośny od stacji dokowania. -Menu.SwitchUserTip = Przełącz użytkowników bez zamykania programów. -Menu.Empty = (Puste) -Menu.Features = Programy i funkcje -Menu.FeaturesTip = Odinstaluj lub zmień programy na komputerze. -Menu.SearchPeople = &Do osób... -Menu.SortByName = Sortuj w&edług nazw -Menu.Open = &Otwórz -Menu.OpenAll = Otwórz &wszystkich użytkowników -Menu.Explore = &Eksploruj -Menu.ExploreAll = E&ksploruj wszystkich użytkowników -Menu.MenuSettings = Ustawienia -Menu.MenuHelp = Pomoc -Menu.MenuExit = Zakończ -Menu.LogoffTitle = Wylogowywanie z systemu Windows -Menu.LogoffPrompt = Czy na pewno chcesz się wylogować? -Menu.LogoffYes = &Wyloguj -Menu.LogoffNo = &Nie -Menu.RenameTitle = Zmienianie nazwy -Menu.RenamePrompt = &Nowa nazwa: -Menu.RenameOK = OK -Menu.RenameCancel = Anuluj -Menu.Organize = Organizuj menu Start -Menu.Expand = &Rozwiń -Menu.Collapse = &Zwiń -Menu.NewFolder = Nowy folder -Menu.NewShortcut = Nowy skrót -Menu.AutoArrange = &Autorozmieszczanie -Menu.ActionOpen = Otwórz -Menu.ActionClose = Zamknij -Menu.ActionExecute = Wykonaj -Menu.RemoveList = &Usuń z tej listy -Menu.RemoveAll = &Wyczyść listę niedawno używanych elementów -Menu.Explorer = Eksplorator Windows -Menu.Start = Start -Menu.StartScreen = Ekran startowy -Menu.StartMenu = Menu Start (Windows) -Menu.PinStart = Przypnij do menu Start -Menu.PinStartCs = Przypnij do menu Start (Open-Shell) -Menu.UnpinStartCs = Odepnij od menu Start (Open-Shell) -Menu.MonitorOff = Wyłącz ekran -Menu.RemoveHighlight = Usuń wyróżnienie -Menu.Uninstall = &Odinstaluj -Menu.UninstallTitle = Odinstaluj -Menu.UninstallPrompt = Czy na pewno chcesz odinstalować program %s? -Search.CategorySettings = Ustawienia -Search.CategoryPCSettings = Ustawienia komputera -Search.CategoryPrograms = Programy -Search.CategoryDocuments = Dokumenty -Search.CategoryMusic = Muzyka -Search.CategoryPictures = Obrazy -Search.CategoryVideos = Wideo -Search.CategoryFiles = Pliki -Search.CategoryInternet = Internet -JumpList.Recent = Najnowsze -JumpList.Frequent = Częste -JumpList.Tasks = Zadania -JumpList.Pinned = Zakotwiczony -JumpList.Pin = &Przypnij do tej listy -JumpList.Unpin = &Odepnij od tej listy -JumpList.Remove = U&suń z tej listy -JumpList.PinTip = Przypnij do tej listy -JumpList.UnpinTip = Odepnij od tej listy - - -[pt-BR] - Portuguese (Brazil) -Menu.Programs = &Programas -Menu.Apps = Aplicativos -Menu.AllPrograms = Todos os Programas -Menu.Back = Voltar -Menu.Favorites = &Favoritos -Menu.Documents = Docu&mentos -Menu.Settings = &Configurações -Menu.Search = Pe&squisar -Menu.SearchBox = Pesquisar -Menu.SearchPrograms = Pesquisar programas e arquivos -Menu.SearchInternet = Pesquisar na Internet -Menu.Searching = Pesquisando... -Menu.NoMatch = Nenhum item corresponde à pesquisa. -Menu.MoreResults = Ver mais resultados -Menu.Help = &Ajuda e Suporte -Menu.Run = Execu&tar... -Menu.Logoff = Fa&zer Logoff de %s -Menu.SwitchUser = &Trocar usuário -Menu.Lock = Bl&oquear -Menu.LogOffShort = Faz&er logoff -Menu.Undock = Desencai&xar -Menu.Disconnect = &Desconectar -Menu.ShutdownBox = Desliga&r... -Menu.Shutdown = &Desligar -Menu.Restart = &Reiniciar -Menu.ShutdownUpdate = Atualizar e desligar -Menu.RestartUpdate = Atualizar e reiniciar -Menu.Sleep = &Dormir -Menu.Hibernate = &Hibernar -Menu.ControlPanel = &Painel de controle -Menu.PCSettings = Configurações do computador -Menu.Security = Segurança do Windows -Menu.Network = Co&nexões de Rede -Menu.Printers = &Impressoras -Menu.Taskbar = &Barra de Tarefas e menu Iniciar -Menu.SearchFiles = &Arquivos ou Pastas... -Menu.SearchPrinter = Imp&ressora -Menu.SearchComputers = &Computadores -Menu.UserFilesTip = Contém pastas de Documentos, Imagens, Músicas e outros arquivos pertencentes a você. -Menu.UserDocumentsTip = Contém cartas, relatórios e outros documentos e arquivos. -Menu.UserPicturesTip = Contém fotos digitais, imagens e arquivos gráficos. -Menu.UserMusicTip = Contém música e outros arquivos de áudio. -Menu.UserVideosTip = Contém filmes e outros arquivos de vídeo. -Menu.NetworkTip = Exibe as conexões de rede existentes neste computador e ajuda a criar novas conexões -Menu.PrintersTip = Adicione, remova e configure impressoras e locais e de rede. -Menu.TaskbarTip = Personaliza o menu Iniciar e a barra de ferramentas: tipos de itens a exibir e a maneira como aparecem. -Menu.ControlPanelTip = Altere as configurações e personalize a funcionalidade do seu computador. -Menu.DocumentsLibTip = Acesse cartas, relatórios, anotações e outros tipos de documentos. -Menu.MusicLibTip = Toque música e outros arquivos de áudio. -Menu.PicturesLibTip = Veja e organize imagens digitais. -Menu.VideosLibTip = Assistir a filmes caseiros e outros vídeos digitais. -Menu.RecordingsLibTip = Assistir programas de TV gravados no seu computador. -Menu.DownloadTip = Localizar downloads da Internet e links para sites favoritos. -Menu.HomegroupTip = Acesse bibliotecas e pastas compartilhadas por outras pessoas em seu grupo doméstico. -Menu.RunTip = Abre um programa, uma pasta, um documento ou um site. -Menu.HelpTip = Localizar tópicos da Ajuda, tutoriais, soluções de problemas e outros serviços de suporte. -Menu.ProgramsTip = Abre uma lista dos programas. -Menu.SearchFilesTip = Pesquisar documentos, músicas, imagens, emails e muito mais. -Menu.GamesTip = Jogar e gerenciar jogos no computador. -Menu.SecurityTip = Iniciar Opções de Segurança do Windows para Alterar Senha, Alternar Usuário ou Iniciar o Gerenciador de Tarefas. -Menu.SearchComputersTip = Procurar computadores na rede -Menu.SearchPrintersTip = Procurar uma impressora -Menu.AdminToolsTip = Definir configurações administrativas para o computador. -Menu.ShutdownTip = Fecha todos os programas, desliga o Windows e desliga o computador. -Menu.RestartTip = Fecha todos os programas, desliga o Windows e o reinicia. -Menu.SleepTip = Mantém a sua sessão na memória e coloca o computador em um estado de baixa energia para que você possa reiniciar rapidamente o trabalho. -Menu.HibernateTip = Salva sua sessão e desliga o computador. Quando você liga o computador novamente, o Windows restaura a sessão. -Menu.LogOffTip = Fechar todos os programas e fazer logoff. -Menu.DisconnectTip = Desconecta a sessão. Você pode reconectá-la quando fizer logon novamente. -Menu.LockTip = Bloquear este computador. -Menu.UndockTip = Remove o laptop ou notebook de uma base de encaixe. -Menu.SwitchUserTip = Alternar os usuários sem fechar os programas. -Menu.Empty = (Vazio) -Menu.Features = Programas e Recursos -Menu.FeaturesTip = Desinstalar ou alterar programas do computador. -Menu.SearchPeople = Para &Pessoas... -Menu.SortByName = C&lassificar por nome -Menu.Open = &Abrir -Menu.OpenAll = A&brir a pasta All Users -Menu.Explore = E&xplorar -Menu.ExploreAll = Expl&orar a pasta All Users -Menu.MenuSettings = Configurações -Menu.MenuHelp = Ajuda -Menu.MenuExit = Sair -Menu.LogoffTitle = Fazer Logoff do Windows -Menu.LogoffPrompt = Tem certeza de que deseja fazer logoff? -Menu.LogoffYes = Faz&er Logoff -Menu.LogoffNo = &Não -Menu.RenameTitle = Renomear -Menu.RenamePrompt = &Novo nome: -Menu.RenameOK = OK -Menu.RenameCancel = Cancelar -Menu.Organize = Organizar o menu Iniciar -Menu.Expand = E&xpandir -Menu.Collapse = &Recolher -Menu.NewFolder = Nova Pasta -Menu.NewShortcut = Novo Atalho -Menu.AutoArrange = Organi&zar Automaticamente -Menu.ActionOpen = Abrir -Menu.ActionClose = Fechar -Menu.ActionExecute = Executar -Menu.RemoveList = Remover desta &lista -Menu.RemoveAll = &Limpar lista de itens recentes -Menu.Explorer = Windows Explorer -Menu.Start = Iniciar -Menu.StartScreen = Tela Inicial -Menu.StartMenu = Menu Iniciar (Windows) -Menu.PinStart = Fixar no Menu Iniciar -Menu.PinStartCs = Fixar no Menu Iniciar (Open-Shell) -Menu.UnpinStartCs = Desafixar do Menu Iniciar (Open-Shell) -Menu.MonitorOff = Desativar o vídeo -Menu.RemoveHighlight = Remover Destaque -Menu.Uninstall = &Desinstalar -Menu.UninstallTitle = Desinstalar -Menu.UninstallPrompt = Tem certeza de que deseja desinstalar %s? -Search.CategorySettings = Configurações -Search.CategoryPCSettings = Configurações do computador -Search.CategoryPrograms = Programas -Search.CategoryDocuments = Documentos -Search.CategoryMusic = Músicas -Search.CategoryPictures = Imagens -Search.CategoryVideos = Vídeos -Search.CategoryFiles = Arquivos -Search.CategoryInternet = Internet -JumpList.Recent = Recentes -JumpList.Frequent = Frequente -JumpList.Tasks = Tarefas -JumpList.Pinned = Fixo -JumpList.Pin = In&cluir nesta lista -JumpList.Unpin = &Tirar desta lista -JumpList.Remove = Remover desta &lista -JumpList.PinTip = Incluir nesta lista -JumpList.UnpinTip = Tirar desta lista - - -[pt-PT] - Portuguese (Portugal) -Menu.Programs = &Programas -Menu.Apps = Aplicações -Menu.AllPrograms = Todos os Programas -Menu.Back = Anterior -Menu.Favorites = &Favoritos -Menu.Documents = &Documentos -Menu.Settings = Defi&nições -Menu.Search = Pro&curar -Menu.SearchBox = Procurar -Menu.SearchPrograms = Procurar programas e ficheiros -Menu.SearchInternet = Procurar na Internet -Menu.Searching = A procurar... -Menu.NoMatch = Nenhum item corresponde à pesquisa. -Menu.MoreResults = Ver mais resultados -Menu.Help = &Ajuda e suporte -Menu.Run = E&xecutar... -Menu.Logoff = &Terminar sessão de %s -Menu.SwitchUser = M&udar de utilizador -Menu.Lock = &Bloquear -Menu.LogOffShort = &Terminar sessão -Menu.Undock = D&esancorar -Menu.Disconnect = Des&ligar -Menu.ShutdownBox = Ence&rrar... -Menu.Shutdown = &Encerrar -Menu.Restart = &Reiniciar -Menu.ShutdownUpdate = Atualizar e encerrar -Menu.RestartUpdate = Atualizar e reiniciar -Menu.Sleep = &Suspender -Menu.Hibernate = &Hibernar -Menu.ControlPanel = &Painel de controlo -Menu.PCSettings = Definições do PC -Menu.Security = Segurança do Windows -Menu.Network = &Ligações de rede -Menu.Printers = &Impressoras -Menu.Taskbar = &Barra de tarefas e menu Iniciar -Menu.SearchFiles = &Ficheiros ou Pastas... -Menu.SearchPrinter = &Impressora -Menu.SearchComputers = &Computadores -Menu.UserFilesTip = Contém pastas de Documentos, Imagens, Música e outros ficheiros que lhe pertençam. -Menu.UserDocumentsTip = Contém cartas, relatórios e outros documentos e ficheiros. -Menu.UserPicturesTip = Contém fotografias digitais, imagens e ficheiros gráficos. -Menu.UserMusicTip = Contém música e outros ficheiros de áudio. -Menu.UserVideosTip = Contém filmes e outros ficheiros de vídeo. -Menu.NetworkTip = Mostra as ligações de rede existentes neste computador e ajuda a criar novas ligações -Menu.PrintersTip = Adiciona, remove e configura impressoras locais e de rede. -Menu.TaskbarTip = Personalize o menu Iniciar e a barra de tarefas, por exemplo, o tipo de itens a apresentar e o modo como devem ser apresentados. -Menu.ControlPanelTip = Alterar as definições e personalizar a funcionalidade do computador. -Menu.DocumentsLibTip = Aceder a cartas, relatórios, notas e outros tipos de documentos. -Menu.MusicLibTip = Reproduzir música e outros ficheiros de áudio. -Menu.PicturesLibTip = Ver e organizar imagens digitais. -Menu.VideosLibTip = Assistir a filmes domésticos e a outros vídeos digitais. -Menu.RecordingsLibTip = Assistir a programas de TV gravados no computador. -Menu.DownloadTip = Localizar transferências e hiperligações para Web sites favoritos. -Menu.HomegroupTip = Aceda a bibliotecas e pastas partilhadas por outras pessoas no grupo doméstico. -Menu.RunTip = Abre um programa, pasta, documento ou Web site. -Menu.HelpTip = Localizar tópicos de Ajuda, iniciações, resolução de problemas e outros serviços de suporte. -Menu.ProgramsTip = Abre uma lista dos seus programas. -Menu.SearchFilesTip = Procurar documentos, música, imagens, correio electrónico e muito mais. -Menu.GamesTip = Jogar e gerir os jogos existentes no computador. -Menu.SecurityTip = Iniciar Opções de Segurança do Windows para Alterar Palavra-passe, Mudar de Utilizador ou Iniciar o Gestor de Tarefas. -Menu.SearchComputersTip = Procurar computadores na rede -Menu.SearchPrintersTip = Procurar impressora -Menu.AdminToolsTip = Configura definições administrativas para o computador. -Menu.ShutdownTip = Fecha todos os programas abertos, encerra o Windows e, em seguida, desliga o computador. -Menu.RestartTip = Fecha todos os programas abertos, encerra o Windows e, em seguida, inicia novamente o Windows. -Menu.SleepTip = Mantém a sessão em memória e coloca o computador num estado de baixo consumo para poder retomar o trabalho rapidamente. -Menu.HibernateTip = Guarda a sessão e desliga o computador. Quando ligar o computador, o Windows vai restaurar a sessão. -Menu.LogOffTip = Fecha programas e termina sessão. -Menu.DisconnectTip = Desliga a sua sessão. Pode religar a esta sessão quando iniciar sessão novamente. -Menu.LockTip = Bloqueia este computador. -Menu.UndockTip = Remove o computador portátil de uma estação de ancoragem. -Menu.SwitchUserTip = Muda de utilizadores sem fechar os programas. -Menu.Empty = (Vazio) -Menu.Features = Programas e Funcionalidades -Menu.FeaturesTip = Desinstale ou altere programas no computador. -Menu.SearchPeople = &Pessoas... -Menu.SortByName = Ordenar pelo &nome -Menu.Open = &Abrir -Menu.OpenAll = A&brir All Users -Menu.Explore = E&xplorar -Menu.ExploreAll = Explorar All &Users -Menu.MenuSettings = Definições -Menu.MenuHelp = Ajuda -Menu.MenuExit = Sair -Menu.LogoffTitle = Terminar sessão no Windows -Menu.LogoffPrompt = Tem a certeza de que pretende terminar a sessão? -Menu.LogoffYes = &Terminar sessão -Menu.LogoffNo = &Não -Menu.RenameTitle = Mudar o nome -Menu.RenamePrompt = &Novo nome: -Menu.RenameOK = OK -Menu.RenameCancel = Cancelar -Menu.Organize = Organizar o menu Iniciar -Menu.Expand = E&xpandir -Menu.Collapse = &Fechar -Menu.NewFolder = Nova pasta -Menu.NewShortcut = Novo atalho -Menu.AutoArrange = Dispor au&tomaticamente -Menu.ActionOpen = Abrir -Menu.ActionClose = Fechar -Menu.ActionExecute = Executar -Menu.RemoveList = Remover &desta lista -Menu.RemoveAll = &Limpar lista de itens recentes -Menu.Explorer = Explorador do Windows -Menu.Start = Iniciar -Menu.StartScreen = Ecrã Iniciar -Menu.StartMenu = Menu Iniciar (Windows) -Menu.PinStart = Afixar no menu Iniciar -Menu.PinStartCs = Afixar no menu Iniciar (Open-Shell) -Menu.UnpinStartCs = Remover do menu Iniciar (Open-Shell) -Menu.MonitorOff = Desligar a visualização -Menu.RemoveHighlight = Remover destaque -Menu.Uninstall = D&esinstalar -Menu.UninstallTitle = Desinstalar -Menu.UninstallPrompt = Tem a certeza de que pretende desinstalar %s? -Search.CategorySettings = Definições -Search.CategoryPCSettings = Definições do PC -Search.CategoryPrograms = Programas -Search.CategoryDocuments = Documentos -Search.CategoryMusic = Música -Search.CategoryPictures = Imagens -Search.CategoryVideos = Vídeos -Search.CategoryFiles = Ficheiros -Search.CategoryInternet = Internet -JumpList.Recent = Recente -JumpList.Frequent = Frequente -JumpList.Tasks = Tarefas -JumpList.Pinned = Fixado -JumpList.Pin = Afi&xar nesta lista -JumpList.Unpin = &Remover desta lista -JumpList.Remove = Remover &desta lista -JumpList.PinTip = Afixar nesta lista -JumpList.UnpinTip = Remover desta lista - - -[ro-RO] - Romanian (Romania) -Menu.Programs = &Programe -Menu.Apps = Aplicații -Menu.AllPrograms = Toate programele -Menu.Back = Înapoi -Menu.Favorites = Pre&ferințe -Menu.Documents = D&ocumente -Menu.Settings = &Setări -Menu.Search = &Căutare -Menu.SearchBox = Căutare -Menu.SearchPrograms = Căutare programe și fișiere -Menu.SearchInternet = Căutare pe Internet -Menu.Searching = Se caută... -Menu.NoMatch = Niciun element nu corespunde căutării. -Menu.MoreResults = Mai multe rezultate -Menu.Help = &Ajutor și asistență -Menu.Run = E&xecutare... -Menu.Logoff = &Log off %s -Menu.SwitchUser = &Comutare utilizatori -Menu.Lock = &Blocare -Menu.LogOffShort = &Log off -Menu.Undock = De&tașare computer -Menu.Disconnect = D&econectare -Menu.ShutdownBox = Î&nchidere... -Menu.Shutdown = Î&nchidere -Menu.Restart = &Repornire -Menu.ShutdownUpdate = Actualizare și închidere -Menu.RestartUpdate = Actualizare și repornire -Menu.Sleep = &Repaus -Menu.Hibernate = &Hibernare -Menu.ControlPanel = Pano&u de control -Menu.PCSettings = Setări PC -Menu.Security = Securitate Windows -Menu.Network = &Conexiuni în rețea -Menu.Printers = &Imprimante -Menu.Taskbar = Ba&ra de activități și meniu Start -Menu.SearchFiles = &Fișiere sau foldere... -Menu.SearchPrinter = I&mprimantă -Menu.SearchComputers = &Computere -Menu.UserFilesTip = Conține foldere pentru Documente, Imagini, Muzică și alte fișiere care vă aparțin. -Menu.UserDocumentsTip = Conține scrisori, rapoarte și alte documente și fișiere. -Menu.UserPicturesTip = Conține fotografii digitale, imagini și fișiere grafice. -Menu.UserMusicTip = Conține muzică și alte fișiere audio. -Menu.UserVideosTip = Conține filme și alte fișiere video. -Menu.NetworkTip = Afișează conexiunile existente în rețea și ajută la crearea unora noi -Menu.PrintersTip = Adăugare, eliminare și configurare imprimante locale și în rețea. -Menu.TaskbarTip = Se particularizează meniul Start și bara de stare, cum ar fi tipurile de elemente și modul lor de afișare. -Menu.ControlPanelTip = Modificați setările și particularizați funcționalitățile computerului. -Menu.DocumentsLibTip = Accesați scrisori, rapoarte, note și alte tipuri de documente. -Menu.MusicLibTip = Redați muzică și alte fișiere audio. -Menu.PicturesLibTip = Vizualizați și organizați imaginile digitale. -Menu.VideosLibTip = Vizionați filme făcute în casă și alte materiale video digitale. -Menu.RecordingsLibTip = Vizionați programe TV înregistrate pe computer. -Menu.DownloadTip = Găsiți descărcări Internet și linkuri la site-urile Web preferate. -Menu.HomegroupTip = Accesați bibliotecile și folderele partajate de alte persoane din grupul de domiciliu. -Menu.RunTip = Se deschide un program, un folder, un document sau un site Web. -Menu.HelpTip = Găsiți subiecte de ajutor, asistenți de instruire, depanare și alte servicii de asistență. -Menu.ProgramsTip = Se deschide o listă de programe. -Menu.SearchFilesTip = Se caută documente, muzică, imagini, mesaje de poștă electronică și altele. -Menu.GamesTip = Jucați și gestionați jocuri pe computer. -Menu.SecurityTip = Lansați Opțiuni de securitate Windows pentru a modifica parola, pentru a comuta la alt utilizator sau pentru a porni Manager activități. -Menu.SearchComputersTip = Căutare computere în rețea -Menu.SearchPrintersTip = Căutare imprimantă -Menu.AdminToolsTip = Configurare setări de administrare pe acest computer. -Menu.ShutdownTip = Închide toate programele deschise, închide Windows, apoi oprește computerul. -Menu.RestartTip = Închide toate programele deschise, închide Windows, apoi pornește din nou Windows. -Menu.SleepTip = Păstrează sesiunea în memorie și pune computerul într-o stare cu alimentare redusă, astfel încât aveți posibilitatea să reluați rapid lucrul. -Menu.HibernateTip = Salvează sesiunea și închide computerul. Când deschideți computerul, Windows restaurează sesiunea. -Menu.LogOffTip = Închide programele și face logoff. -Menu.DisconnectTip = Sesiunea se deconectează. Aveți posibilitatea să vă reconectați la această sesiune atunci când faceți din nou Log on. -Menu.LockTip = Blochează acest computer. -Menu.UndockTip = Deconectează laptopul sau computerul portabil dintr-o stație de andocare. -Menu.SwitchUserTip = Comută între utilizatori fără a închide programele. -Menu.Empty = (Gol) -Menu.Features = Programe și caracteristici -Menu.FeaturesTip = Dezinstalează sau modifică programe de pe computer. -Menu.SearchPeople = &Persoane... -Menu.SortByName = &Sortare după nume -Menu.Open = &Deschidere -Menu.OpenAll = Desc&hidere Toți utilizatorii -Menu.Explore = &Explorare -Menu.ExploreAll = E&xplorare Toți utilizatorii -Menu.MenuSettings = Setări -Menu.MenuHelp = Ajutor -Menu.MenuExit = Ieșire -Menu.LogoffTitle = Log off din Windows -Menu.LogoffPrompt = Sigur faceți logoff? -Menu.LogoffYes = &Log off -Menu.LogoffNo = &Nu -Menu.RenameTitle = Redenumire -Menu.RenamePrompt = &Nume nou: -Menu.RenameOK = OK -Menu.RenameCancel = Revocare -Menu.Organize = Organizare meniu Start -Menu.Expand = E&xtindere -Menu.Collapse = &Restrângere -Menu.NewFolder = Folder nou -Menu.NewShortcut = Comandă rapidă nouă -Menu.AutoArrange = Aran&jare automată -Menu.ActionOpen = Deschidere -Menu.ActionClose = Închidere -Menu.ActionExecute = Executare -Menu.RemoveList = Eliminare &din această listă -Menu.RemoveAll = &Golire Listă elemente recente -Menu.Explorer = Windows Explorer -Menu.Start = Start -Menu.StartScreen = Ecranul de Start -Menu.StartMenu = Meniu Start (Windows) -Menu.PinStart = Fixare la meniul Start -Menu.PinStartCs = Fixare la meniul Start (Open-Shell) -Menu.UnpinStartCs = Anulare fixare la meniul Start (Open-Shell) -Menu.MonitorOff = Dezactivare ecranului -Menu.RemoveHighlight = Eliminare evidențiere -Menu.Uninstall = &Dezinstalare -Menu.UninstallTitle = Dezinstalare -Menu.UninstallPrompt = Sigur dezinstalați %s? -Search.CategorySettings = Setări -Search.CategoryPCSettings = Setări PC -Search.CategoryPrograms = Programe -Search.CategoryDocuments = Documente -Search.CategoryMusic = Muzică -Search.CategoryPictures = Imagini -Search.CategoryVideos = Video -Search.CategoryFiles = Fișiere -Search.CategoryInternet = Internet -JumpList.Recent = Recent -JumpList.Frequent = Frecvent -JumpList.Tasks = Activități -JumpList.Pinned = Fixat -JumpList.Pin = F&ixare la această listă -JumpList.Unpin = An&ulare fixare la această listă -JumpList.Remove = Eliminare &din această listă -JumpList.PinTip = Fixare la această listă -JumpList.UnpinTip = Anulare fixare la această listă - - -[ru-RU] - Russian (Russia) -Menu.Programs = &Программы -Menu.Apps = Приложения -Menu.AllPrograms = Все программы -Menu.Back = Назад -Menu.Favorites = &Избранное -Menu.Documents = &Документы -Menu.Settings = Н&астройка -Menu.Search = &Найти -Menu.SearchBox = Найти -Menu.SearchPrograms = Найти программы и файлы -Menu.SearchInternet = Поиск в Интернете -Menu.Searching = Идет поиск... -Menu.NoMatch = Нет элементов, удовлетворяющих условиям поиска. -Menu.MoreResults = Ознакомиться с другими результатами -Menu.Help = &Справка и поддержка -Menu.Run = &Выполнить... -Menu.Logoff = Завер&шение сеанса %s -Menu.SwitchUser = См&енить пользователя -Menu.Lock = &Блокировать -Menu.LogOffShort = Завер&шение сеанса -Menu.Undock = Отстыковать &компьютер -Menu.Disconnect = Отклю&чить -Menu.ShutdownBox = &Завершение работы... -Menu.Shutdown = &Завершение работы -Menu.Restart = &Перезагрузка -Menu.ShutdownUpdate = Обновить и завершить работу -Menu.RestartUpdate = Обновить и перезагрузить -Menu.Sleep = &Сон -Menu.Hibernate = &Гибернация -Menu.ControlPanel = П&анель управления -Menu.PCSettings = Параметры ПК -Menu.Security = Безопасность Windows -Menu.Network = С&етевые подключения -Menu.Printers = &Принтеры -Menu.Taskbar = Панель &задач и меню "Пуск" -Menu.SearchFiles = &Файлы и папки... -Menu.SearchPrinter = &Принтер -Menu.SearchComputers = &Компьютеры -Menu.UserFilesTip = Содержит папки для документов, фотографий и изображений, музыки и других принадлежащих вам файлов. -Menu.UserDocumentsTip = Содержит письма, отчеты и другие документы и файлы. -Menu.UserPicturesTip = Содержит цифровые фотографии, рисунки, графические файлы. -Menu.UserMusicTip = Содержит музыкальные и звуковые файлы. -Menu.UserVideosTip = Содержит фильмы и видеофайлы. -Menu.NetworkTip = Отображение сетевых подключений для этого компьютера и создание новых подключений -Menu.PrintersTip = Добавление, удаление и настройка локальных и сетевых принтеров -Menu.TaskbarTip = Настройка меню ''Пуск'' и панели задач, например, изменение списка отображаемых элементов и внешнего вида. -Menu.ControlPanelTip = Изменение параметров и настройка функциональных возможностей компьютера. -Menu.DocumentsLibTip = Доступ к письмам, отчетам, заметкам и другим видам документов. -Menu.MusicLibTip = Проигрывание музыки и других аудиофайлов. -Menu.PicturesLibTip = Просмотр и упорядочение цифровых изображений. -Menu.VideosLibTip = Просмотр фильмов и другого цифрового видео. -Menu.RecordingsLibTip = Просмотр записанных на компьютере телевизионных передач. -Menu.DownloadTip = Поиск ссылок на избранные веб-узлы и загрузка файлов из Интернета. -Menu.HomegroupTip = Доступ к библиотекам и папкам, общий доступ к которым предоставлен другими участниками домашней группы. -Menu.RunTip = Открытие программы, папки, документа или веб-сайта. -Menu.HelpTip = Поиск разделов справки, учебников, средств устранения неисправностей и других служб поддержки. -Menu.ProgramsTip = Отображение списка программ, установленных на этом компьютере. -Menu.SearchFilesTip = Поиск документов, музыки, изображений, писем и многое другое. -Menu.GamesTip = Играть в игры и управлять ими на этом компьютере. -Menu.SecurityTip = Открыть параметры безопасности Windows для смены пароля или пользователя, а также запуска диспетчера задач. -Menu.SearchComputersTip = Поиск компьютеров в сети -Menu.SearchPrintersTip = Поиск принтера -Menu.AdminToolsTip = Настройка параметров управления этого компьютера -Menu.ShutdownTip = Закрытие всех открытых программ, завершение работы Windows и выключение компьютера. -Menu.RestartTip = Закрытие всех открытых программ, завершение работы Windows и повторный запуск Windows. -Menu.SleepTip = Перевод компьютера в состояние пониженного энергопотребления и сохранение текущего сеанса в памяти, что позволяет быстро возобновить работу. -Menu.HibernateTip = Сохранение сеанса на диске и выключение компьютера. При включении компьютера Windows восстанавливает текущий сеанс. -Menu.LogOffTip = Закрытие программ и выход из системы. -Menu.DisconnectTip = Отключение текущего сеанса. Можно вновь подключиться к этому сеансу при выполнении входа. -Menu.LockTip = Блокировка этого компьютера. -Menu.UndockTip = Извлечение ноутбука из стыковочного узла. -Menu.SwitchUserTip = Смена пользователей без закрытия программ. -Menu.Empty = (пусто) -Menu.Features = Программы и компоненты -Menu.FeaturesTip = Удаление или изменение программ на этом компьютере. -Menu.SearchPeople = &Людей... -Menu.SortByName = &Сортировать по имени -Menu.Open = &Открыть -Menu.OpenAll = Открыть о&бщее для всех меню -Menu.Explore = &Проводник -Menu.ExploreAll = Проводни&к в общее для всех меню -Menu.MenuSettings = Настройка -Menu.MenuHelp = Справка -Menu.MenuExit = Выход -Menu.LogoffTitle = Выход из Windows -Menu.LogoffPrompt = Вы действительно хотите выйти из системы? -Menu.LogoffYes = В&ыход -Menu.LogoffNo = Н&ет -Menu.RenameTitle = Переименование -Menu.RenamePrompt = &Новое имя: -Menu.RenameOK = ОК -Menu.RenameCancel = Отмена -Menu.Organize = Упорядочение меню "Пуск" -Menu.Expand = &Развернуть -Menu.Collapse = &Свернуть -Menu.NewFolder = Новая папка -Menu.NewShortcut = Новый ярлык -Menu.AutoArrange = Выравнивать &автоматически -Menu.ActionOpen = Открыть -Menu.ActionClose = Закрыть -Menu.ActionExecute = Выполнить -Menu.RemoveList = Удалить &из этого списка -Menu.RemoveAll = &Очистить список последних элементов -Menu.Explorer = Проводник -Menu.Start = Пуск -Menu.StartScreen = Начальный экран -Menu.StartMenu = Меню "Пуск" (Windows) -Menu.PinStart = Закрепить в меню "Пуск" -Menu.PinStartCs = Закрепить в меню "Пуск" (Open-Shell) -Menu.UnpinStartCs = Изъять из меню "Пуск" (Open-Shell) -Menu.MonitorOff = Выключение экрана -Menu.RemoveHighlight = Выключить пометку -Menu.Uninstall = &Удалить -Menu.UninstallTitle = Удалить -Menu.UninstallPrompt = Вы действительно хотите удалить "%s"? -Search.CategorySettings = Параметры -Search.CategoryPCSettings = Параметры ПК -Search.CategoryPrograms = Программы -Search.CategoryDocuments = Документы -Search.CategoryMusic = Музыка -Search.CategoryPictures = Изображения -Search.CategoryVideos = Видео -Search.CategoryFiles = Файлы -Search.CategoryInternet = Интернет -JumpList.Recent = Последние -JumpList.Frequent = Часто используемые -JumpList.Tasks = Задачи -JumpList.Pinned = Закреплено -JumpList.Pin = &Закрепить в списке -JumpList.Unpin = &Изъять из списка -JumpList.Remove = Удалить &из этого списка -JumpList.PinTip = Закрепить в списке -JumpList.UnpinTip = Изъять из списка - - -[sk-SK] - Slovak (Slovakia) -Menu.Programs = Progra&my -Menu.Apps = Aplikácie -Menu.AllPrograms = Všetky programy -Menu.Back = Naspäť -Menu.Favorites = O&bľúbené položky -Menu.Documents = Do&kumenty -Menu.Settings = Nastav&enie -Menu.Search = &Hľadať -Menu.SearchBox = Hľadať -Menu.SearchPrograms = Prehľadať programy a súbory -Menu.SearchInternet = Hľadať na Internete -Menu.Searching = Hľadá sa... -Menu.NoMatch = Kritériám vyhľadávania nevyhovujú žiadne položky. -Menu.MoreResults = Zobraziť ďalšie výsledky -Menu.Help = &Pomoc a technická podpora -Menu.Run = Sp&ustiť... -Menu.Logoff = O&dhlásiť používateľa %s -Menu.SwitchUser = &Prepnúť používateľa -Menu.Lock = &Zamknúť -Menu.LogOffShort = Odh&lásiť -Menu.Undock = Vybr&ať počítač z doku -Menu.Disconnect = &Odpojiť -Menu.ShutdownBox = &Vypnúť... -Menu.Shutdown = &Vypnúť -Menu.Restart = &Reštartovať -Menu.ShutdownUpdate = Aktualizovať a vypnúť -Menu.RestartUpdate = Aktualizovať a reštartovať -Menu.Sleep = &Uspať -Menu.Hibernate = &Prepnúť do režimu dlhodobého spánku -Menu.ControlPanel = &Ovládací panel -Menu.PCSettings = Nastavenie PC -Menu.Security = Zabezpečenie systému Windows -Menu.Network = Sieťové pripoje&nia -Menu.Printers = &Tlačiarne -Menu.Taskbar = P&anel úloh a ponuka Štart -Menu.SearchFiles = &Súbory alebo priečinky... -Menu.SearchPrinter = &Tlačiarne -Menu.SearchComputers = &Počítače -Menu.UserFilesTip = Obsahuje priečinky pre dokumenty, obrázky, hudbu a ďalšie vaše súbory. -Menu.UserDocumentsTip = Obsahuje priečinok s listami, zostavami a inými dokumentmi a súbormi. -Menu.UserPicturesTip = Obsahuje digitálne fotografie, obrázky a grafické súbory. -Menu.UserMusicTip = Obsahuje hudbu a iné zvukové súbory. -Menu.UserVideosTip = Obsahuje filmy a iné videosúbory. -Menu.NetworkTip = Zobrazí existujúce sieťové pripojenia na tomto počítači a pomôže vytvoriť nové pripojenia. -Menu.PrintersTip = Pridá, odstráni a nakonfiguruje lokálne alebo sieťové tlačiarne. -Menu.TaskbarTip = Prispôsobí ponuku Štart a panel úloh, ako napríklad typy zobrazených položiek a spôsob ich zobrazenia. -Menu.ControlPanelTip = Umožňuje zmeniť nastavenia a prispôsobiť funkcie počítača. -Menu.DocumentsLibTip = Umožňuje získať prístup k listom, zostavám, poznámkam a ďalším typom dokumentov. -Menu.MusicLibTip = Umožňuje prehrávať hudbu a ďalšie zvukové súbory. -Menu.PicturesLibTip = Umožňuje zobraziť a usporiadať digitálne obrázky. -Menu.VideosLibTip = Umožňuje sledovať domáce filmy a ďalšie digitálne videá. -Menu.RecordingsLibTip = Umožňuje sledovať nahrané televízne programy v počítači. -Menu.DownloadTip = Umožňuje vyhľadať položky na prevzatie na Internete a prepojenia na obľúbené webové lokality. -Menu.HomegroupTip = Získajte prístup ku knižniciam a priečinkom, ktoré zdieľanú ostatné osoby v domácej skupine. -Menu.RunTip = Spustí program alebo otvorí priečinok, dokument alebo webovú lokalitu. -Menu.HelpTip = Umožňuje vyhľadať témy Pomocníka, kurzy, informácie pre riešenie problémov a ďalšie služby technickej podpory. -Menu.ProgramsTip = Zobrazí zoznam programov. -Menu.SearchFilesTip = Umožňuje vyhľadať dokumenty, hudbu, obrázky, e-maily a ďalšie položky. -Menu.GamesTip = Umožňuje hrať a spravovať hry v počítači. -Menu.SecurityTip = Ak chcete zmeniť heslo, prepnúť používateľa alebo spustiť Správcu úloh, otvorte okno Možnosti zabezpečenia systému Windows. -Menu.SearchComputersTip = Hľadať počítače v sieti -Menu.SearchPrintersTip = Hľadať tlačiareň -Menu.AdminToolsTip = Umožní konfigurovať nastavenia na správu počítača. -Menu.ShutdownTip = Zatvorí všetky otvorené programy, vypne systém Windows a vypne počítač. -Menu.RestartTip = Zatvorí všetky otvorené programy, vypne systém Windows a znovu ho spustí. -Menu.SleepTip = Uloží reláciu do pamäte a prepne počítač do režimu nízkej spotreby energie, z ktorého možno počítač kedykoľvek rýchlo zapnúť do pôvodného stavu. -Menu.HibernateTip = Uloží reláciu a vypne počítač. Keď ho zapnete, systém Windows obnoví reláciu. -Menu.LogOffTip = Zavrie programy a odhlási používateľa. -Menu.DisconnectTip = Odpojí reláciu. K relácii sa môžete opäť pripojiť pri ďalšom prihlásení. -Menu.LockTip = Zamkne tento počítač. -Menu.UndockTip = Odstráni prenosný počítač z doku. -Menu.SwitchUserTip = Prepne používateľov bez zatvorenia programov. -Menu.Empty = (Prázdne) -Menu.Features = Programy a súčasti -Menu.FeaturesTip = Odinštaluje alebo zmení programy v počítači. -Menu.SearchPeople = Ľu&dia... -Menu.SortByName = &Usporiadať podľa názvov -Menu.Open = &Otvoriť -Menu.OpenAll = Ot&voriť profil All Users -Menu.Explore = &Preskúmať -Menu.ExploreAll = P&reskúmať profil All Users -Menu.MenuSettings = Nastavenie -Menu.MenuHelp = Pomocník -Menu.MenuExit = Skončiť -Menu.LogoffTitle = Odhlásenie zo systému Windows -Menu.LogoffPrompt = Naozaj sa chcete odhlásiť? -Menu.LogoffYes = &Odhlásiť -Menu.LogoffNo = &Nie -Menu.RenameTitle = Premenovanie -Menu.RenamePrompt = &Nový názov: -Menu.RenameOK = OK -Menu.RenameCancel = Zrušiť -Menu.Organize = Usporiadanie ponuky Štart -Menu.Expand = &Rozbaliť -Menu.Collapse = Zb&aliť -Menu.NewFolder = Nový priečinok -Menu.NewShortcut = Nový odkaz -Menu.AutoArrange = Usporiadať &automaticky -Menu.ActionOpen = Otvoriť -Menu.ActionClose = Zavrieť -Menu.ActionExecute = Vykonať -Menu.RemoveList = Odstrániť &z tohto zoznamu -Menu.RemoveAll = &Vymazať zoznam naposledy použitých položiek -Menu.Explorer = Windows Prieskumník -Menu.Start = Štart -Menu.StartScreen = Domovská obrazovka -Menu.StartMenu = Ponuka Štart (Windows) -Menu.PinStart = Pripnúť položku do ponuky Štart -Menu.PinStartCs = Pripnúť položku do ponuky Štart (Open-Shell) -Menu.UnpinStartCs = Zrušiť pripnutie položky v ponuke Štart (Open-Shell) -Menu.MonitorOff = Vypnúť displej -Menu.RemoveHighlight = Odstrániť zvýraznenie -Menu.Uninstall = &Odinštalovať -Menu.UninstallTitle = Odinštalovať -Menu.UninstallPrompt = Naozaj chcete odinštalovať program %s? -Search.CategorySettings = Nastavenia -Search.CategoryPCSettings = Nastavenie PC -Search.CategoryPrograms = Programy -Search.CategoryDocuments = Dokumenty -Search.CategoryMusic = Hudba -Search.CategoryPictures = Obrázky -Search.CategoryVideos = Videá -Search.CategoryFiles = Súbory -Search.CategoryInternet = Internet -JumpList.Recent = Naposledy použité -JumpList.Frequent = Najčastejšie používané -JumpList.Tasks = Úlohy -JumpList.Pinned = Pripnuté -JumpList.Pin = Pr&ipnúť do tohto zoznamu -JumpList.Unpin = Zr&ušiť pripnutie v tomto zozname -JumpList.Remove = Odstrániť &z tohto zoznamu -JumpList.PinTip = Pripnúť do tohto zoznamu -JumpList.UnpinTip = Zrušiť pripnutie v tomto zozname - - -[sl-SI] - Slovenian (Slovenia) -Menu.Programs = Progr&ami -Menu.Apps = Programi -Menu.AllPrograms = Vsi programi -Menu.Back = Nazaj -Menu.Favorites = P&riljubljene -Menu.Documents = &Dokumenti -Menu.Settings = Nas&tavitve -Menu.Search = Is&kanje -Menu.SearchBox = Iskanje -Menu.SearchPrograms = Iskanje programov in datotek -Menu.SearchInternet = Preišči internet -Menu.Searching = Iskanje ... -Menu.NoMatch = Vašemu iskanju ne ustreza noben element. -Menu.MoreResults = Pokaži več rezultatov -Menu.Help = &Pomoč in podpora -Menu.Run = &Zaženi ... -Menu.Logoff = &Odjavi %s -Menu.SwitchUser = P&reklopi med uporabniki -Menu.Lock = Z&akleni -Menu.LogOffShort = &Odjava -Menu.Undock = Razdr&uži računalnik -Menu.Disconnect = Pr&ekini povezavo -Menu.ShutdownBox = Zaustavitev &sistema ... -Menu.Shutdown = &Zaustavitev sistema -Menu.Restart = &Vnovični zagon -Menu.ShutdownUpdate = Posodobi in zaustavi -Menu.RestartUpdate = Posodobi in zaženi znova -Menu.Sleep = &Mirovanje -Menu.Hibernate = &Hibernacija -Menu.ControlPanel = &Nadzorna plošča -Menu.PCSettings = Nastavitve računalnika -Menu.Security = Varnost sistema Windows -Menu.Network = &Omrežne povezave -Menu.Printers = &Tiskalniki -Menu.Taskbar = Op&ravilna vrstica in meni »Start« -Menu.SearchFiles = &Datotek ali map ... -Menu.SearchPrinter = &Tiskalnika -Menu.SearchComputers = &Računalnikov -Menu.UserFilesTip = Vsebuje mape za dokumente, slike, glasbo in druge datoteke v vaši lasti. -Menu.UserDocumentsTip = Vsebuje pisma, poročila in druge dokumente ter datoteke. -Menu.UserPicturesTip = Vsebuje digitalne fotografije, slike in grafične datoteke. -Menu.UserMusicTip = Vsebuje glasbo in druge zvočne datoteke. -Menu.UserVideosTip = Vsebuje filme in druge videodatoteke. -Menu.NetworkTip = Prikaže obstoječe omrežne povezave v tem računalniku in vam pomaga ustvarjati nove -Menu.PrintersTip = Doda, odstrani in konfigurira lokalne ter omrežne tiskalnike. -Menu.TaskbarTip = Prilagodi meni »Start« in opravilno vrstico, kot so vrste elementov, ki naj se prikažejo, ter način njihovega prikaza. -Menu.ControlPanelTip = Spremenite nastavitve in prilagodite način delovanja računalnika. -Menu.DocumentsLibTip = Dostopajte do pisem, poročil, obvestil in drugih vrst dokumentov. -Menu.MusicLibTip = Predvajajte glasbene in druge zvočne datoteke. -Menu.PicturesLibTip = Oglejte si digitalne slike in jih razvrstite. -Menu.VideosLibTip = Glejte domače filme in druge digitalne videe. -Menu.RecordingsLibTip = Glejte TV-programe, posnete v računalniku. -Menu.DownloadTip = Poiščite prenose iz interneta in povezave do priljubljenih spletnih mest. -Menu.HomegroupTip = Dostop do knjižnic in map, za katere skupno rabo omogočijo druge osebe v domači skupini. -Menu.RunTip = Odpre program, mapo, dokument ali spletno mesto. -Menu.HelpTip = Poiščite teme pomoči, vadnice, odpravljanje težav in druge storitve za podporo. -Menu.ProgramsTip = Prikaže seznam vaših programov. -Menu.SearchFilesTip = Poiščite dokumente, glasbo, slike, e-pošto in še kaj. -Menu.GamesTip = Igranje in upravljanje nameščenih iger v računalniku. -Menu.SecurityTip = Zaženite možnosti varnosti sistema Windows, če želite spremeniti geslo, preklopiti med uporabniki ali zagnati upravitelja opravil. -Menu.SearchComputersTip = Iskanje računalnikov v omrežju -Menu.SearchPrintersTip = Iskanje tiskalnika -Menu.AdminToolsTip = Konfigurira računalnikove skrbniške nastavitve. -Menu.ShutdownTip = Zapre vse odprte programe, zaustavi sistem Windows in nato izklopi računalnik. -Menu.RestartTip = Zapre vse odprte programe, zaustavi sistem Windows in ga nato znova zažene. -Menu.SleepTip = Ohrani vašo sejo v pomnilniku in postavi računalnik v stanje nizke porabe, tako da lahko hitro nadaljujete delo. -Menu.HibernateTip = Shrani vašo sejo in izklopi računalnik. Ko računalnik vklopite, sistem Windows obnovi vašo sejo. -Menu.LogOffTip = Zapri programe in se odjavi. -Menu.DisconnectTip = Prekine povezavo s sejo. Znova jo lahko vzpostavite po prijavi. -Menu.LockTip = Zakleni ta računalnik. -Menu.UndockTip = Odstrani prenosni računalnik iz združitvene postaje. -Menu.SwitchUserTip = Preklop med uporabniki, ne da bi se programi zaprli. -Menu.Empty = (Prazno) -Menu.Features = Programi in funkcije -Menu.FeaturesTip = Odstranitev ali spreminjanje programov v računalniku. -Menu.SearchPeople = &Za osebe ... -Menu.SortByName = &Razvrsti po imenih -Menu.Open = &Odpri -Menu.OpenAll = O&dpri mapo »All users« -Menu.Explore = R&azišči -Menu.ExploreAll = &Razišči mapo »All users« -Menu.MenuSettings = Nastavitve -Menu.MenuHelp = Pomoč -Menu.MenuExit = Izhod -Menu.LogoffTitle = Odjava iz sistema Windows -Menu.LogoffPrompt = Ali ste prepričani, da se želite odjaviti? -Menu.LogoffYes = &Odjavi se -Menu.LogoffNo = &Ne -Menu.RenameTitle = Preimenuj -Menu.RenamePrompt = &Novo ime: -Menu.RenameOK = V redu -Menu.RenameCancel = Prekliči -Menu.Organize = Organiziraj meni Start -Menu.Expand = R&azširi -Menu.Collapse = &Strni -Menu.NewFolder = Nova mapa -Menu.NewShortcut = Nova bližnjica -Menu.AutoArrange = Samod&ejno razporedi -Menu.ActionOpen = Odpri -Menu.ActionClose = Zapri -Menu.ActionExecute = Izvedi -Menu.RemoveList = Od&strani s tega seznama -Menu.RemoveAll = &Izbriši seznam nedavnih elementov -Menu.Explorer = Raziskovalec -Menu.Start = Start -Menu.StartScreen = Začetni zaslon -Menu.StartMenu = Meni »Start« (Windows) -Menu.PinStart = Pripni v meni »Start« -Menu.PinStartCs = Pripni v meni »Start«. (Open-Shell) -Menu.UnpinStartCs = Odpni iz menija »Start«. (Open-Shell) -Menu.MonitorOff = Izklopi prikaz -Menu.RemoveHighlight = Odstrani označitev -Menu.Uninstall = &Odstrani -Menu.UninstallTitle = Odstrani -Menu.UninstallPrompt = Ali ste prepričani, da želite odstraniti %s? -Search.CategorySettings = Nastavitve -Search.CategoryPCSettings = Nastavitve računalnika -Search.CategoryPrograms = Programi -Search.CategoryDocuments = Dokumenti -Search.CategoryMusic = Glasba -Search.CategoryPictures = Slike -Search.CategoryVideos = Videi -Search.CategoryFiles = Datoteke -Search.CategoryInternet = Internet -JumpList.Recent = Nedavno -JumpList.Frequent = Pogosto -JumpList.Tasks = Opravila -JumpList.Pinned = Pripeto -JumpList.Pin = &Pripni na ta seznam -JumpList.Unpin = &Odpni s tega seznama -JumpList.Remove = Od&strani s tega seznama -JumpList.PinTip = Pripni na ta seznam -JumpList.UnpinTip = Odpni s tega seznama - - -[sr-Latn-CS] - Serbian (Latin, Serbia) -Menu.Programs = &Programi -Menu.Apps = Aplikacije -Menu.AllPrograms = Svi programi -Menu.Back = Nazad -Menu.Favorites = Omiljene& lokacije -Menu.Documents = &Dokumenti -Menu.Settings = Postavk&e -Menu.Search = Pre&traži -Menu.SearchBox = Pretraži -Menu.SearchPrograms = Pretraži programe i datoteke -Menu.SearchInternet = Pretraži Internet -Menu.Searching = Pretraživanje... -Menu.NoMatch = Nijedna stavka se ne podudara sa pretragom. -Menu.MoreResults = Pogledajte više rezultata -Menu.Help = Po&moć i podrška -Menu.Run = Po&kreni... -Menu.Logoff = &Odjavi se sa %s -Menu.SwitchUser = P&romeni korisnika -Menu.Lock = Z&aključaj -Menu.LogOffShort = &Odjavi se -Menu.Undock = Odvoji računar od &bazne stanice -Menu.Disconnect = Prekini &vezu -Menu.ShutdownBox = &Isključi... -Menu.Shutdown = &Isključi -Menu.Restart = &Ponovo pokreni -Menu.ShutdownUpdate = Ažuriraj i isključi -Menu.RestartUpdate = Ažuriraj i ponovo pokreni -Menu.Sleep = &Stanje spavanja -Menu.Hibernate = &U stanju hibernacije -Menu.ControlPanel = &Kontrolna tabla -Menu.PCSettings = Postavke računara -Menu.Security = Windows bezbednost -Menu.Network = &Mrežne veze -Menu.Printers = Št&ači -Menu.Taskbar = &Traka zadataka i „Start“ meni -Menu.SearchFiles = &Za datoteke i fascikle... -Menu.SearchPrinter = &Za štampač -Menu.SearchComputers = &Za računare -Menu.UserFilesTip = Sadrži fascikle za dokumente, slike, muziku i druge datoteke koje vam pripadaju. -Menu.UserDocumentsTip = Sadrži pisma, izveštaje i druge dokumente i datoteke. -Menu.UserPicturesTip = Sadrži digitalne fotografije, slike i grafičke datoteke. -Menu.UserMusicTip = Sadrži muziku i druge audio datoteke. -Menu.UserVideosTip = Sadrži filmove i druge video datoteke. -Menu.NetworkTip = Prikazuje postojeće mrežne veze ovog računara i pomaže pri kreiranju novih -Menu.PrintersTip = Dodajte, uklonite i konfigurišite lokalne i mrežne štampače. -Menu.TaskbarTip = Prilagodite „Start“ meni i traku zadataka, npr. tipove stavki koje će biti prikazane i način njihovog pojavljivanja. -Menu.ControlPanelTip = Promenite postavke i prilagodite funkcionalnost računara. -Menu.DocumentsLibTip = Pristupajte pismima, izveštajima, beleškama i drugim vrstama dokumenata. -Menu.MusicLibTip = Reprodukujte muziku i druge zvučne datoteke. -Menu.PicturesLibTip = Prikazujte i organizujte digitalne slike. -Menu.VideosLibTip = Gledajte kućne filmove i druge digitalne video zapise. -Menu.RecordingsLibTip = Gledajte TV programe snimljene na računaru. -Menu.DownloadTip = Pronađite Internet preuzimanja i veze ka omiljenim Veb lokacijama. -Menu.HomegroupTip = Pristupite bibliotekama i fasciklama koje dele druge osobe u matičnoj grupi. -Menu.RunTip = Otvara program, fasciklu, dokument ili Veb lokaciju. -Menu.HelpTip = Pronađite teme pomoći, podučavanja, rešavanje problema i druge usluge podrške. -Menu.ProgramsTip = Otvara listu programa. -Menu.SearchFilesTip = Tražite dokumente, muziku, slike, e-poštu i još mnogo toga. -Menu.GamesTip = Igrajte i upravljajte igrama na računaru. -Menu.SecurityTip = Pokrenite Windows opcije bezbednosti da biste promenili lozinku, promenili korisnika ili pokrenuli upravljač zadacima. -Menu.SearchComputersTip = Pronađi računare u mreži -Menu.SearchPrintersTip = Pronađi štampač -Menu.AdminToolsTip = Konfigurišite administrativne postavke na svom računaru. -Menu.ShutdownTip = Zatvara sve otvorene programe, isključuje Windows i zatim isključuje računar. -Menu.RestartTip = Zatvara sve otvorene programe, isključuje Windows i zatim ponovo pokreće Windows. -Menu.SleepTip = Čuva sesiju u memoriji i stavlja računar u stanje niske potrošnje tako da možete brzo da nastavite sa radom. -Menu.HibernateTip = Čuva sesiju i isključuje računar. Kada uključite računar, Windows vraća sesiju u prethodno stanje. -Menu.LogOffTip = Zatvori programe i odjavi se. -Menu.DisconnectTip = Prekida vezu sesije. Možete se ponovo povezati sa sesijom kad se ponovo prijavite. -Menu.LockTip = Zaključaj ovaj računar. -Menu.UndockTip = Uklanja laptop ili notebook računar sa bazne stanice. -Menu.SwitchUserTip = Promeni korisnike bez zatvaranja programa. -Menu.Empty = (Prazno) -Menu.Features = Programi i funkcije -Menu.FeaturesTip = Deinstalirajte ili promenite programe na računaru. -Menu.SearchPeople = &Za osobe... -Menu.SortByName = &Sortiraj po imenu -Menu.Open = &Otvori -Menu.OpenAll = O&tvori sve korisnike -Menu.Explore = &Istraži -Menu.ExploreAll = Istraži sve &korisnike -Menu.MenuSettings = Postavke -Menu.MenuHelp = Pomoć -Menu.MenuExit = Izađi -Menu.LogoffTitle = Odjava iz Windowsa -Menu.LogoffPrompt = Želite li zaista da se odjavite? -Menu.LogoffYes = &Odjavi se -Menu.LogoffNo = &Ne -Menu.RenameTitle = Preimenovanje -Menu.RenamePrompt = &Novo ime: -Menu.RenameOK = U redu -Menu.RenameCancel = Otkaži -Menu.Organize = Organizovanje menija „Start“ -Menu.Expand = R&azvij -Menu.Collapse = Sk&upi -Menu.NewFolder = Nova fascikla -Menu.NewShortcut = Nova prečica -Menu.AutoArrange = Rasporedi &automatski -Menu.ActionOpen = Otvori -Menu.ActionClose = Zatvori -Menu.ActionExecute = Izvrši -Menu.RemoveList = &Ukloni sa ovog spiska -Menu.RemoveAll = O&briši listu nedavno korišćenih stavki -Menu.Explorer = Windows Explorer -Menu.Start = Pokreni -Menu.StartScreen = Početni ekran -Menu.StartMenu = „Start“ meni (Windows) -Menu.PinStart = Dodaj u „Start“ meni -Menu.PinStartCs = Dodaj u „Start“ meni (Open-Shell) -Menu.UnpinStartCs = Ukloni iz „Start“ menija (Open-Shell) -Menu.MonitorOff = Isključi displej -Menu.RemoveHighlight = Ukloni istaknuti sadržaj -Menu.Uninstall = &Deinstaliraj -Menu.UninstallTitle = Deinstaliraj -Menu.UninstallPrompt = Želite li zaista da deinstalirate %s? -Search.CategorySettings = Postavke -Search.CategoryPCSettings = Postavke računara -Search.CategoryPrograms = Programs -Search.CategoryDocuments = Dokumenti -Search.CategoryMusic = Muzika -Search.CategoryPictures = Slike -Search.CategoryVideos = Video zapisi -Search.CategoryFiles = Datoteke -Search.CategoryInternet = Internet -JumpList.Recent = Nedavno -JumpList.Frequent = Često -JumpList.Tasks = Zadaci -JumpList.Pinned = Dodato -JumpList.Pin = Zakač&i na ovu listu -JumpList.Unpin = &Otkači sa ove liste -JumpList.Remove = U&kloni sa ovog spiska -JumpList.PinTip = Zakači na ovu listu -JumpList.UnpinTip = Otkači sa ove liste - - -[sv-SE] - Swedish (Sweden) -Menu.Programs = &Program -Menu.Apps = Appar -Menu.AllPrograms = Alla program -Menu.Back = Föregående -Menu.Favorites = &Favoriter -Menu.Documents = &Dokument -Menu.Settings = &Inställningar -Menu.Search = &Sök -Menu.SearchBox = Sök -Menu.SearchPrograms = Sök bland program och filer -Menu.SearchInternet = Sök på Internet -Menu.Searching = Söker... -Menu.NoMatch = Inga objekt matchade sökningen. -Menu.MoreResults = Visa fler resultat -Menu.Help = &Hjälp och support -Menu.Run = K&ör... -Menu.Logoff = &Logga ut %s -Menu.SwitchUser = &Växla användare -Menu.Lock = L&ås -Menu.LogOffShort = &Logga ut -Menu.Undock = K&oppla från datorn -Menu.Disconnect = Koppla fr&ån -Menu.ShutdownBox = &Avsluta... -Menu.Shutdown = Stäng &av -Menu.Restart = &Starta om -Menu.ShutdownUpdate = Uppdatera och stäng av -Menu.RestartUpdate = Uppdatera och starta om -Menu.Sleep = &Vila -Menu.Hibernate = &Viloläge -Menu.ControlPanel = &Kontrollpanelen -Menu.PCSettings = Datorinställningar -Menu.Security = Windows-säkerhet -Menu.Network = &Nätverksanslutningar -Menu.Printers = &Skrivare -Menu.Taskbar = &Aktivitetsfältet och Start-menyn -Menu.SearchFiles = E&fter filer eller mappar... -Menu.SearchPrinter = Efter &skrivare -Menu.SearchComputers = &Efter datorer -Menu.UserFilesTip = Innehåller mappar för dokument, bilder, musik och andra filer som tillhör dig. -Menu.UserDocumentsTip = Innehåller brev, rapporter och andra dokument och filer. -Menu.UserPicturesTip = Innehåller digitala foton, bilder och grafikfiler. -Menu.UserMusicTip = Innehåller musik och andra ljudfiler. -Menu.UserVideosTip = Innehåller filmer och andra videofiler. -Menu.NetworkTip = Visar befintliga nätverks- och fjärranslutningar på den här datorn samt hjälper dig att skapa nya -Menu.PrintersTip = Lägg till, ta bort och konfigurera lokala och nätverksskrivare. -Menu.TaskbarTip = Anpassa Start-menyn och Aktivitetsfältet, som exempelvis vilka objekt som ska synas och hur de ska visas. -Menu.ControlPanelTip = Ändra inställningar och anpassa datorns funktioner. -Menu.DocumentsLibTip = Använd brev, rapporter, anteckningar och andra dokument. -Menu.MusicLibTip = Spela musik och andra ljudfiler. -Menu.PicturesLibTip = Visa och ordna digitala bilder. -Menu.VideosLibTip = Titta på egna filmer och andra digitala videofilmer. -Menu.RecordingsLibTip = Titta på TV-program som har spelats in på datorn. -Menu.DownloadTip = Sök efter filer som du har hämtat från Internet och länkar till favoritwebbplatser. -Menu.HomegroupTip = Få åtkomst till bibliotek och mappar som delas ut av andra personer i hemgruppen. -Menu.RunTip = Öppnar ett program, en mapp, ett dokument eller en webbplats. -Menu.HelpTip = Hitta hjälpavsnitt, självstudier, felsökning och andra supporttjänster. -Menu.ProgramsTip = Öppnar en lista över program på datorn. -Menu.SearchFilesTip = Sök efter dokument, musik, bilder, e-post och mycket mer. -Menu.GamesTip = Spela och hantera spel på datorn. -Menu.SecurityTip = Visa Windows-säkerhetsalternativ om du vill ändra lösenord, växla användare eller starta Aktivitetshanteraren. -Menu.SearchComputersTip = Sök efter datorer på nätverket -Menu.SearchPrintersTip = Sök efter en skrivare -Menu.AdminToolsTip = Konfigurera administrationsinställningar för datorn. -Menu.ShutdownTip = Stänger alla öppna program, avslutar Windows och stänger sedan av datorn. -Menu.RestartTip = Stänger alla öppna program, avslutar Windows och startar sedan Windows igen. -Menu.SleepTip = Behåller sessionen i minnet och försätter datorn i energisparläge så att du snabbt kan återgå till arbetet. -Menu.HibernateTip = Sparar sessionen och stänger av datorn. Sessionen återställs när du startar datorn. -Menu.LogOffTip = Stänger alla program och loggar ut. -Menu.DisconnectTip = Kopplar från sessionen. Du kan ansluta till den här sessionen på nytt när du loggar in igen. -Menu.LockTip = Låser den här datorn. -Menu.UndockTip = Kopplar från din bärbara dator från dockningsstationen. -Menu.SwitchUserTip = Växlar användare utan att stänga program. -Menu.Empty = (Tom) -Menu.Features = Program och funktioner -Menu.FeaturesTip = Avinstallera eller ändra program på datorn. -Menu.SearchPeople = Efter &personer... -Menu.SortByName = Sortera efter &namn -Menu.Open = &Öppna -Menu.OpenAll = Öppna &delade Start-menyn -Menu.Explore = &Utforska -Menu.ExploreAll = Utf&orska delade Start-menyn -Menu.MenuSettings = Inställningar -Menu.MenuHelp = Hjälp -Menu.MenuExit = Avsluta -Menu.LogoffTitle = Logga ut -Menu.LogoffPrompt = Vill du logga ut? -Menu.LogoffYes = &Logga ut -Menu.LogoffNo = N&ej -Menu.RenameTitle = Byt namn -Menu.RenamePrompt = &Nytt namn: -Menu.RenameOK = OK -Menu.RenameCancel = Avbryt -Menu.Organize = Organisera Start-menyn -Menu.Expand = Exp&andera -Menu.Collapse = &Dölj -Menu.NewFolder = Ny mapp -Menu.NewShortcut = Ny genväg -Menu.AutoArrange = &Ordna automatiskt -Menu.ActionOpen = Öppna -Menu.ActionClose = Stäng -Menu.ActionExecute = Kör -Menu.RemoveList = &Ta bort från den här listan -Menu.RemoveAll = &Rensa listan Tidigare -Menu.Explorer = Utforskaren -Menu.Start = Start -Menu.StartScreen = Startskärmen -Menu.StartMenu = Startmenyn (Windows) -Menu.PinStart = Fäst på Start-menyn -Menu.PinStartCs = Fäst på Start-menyn (Open-Shell) -Menu.UnpinStartCs = Ta bort från Start-menyn (Open-Shell) -Menu.MonitorOff = Stänga av bildskärmen -Menu.RemoveHighlight = Ta bort fokus -Menu.Uninstall = &Avinstallera -Menu.UninstallTitle = Avinstallera -Menu.UninstallPrompt = Vill du avinstallera %s? -Search.CategorySettings = Inställningar -Search.CategoryPCSettings = Datorinställningar -Search.CategoryPrograms = Program -Search.CategoryDocuments = Dokument -Search.CategoryMusic = Musik -Search.CategoryPictures = Bilder -Search.CategoryVideos = Filmer -Search.CategoryFiles = Filer -Search.CategoryInternet = Internet -JumpList.Recent = Senast använda -JumpList.Frequent = Ofta använda -JumpList.Tasks = Aktiviteter -JumpList.Pinned = Fastnålat -JumpList.Pin = &Fäst i den här listan -JumpList.Unpin = &Ta bort från den här listan -JumpList.Remove = &Ta bort från den här listan -JumpList.PinTip = Fäst i den här listan -JumpList.UnpinTip = Ta bort från den här listan - - -[th-TH] - Thai (Thailand) -Menu.Programs = โ&ปรแกรม -Menu.Apps = โปรแกรม -Menu.AllPrograms = โปรแกรมทั้งหมด -Menu.Back = ย้อนกลับ -Menu.Favorites = ร&ายการโปรด -Menu.Documents = เอก&สาร -Menu.Settings = &การตั้งค่า -Menu.Search = &ค้นหา -Menu.SearchBox = ค้นหา -Menu.SearchPrograms = ค้นหาโปรแกรมและแฟ้ม -Menu.SearchInternet = ค้นหาอินเทอร์เน็ต -Menu.Searching = กำลังค้นหา... -Menu.NoMatch = ไม่มีรายการที่ตรงกับการค้นหาของคุณ -Menu.MoreResults = ดูผลลัพธ์เพิ่มเติม -Menu.Help = &บริการช่วยเหลือและวิธีใช้ -Menu.Run = เรียก&ใช้... -Menu.Logoff = ออก&จากระบบ %s -Menu.SwitchUser = สลับ&ผู้ใช้ -Menu.Lock = &ล็อก -Menu.LogOffShort = &ออกจากระบบ -Menu.Undock = ปล&ดชุดต่ออุปกรณ์ -Menu.Disconnect = &ยกเลิกการเชื่อมต่อ -Menu.ShutdownBox = ปิดเครื่&อง... -Menu.Shutdown = ปิ&ดเครื่อง -Menu.Restart = เริ่มการทำงานใ&หม่ -Menu.ShutdownUpdate = ปรับปรุงและปิดเครื่อง -Menu.RestartUpdate = ปรับปรุงและเริ่มระบบของคอมพิวเตอร์ใหม่ -Menu.Sleep = &สลีป -Menu.Hibernate = ไฮเบอร์เ&นต -Menu.ControlPanel = แ&ผงควบคุม -Menu.PCSettings = การตั้งค่าพีซี -Menu.Security = การรักษาความปลอดภัยของ Windows -Menu.Network = การเชื่อมต่อเค&รือข่าย -Menu.Printers = เ&ครื่องพิมพ์ -Menu.Taskbar = แ&ถบงานและเมนู 'เริ่ม' -Menu.SearchFiles = แ&ฟ้มหรือโฟลเดอร์... -Menu.SearchPrinter = เ&ครื่องพิมพ์ -Menu.SearchComputers = &คอมพิวเตอร์ -Menu.UserFilesTip = ประกอบด้วยโฟลเดอร์สำหรับเอกสาร รูปภาพ เพลง และแฟ้มอื่นๆ ที่เป็นของคุณ -Menu.UserDocumentsTip = เก็บจดหมาย รายงาน รวมทั้งเอกสารและแฟ้มอื่นๆ -Menu.UserPicturesTip = เก็บรูปถ่ายดิจิทัล รูป และแฟ้มกราฟิกต่างๆ -Menu.UserMusicTip = มีเพลงและแฟ้มเสียงอื่นๆ -Menu.UserVideosTip = มีภาพยนตร์และแฟ้มวิดีโออื่นๆ -Menu.NetworkTip = แสดงการเชื่อมต่อเครือข่ายที่มีอยู่บนคอมพิวเตอร์นี้ และช่วยคุณสร้างการเชื่อมต่อเครือข่ายใหม่ -Menu.PrintersTip = เพิ่ม เอาออก และกำหนดค่าเครื่องพิมพ์เฉพาะที่และเครื่องพิมพ์เครือข่าย -Menu.TaskbarTip = กำหนดเมนู 'เริ่ม' และแถบเครื่องมือเอง เช่น ชนิดของรายการที่จะแสดงและลักษณะที่จะปรากฏของเมนู 'เริ่ม' และแถบเครื่องมือ -Menu.ControlPanelTip = เปลี่ยนแปลงการตั้งค่าและกำหนดฟังก์ชันของคอมพิวเตอร์ของคุณ -Menu.DocumentsLibTip = เข้าถึงจดหมาย รายงาน บันทึกย่อ และเอกสารประเภทอื่นๆ -Menu.MusicLibTip = เล่นดนตรีและแฟ้มเสียงอื่นๆ -Menu.PicturesLibTip = ดูและจัดระเบียบรูปภาพดิจิทัล -Menu.VideosLibTip = ดูภาพยนตร์ถ่ายทำเองและวิดีโอดิจิทัลอื่นๆ -Menu.RecordingsLibTip = ดูรายการทีวีที่บันทึกบนคอมพิวเตอร์ -Menu.DownloadTip = ค้นหารายการดาวน์โหลดบนอินเทอร์เน็ตและการเชื่อมโยงไปยังเว็บไซต์โปรด -Menu.HomegroupTip = เข้าถึงไลบรารีและโฟลเดอร์ต่างๆ ที่ผู้อื่นเปิดให้ใช้ร่วมกันในโฮมกรุ๊ปของคุณ -Menu.RunTip = เปิดโปรแกรม โฟลเดอร์ เอกสาร หรือเว็บไซต์ -Menu.HelpTip = ค้นหาแหล่งข้อมูลสำหรับหัวข้อวิธีใช้ บทช่วยสอน การแก้ไขปัญหา และบริการช่วยเหลืออื่นๆ -Menu.ProgramsTip = เปิดรายชื่อของโปรแกรมของคุณ -Menu.SearchFilesTip = ค้นหาเอกสาร ดนตรี รูปภาพ อีเมล และอื่นๆอีกมาก -Menu.GamesTip = เล่นและจัดการกับเกมบนเครื่องคอมพิวเตอร์ของคุณ -Menu.SecurityTip = เปิดใช้ตัวเลือก 'การรักษาความปลอดภัยของ Windows' เพื่อเปลี่ยนรหัสผ่าน สลับผู้ใช้ หรือเริ่ม 'ตัวจัดการงาน' -Menu.SearchComputersTip = ค้นหาคอมพิวเตอร์บนเครือข่าย -Menu.SearchPrintersTip = ค้นหาเครื่องพิมพ์ -Menu.AdminToolsTip = กำหนดค่าการตั้งค่าเกี่ยวกับการจัดการ -สำหรับคอมพิวเตอร์ของคุณ -Menu.ShutdownTip = ปิดโปรแกรมที่เปิดอยู่ทั้งหมด ปิดระบบ Windows แล้วปิดคอมพิวเตอร์ของคุณ -Menu.RestartTip = ปิดโปรแกรมที่เปิดอยู่ทั้งหมด ปิดระบบ Windows แล้วเริ่มการทำงานของ Windows อีกครั้ง -Menu.SleepTip = รักษาเซสชันของคุณในหน่วยความจำ และทำให้คอมพิวเตอร์อยู่ในสถานะที่ใช้พลังงานต่ำ เพื่อให้คุณสามารถกลับมาดำเนินการต่อได้อย่างรวดเร็ว -Menu.HibernateTip = บันทึกเซสชันของคุณ และปิดเครื่องคอมพิวเตอร์ เมื่อคุณเปิดคอมพิวเตอร์ Windows จะคืนค่าเซสชันของคุณ -Menu.LogOffTip = ปิดโปรแกรมและออกจากระบบ -Menu.DisconnectTip = ยกเลิกการเชื่อมต่อเซสชันของคุณ คุณสามารถเชื่อมต่อใหม่ไปยังเซสชันนี้ได้เมื่อคุณเข้าสู่ระบบอีกครั้ง -Menu.LockTip = ล็อกคอมพิวเตอร์นี้ -Menu.UndockTip = เอาคอมพิวเตอร์แล็ปท็อปหรือโน้ตบุ๊กของคุณออกจากที่วางเทียบ -Menu.SwitchUserTip = สลับผู้ใช้โดยไม่ปิดโปรแกรม -Menu.Empty = (ว่าง) -Menu.Features = โปรแกรมและคุณลักษณะ -Menu.FeaturesTip = ถอนการติดตั้งหรือเปลี่ยนแปลงโปรแกรมบนคอมพิวเตอร์ของคุณ -Menu.SearchPeople = สำหรับ&บุคคล... -Menu.SortByName = เรียงลำดั&บตามชื่อ -Menu.Open = เ&ปิด -Menu.OpenAll = &เปิดโฟลเดอร์ All Users -Menu.Explore = สำรว&จ -Menu.ExploreAll = &สำรวจโฟลเดอร์ All Users -Menu.MenuSettings = การตั้งค่า -Menu.MenuHelp = วิธีใช้ -Menu.MenuExit = ออก -Menu.LogoffTitle = ออกจากระบบ Windows -Menu.LogoffPrompt = คุณแน่ใจหรือไม่ว่าคุณต้องการออกจากระบบ -Menu.LogoffYes = &ออกจากระบบ -Menu.LogoffNo = ไ&ม่ใช่ -Menu.RenameTitle = เปลี่ยนชื่อ -Menu.RenamePrompt = &ชื่อใหม่: -Menu.RenameOK = ตกลง -Menu.RenameCancel = ยกเลิก -Menu.Organize = จัดระเบียบเมนู 'เริ่ม' -Menu.Expand = &ขยาย -Menu.Collapse = &ยุบ -Menu.NewFolder = สร้างโฟลเดอร์ -Menu.NewShortcut = ทางลัดใหม่ -Menu.AutoArrange = จัดเรียงอัต&โนมัติ -Menu.ActionOpen = เปิด -Menu.ActionClose = ปิด -Menu.ActionExecute = ปฏิบัติการ -Menu.RemoveList = เอาออก&จากรายชื่อนี้ -Menu.RemoveAll = &ล้างรายการล่าสุด -Menu.Explorer = Windows Explorer -Menu.Start = เริ่ม -Menu.StartScreen = หน้าจอเริ่ม -Menu.StartMenu = เมนูเริ่ม (Windows) -Menu.PinStart = ตรึงกับเมนูเริ่ม -Menu.PinStartCs = ตรึงกับเมนูเริ่ม (Open-Shell) -Menu.UnpinStartCs = ถอนการตรึงออกจากเมนูเริ่ม (Open-Shell) -Menu.MonitorOff = ปิดจอแสดงผล -Menu.RemoveHighlight = เอาไฮไลท์ออก -Menu.Uninstall = &ถอนการติดตั้ง -Menu.UninstallTitle = ถอนการติดตั้ง -Menu.UninstallPrompt = คุณแน่ใจหรือไม่ว่าคุณต้องการถอนการติดตั้ง %s -Search.CategorySettings = การตั้งค่า -Search.CategoryPCSettings = การตั้งค่าพีซี -Search.CategoryPrograms = โปรแกรม -Search.CategoryDocuments = เอกสาร -Search.CategoryMusic = เพลง -Search.CategoryPictures = รูปภาพ -Search.CategoryVideos = วิดีโอ -Search.CategoryFiles = แฟ้ม -Search.CategoryInternet = อินเทอร์เน็ต -JumpList.Recent = ล่าสุด -JumpList.Frequent = ที่ใช้บ่อย -JumpList.Tasks = งาน -JumpList.Pinned = ตรึงไว้ -JumpList.Pin = &ตรึงเข้ากับรายการนี้ -JumpList.Unpin = &ถอนการตรึงออกจากรายการนี้ -JumpList.Remove = เอาออก&จากรายการนี้ -JumpList.PinTip = ตรึงเข้ากับรายการนี้ -JumpList.UnpinTip = ถอนการตรึงออกจากรายการนี้ - - -[tr-TR] - Turkish (Turkey) -Menu.Programs = Progra&mlar -Menu.Apps = Uygulamalar -Menu.AllPrograms = Tüm Programlar -Menu.Back = Geri -Menu.Favorites = &Sık Kullanılanlar -Menu.Documents = &Belgeler -Menu.Settings = Ayar&lar -Menu.Search = &Ara -Menu.SearchBox = Ara -Menu.SearchPrograms = Programları ve dosyaları ara -Menu.SearchInternet = Internet'te ara -Menu.Searching = Arıyor... -Menu.NoMatch = Aramanızla eşleşen öğe yok. -Menu.MoreResults = Diğer sonuçlar -Menu.Help = &Yardım ve Destek -Menu.Run = Çal&ıştır... -Menu.Logoff = %s Oturumunu &Kapat -Menu.SwitchUser = &Kullanıcı değiştir -Menu.Lock = Kili&tle -Menu.LogOffShort = &Oturumu Kapat -Menu.Undock = Bilgisaya&rı Çıkar -Menu.Disconnect = Ba&ğlantıyı Kes -Menu.ShutdownBox = B&ilgisayarı Kapat... -Menu.Shutdown = &Bilgisayarı Kapat -Menu.Restart = &Yeniden Başlat -Menu.ShutdownUpdate = Güncelleştir ve kapat -Menu.RestartUpdate = Güncelleştir ve yeniden başlat -Menu.Sleep = &Uyku -Menu.Hibernate = &Hazırda Beklet -Menu.ControlPanel = &Denetim Masası -Menu.PCSettings = Bilgisayar ayarları -Menu.Security = Windows Güvenliği -Menu.Network = &Ağ Bağlantıları -Menu.Printers = &Yazıcılar -Menu.Taskbar = &Görev Çubuğu ve Başlat Menüsü -Menu.SearchFiles = &Dosya ya da Klasör... -Menu.SearchPrinter = &Yazıcı için -Menu.SearchComputers = &Bilgisayar için -Menu.UserFilesTip = Size ait Belge, Resim, Müzik dosyalarının ve diğer dosyaların klasörlerini içerir. -Menu.UserDocumentsTip = Mektup, rapor ve benzeri belge ve dosyaları içerir. -Menu.UserPicturesTip = Dijital foto, resim ve grafik dosyaları içerir. -Menu.UserMusicTip = Müzik ve diğer ses dosyalarını içerir. -Menu.UserVideosTip = Film ve diğer video dosyalarını içerir. -Menu.NetworkTip = Bu bilgisayar üzerindeki ağ bağlantılarını görüntüleyip yenilerini oluşturmanıza yardımcı olur -Menu.PrintersTip = Yerel yazıcıları ve ağ yazıcılarını ekler, kaldırır ve yapılandırır. -Menu.TaskbarTip = Görüntülenecek öğeler ve ve nasıl görünmeleri gerektiği gibi konularda Başlat Menüsünü ve görev çubuğunu özelleştir. -Menu.ControlPanelTip = Bilgisayarınızın ayarlarını değiştirin ve işlevlerini özelleştirin. -Menu.DocumentsLibTip = Mektuplara, raporlara, notlara ve diğer belge türlerine erişin. -Menu.MusicLibTip = Müzik ve diğer ses dosyalarını çalın. -Menu.PicturesLibTip = Dijital resimleri görüntüleyin ve düzenleyin. -Menu.VideosLibTip = Ev filmlerini ve diğer dijital videoları izleyin. -Menu.RecordingsLibTip = Bilgisayarınızda kayıtlı TV programlarını izleyin. -Menu.DownloadTip = Internet yüklemelerini ve sık kullanılan web siteleri bağlantılarını bulun. -Menu.HomegroupTip = Ev grubunuzdaki diğer kişiler tarafından paylaşılan kitaplıklara ve klasörlere erişin. -Menu.RunTip = Bir program, klasör, belge veya Web sitesi açar. -Menu.HelpTip = Yardım konularını, bilgilendirici rehberleri ve diğer destek hizmetlerini bulun. -Menu.ProgramsTip = Programlarınızın listesini açar. -Menu.SearchFilesTip = Belge, müzik, resim, e-posta ve pek çok başka öğeyi arayın. -Menu.GamesTip = Bilgisayarınızda oyun oynayın ve oyunları yönetin. -Menu.SecurityTip = Parola Değiştirmek, Kullanıcı Değiştirmek veya Görev Yöneticisini Başlatmak için Windows Güvenlik Seçenekleri'ni başlatın. -Menu.SearchComputersTip = Ağda bilgisayarlar ara -Menu.SearchPrintersTip = Yazıcı arayın -Menu.AdminToolsTip = Bilgisayarınızın yönetimle ilgili ayarlarını yapılandırır. -Menu.ShutdownTip = Tüm açık programları kapatır, Windows'u kapatır ve sonra bilgisayarınızı kapatır. -Menu.RestartTip = Tüm açık programları kapatır, Windows'u kapatır ve sonra Windows'u yeniden başlatır. -Menu.SleepTip = Çalışmanızı kolayca devam ettirebilmeniz için oturumunuzu bellekte tutar ve bilgisayarı düşük güçte çalışma durumuna geçirir. -Menu.HibernateTip = Oturumunuzu kaydeder ve bilgisayarı kapatır. Bilgisayarı açtığınızda, Windows oturumunuzu geri yükler. -Menu.LogOffTip = Programları kapatın ve oturumdan çıkın. -Menu.DisconnectTip = Oturum bağlantınız kesilir. Oturum açtığınızda yeniden bağlanabilirsiniz. -Menu.LockTip = Bu bilgisayarı kilitleyin. -Menu.UndockTip = Dizüstü veya notebook bilgisayarınızı takma biriminden çıkartır. -Menu.SwitchUserTip = Kullanıcıları, programları kapatmadan değiştirin. -Menu.Empty = (Boş) -Menu.Features = Programlar ve Özellikler -Menu.FeaturesTip = Bilgisayarınızdaki programları kaldırın veya değiştirin. -Menu.SearchPeople = &Kişiler... -Menu.SortByName = A&da Göre Sırala -Menu.Open = &Aç -Menu.OpenAll = Tü&m Kullanıcıları Aç -Menu.Explore = A&raştır -Menu.ExploreAll = &Tüm Kullanıcıları Araştır -Menu.MenuSettings = Ayarlar -Menu.MenuHelp = Yardım -Menu.MenuExit = Çıkış -Menu.LogoffTitle = Windows Oturumunu Kapat -Menu.LogoffPrompt = Oturumu kapatmayı gerçekten istiyor musunuz? -Menu.LogoffYes = Oturumu &Kapat -Menu.LogoffNo = &Hayır -Menu.RenameTitle = Yeniden Adlandır -Menu.RenamePrompt = &Yeni ad: -Menu.RenameOK = Tamam -Menu.RenameCancel = İptal -Menu.Organize = Başlat menüsünü düzenle -Menu.Expand = &Genişlet -Menu.Collapse = &Daralt -Menu.NewFolder = Yeni Klasör -Menu.NewShortcut = Yeni Kısayol -Menu.AutoArrange = &Otomatik Düzenle -Menu.ActionOpen = Aç -Menu.ActionClose = Kapat -Menu.ActionExecute = Çalıştır -Menu.RemoveList = &Bu listeden kaldır -Menu.RemoveAll = &Son kullanılan öğeler listesini temizle -Menu.Explorer = Windows Gezgini -Menu.Start = Başlat -Menu.StartScreen = Başlangıç Ekranı -Menu.StartMenu = Başlat menüsü (Windows) -Menu.PinStart = Başlat menüsüne sabitle -Menu.PinStartCs = Başlat menüsüne sabitle (Open-Shell) -Menu.UnpinStartCs = Başlat menüsünden ayır (Open-Shell) -Menu.MonitorOff = Ekranı kapat -Menu.RemoveHighlight = Önemli Noktayı Kaldır -Menu.Uninstall = &Kaldır -Menu.UninstallTitle = Kaldır -Menu.UninstallPrompt = %s programını kaldırmak istediğinizden emin misiniz? -Search.CategorySettings = Ayarlar -Search.CategoryPCSettings = Bilgisayar ayarları -Search.CategoryPrograms = Programlar -Search.CategoryDocuments = Belgeler -Search.CategoryMusic = Müzik -Search.CategoryPictures = Resimler -Search.CategoryVideos = Videolar -Search.CategoryFiles = Dosyalar -Search.CategoryInternet = Internet -JumpList.Recent = En Son -JumpList.Frequent = Sık Kullanılanlar -JumpList.Tasks = Görevler -JumpList.Pinned = Sabitlendi -JumpList.Pin = Bu listeye &sabitle -JumpList.Unpin = Bu listeden çı&kar -JumpList.Remove = &Bu listeden kaldır -JumpList.PinTip = Bu listeye sabitle -JumpList.UnpinTip = Bu listeden çıkar - - -[uk-UA] - Ukrainian (Ukraine) -Menu.Programs = &Програми -Menu.Apps = Застосунки -Menu.AllPrograms = Усі програми -Menu.Back = Назад -Menu.Favorites = &Уподобання -Menu.Documents = До&кументи -Menu.Settings = Н&астройки -Menu.Search = З&найти -Menu.SearchBox = Знайти -Menu.SearchPrograms = Пошук програм та файлів -Menu.SearchInternet = Пошук в Інтернеті -Menu.Searching = Триває пошук... -Menu.NoMatch = Пошук не дав результатів. -Menu.MoreResults = Інші результати -Menu.Help = &Довідка та підтримка -Menu.Run = Запуск про&грами... -Menu.Logoff = Завер&шення сеансу %s -Menu.SwitchUser = З&мінити користувача -Menu.Lock = Б&локувати -Menu.LogOffShort = &Вийти з системи -Menu.Undock = Відстикувати комп'&ютер -Menu.Disconnect = В&ідключити -Menu.ShutdownBox = &Завершення роботи... -Menu.Shutdown = &Завершення роботи -Menu.Restart = &Перезавантаження -Menu.ShutdownUpdate = Інсталювати оновлення та завершити роботу -Menu.RestartUpdate = Інсталювати оновлення та перезавантажити -Menu.Sleep = &Сон -Menu.Hibernate = &Режим глибокого сну -Menu.ControlPanel = П&анель керування -Menu.PCSettings = Параметри ПК -Menu.Security = Безпека Windows -Menu.Network = &Мережні підключення -Menu.Printers = Пр&интери -Menu.Taskbar = Панель &завдань і меню "Пуск" -Menu.SearchFiles = &Файли й папки... -Menu.SearchPrinter = &Принтер -Menu.SearchComputers = &Комп'ютери -Menu.UserFilesTip = Містить папки для документів, зображень, музики та інших ваших файлів. -Menu.UserDocumentsTip = Містить листи, звіти та інші документи й файли. -Menu.UserPicturesTip = Містить цифрові фотографії, малюнки, графічні файли. -Menu.UserMusicTip = Містить музичні та інші звукові файли. -Menu.UserVideosTip = Містить фільми та відеофайли. -Menu.NetworkTip = Показ наявних мережних підключень для цього комп’ютера та створення нових підключень -Menu.PrintersTip = Додати, видалити або настроїти локальні чи мережні принтери. -Menu.TaskbarTip = Настройка меню "Пуск" і панелі завдань, наприклад, установка типів і зовнішнього вигляду елементів, які буде показано. -Menu.ControlPanelTip = Змінити параметри та настроїти функціональність системи. -Menu.DocumentsLibTip = Отримайте доступ до листів, звітів, приміток та документів інших видів. -Menu.MusicLibTip = Відтворюйте музику та інші звукові файли. -Menu.PicturesLibTip = Переглядайте та організовуйте цифрові зображення. -Menu.VideosLibTip = Переглядати домашнє та інше цифрове відео. -Menu.RecordingsLibTip = Переглядати ТВ-програми, записані на комп'ютер. -Menu.DownloadTip = Знайти завантаження Інтернету і посилання на улюблені веб-сайти. -Menu.HomegroupTip = Спільний доступ до бібліотек і папок інших користувачів із домашньої групи. -Menu.RunTip = Відкриття програми, папки, документа або веб-сайту. -Menu.HelpTip = Пошук довідкових матеріалів, навчальних програм, засобів виправлення неполадок та інших служб технічної підтримки. -Menu.ProgramsTip = Відкрити список програм. -Menu.SearchFilesTip = Пошук документів, музики, зображень, адрес електронної пошти та іншого. -Menu.GamesTip = Гра та керування іграми, інстальованими на цьому комп’ютері. -Menu.SecurityTip = Запустити Параметри безпеки Windows для зміни пароля, переключення користувача або запуску диспетчера завдань. -Menu.SearchComputersTip = Пошук комп’ютерів у мережі -Menu.SearchPrintersTip = Пошук принтера -Menu.AdminToolsTip = Настройка параметрів адміністрування для цього комп'ютера. -Menu.ShutdownTip = Закриває всі відкриті програми, завершує роботу системи та вимикає комп’ютер. -Menu.RestartTip = Закриває всі відкриті програми, завершує роботу системи та запускає систему знову. -Menu.SleepTip = Зберігає сеанс роботи в пам’яті та переводить комп’ютер до режиму зниженого енергоспоживання, що надає змогу швидко відновити роботу. -Menu.HibernateTip = Зберігає дані сеансу та вимикає комп’ютер. Після увімкнення комп’ютера система відновлює сеанс. -Menu.LogOffTip = Закрити програми та вийти з системи. -Menu.DisconnectTip = Відключає ваш сеанс. Можна знову підключитися до сеансу, повторно увійшовши до системи. -Menu.LockTip = Заблокувати комп'ютер. -Menu.UndockTip = Видалення ноутбука із пристрою стаціонарного підключення. -Menu.SwitchUserTip = Переключення користувачів без закриття програм. -Menu.Empty = (пусто) -Menu.Features = Програми та засоби -Menu.FeaturesTip = Змінити або видалити програми на комп’ютері. -Menu.SearchPeople = Л&юдей... -Menu.SortByName = Сортувати за &іменем -Menu.Open = &Відкрити -Menu.OpenAll = В&ідкрити спільне для всіх меню -Menu.Explore = &Провідник -Menu.ExploreAll = Пр&овідник до спільного для всіх меню -Menu.MenuSettings = Настройки -Menu.MenuHelp = Довідка -Menu.MenuExit = Вихід -Menu.LogoffTitle = Вихід із Windows -Menu.LogoffPrompt = Ви дійсно бажаєте вийти із системи? -Menu.LogoffYes = В&ихід -Menu.LogoffNo = &Ні -Menu.RenameTitle = Перейменування -Menu.RenamePrompt = &Нове ім'я: -Menu.RenameOK = ОК -Menu.RenameCancel = Скасувати -Menu.Organize = Упорядкування меню "Пуск" -Menu.Expand = &Розгорнути -Menu.Collapse = &Згорнути -Menu.NewFolder = Створити папку -Menu.NewShortcut = Новий ярлик -Menu.AutoArrange = &Автоматично -Menu.ActionOpen = Відкрити -Menu.ActionClose = Закрити -Menu.ActionExecute = Виконати -Menu.RemoveList = Видалити &з цього списку -Menu.RemoveAll = О&чистити список останніх елементів -Menu.Explorer = Провідник -Menu.Start = Запустити -Menu.StartScreen = Початковий екран -Menu.StartMenu = Меню "Пуск" (Windows) -Menu.PinStart = Прикріпити до меню "Пуск" -Menu.PinStartCs = Прикріпити до меню "Пуск" (Open-Shell) -Menu.UnpinStartCs = Відкріпити від меню "Пуск" (Open-Shell) -Menu.MonitorOff = Вимкнути дисплей -Menu.RemoveHighlight = Видалити виділення -Menu.Uninstall = &Видалити -Menu.UninstallTitle = Видалити -Menu.UninstallPrompt = Дійсно видалити %s? -Search.CategorySettings = Настройки -Search.CategoryPCSettings = Параметри ПК -Search.CategoryPrograms = Програми -Search.CategoryDocuments = Документи -Search.CategoryMusic = Музика -Search.CategoryPictures = Зображення -Search.CategoryVideos = Відео -Search.CategoryFiles = Файли -Search.CategoryInternet = Інтернет -JumpList.Recent = Недавні -JumpList.Frequent = Часто використовувані -JumpList.Tasks = Завдання -JumpList.Pinned = Зафіксовано -JumpList.Pin = &Прикріпити до списку -JumpList.Unpin = &Відкріпити від списку -JumpList.Remove = Видали&ти з цього списку -JumpList.PinTip = Прикріпити до списку -JumpList.UnpinTip = Відкріпити від списку - - -[zh-CN] - Chinese (Simplified) -Menu.Programs = 程序(&P) -Menu.Apps = 应用 -Menu.AllPrograms = 所有程序 -Menu.Back = 返回 -Menu.Favorites = 收藏夹(&A) -Menu.Documents = 文档(&D) -Menu.Settings = 设置(&S) -Menu.Search = 搜索(&C) -Menu.SearchBox = 搜索 -Menu.SearchPrograms = 搜索程序和文件 -Menu.SearchInternet = 搜索 Internet -Menu.Searching = 正在搜索... -Menu.NoMatch = 没有与搜索条件匹配的项。 -Menu.MoreResults = 查看更多结果 -Menu.Help = 帮助和支持(&H) -Menu.Run = 运行(&R)... -Menu.Logoff = 注销 %s(&L) -Menu.SwitchUser = 切换用户(&W) -Menu.Lock = 锁定(&O) -Menu.LogOffShort = 注销(&L) -Menu.Undock = 弹出 PC(&E) -Menu.Disconnect = 断开(&I) -Menu.ShutdownBox = 关机(&U)... -Menu.Shutdown = 关机(&U) -Menu.Restart = 重新启动(&R) -Menu.ShutdownUpdate = 更新并关机 -Menu.RestartUpdate = 更新并重启 -Menu.Sleep = 睡眠(&S) -Menu.Hibernate = 休眠(&H) -Menu.ControlPanel = 控制面板(&C) -Menu.PCSettings = 电脑设置 -Menu.Security = Windows 安全 -Menu.Network = 网络连接(&N) -Menu.Printers = 打印机(&P) -Menu.Taskbar = 任务栏和「开始」菜单(&T) -Menu.SearchFiles = 文件或文件夹(&F)... -Menu.SearchPrinter = 打印机(&P) -Menu.SearchComputers = 计算机(&C) -Menu.UserFilesTip = 包含文档文件、图片文件、音乐文件及您拥有的其他文件的文件夹。 -Menu.UserDocumentsTip = 包含信件,报告和其它文档以及文件。 -Menu.UserPicturesTip = 包含数字照片,图片和图形文件。 -Menu.UserMusicTip = 包含音乐和其他音频文件。 -Menu.UserVideosTip = 包含音乐和其他视频文件。 -Menu.NetworkTip = 显示此计算机上现有的网络连接并帮助您创建新的 -Menu.PrintersTip = 添加、删除和配置本地及网络打印机。 -Menu.TaskbarTip = 自定义「开始」菜单和任务栏,例如要显示项目的类型及如何显示。 -Menu.ControlPanelTip = 更改您的计算机设置并自定义其功能。 -Menu.DocumentsLibTip = 访问信件、报告、便笺以及其他类型的文档。 -Menu.MusicLibTip = 播放音乐和其他音频文件。 -Menu.PicturesLibTip = 查看和组织数字图片。 -Menu.VideosLibTip = 观看家庭电影和其他数字视频。 -Menu.RecordingsLibTip = 在计算机上观看录制的电视节目。 -Menu.DownloadTip = 查找 Internet 下载以及最喜欢的网站链接。 -Menu.HomegroupTip = 访问家庭组中其他人员共享的库和文件夹。 -Menu.RunTip = 打开一个程序、文件夹、文档或网站。 -Menu.HelpTip = 查找帮助主题、教程、疑难解答和其他支持服务。 -Menu.ProgramsTip = 打开您的程序列表。 -Menu.SearchFilesTip = 搜索文档、音乐、图片、电子邮件等等。 -Menu.GamesTip = 在计算机上运行和管理游戏。 -Menu.SecurityTip = 启动 Windows 安全选项以更改密码、切换用户或启动任务管理器。 -Menu.SearchComputersTip = 搜索网络计算机 -Menu.SearchPrintersTip = 搜索打印机 -Menu.AdminToolsTip = 配置您计算机的管理设置。 -Menu.ShutdownTip = 关闭所有打开的程序,关闭 Windows,然后关闭计算机。 -Menu.RestartTip = 关闭所有打开的程序,关闭 Windows,然后重新启动 Windows。 -Menu.SleepTip = 将会话保存在内存中并将计算机置于低功耗状态,这样即可快速恢复工作状态。 -Menu.HibernateTip = 保存会话并关闭计算机。打开计算机时,Windows 会还原会话。 -Menu.LogOffTip = 关闭程序并注销。 -Menu.DisconnectTip = 断开会话。再次登录时可以重新连接到该会话。 -Menu.LockTip = 锁定该计算机。 -Menu.UndockTip = 将您的便携式和笔记本计算机从扩展坞中移除。 -Menu.SwitchUserTip = 不关闭程序切换用户。 -Menu.Empty = (空) -Menu.Features = 程序和功能 -Menu.FeaturesTip = 卸载或更改计算机上的程序。 -Menu.SearchPeople = 个人(&P)... -Menu.SortByName = 按名称排序(&B) -Menu.Open = 打开(&O) -Menu.OpenAll = 打开所有用户(&P) -Menu.Explore = 浏览(&E) -Menu.ExploreAll = 浏览所有用户(&X) -Menu.MenuSettings = 设置 -Menu.MenuHelp = 帮助 -Menu.MenuExit = 退出 -Menu.LogoffTitle = 注销 Windows -Menu.LogoffPrompt = 确实要注销吗? -Menu.LogoffYes = 注销(&L) -Menu.LogoffNo = 否(&N) -Menu.RenameTitle = 重命名 -Menu.RenamePrompt = 新名称(&N): -Menu.RenameOK = 确定 -Menu.RenameCancel = 取消 -Menu.Organize = 组织「开始」菜单 -Menu.Expand = 展开(&A) -Menu.Collapse = 折叠(&A) -Menu.NewFolder = 新文件夹 -Menu.NewShortcut = 新快捷方式 -Menu.AutoArrange = 自动排列(&A) -Menu.ActionOpen = 打开 -Menu.ActionClose = 关闭 -Menu.ActionExecute = 执行 -Menu.RemoveList = 从列表中删除(&F) -Menu.RemoveAll = 清除最近的项目列表(&L) -Menu.Explorer = Windows 资源管理器 -Menu.Start = 开始 -Menu.StartScreen = “开始”屏幕 -Menu.StartMenu = 「开始」菜单 (Windows) -Menu.PinStart = 锁定到「开始」菜单 -Menu.PinStartCs = 锁定到「开始」菜单 (Open-Shell) -Menu.UnpinStartCs = 从「开始」菜单解锁 (Open-Shell) -Menu.MonitorOff = 关闭显示器 -Menu.RemoveHighlight = 删除突出显示 -Menu.Uninstall = 卸载(&U) -Menu.UninstallTitle = 卸载 -Menu.UninstallPrompt = 确实要卸载 %s 吗? -Search.CategorySettings = 设置 -Search.CategoryPCSettings = 电脑设置 -Search.CategoryPrograms = 程序 -Search.CategoryDocuments = 文档 -Search.CategoryMusic = 音乐 -Search.CategoryPictures = 图片 -Search.CategoryVideos = 视频 -Search.CategoryFiles = 文件 -Search.CategoryInternet = Internet -JumpList.Recent = 最近 -JumpList.Frequent = 常用 -JumpList.Tasks = 任务 -JumpList.Pinned = 已固定 -JumpList.Pin = 锁定到此列表(&I) -JumpList.Unpin = 从此列表解锁(&U) -JumpList.Remove = 从列表中删除(&F) -JumpList.PinTip = 锁定到此列表 -JumpList.UnpinTip = 从此列表解锁 - - -[zh-HK] - Chinese (Traditional) -Menu.Programs = 程式集(&P) -Menu.Apps = 應用程式 -Menu.AllPrograms = 所有程式 -Menu.Back = 上一頁 -Menu.Favorites = 我的最愛(&A) -Menu.Documents = 文件(&D) -Menu.Settings = 設定(&S) -Menu.Search = 搜尋(&C) -Menu.SearchBox = 搜尋 -Menu.SearchPrograms = 搜尋程式及檔案 -Menu.SearchInternet = 搜尋網際網路 -Menu.Searching = 正在搜尋... -Menu.NoMatch = 沒有符合搜尋的項目。 -Menu.MoreResults = 查看更多結果 -Menu.Help = 說明及支援(&H) -Menu.Run = 執行(&R)... -Menu.Logoff = 登出 %s(&L) -Menu.SwitchUser = 切換使用者(&W) -Menu.Lock = 鎖定(&O) -Menu.LogOffShort = 登出(&L) -Menu.Undock = 卸除 PC(&E) -Menu.Disconnect = 中斷連線(&I) -Menu.ShutdownBox = 關機(&U)... -Menu.Shutdown = 關機(&U) -Menu.Restart = 重新啟動(&R) -Menu.ShutdownUpdate = 更新並關機 -Menu.RestartUpdate = 更新並重新啟動 -Menu.Sleep = 睡眠(&S) -Menu.Hibernate = 休眠(&H) -Menu.ControlPanel = 控制台(&C) -Menu.PCSettings = 電腦設定 -Menu.Security = Windows 安全性 -Menu.Network = 網路連線(&N) -Menu.Printers = 印表機(&P) -Menu.Taskbar = 工作列及 [開始] 功能表(&T) -Menu.SearchFiles = 檔案或資料夾(&F)... -Menu.SearchPrinter = 印表機(&P) -Menu.SearchComputers = 電腦(&C) -Menu.UserFilesTip = 包含 [文件]、[圖片]、[音樂] 資料夾,以及其他屬於您的檔案。 -Menu.UserDocumentsTip = 包含信件、報告、其他文件和檔案。 -Menu.UserPicturesTip = 包含數位相片、影像和圖形檔案。 -Menu.UserMusicTip = 包含音樂和其他音訊檔案。 -Menu.UserVideosTip = 包含影片和其他視訊檔案。 -Menu.NetworkTip = 顯示這台電腦目前的網路連線,並協助您建立新連線。 -Menu.PrintersTip = 新增、移除和設定本機及網路印表機。 -Menu.TaskbarTip = 自訂開始功能表和工作列,例如要顯示的項目類型和顯示的方式。 -Menu.ControlPanelTip = 變更設定和自訂電腦的功能。 -Menu.DocumentsLibTip = 存取信件、報告、筆記及其他類型的文件。 -Menu.MusicLibTip = 播放音樂及其他音訊檔案。 -Menu.PicturesLibTip = 檢視及管理數位圖片。 -Menu.VideosLibTip = 觀看家庭影片及其他數位視訊。 -Menu.RecordingsLibTip = 觀看電腦上錄製的電視節目。 -Menu.DownloadTip = 尋找網際網路下載與我的最愛網站的連結。 -Menu.HomegroupTip = 存取家用群組中其他人共用的媒體櫃與資料夾。 -Menu.RunTip = 開啟程式、資料夾、文件或網站。 -Menu.HelpTip = 尋找說明主題、教學課程、疑難排解和其他支援服務。 -Menu.ProgramsTip = 開啟程式清單。 -Menu.SearchFilesTip = 搜尋文件、音樂、圖片及電子郵件等等。 -Menu.GamesTip = 玩和管理您電腦上的遊戲。 -Menu.SecurityTip = 啟動 [Windows 安全性選項] 以變更密碼、切換使用者或啟動工作管理員。 -Menu.SearchComputersTip = 搜尋網路上的電腦 -Menu.SearchPrintersTip = 搜尋印表機 -Menu.AdminToolsTip = 設定電腦的系統管理設定。 -Menu.ShutdownTip = 關閉所有開啟的程式、關閉 Windows,然後關閉您的電腦。 -Menu.RestartTip = 關閉所有開啟的程式、關閉 Windows,然後重新啟動 Windows。 -Menu.SleepTip = 將您的工作階段保留在記憶體中,並且讓電腦處於低電源狀態,如此您就能夠快速地恢復工作。 -Menu.HibernateTip = 儲存您的工作階段,並且關閉電腦。當您開啟電腦時,Windows 會還原您的工作階段。 -Menu.LogOffTip = 關閉程式並登出。 -Menu.DisconnectTip = 中斷您的工作階段連線。下次重新登入時,可以重新連線。 -Menu.LockTip = 鎖定此電腦。 -Menu.UndockTip = 將筆記型電腦從船塢中卸除。 -Menu.SwitchUserTip = 切換使用者 (不關閉程式)。 -Menu.Empty = (空白) -Menu.Features = 程式和功能 -Menu.FeaturesTip = 解除安裝或變更您電腦上的程式。 -Menu.SearchPeople = 人員(&P)... -Menu.SortByName = 依名稱排序(&B) -Menu.Open = 開啟(&O) -Menu.OpenAll = 開啟所有使用者(&P) -Menu.Explore = 檔案總管(&E) -Menu.ExploreAll = 瀏覽所有使用者(&X) -Menu.MenuSettings = 設定 -Menu.MenuHelp = 說明 -Menu.MenuExit = 結束 -Menu.LogoffTitle = 登出 Windows -Menu.LogoffPrompt = 您確定要登出? -Menu.LogoffYes = 登出(&L) -Menu.LogoffNo = 否(&N) -Menu.RenameTitle = 重新命名 -Menu.RenamePrompt = 新名稱(&N): -Menu.RenameOK = 確定 -Menu.RenameCancel = 取消 -Menu.Organize = 組織 [開始] 功能表 -Menu.Expand = 展開(&A) -Menu.Collapse = 摺疊(&A) -Menu.NewFolder = 新增資料夾 -Menu.NewShortcut = 新增捷徑 -Menu.AutoArrange = 自動排列(&A) -Menu.ActionOpen = 開啟 -Menu.ActionClose = 關閉 -Menu.ActionExecute = 執行 -Menu.RemoveList = 從清單中移除(&F) -Menu.RemoveAll = 清除最近使用的項目清單(&L) -Menu.Explorer = Windows 檔案總管 -Menu.Start = 開始 -Menu.StartScreen = [開始] 畫面 -Menu.StartMenu = [開始] 功能表 (Windows) -Menu.PinStart = 釘選到 [開始] 功能表 -Menu.PinStartCs = 釘選到 [開始] 功能表 (Open-Shell) -Menu.UnpinStartCs = 從 [開始] 功能表取消釘選 (Open-Shell) -Menu.MonitorOff = 關閉顯示 -Menu.RemoveHighlight = 移除醒目提示 -Menu.Uninstall = 解除安裝(&U) -Menu.UninstallTitle = 解除安裝 -Menu.UninstallPrompt = 您確定要從電腦解除安裝 %s 嗎? -Search.CategorySettings = 設定 -Search.CategoryPCSettings = 電腦設定 -Search.CategoryPrograms = 程式 -Search.CategoryDocuments = 文件 -Search.CategoryMusic = 音樂 -Search.CategoryPictures = 圖片 -Search.CategoryVideos = 影片 -Search.CategoryFiles = 檔案 -Search.CategoryInternet = 網際網路 -JumpList.Recent = 最近 -JumpList.Frequent = 常用 -JumpList.Tasks = 工作 -JumpList.Pinned = 已釘選 -JumpList.Pin = 釘選到這個清單(&I) -JumpList.Unpin = 從這個清單取消釘選(&U) -JumpList.Remove = 從清單中移除(&F) -JumpList.PinTip = 釘選到這個清單 -JumpList.UnpinTip = 從這個清單取消釘選 - - -[zh-TW] - Chinese (Traditional) -Menu.Programs = 程式集(&P) -Menu.Apps = 應用程式 -Menu.AllPrograms = 所有程式 -Menu.Back = 上一頁 -Menu.Favorites = 我的最愛(&A) -Menu.Documents = 文件(&D) -Menu.Settings = 設定(&S) -Menu.Search = 搜尋(&C) -Menu.SearchBox = 搜尋 -Menu.SearchPrograms = 搜尋程式及檔案 -Menu.SearchInternet = 搜尋網際網路 -Menu.Searching = 正在搜尋... -Menu.NoMatch = 沒有符合搜尋的項目。 -Menu.MoreResults = 查看更多結果 -Menu.Help = 說明及支援(&H) -Menu.Run = 執行(&R)... -Menu.Logoff = 登出 %s(&L) -Menu.SwitchUser = 切換使用者(&W) -Menu.Lock = 鎖定(&O) -Menu.LogOffShort = 登出(&L) -Menu.Undock = 卸除 PC(&E) -Menu.Disconnect = 中斷連線(&I) -Menu.ShutdownBox = 關機(&U)... -Menu.Shutdown = 關機(&U) -Menu.Restart = 重新啟動(&R) -Menu.ShutdownUpdate = 更新並關機 -Menu.RestartUpdate = 更新並重新啟動 -Menu.Sleep = 睡眠(&S) -Menu.Hibernate = 休眠(&H) -Menu.ControlPanel = 控制台(&C) -Menu.PCSettings = 電腦設定 -Menu.Security = Windows 安全性 -Menu.Network = 網路連線(&N) -Menu.Printers = 印表機(&P) -Menu.Taskbar = 工作列及 [開始] 功能表(&T) -Menu.SearchFiles = 檔案或資料夾(&F)... -Menu.SearchPrinter = 印表機(&P) -Menu.SearchComputers = 電腦(&C) -Menu.UserFilesTip = 包含 [文件]、[圖片]、[音樂] 資料夾,以及其他屬於您的檔案。 -Menu.UserDocumentsTip = 包含信件、報告、其他文件和檔案。 -Menu.UserPicturesTip = 包含數位相片、影像和圖形檔案。 -Menu.UserMusicTip = 包含音樂和其他音訊檔案。 -Menu.UserVideosTip = 包含影片和其他視訊檔案。 -Menu.NetworkTip = 顯示這台電腦目前的網路連線,並協助您建立新連線。 -Menu.PrintersTip = 新增、移除和設定本機及網路印表機。 -Menu.TaskbarTip = 自訂開始功能表和工作列,例如要顯示的項目類型和顯示的方式。 -Menu.ControlPanelTip = 變更設定和自訂電腦的功能。 -Menu.DocumentsLibTip = 存取信件、報告、筆記及其他類型的文件。 -Menu.MusicLibTip = 播放音樂及其他音訊檔案。 -Menu.PicturesLibTip = 檢視及管理數位圖片。 -Menu.VideosLibTip = 觀看家庭影片及其他數位視訊。 -Menu.RecordingsLibTip = 觀看電腦上錄製的電視節目。 -Menu.DownloadTip = 尋找網際網路下載與我的最愛網站的連結。 -Menu.HomegroupTip = 存取家用群組中其他人共用的媒體櫃與資料夾。 -Menu.RunTip = 開啟程式、資料夾、文件或網站。 -Menu.HelpTip = 尋找說明主題、教學課程、疑難排解和其他支援服務。 -Menu.ProgramsTip = 開啟程式清單。 -Menu.SearchFilesTip = 搜尋文件、音樂、圖片及電子郵件等等。 -Menu.GamesTip = 玩和管理您電腦上的遊戲。 -Menu.SecurityTip = 啟動 [Windows 安全性選項] 以變更密碼、切換使用者或啟動工作管理員。 -Menu.SearchComputersTip = 搜尋網路上的電腦 -Menu.SearchPrintersTip = 搜尋印表機 -Menu.AdminToolsTip = 設定電腦的系統管理設定。 -Menu.ShutdownTip = 關閉所有開啟的程式、關閉 Windows,然後關閉您的電腦。 -Menu.RestartTip = 關閉所有開啟的程式、關閉 Windows,然後重新啟動 Windows。 -Menu.SleepTip = 將您的工作階段保留在記憶體中,並且讓電腦處於低電源狀態,如此您就能夠快速地恢復工作。 -Menu.HibernateTip = 儲存您的工作階段,並且關閉電腦。當您開啟電腦時,Windows 會還原您的工作階段。 -Menu.LogOffTip = 關閉程式並登出。 -Menu.DisconnectTip = 中斷您的工作階段連線。下次重新登入時,可以重新連線。 -Menu.LockTip = 鎖定此電腦。 -Menu.UndockTip = 將筆記型電腦從船塢中卸除。 -Menu.SwitchUserTip = 切換使用者 (不關閉程式)。 -Menu.Empty = (空白) -Menu.Features = 程式和功能 -Menu.FeaturesTip = 解除安裝或變更您電腦上的程式。 -Menu.SearchPeople = 人員(&P)... -Menu.SortByName = 依名稱排序(&B) -Menu.Open = 開啟(&O) -Menu.OpenAll = 開啟所有使用者(&P) -Menu.Explore = 檔案總管(&E) -Menu.ExploreAll = 瀏覽所有使用者(&X) -Menu.MenuSettings = 設定 -Menu.MenuHelp = 說明 -Menu.MenuExit = 結束 -Menu.LogoffTitle = 登出 Windows -Menu.LogoffPrompt = 您確定要登出? -Menu.LogoffYes = 登出(&L) -Menu.LogoffNo = 否(&N) -Menu.RenameTitle = 重新命名 -Menu.RenamePrompt = 新名稱(&N): -Menu.RenameOK = 確定 -Menu.RenameCancel = 取消 -Menu.Organize = 組織 [開始] 功能表 -Menu.Expand = 展開(&A) -Menu.Collapse = 摺疊(&A) -Menu.NewFolder = 新增資料夾 -Menu.NewShortcut = 新增捷徑 -Menu.AutoArrange = 自動排列(&A) -Menu.ActionOpen = 開啟 -Menu.ActionClose = 關閉 -Menu.ActionExecute = 執行 -Menu.RemoveList = 從清單中移除(&F) -Menu.RemoveAll = 清除最近使用的項目清單(&L) -Menu.Explorer = Windows 檔案總管 -Menu.Start = 開始 -Menu.StartScreen = [開始] 畫面 -Menu.StartMenu = [開始] 功能表 (Windows) -Menu.PinStart = 釘選到 [開始] 功能表 -Menu.PinStartCs = 釘選到 [開始] 功能表 (Open-Shell) -Menu.UnpinStartCs = 從 [開始] 功能表取消釘選 (Open-Shell) -Menu.MonitorOff = 關閉顯示 -Menu.RemoveHighlight = 移除醒目提示 -Menu.Uninstall = 解除安裝(&U) -Menu.UninstallTitle = 解除安裝 -Menu.UninstallPrompt = 您確定要從電腦解除安裝 %s 嗎? -Search.CategorySettings = 設定 -Search.CategoryPCSettings = 電腦設定 -Search.CategoryPrograms = 程式 -Search.CategoryDocuments = 文件 -Search.CategoryMusic = 音樂 -Search.CategoryPictures = 圖片 -Search.CategoryVideos = 影片 -Search.CategoryFiles = 檔案 -Search.CategoryInternet = 網際網路 -JumpList.Recent = 最近 -JumpList.Frequent = 常用 -JumpList.Tasks = 工作 -JumpList.Pinned = 已釘選 -JumpList.Pin = 釘選到這個清單(&I) -JumpList.Unpin = 從這個清單取消釘選(&U) -JumpList.Remove = 從清單中移除(&F) -JumpList.PinTip = 釘選到這個清單 -JumpList.UnpinTip = 從這個清單取消釘選 diff --git a/README.md b/README.md index 968210014..f05fed121 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,43 @@ -## Open-Shell ![Open-Shell](/Src/Setup/OpenShell.ico) + -*Originally* **[Classic Shell](http://www.classicshell.net)** *by [Ivo Beltchev](https://sourceforge.net/u/ibeltchev/profile/)* -[![GitHub Release](https://img.shields.io/github/release/Open-Shell/Open-Shell-Menu.svg)](https://github.com/Open-Shell/Open-Shell-Menu/releases) [![GitHub Pre-Release](https://img.shields.io/github/release/Open-Shell/Open-Shell-Menu/all.svg)](https://github.com/Open-Shell/Open-Shell-Menu/releases) [![Build status](https://ci.appveyor.com/api/projects/status/2wj5x5qoypfjj0tr/branch/master?svg=true)](https://ci.appveyor.com/project/passionate-coder/open-shell-menu/branch/master) [![GitQ](https://gitq.com/badge.svg)](https://gitq.com/passionate-coder/Classic-Start) [![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/open-shell/Lobby) +# Open-Shell -[Home Page](https://open-shell.github.io/Open-Shell-Menu) +A collection of utilities bringing back classic features to Windows. -[Discussion room](https://gitter.im/Open-Shell) +*Originally* **[Classic Shell](http://www.classicshell.net)** *by [Ivo Beltchev](https://sourceforge.net/u/ibeltchev/profile/)* -[Latest nightly build](https://ci.appveyor.com/project/passionate-coder/open-shell-menu/branch/master/artifacts) +[![GitHub Release](https://img.shields.io/github/release/Open-Shell/Open-Shell-Menu.svg?style=flat-square)](https://github.com/Open-Shell/Open-Shell-Menu/releases/latest)  [![GitHub Pre-Release](https://img.shields.io/github/release/Open-Shell/Open-Shell-Menu/all.svg?style=flat-square)](https://github.com/Open-Shell/Open-Shell-Menu/releases)  [![Build](https://github.com/Open-Shell/Open-Shell-Menu/actions/workflows/build.yml/badge.svg)](https://github.com/Open-Shell/Open-Shell-Menu/actions/workflows/build.yml)  [![Build status](https://img.shields.io/appveyor/build/passionate-coder/Open-Shell-Menu?logo=appveyor&style=flat-square)](https://ci.appveyor.com/project/passionate-coder/open-shell-menu/branch/master)  [![GitQ](https://img.shields.io/badge/gitq-discussions-1577fa?style=flat-square)](https://gitq.com/passionate-coder/Classic-Start)  [![Gitter chat](https://img.shields.io/gitter/room/badges/shields.svg?color=lightseagreen&logo=gitter&style=flat-square)](https://gitter.im/open-shell/Lobby)  [![Discord](https://img.shields.io/discord/757701054782636082?color=mediumslateblue&label=Discord&logo=discord&logoColor=white&style=flat-square)](https://discord.gg/7H6arr5) -### Features +[Open-Shell Homepage](https://open-shell.github.io/Open-Shell-Menu) -- Classic style Start Menu for Windows 7, 8, 8.1, 10 +### Features +- Classic style Start menu for Windows 7, 8, 8.1, 10, and 11 - Toolbar for Windows Explorer +- Explorer status bar with file size and disk space - Classic copy UI (Windows 7 only) -- Show file size in Explorer status bar - Title bar and status bar for Internet Explorer ---- +### Download +You can find the latest stable version here: -*For archival reasons, we have a mirror of `www.classicshell.net` [here](https://coddec.github.io/Classic-Shell/www.classicshell.net/).* +[![GitHub All Releases](https://img.shields.io/github/downloads/Open-Shell/Open-Shell-Menu/total?style=for-the-badge&color=4bc2ee&logo=github)](https://github.com/Open-Shell/Open-Shell-Menu/releases/latest) -[How To Skin a Start Menu](https://coddec.github.io/Classic-Shell/www.classicshell.net/tutorials/skintutorial.html) - -[Classic Shell - Custom Start Buttons](https://coddec.github.io/Classic-Shell/www.classicshell.net/tutorials/buttontutorial.html) +> [!IMPORTANT] +> #### Windows for ARM compatibility +> Open-Shell is compatible with Windows for ARM since version [4.4.196](https://github.com/Open-Shell/Open-Shell-Menu/releases/tag/v4.4.196). +> +> If you install older one on a Windows for ARM installation (ex. using Parallels Desktop on an Apple Silicon Mac), you will no longer be able to log into your account the next time you reboot. Please refrain from installing Open-Shell on Windows for ARM. + +### Temporary Translation/Language Solution +1. Download [language DLL](https://coddec.github.io/Classic-Shell/www.classicshell.net/translations/index.html) +2. Place it either in the Open-Shell's __install folder__ or in the `%ALLUSERSPROFILE%\OpenShell\Languages` folder + +---- + +*For archival reasons, we have a mirror of `www.classicshell.net` [here](https://coddec.github.io/Classic-Shell/www.classicshell.net/).* -[Report a bug/issue or submit a feature request](https://github.com/Open-Shell/Open-Shell-Menu/issues) +[How To Skin a Start Menu](https://coddec.github.io/Classic-Shell/www.classicshell.net/tutorials/skintutorial.html) +[Classic Shell: Custom Start Buttons](https://coddec.github.io/Classic-Shell/www.classicshell.net/tutorials/buttontutorial.html) +[Questions? Ask on the Discussions section](https://github.com/Open-Shell/Open-Shell-Menu/discussions) or on [Discord](https://discord.gg/7H6arr5) +[Submit a bug report/feature request](https://github.com/Open-Shell/Open-Shell-Menu/issues) diff --git a/Src/BUILDME.txt b/Src/BUILDME.txt index 95b90347c..b9ed47e5b 100644 --- a/Src/BUILDME.txt +++ b/Src/BUILDME.txt @@ -5,12 +5,12 @@ for other languages. The final files (installers, archives) are saved to the Setup\Final folder. You need the following tools: -Visual Studio 2017 (Community Edition is enough) +Visual Studio 2022 (Community Edition is enough) - Desktop development with C++ workload - - Windows 10 SDK (10.0.17134.0) for Desktop C++ + - Windows 11 SDK (10.0.22621.0) for Desktop C++ - Visual C++ ATL support HTML Help Workshop -WiX 3.7 +WiX 3.14 7-Zip It is possible to convert the projects to newer versions of Visual Studio and newer SDKs. Newer versions of WiX will probably work fine. diff --git a/Src/ClassicExplorer/ClassicCopyExt.h b/Src/ClassicExplorer/ClassicCopyExt.h index 9b02cbddc..dcf65d4a4 100644 --- a/Src/ClassicExplorer/ClassicCopyExt.h +++ b/Src/ClassicExplorer/ClassicCopyExt.h @@ -7,7 +7,7 @@ #pragma once #include "resource.h" // main symbols -#include "ClassicExplorer_i.h" +#include "ClassicExplorer_h.h" #include // CClassicCopyExt diff --git a/Src/ClassicExplorer/ClassicExplorer.cpp b/Src/ClassicExplorer/ClassicExplorer.cpp index 028891208..82f638225 100644 --- a/Src/ClassicExplorer/ClassicExplorer.cpp +++ b/Src/ClassicExplorer/ClassicExplorer.cpp @@ -6,7 +6,7 @@ #include "stdafx.h" #include "resource.h" -#include "ClassicExplorer_i.h" +#include "ClassicExplorer_h.h" #include "dllmain.h" // Used to determine whether the DLL can be unloaded by OLE diff --git a/Src/ClassicExplorer/ClassicExplorer.vcxproj b/Src/ClassicExplorer/ClassicExplorer.vcxproj index 0587bfee0..2ec90585b 100644 --- a/Src/ClassicExplorer/ClassicExplorer.vcxproj +++ b/Src/ClassicExplorer/ClassicExplorer.vcxproj @@ -1,6 +1,14 @@ + + Debug + ARM64 + + + Debug + ARM64EC + Debug Win32 @@ -9,6 +17,14 @@ Debug x64 + + Release + ARM64 + + + Release + ARM64EC + Release Win32 @@ -17,6 +33,14 @@ Release x64 + + Setup + ARM64 + + + Setup + ARM64EC + Setup Win32 @@ -30,336 +54,55 @@ {9AF324B7-F786-4D85-B2E1-6E51720F874E} ClassicExplorer AtlProj - 10.0.17134.0 + 10.0 - - DynamicLibrary - v141 - Static - Unicode - true - - - DynamicLibrary - v141 - Static - Unicode - true - - - DynamicLibrary - v141 - Static - Unicode - - - DynamicLibrary - v141 - Static - Unicode - true - - + DynamicLibrary - v141 - Static - Unicode - true - - - DynamicLibrary - v141 + $(DefaultPlatformToolset) Static Unicode + true - - - - - - - - - - - - - - - - - - - - - - - + + - - $(Configuration)\ - $(Configuration)\ - true - true + $(ProjectName)32 - - $(Configuration)64\ - $(Configuration)64\ - true - true + $(ProjectName)64 - - $(Configuration)\ - $(Configuration)\ - true - false - $(ProjectName)32 - - - $(Configuration)64\ - $(Configuration)64\ - true - false + $(ProjectName)64 - - $(Configuration)\ - $(Configuration)\ - true - false - $(ProjectName)32 + + $(ProjectName)64 + true - - $(Configuration)64\ - $(Configuration)64\ + true - false - $(ProjectName)64 - - - _DEBUG;%(PreprocessorDefinitions) - false - true - ClassicExplorer_i.h - - ClassicExplorer_i.c - ClassicExplorer_p.c - true - - - Disabled - ..\Lib;%(AdditionalIncludeDirectories) - WIN32;_WINDOWS;_DEBUG;_USRDLL;%(PreprocessorDefinitions) - false - EnableFastChecks - MultiThreadedDebug - Use - Level3 - EditAndContinue - true - true - stdcpp17 - - - _DEBUG;%(PreprocessorDefinitions) - $(IntDir);..\Lib;%(AdditionalIncludeDirectories) - - - true - oleacc.lib;comctl32.lib;uxtheme.lib;dwmapi.lib;winmm.lib;htmlhelp.lib;wininet.lib;wintrust.lib;crypt32.lib;Netapi32.lib;%(AdditionalDependencies) - .\$(TargetName).def - true - Windows - - - - - _DEBUG;%(PreprocessorDefinitions) - false - true - ClassicExplorer_i.h - - ClassicExplorer_i.c - ClassicExplorer_p.c - + - Disabled - ..\Lib;%(AdditionalIncludeDirectories) - WIN32;_WINDOWS;_DEBUG;_USRDLL;%(PreprocessorDefinitions) - false - EnableFastChecks - MultiThreadedDebug - Use - Level3 - ProgramDatabase - true - true - stdcpp17 + _USRDLL;%(PreprocessorDefinitions) - _DEBUG;%(PreprocessorDefinitions) - $(IntDir);..\Lib;%(AdditionalIncludeDirectories) + $(IntDir);%(AdditionalIncludeDirectories) - true oleacc.lib;comctl32.lib;uxtheme.lib;dwmapi.lib;winmm.lib;htmlhelp.lib;wininet.lib;wintrust.lib;crypt32.lib;Netapi32.lib;%(AdditionalDependencies) - .\$(TargetName).def - true - Windows + $(TargetName).def - - - NDEBUG;%(PreprocessorDefinitions) - false - true - ClassicExplorer_i.h - - ClassicExplorer_i.c - ClassicExplorer_p.c - true - - - MaxSpeed - ..\Lib;%(AdditionalIncludeDirectories) - WIN32;_WINDOWS;NDEBUG;_USRDLL;%(PreprocessorDefinitions) - MultiThreaded - Use - Level3 - ProgramDatabase - true - true - stdcpp17 - - - NDEBUG;%(PreprocessorDefinitions) - $(IntDir);..\Lib;%(AdditionalIncludeDirectories) - + true - oleacc.lib;comctl32.lib;uxtheme.lib;dwmapi.lib;winmm.lib;htmlhelp.lib;wininet.lib;wintrust.lib;crypt32.lib;Netapi32.lib;%(AdditionalDependencies) - .\$(TargetName).def - true - Windows - true - true - - - - - NDEBUG;%(PreprocessorDefinitions) - false - true - ClassicExplorer_i.h - - ClassicExplorer_i.c - ClassicExplorer_p.c - - - MaxSpeed - ..\Lib;%(AdditionalIncludeDirectories) - WIN32;_WINDOWS;NDEBUG;_USRDLL;%(PreprocessorDefinitions) - MultiThreaded - Use - Level3 - ProgramDatabase - true - true - stdcpp17 - - - NDEBUG;%(PreprocessorDefinitions) - $(IntDir);..\Lib;%(AdditionalIncludeDirectories) - - - true - oleacc.lib;comctl32.lib;uxtheme.lib;dwmapi.lib;winmm.lib;htmlhelp.lib;wininet.lib;wintrust.lib;crypt32.lib;Netapi32.lib;%(AdditionalDependencies) - .\$(TargetName).def - true - Windows - true - true - - - - - NDEBUG;%(PreprocessorDefinitions) - false - true - ClassicExplorer_i.h - - ClassicExplorer_i.c - ClassicExplorer_p.c - true - - - MaxSpeed - ..\Lib;%(AdditionalIncludeDirectories) - WIN32;_WINDOWS;NDEBUG;_USRDLL;BUILD_SETUP;%(PreprocessorDefinitions) - MultiThreaded - Use - Level3 - true - ProgramDatabase - true - true - stdcpp17 - - - NDEBUG;%(PreprocessorDefinitions) - $(IntDir);..\Lib;%(AdditionalIncludeDirectories) - - - oleacc.lib;comctl32.lib;uxtheme.lib;dwmapi.lib;winmm.lib;htmlhelp.lib;wininet.lib;wintrust.lib;crypt32.lib;Netapi32.lib;%(AdditionalDependencies) - .\$(TargetName).def - true - Windows - true - true - - - - - NDEBUG;%(PreprocessorDefinitions) - false - true - ClassicExplorer_i.h - - ClassicExplorer_i.c - ClassicExplorer_p.c - - - MaxSpeed - ..\Lib;%(AdditionalIncludeDirectories) - WIN32;_WINDOWS;NDEBUG;_USRDLL;BUILD_SETUP;%(PreprocessorDefinitions) - MultiThreaded - Use - Level3 - true - ProgramDatabase - true - true - stdcpp17 - - - NDEBUG;%(PreprocessorDefinitions) - $(IntDir);..\Lib;%(AdditionalIncludeDirectories) - - - oleacc.lib;comctl32.lib;uxtheme.lib;dwmapi.lib;winmm.lib;htmlhelp.lib;wininet.lib;wintrust.lib;crypt32.lib;Netapi32.lib;%(AdditionalDependencies) - .\$(TargetName).def - true - Windows - true - true + true @@ -388,7 +131,9 @@ - + + PreserveNewest + @@ -396,7 +141,7 @@ - + diff --git a/Src/ClassicExplorer/ClassicExplorer.vcxproj.filters b/Src/ClassicExplorer/ClassicExplorer.vcxproj.filters index b6c1eadd8..419ebce35 100644 --- a/Src/ClassicExplorer/ClassicExplorer.vcxproj.filters +++ b/Src/ClassicExplorer/ClassicExplorer.vcxproj.filters @@ -114,7 +114,7 @@ Resource Files - + Generated Files @@ -146,4 +146,4 @@ Resource Files - + \ No newline at end of file diff --git a/Src/ClassicExplorer/ClassicExplorerSettings/ClassicExplorerSettings.vcxproj b/Src/ClassicExplorer/ClassicExplorerSettings/ClassicExplorerSettings.vcxproj index 36f0b2fe9..592247fb7 100644 --- a/Src/ClassicExplorer/ClassicExplorerSettings/ClassicExplorerSettings.vcxproj +++ b/Src/ClassicExplorer/ClassicExplorerSettings/ClassicExplorerSettings.vcxproj @@ -18,132 +18,29 @@ {E93271C8-0252-4A08-8227-1978C64C2D34} ClassicExplorerSettings Win32Proj - 10.0.17134.0 + 10.0 - + Application - v141 - Static - Unicode - true - - - Application - v141 - Static - Unicode - true - - - Application - v141 + $(DefaultPlatformToolset) Static Unicode + true - - - - - - - - - - - + + - - ..\$(Configuration)\ - $(Configuration)\ - true - - - ..\$(Configuration)\ - $(Configuration)\ - false - - - ..\$(Configuration)\ - $(Configuration)\ - false - - - - Disabled - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebug - Level3 - true - EditAndContinue - true - true - stdcpp17 - - - _DEBUG;%(PreprocessorDefinitions) - - - shlwapi.lib;comctl32.lib;psapi.lib;%(AdditionalDependencies) - true - Windows - - - - - MaxSpeed - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - MultiThreaded - true - Level3 - true - ProgramDatabase - true - true - stdcpp17 - - - NDEBUG;%(PreprocessorDefinitions) - - - shlwapi.lib;comctl32.lib;psapi.lib;%(AdditionalDependencies) - true - Windows - true - true - - - + - MaxSpeed - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;BUILD_SETUP;%(PreprocessorDefinitions) - MultiThreaded - true - Level3 - true - ProgramDatabase - true - true - stdcpp17 + NotUsing - - NDEBUG;%(PreprocessorDefinitions) - shlwapi.lib;comctl32.lib;psapi.lib;%(AdditionalDependencies) - true - Windows - true - true diff --git a/Src/ClassicExplorer/ExplorerBHO.cpp b/Src/ClassicExplorer/ExplorerBHO.cpp index 9448d8e96..cfd456364 100644 --- a/Src/ClassicExplorer/ExplorerBHO.cpp +++ b/Src/ClassicExplorer/ExplorerBHO.cpp @@ -64,6 +64,9 @@ LRESULT CALLBACK CExplorerBHO::SubclassTreeParentProc( HWND hWnd, UINT uMsg, WPA // - change the tree styles to achieve different looks LRESULT CALLBACK CExplorerBHO::SubclassTreeProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData ) { + if (GetTlsData()->bho == NULL) + return DefSubclassProc(hWnd, uMsg, wParam, lParam); + if (uMsg==TVM_ENSUREVISIBLE && (dwRefData&1)) { // HACK! there is a bug in Win7 Explorer and when the selected folder is expanded for the first time it sends TVM_ENSUREVISIBLE for @@ -240,7 +243,7 @@ LRESULT CALLBACK CExplorerBHO::HookExplorer( int nCode, WPARAM wParam, LPARAM lP if (GetClassName(parent,name,_countof(name)) && _wcsicmp(name,L"CabinetWClass")==0) { DWORD_PTR settings=0; - if (GetWinVersion()==WIN_VER_WIN7 && GetSettingBool(L"FixFolderScroll")) + if (GetSettingBool(L"FixFolderScroll")) settings|=1; SetWindowSubclass(hWnd,SubclassTreeProc,'CLSH',settings); PostMessage(hWnd,TVM_SETEXTENDEDSTYLE,TVS_EX_FADEINOUTEXPANDOS|TVS_EX_AUTOHSCROLL|0x80000000,0); diff --git a/Src/ClassicExplorer/ExplorerBHO.h b/Src/ClassicExplorer/ExplorerBHO.h index e76c18407..83189bb7a 100644 --- a/Src/ClassicExplorer/ExplorerBHO.h +++ b/Src/ClassicExplorer/ExplorerBHO.h @@ -9,7 +9,7 @@ #include #include -#include "ClassicExplorer_i.h" +#include "ClassicExplorer_h.h" #include "ComHelper.h" #include @@ -53,7 +53,7 @@ class ATL_NO_VTABLE CExplorerBHO : m_ZoneWidth=0; } - DECLARE_REGISTRY_RESOURCEID(IDR_EXPLORERBHO) + DECLARE_REGISTRY_RESOURCEID_V2_WITHOUT_MODULE(IDR_EXPLORERBHO, CExplorerBHO) BEGIN_SINK_MAP( CExplorerBHO ) SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_DOCUMENTCOMPLETE, OnDocumentComplete) diff --git a/Src/ClassicExplorer/ExplorerBand.h b/Src/ClassicExplorer/ExplorerBand.h index 54f79988e..ee8af4de9 100644 --- a/Src/ClassicExplorer/ExplorerBand.h +++ b/Src/ClassicExplorer/ExplorerBand.h @@ -6,7 +6,7 @@ #pragma once #include "resource.h" -#include "ClassicExplorer_i.h" +#include "ClassicExplorer_h.h" #include "SettingsParser.h" #include @@ -178,7 +178,7 @@ class ATL_NO_VTABLE CExplorerBand : public: CExplorerBand( void ); - DECLARE_REGISTRY_RESOURCEID(IDR_EXPLORERBAND) + DECLARE_REGISTRY_RESOURCEID_V2_WITHOUT_MODULE(IDR_EXPLORERBAND, CExplorerBand) BEGIN_SINK_MAP( CExplorerBand ) SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_NAVIGATECOMPLETE2, OnNavigateComplete) diff --git a/Src/ClassicExplorer/SettingsUI.cpp b/Src/ClassicExplorer/SettingsUI.cpp index f70b77a5e..458500eba 100644 --- a/Src/ClassicExplorer/SettingsUI.cpp +++ b/Src/ClassicExplorer/SettingsUI.cpp @@ -380,7 +380,7 @@ LRESULT CEditToolbarDlg::OnBrowseLink( WORD wNotifyCode, WORD wID, HWND hWndCtl, { wchar_t text[_MAX_PATH]; GetDlgItemText(IDC_COMBOLINK,text,_countof(text)); - if (BrowseLinkHelper(m_hWnd,text)) + if (BrowseLinkHelper(m_hWnd,text,false)) { SetDlgItemText(IDC_COMBOLINK,text); SendMessage(WM_COMMAND,MAKEWPARAM(IDC_COMBOLINK,CBN_KILLFOCUS)); @@ -621,7 +621,7 @@ void UpdateSettings( void ) UpdateSetting(L"ShowCaption",CComVariant(0),false); HideSetting(L"ShowCaption",true); UpdateSetting(L"ShowIcon",CComVariant(0),false); HideSetting(L"ShowIcon",true); - UpdateSetting(L"FixFolderScroll",CComVariant(0),false); HideSetting(L"FixFolderScroll",true); + UpdateSetting(L"FixFolderScroll",CComVariant(0),false); UpdateSetting(L"ToolbarItems",CComVariant(g_DefaultToolbar2),false); if (GetWinVersion()>=WIN_VER_WIN10) diff --git a/Src/ClassicExplorer/ShareOverlay.h b/Src/ClassicExplorer/ShareOverlay.h index 3ed4d0306..8bb266f7f 100644 --- a/Src/ClassicExplorer/ShareOverlay.h +++ b/Src/ClassicExplorer/ShareOverlay.h @@ -8,7 +8,7 @@ #include "resource.h" // main symbols #include -#include "ClassicExplorer_i.h" +#include "ClassicExplorer_h.h" // CShareOverlay @@ -20,7 +20,7 @@ class ATL_NO_VTABLE CShareOverlay : public: CShareOverlay( void ); - DECLARE_REGISTRY_RESOURCEID(IDR_SHAREOVERLAY) + DECLARE_REGISTRY_RESOURCEID_V2_WITHOUT_MODULE(IDR_SHAREOVERLAY, CShareOverlay) DECLARE_PROTECT_FINAL_CONSTRUCT() diff --git a/Src/ClassicExplorer/dllmain.cpp b/Src/ClassicExplorer/dllmain.cpp index 42adb2eef..d841361ee 100644 --- a/Src/ClassicExplorer/dllmain.cpp +++ b/Src/ClassicExplorer/dllmain.cpp @@ -48,11 +48,6 @@ static int g_LoadDialogs[]= 0 }; -const wchar_t *GetDocRelativePath( void ) -{ - return DOC_PATH; -} - struct FindChild { const wchar_t *className; @@ -110,7 +105,7 @@ static DWORD CALLBACK DllInitThread( void* ) GetModuleFileName(g_Instance,path,_countof(path)); *PathFindFileName(path)=0; wchar_t fname[_MAX_PATH]; - Sprintf(fname,_countof(fname),L"%s" INI_PATH L"ExplorerL10N.ini",path); + Sprintf(fname,_countof(fname),L"%sExplorerL10N.ini",path); CString language=GetSettingString(L"Language"); ParseTranslations(fname,language); diff --git a/Src/ClassicExplorer/dllmain.h b/Src/ClassicExplorer/dllmain.h index 23f88889c..b4920c469 100644 --- a/Src/ClassicExplorer/dllmain.h +++ b/Src/ClassicExplorer/dllmain.h @@ -5,7 +5,7 @@ // dllmain.h : Declaration of module class. #pragma once -#include "ClassicExplorer_i.h" +#include "ClassicExplorer_h.h" #include class CClassicExplorerModule : public CAtlDllModuleT< CClassicExplorerModule > diff --git a/Src/ClassicExplorer/stdafx.h b/Src/ClassicExplorer/stdafx.h index 76735f23e..dc1200470 100644 --- a/Src/ClassicExplorer/stdafx.h +++ b/Src/ClassicExplorer/stdafx.h @@ -10,7 +10,7 @@ #define _ATL_APARTMENT_THREADED #define _ATL_NO_AUTOMATIC_NAMESPACE - +#define _ATL_MODULES // compatibility with /permissive- #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit #include "resource.h" @@ -26,12 +26,4 @@ using namespace ATL; #include #include -#ifdef BUILD_SETUP -#define INI_PATH L"" -#define DOC_PATH L"" -#else -#define INI_PATH L"..\\" -#define DOC_PATH L"..\\..\\Docs\\Help\\" -#endif - #include "StringUtils.h" diff --git a/Src/ClassicIE/ClassicIE.vcxproj b/Src/ClassicIE/ClassicIE.vcxproj index da0b3c1d7..83f8308ba 100644 --- a/Src/ClassicIE/ClassicIE.vcxproj +++ b/Src/ClassicIE/ClassicIE.vcxproj @@ -1,6 +1,10 @@ + + Debug + ARM64 + Debug Win32 @@ -9,6 +13,10 @@ Debug x64 + + Release + ARM64 + Release Win32 @@ -17,6 +25,10 @@ Release x64 + + Setup + ARM64 + Setup Win32 @@ -30,241 +42,38 @@ {65D5C193-E807-4094-AE19-19E6A310A312} ClassicIE Win32Proj - 10.0.17134.0 + 10.0 - - Application - v141 - Static - Unicode - true - - - Application - v141 - Static - Unicode - true - - - Application - v141 - Static - Unicode - - + Application - v141 - Static - Unicode - true - - - Application - v141 - Static - Unicode - true - - - Application - v141 + $(DefaultPlatformToolset) Static Unicode + true - - - - - - - - - - - - - - - - - - - - - - - + + - - $(Configuration)\ - $(Configuration)\ - true + $(ProjectName)_32 - - $(Configuration)64\ - $(Configuration)64\ - true + $(ProjectName)_64 - - $(Configuration)\ - $(Configuration)\ - false - $(ProjectName)_32 - - - $(Configuration)64\ - $(Configuration)64\ - false - $(ProjectName)_64 - - - $(Configuration)\ - $(Configuration)\ - false - $(ProjectName)_32 - - - $(Configuration)64\ - $(Configuration)64\ - false + $(ProjectName)_64 - - - Disabled - ..\Lib;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebug - NotUsing - Level3 - EditAndContinue - true - true - stdcpp17 - - - shlwapi.lib;comctl32.lib;psapi.lib;%(AdditionalDependencies) - true - Windows - - - - - Disabled - ..\Lib;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebug - NotUsing - Level3 - ProgramDatabase - true - true - stdcpp17 - - - shlwapi.lib;comctl32.lib;psapi.lib;%(AdditionalDependencies) - true - Windows - - - - - MaxSpeed - ..\Lib;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - MultiThreaded - true - NotUsing - Level3 - ProgramDatabase - true - true - stdcpp17 - - - shlwapi.lib;comctl32.lib;psapi.lib;%(AdditionalDependencies) - true - Windows - true - true - - - - - MaxSpeed - ..\Lib;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - MultiThreaded - true - NotUsing - Level3 - ProgramDatabase - true - true - stdcpp17 - - - shlwapi.lib;comctl32.lib;psapi.lib;%(AdditionalDependencies) - true - Windows - true - true - - - - - MaxSpeed - ..\Lib;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;BUILD_SETUP;%(PreprocessorDefinitions) - MultiThreaded - true - NotUsing - Level3 - ProgramDatabase - true - true - stdcpp17 - - - shlwapi.lib;comctl32.lib;psapi.lib;%(AdditionalDependencies) - true - Windows - true - true - - - + - MaxSpeed - ..\Lib;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - MultiThreaded - true NotUsing - Level3 - ProgramDatabase - true - true - stdcpp17 shlwapi.lib;comctl32.lib;psapi.lib;%(AdditionalDependencies) - true - Windows - true - true diff --git a/Src/ClassicIE/ClassicIEDLL/ClassicIEBHO.cpp b/Src/ClassicIE/ClassicIEDLL/ClassicIEBHO.cpp index 2393f56a2..5322fcf92 100644 --- a/Src/ClassicIE/ClassicIEDLL/ClassicIEBHO.cpp +++ b/Src/ClassicIE/ClassicIEDLL/ClassicIEBHO.cpp @@ -3,7 +3,7 @@ // Confidential information of Ivo Beltchev. Not for disclosure or distribution without prior written consent from the author #include "stdafx.h" -#include "ClassicIEDLL_i.h" +#include "ClassicIEDLL_h.h" #include "ClassicIEBHO.h" #include "ClassicIEDLL.h" #include "Settings.h" diff --git a/Src/ClassicIE/ClassicIEDLL/ClassicIEDLL.cpp b/Src/ClassicIE/ClassicIEDLL/ClassicIEDLL.cpp index b35fd84ee..733d11564 100644 --- a/Src/ClassicIE/ClassicIEDLL/ClassicIEDLL.cpp +++ b/Src/ClassicIE/ClassicIEDLL/ClassicIEDLL.cpp @@ -4,7 +4,7 @@ #include "stdafx.h" #include "resource.h" -#include "ClassicIEDLL_i.h" +#include "ClassicIEDLL_h.h" #include "ClassicIEDLL.h" #include "Settings.h" #include "dllmain.h" diff --git a/Src/ClassicIE/ClassicIEDLL/ClassicIEDLL.rc b/Src/ClassicIE/ClassicIEDLL/ClassicIEDLL.rc index 9d163d852..cd2e5dfd0 100644 --- a/Src/ClassicIE/ClassicIEDLL/ClassicIEDLL.rc +++ b/Src/ClassicIE/ClassicIEDLL/ClassicIEDLL.rc @@ -135,17 +135,17 @@ BEGIN IDS_LANGUAGE_SETTINGS "Language" IDS_CAPTION_FONT "Caption font" IDS_CAPTION_FONT_TIP "Select the font and text size to use for the caption" - IDS_TEXT_COLOR "Text color" + IDS_TEXT_COLOR "Text color (RRGGBB)" IDS_TEXT_COLOR_TIP "Select the color for the caption text" - IDS_MAXTEXT_COLOR "Text color (maximized)" + IDS_MAXTEXT_COLOR "Text color (maximized) (RRGGBB)" IDS_MAXTEXT_COLOR_TIP "Select the color for the caption text when the window is maximized" - IDS_INTEXT_COLOR "Text color (inactive)" + IDS_INTEXT_COLOR "Text color (inactive) (RRGGBB)" IDS_INTEXT_COLOR_TIP "Select the color for the caption text when the window is inactive" - IDS_MAXINTEXT_COLOR "Text color (maximized, inactive)" + IDS_MAXINTEXT_COLOR "Text color (maximized, inactive) (RRGGBB)" IDS_MAXINTEXT_COLOR_TIP "Select the color for the caption text when the window is maximized and inactive" IDS_GLOW "Text glow" IDS_GLOW_TIP "When this is checked, the text will have a glow around it" - IDS_GLOW_COLOR "Glow color" + IDS_GLOW_COLOR "Glow color (RRGGBB)" IDS_GLOW_COLOR_TIP "Select the color for the caption glow" END @@ -153,7 +153,7 @@ STRINGTABLE BEGIN IDS_MAXGLOW "Text glow (maximized)" IDS_MAXGLOW_TIP "When this is checked, the text in the maximized window will have a glow around it" - IDS_MAXGLOW_COLOR "Glow color (maximized)" + IDS_MAXGLOW_COLOR "Glow color (maximized) (RRGGBB)" IDS_MAXGLOW_COLOR_TIP "Select the color for the caption glow when the window is maximized" IDS_STATUS_SETTINGS "Status Bar" IDS_SHOW_PROGRESS "Show progress" diff --git a/Src/ClassicIE/ClassicIEDLL/ClassicIEDLL.vcxproj b/Src/ClassicIE/ClassicIEDLL/ClassicIEDLL.vcxproj index bde3ba4bf..10ea42734 100644 --- a/Src/ClassicIE/ClassicIEDLL/ClassicIEDLL.vcxproj +++ b/Src/ClassicIE/ClassicIEDLL/ClassicIEDLL.vcxproj @@ -1,6 +1,14 @@ + + Debug + ARM64 + + + Debug + ARM64EC + Debug Win32 @@ -9,6 +17,14 @@ Debug x64 + + Release + ARM64 + + + Release + ARM64EC + Release Win32 @@ -17,6 +33,14 @@ Release x64 + + Setup + ARM64 + + + Setup + ARM64EC + Setup Win32 @@ -30,322 +54,52 @@ {BC0E6E7C-08C1-4F12-A754-4608E5A22FA8} ClassicIEDLL AtlProj - 10.0.17134.0 + 10.0 - - DynamicLibrary - v141 - Static - Unicode - true - - + DynamicLibrary - v141 - Static - Unicode - true - - - DynamicLibrary - v141 - Static - Unicode - - - DynamicLibrary - v141 - Static - Unicode - true - - - DynamicLibrary - v141 - Static - Unicode - true - - - DynamicLibrary - v141 + $(DefaultPlatformToolset) Static Unicode + true - - - - - - - - - - - - - - - - - - - - - - - + + - - ..\$(Configuration)\ - $(Configuration)\ - true + $(ProjectName)_32 - - ..\$(Configuration)64\ - $(Configuration)64\ - true + $(ProjectName)_64 - - ..\$(Configuration)\ - $(Configuration)\ - false - $(ProjectName)_32 - - - ..\$(Configuration)64\ - $(Configuration)64\ - false + $(ProjectName)_64 - - ..\$(Configuration)\ - $(Configuration)\ - false - $(ProjectName)_32 - - - ..\$(Configuration)64\ - $(Configuration)64\ - false + $(ProjectName)_64 + true - - - _DEBUG;%(PreprocessorDefinitions) - false - true - ClassicIEDLL_i.h - - ClassicIEDLL_i.c - ClassicIEDLL_p.c - true - + - Disabled - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;_WINDOWS;_DEBUG;_USRDLL;CLASSICIEDLL_EXPORTS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebug - Use - Level3 - EditAndContinue - true - stdcpp17 + _USRDLL;CLASSICIEDLL_EXPORTS;%(PreprocessorDefinitions) - _DEBUG;%(PreprocessorDefinitions) - $(IntDir);..\..\Lib;%(AdditionalIncludeDirectories) + $(IntDir);%(AdditionalIncludeDirectories) - true - uxtheme.lib;dwmapi.lib;comctl32.lib;msimg32.lib;winmm.lib;htmlhelp.lib;wininet.lib;wintrust.lib;crypt32.lib;%(AdditionalDependencies) - .\$(TargetName).def - true - Windows - - - - - _DEBUG;%(PreprocessorDefinitions) - false - true - ClassicIEDLL_i.h - - ClassicIEDLL_i.c - ClassicIEDLL_p.c - - - Disabled - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;_WINDOWS;_DEBUG;_USRDLL;CLASSICIEDLL_EXPORTS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebug - Use - Level3 - ProgramDatabase - true - stdcpp17 - - - _DEBUG;%(PreprocessorDefinitions) - $(IntDir);..\..\Lib;%(AdditionalIncludeDirectories) - - - true uxtheme.lib;dwmapi.lib;comctl32.lib;msimg32.lib;winmm.lib;htmlhelp.lib;wininet.lib;wintrust.lib;crypt32.lib;%(AdditionalDependencies) - .\$(TargetName).def - true - Windows + $(TargetName).def - - - NDEBUG;%(PreprocessorDefinitions) - false - true - ClassicIEDLL_i.h - - ClassicIEDLL_i.c - ClassicIEDLL_p.c - true - - - MaxSpeed - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;_WINDOWS;NDEBUG;_USRDLL;CLASSICIEDLL_EXPORTS;%(PreprocessorDefinitions) - MultiThreaded - Use - Level3 - ProgramDatabase - true - stdcpp17 - - - NDEBUG;%(PreprocessorDefinitions) - $(IntDir);..\..\Lib;%(AdditionalIncludeDirectories) - - - true - uxtheme.lib;dwmapi.lib;comctl32.lib;msimg32.lib;winmm.lib;htmlhelp.lib;wininet.lib;wintrust.lib;crypt32.lib;%(AdditionalDependencies) - .\$(TargetName).def - true - Windows - true - true - - - - - NDEBUG;%(PreprocessorDefinitions) - false - true - ClassicIEDLL_i.h - - ClassicIEDLL_i.c - ClassicIEDLL_p.c - - - MaxSpeed - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;_WINDOWS;NDEBUG;_USRDLL;CLASSICIEDLL_EXPORTS;%(PreprocessorDefinitions) - MultiThreaded - Use - Level3 - ProgramDatabase - true - stdcpp17 - - - NDEBUG;%(PreprocessorDefinitions) - $(IntDir);..\..\Lib;%(AdditionalIncludeDirectories) - + true - uxtheme.lib;dwmapi.lib;comctl32.lib;msimg32.lib;winmm.lib;htmlhelp.lib;wininet.lib;wintrust.lib;crypt32.lib;%(AdditionalDependencies) - .\$(TargetName).def - true - Windows - true - true - - - - - NDEBUG;%(PreprocessorDefinitions) - false - true - ClassicIEDLL_i.h - - ClassicIEDLL_i.c - ClassicIEDLL_p.c - true - - - MaxSpeed - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;_WINDOWS;NDEBUG;_USRDLL;CLASSICIEDLL_EXPORTS;BUILD_SETUP;%(PreprocessorDefinitions) - MultiThreaded - Use - Level3 - ProgramDatabase - true - stdcpp17 - - - NDEBUG;%(PreprocessorDefinitions) - $(IntDir);..\..\Lib;%(AdditionalIncludeDirectories) - - - uxtheme.lib;dwmapi.lib;comctl32.lib;msimg32.lib;winmm.lib;htmlhelp.lib;wininet.lib;wintrust.lib;crypt32.lib;%(AdditionalDependencies) - .\$(TargetName).def - true - Windows - true - true - - - - - NDEBUG;%(PreprocessorDefinitions) - false - true - ClassicIEDLL_i.h - - ClassicIEDLL_i.c - ClassicIEDLL_p.c - - - MaxSpeed - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;_WINDOWS;NDEBUG;_USRDLL;CLASSICIEDLL_EXPORTS;BUILD_SETUP;%(PreprocessorDefinitions) - MultiThreaded - Use - Level3 - ProgramDatabase - true - stdcpp17 - - - NDEBUG;%(PreprocessorDefinitions) - $(IntDir);..\..\Lib;%(AdditionalIncludeDirectories) - - - uxtheme.lib;dwmapi.lib;comctl32.lib;msimg32.lib;winmm.lib;htmlhelp.lib;wininet.lib;wintrust.lib;crypt32.lib;%(AdditionalDependencies) - .\$(TargetName).def - true - Windows - true - true + true @@ -373,7 +127,7 @@ - + diff --git a/Src/ClassicIE/ClassicIEDLL/ClassicIEDLL.vcxproj.filters b/Src/ClassicIE/ClassicIEDLL/ClassicIEDLL.vcxproj.filters index ccca6f6ce..8f49852ad 100644 --- a/Src/ClassicIE/ClassicIEDLL/ClassicIEDLL.vcxproj.filters +++ b/Src/ClassicIE/ClassicIEDLL/ClassicIEDLL.vcxproj.filters @@ -81,7 +81,7 @@ Header Files - + Generated Files @@ -98,4 +98,4 @@ Resource Files - + \ No newline at end of file diff --git a/Src/ClassicIE/ClassicIEDLL/dllmain.cpp b/Src/ClassicIE/ClassicIEDLL/dllmain.cpp index 5efa436ef..e412d20f4 100644 --- a/Src/ClassicIE/ClassicIEDLL/dllmain.cpp +++ b/Src/ClassicIE/ClassicIEDLL/dllmain.cpp @@ -33,11 +33,6 @@ static int g_LoadDialogs[]= 0 }; -const wchar_t *GetDocRelativePath( void ) -{ - return DOC_PATH; -} - static void NewVersionCallback( VersionData &data ) { wchar_t path[_MAX_PATH]; diff --git a/Src/ClassicIE/ClassicIEDLL/dllmain.h b/Src/ClassicIE/ClassicIEDLL/dllmain.h index 26a8c3302..fe6990f3d 100644 --- a/Src/ClassicIE/ClassicIEDLL/dllmain.h +++ b/Src/ClassicIE/ClassicIEDLL/dllmain.h @@ -4,7 +4,7 @@ #pragma once -#include "ClassicIEDLL_i.h" +#include "ClassicIEDLL_h.h" class CClassicIEDLLModule : public CAtlDllModuleT< CClassicIEDLLModule > { diff --git a/Src/ClassicIE/ClassicIEDLL/stdafx.h b/Src/ClassicIE/ClassicIEDLL/stdafx.h index 57d4d826a..2fb5411ff 100644 --- a/Src/ClassicIE/ClassicIEDLL/stdafx.h +++ b/Src/ClassicIE/ClassicIEDLL/stdafx.h @@ -13,7 +13,7 @@ #define ISOLATION_AWARE_ENABLED 1 #define _ATL_APARTMENT_THREADED #define _ATL_NO_AUTOMATIC_NAMESPACE - +#define _ATL_MODULES // compatibility with /permissive- #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit #include "resource.h" @@ -24,12 +24,4 @@ using namespace ATL; -#ifdef BUILD_SETUP -#define INI_PATH L"" -#define DOC_PATH L"" -#else -#define INI_PATH L"..\\" -#define DOC_PATH L"..\\..\\Docs\\Help\\" -#endif - #include "StringUtils.h" diff --git a/Src/Common.props b/Src/Common.props new file mode 100644 index 000000000..2a0a2ceee --- /dev/null +++ b/Src/Common.props @@ -0,0 +1,99 @@ + + + + + + + 4.4.1000 + + + + + $(MSBuildThisFileDirectory)..\build\bin\$(Configuration)\ + $(MSBuildThisFileDirectory)..\build\obj\$(ProjectName)\$(Configuration)\ + + + $(MSBuildThisFileDirectory)..\build\bin\$(Configuration)64\ + $(MSBuildThisFileDirectory)..\build\obj\$(ProjectName)\$(Configuration)64\ + + + $(MSBuildThisFileDirectory)..\build\bin\$(Configuration)ARM64\ + $(MSBuildThisFileDirectory)..\build\obj\$(ProjectName)\$(Configuration)ARM64\ + + + $(MSBuildThisFileDirectory)..\build\bin\$(Configuration)ARM64EC\ + $(MSBuildThisFileDirectory)..\build\obj\$(ProjectName)\$(Configuration)ARM64EC\ + + + + + + $(MSBuildThisFileDirectory)Lib;%(AdditionalIncludeDirectories) + WIN32;_WINDOWS;%(PreprocessorDefinitions) + Use + Level3 + true + true + stdcpp17 + + + false + true + true + + + true + Windows + + + $(MSBuildThisFileDirectory)Lib;%(AdditionalIncludeDirectories) + _PRODUCT_VERSION=$(CS_VERSION.Replace('.', ',')),0;_PRODUCT_VERSION_STR=\"$(CS_VERSION_ORIG)\";%(PreprocessorDefinitions) + + + + + + + Disabled + _DEBUG;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + EditAndContinue + + + _DEBUG;%(PreprocessorDefinitions) + + + _DEBUG;%(PreprocessorDefinitions) + + + + + + + MaxSpeed + NDEBUG;%(PreprocessorDefinitions) + MultiThreaded + true + ProgramDatabase + + + NDEBUG;%(PreprocessorDefinitions) + + + NDEBUG;%(PreprocessorDefinitions) + + + true + true + + + + + + BUILD_SETUP;%(PreprocessorDefinitions) + + + + + diff --git a/Src/Lib/ComHelper.h b/Src/Lib/ComHelper.h index 75fab1c15..3a2a4eb4c 100644 --- a/Src/Lib/ComHelper.h +++ b/Src/Lib/ComHelper.h @@ -14,6 +14,7 @@ class CAbsolutePidl CAbsolutePidl( const CAbsolutePidl &pidl ) { m_Pidl=pidl?ILCloneFull(pidl):NULL; } ~CAbsolutePidl( void ) { Clear(); } void operator=( const CAbsolutePidl &pidl ) { Clone(pidl); } + void operator=( PCIDLIST_ABSOLUTE pidl ) { Clone(pidl); } void Clear( void ) { if (m_Pidl) ILFree(m_Pidl); m_Pidl=NULL; } operator PIDLIST_ABSOLUTE( void ) const { return m_Pidl; } @@ -21,7 +22,7 @@ class CAbsolutePidl void Swap( CAbsolutePidl &pidl ) { PIDLIST_ABSOLUTE q=pidl.m_Pidl; pidl.m_Pidl=m_Pidl; m_Pidl=q; } void Attach( PIDLIST_ABSOLUTE pidl ) { Clear(); m_Pidl=pidl; } PIDLIST_ABSOLUTE Detach( void ) { PIDLIST_ABSOLUTE pidl=m_Pidl; m_Pidl=NULL; return pidl; } - void Clone( PIDLIST_ABSOLUTE pidl ) { Clear(); m_Pidl=pidl?ILCloneFull(pidl):NULL; } + void Clone( PCIDLIST_ABSOLUTE pidl ) { Clear(); m_Pidl=pidl?ILCloneFull(pidl):NULL; } private: PIDLIST_ABSOLUTE m_Pidl; diff --git a/Src/Lib/DownloadHelper.cpp b/Src/Lib/DownloadHelper.cpp index e3575b8fe..e610fda2d 100644 --- a/Src/Lib/DownloadHelper.cpp +++ b/Src/Lib/DownloadHelper.cpp @@ -4,7 +4,6 @@ #include #include "resource.h" -#include "..\Setup\UpdateBin\resource.h" #include "DownloadHelper.h" #include "Settings.h" #include "SettingsUIHelper.h" @@ -14,6 +13,7 @@ #include "FNVHash.h" #include "StringUtils.h" #include "Translations.h" +#include #include #include @@ -141,30 +141,9 @@ LRESULT CProgressDlg::OnCancel( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& static bool g_bCheckingVersion; -static DWORD GetTimeStamp( const wchar_t *fname ) -{ - HANDLE h=CreateFile(fname,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); - if (h==INVALID_HANDLE_VALUE) - return 0; - DWORD res=0; - DWORD q; - IMAGE_DOS_HEADER header; - if (ReadFile(h,&header,sizeof(header),&q,NULL) && q==sizeof(header)) - { - if (SetFilePointer(h,header.e_lfanew+8,NULL,FILE_BEGIN)!=INVALID_SET_FILE_POINTER) - { - if (!ReadFile(h,&res,4,&q,NULL) || q!=4) - res=0; - } - } - CloseHandle(h); - return res; -} - enum TDownloadResult { DOWNLOAD_OK, - DOWNLOAD_SAMETIME, DOWNLOAD_CANCEL, // errors @@ -176,8 +155,7 @@ enum TDownloadResult // Downloads a file // filename - returns the name of the downloaded file -// timestamp - if not zero, it is compared to the timestamp of the file and returns DOWNLOAD_SAMETIME if the same (and buf will be empty) -static TDownloadResult DownloadFile( const wchar_t *url, std::vector &buf, CString *pFilename, DWORD timestamp, bool bAcceptCached, CProgressDlg *pProgress, TSettingsComponent component ) +static TDownloadResult DownloadFile( const wchar_t *url, std::vector &buf, CString *pFilename, bool bAcceptCached, CProgressDlg *pProgress, TSettingsComponent component ) { const wchar_t *compName=L"Open-Shell"; switch (component) @@ -211,15 +189,16 @@ static TDownloadResult DownloadFile( const wchar_t *url, std::vector &buf, int time=GetTickCount(); if (pProgress) pProgress->SetText(LoadStringEx(IDS_PROGRESS_CONNECT)); - HINTERNET hConnect=InternetConnect(hInternet,host,INTERNET_DEFAULT_HTTP_PORT,L"",L"",INTERNET_SERVICE_HTTP,0,0); + HINTERNET hConnect=InternetConnect(hInternet,host,components.nPort,L"",L"",INTERNET_SERVICE_HTTP,0,0); if (hConnect) { if (pProgress && pProgress->IsCanceled()) res=DOWNLOAD_CANCEL; - const wchar_t *accept[]={L"*/*",NULL}; + if (res==DOWNLOAD_OK) { - HINTERNET hRequest=HttpOpenRequest(hConnect,L"GET",file,NULL,NULL,accept,bAcceptCached?0:INTERNET_FLAG_RELOAD,0); + const wchar_t* accept[] = { L"*/*",NULL }; + HINTERNET hRequest=HttpOpenRequest(hConnect,L"GET",file,NULL,NULL,accept,((components.nScheme==INTERNET_SCHEME_HTTPS)?INTERNET_FLAG_SECURE:0)|(bAcceptCached?0:INTERNET_FLAG_RELOAD),0); if (hRequest) { if (pProgress && pProgress->IsCanceled()) @@ -264,7 +243,7 @@ static TDownloadResult DownloadFile( const wchar_t *url, std::vector &buf, if (fileSize==0) pProgress->SetProgress(-1); } - int CHUNK_SIZE=timestamp?1024:32768; // start with small chunk to verify the timestamp + int CHUNK_SIZE=32768; DWORD size=0; buf.reserve(fileSize+CHUNK_SIZE); while (1) @@ -286,25 +265,6 @@ static TDownloadResult DownloadFile( const wchar_t *url, std::vector &buf, size+=dwSize; if (pProgress && fileSize) pProgress->SetProgress(size*100/fileSize); - if (timestamp && (size=sizeof(IMAGE_DOS_HEADER)) - { - DWORD pos=((IMAGE_DOS_HEADER*)&buf[0])->e_lfanew+8; - if (size>=pos+4) - { - if (timestamp==*(DWORD*)&buf[pos]) - { - res=DOWNLOAD_SAMETIME; - break; - } - timestamp=0; - CHUNK_SIZE=32768; - } - } } buf.resize(size); } @@ -358,6 +318,7 @@ struct VersionCheckParams TSettingsComponent component; tNewVersionCallback callback; CProgressDlg *progress; + bool nightly = false; }; // 0 - fail, 1 - success, 2 - cancel @@ -377,80 +338,17 @@ static DWORD WINAPI ThreadVersionCheck( void *param ) return 0; } DWORD curVersion=GetVersionEx(g_Instance); - regKey.SetDWORDValue(L"LastUpdateVersion",curVersion); - - // download file - wchar_t fname[_MAX_PATH]=L"%ALLUSERSPROFILE%\\OpenShell"; - DoEnvironmentSubst(fname,_countof(fname)); - SHCreateDirectory(NULL,fname); - PathAppend(fname,L"update.ver"); - bool res=false; - CString urlBase=LoadStringEx(IDS_VERSION_URL); + bool res = false; VersionData data; - data.Clear(); - if (data.Load(fname,false)==VersionData::LOAD_OK) - { - if (!data.altUrl.IsEmpty()) - urlBase=data.altUrl; - WIN32_FILE_ATTRIBUTE_DATA attr; - if (GetFileAttributesEx(fname,GetFileExInfoStandard,&attr)) - { - DWORD writeTime=(DWORD)(((((ULONGLONG)attr.ftLastWriteTime.dwHighDateTime)<<32)|attr.ftLastWriteTime.dwLowDateTime)/TIME_DIVISOR); - if (curTime>writeTime && (curTime-writeTime)>24,(curVersion>>16)&0xFF,curVersion&0xFFFF); - - #ifdef UPDATE_LOG - LogToFile(UPDATE_LOG,L"URL: %s",url); - #endif - - std::vector buf; - TDownloadResult download=DownloadFile(url,buf,NULL,GetTimeStamp(fname),false,params.progress,params.component); - #ifdef UPDATE_LOG - LogToFile(UPDATE_LOG,L"Download result: %d",download); - #endif - if (download==DOWNLOAD_CANCEL) - { - g_bCheckingVersion=false; - return 2; - } + auto load = data.Load(!params.nightly); - if (downloadSetText(LoadStringEx(IDS_PROGRESS_VERIFY)); - params.progress->SetProgress(-1); - } - VersionData::TLoadResult load=data.Load(fname,false); - #ifdef UPDATE_LOG - LogToFile(UPDATE_LOG,L"Load result: %d",load); - #endif - if (load==VersionData::LOAD_BAD_FILE) - DeleteFile(fname); - res=(load==VersionData::LOAD_OK); - } - } +#ifdef UPDATE_LOG + LogToFile(UPDATE_LOG, L"Load result: %d", load); +#endif + res = (load == VersionData::LOAD_OK); } curTime+=(rand()*TIME_PRECISION)/(RAND_MAX+1)-(TIME_PRECISION/2); // add between -30 and 30 minutes to randomize access @@ -472,60 +370,6 @@ static DWORD WINAPI ThreadVersionCheck( void *param ) data.bNewVersion=(data.newVersion>curVersion); data.bIgnoreVersion=(data.bNewVersion && data.newVersion<=remindedVersion); } - { - wchar_t languages[100]={0}; - CString language2=GetSettingString(L"Language"); - if (!language2.IsEmpty()) - { - Strcpy(languages,_countof(languages)-1,language2); - } - else - { - ULONG size=0; - ULONG len=_countof(languages); - GetUserPreferredUILanguages(MUI_LANGUAGE_NAME,&size,languages,&len); - } - - bool bNewLanguage=false; - for (wchar_t *lang=languages;*lang;lang+=Strlen(lang)+1) - { - if (_wcsicmp(lang,L"en")==0 || _wcsnicmp(lang,L"en-",3)==0) - break; // English - DWORD dllVersion=0, dllBuild=0; - HINSTANCE resInstance=LoadTranslationDll(lang); - if (resInstance) - { - dllVersion=GetVersionEx(resInstance,&dllBuild); - FreeLibrary(resInstance); - } - - DWORD newVersion=0, newBuild=0; - for (std::vector::const_iterator it=data.languages.begin();it!=data.languages.end();++it) - { - if (_wcsicmp(it->language,lang)==0) - { - newVersion=it->version; - newBuild=it->build; - break; - } - } - if (newVersion==0) - continue; - - if (newVersion>dllVersion || (newVersion==dllVersion && newBuild>dllBuild)) - { - // a new DLL for this language exists - data.bNewLanguage=true; - data.newLanguage=lang; - data.encodedLangVersion=(newVersion&0xFFFF0000)|((newVersion&0xFF)<<8)|(newBuild&0xFF); - DWORD remindedVersion; - if (regKey.QueryDWORDValue(L"RemindedLangVersion",remindedVersion)!=ERROR_SUCCESS) - remindedVersion=0; - data.bIgnoreLanguage=(data.encodedLangVersion<=remindedVersion); - } - break; - } - } data.bValid=true; if (params.check==CHECK_UPDATE) @@ -534,7 +378,7 @@ static DWORD WINAPI ThreadVersionCheck( void *param ) g_bCheckingVersion=false; return 1; } - if ((data.bNewVersion && !data.bIgnoreVersion) || (data.bNewLanguage && !data.bIgnoreLanguage)) + if (data.bNewVersion && !data.bIgnoreVersion) params.callback(data); g_bCheckingVersion=false; return 0; @@ -553,6 +397,21 @@ DWORD CheckForNewVersion( HWND owner, TSettingsComponent component, TVersionChec params->callback=callback; params->progress=NULL; + // check the Update setting (uses the current value in the registry, not the one from memory + { + CRegKey regSettings, regSettingsUser, regPolicy, regPolicyUser; + bool bUpgrade = OpenSettingsKeys(COMPONENT_SHARED, regSettings, regSettingsUser, regPolicy, regPolicyUser); + + CSetting settings[] = { + {L"Nightly",CSetting::TYPE_BOOL,0,0,0}, + {NULL} + }; + + settings[0].LoadValue(regSettings, regSettingsUser, regPolicy, regPolicyUser); + + params->nightly = GetSettingBool(settings[0]); + } + if (!owner) return ThreadVersionCheck(params); @@ -583,57 +442,38 @@ DWORD CheckForNewVersion( HWND owner, TSettingsComponent component, TVersionChec } else { - DWORD buildTime=0; - { - // skip the update if the update component is not found - wchar_t path[_MAX_PATH]; - GetModuleFileName(_AtlBaseModule.GetModuleInstance(),path,_countof(path)); - PathRemoveFileSpec(path); - PathAppend(path,L"Update.exe"); - - WIN32_FILE_ATTRIBUTE_DATA attr; - if (!GetFileAttributesEx(path,GetFileExInfoStandard,&attr)) - return 0; - - buildTime=(DWORD)(((((ULONGLONG)attr.ftCreationTime.dwHighDateTime)<<32)|attr.ftCreationTime.dwLowDateTime)/TIME_DIVISOR); // in 0.01 hours - } - ULONGLONG curTimeL; GetSystemTimeAsFileTime((FILETIME*)&curTimeL); DWORD curTime=(DWORD)(curTimeL/TIME_DIVISOR); // in 0.01 hours - if (curTime-buildTime>24*365*TIME_PRECISION) - return 0; // the build is more than a year old, don't do automatic updates CRegKey regKey; if (regKey.Open(HKEY_CURRENT_USER,L"Software\\OpenShell\\OpenShell")!=ERROR_SUCCESS) regKey.Create(HKEY_CURRENT_USER,L"Software\\OpenShell\\OpenShell"); - DWORD lastVersion; - if (regKey.QueryDWORDValue(L"LastUpdateVersion",lastVersion)!=ERROR_SUCCESS) - lastVersion=0; - if (lastVersion==GetVersionEx(g_Instance)) - { - DWORD lastTime; - if (regKey.QueryDWORDValue(L"LastUpdateTime",lastTime)!=ERROR_SUCCESS) - lastTime=0; - if ((int)(curTime-lastTime)<168*TIME_PRECISION) - return 0; // check weekly - } + DWORD lastTime; + if (regKey.QueryDWORDValue(L"LastUpdateTime",lastTime)!=ERROR_SUCCESS) + lastTime=0; + if ((int)(curTime-lastTime)<168*TIME_PRECISION) + return 0; // check weekly // check the Update setting (uses the current value in the registry, not the one from memory + bool nightly = false; { CRegKey regSettings, regSettingsUser, regPolicy, regPolicyUser; bool bUpgrade=OpenSettingsKeys(COMPONENT_SHARED,regSettings,regSettingsUser,regPolicy,regPolicyUser); CSetting settings[]={ {L"Update",CSetting::TYPE_BOOL,0,0,1}, + {L"Nightly",CSetting::TYPE_BOOL,0,0,0}, {NULL} }; settings[0].LoadValue(regSettings,regSettingsUser,regPolicy,regPolicyUser); + settings[1].LoadValue(regSettings,regSettingsUser,regPolicy,regPolicyUser); if (!GetSettingBool(settings[0])) - return 0; + return 0; + nightly = GetSettingBool(settings[1]); } VersionCheckParams *params=new VersionCheckParams; @@ -641,6 +481,7 @@ DWORD CheckForNewVersion( HWND owner, TSettingsComponent component, TVersionChec params->component=component; params->callback=callback; params->progress=NULL; + params->nightly=nightly; g_bCheckingVersion=true; if (check==CHECK_AUTO_WAIT) @@ -680,39 +521,6 @@ static CString LoadStringEx( HMODULE hModule, int stringId, int langId ) return res; } -static BOOL CALLBACK EnumStringLanguages( HMODULE hModule, LPCTSTR lpszType, LPCTSTR lpszName, WORD wIDLanguage, LONG_PTR lParam ) -{ - VersionData &data=*(VersionData*)lParam; - CString url=LoadStringEx(hModule,IDS_LNG_URL,wIDLanguage); - if (url.IsEmpty()) return TRUE; - CString ver=LoadStringEx(hModule,IDS_LNG_VERSION,wIDLanguage); - if (ver.IsEmpty()) return TRUE; - CString crc=LoadStringEx(hModule,IDS_LNG_CRC,wIDLanguage); - if (crc.IsEmpty()) return TRUE; - - LanguageVersionData langData; - langData.bBasic=(ver[ver.GetLength()-1]=='*'); - - int v1, v2, v3, v4; - if (swscanf_s(ver,L"%d.%d.%d.%d",&v1,&v2,&v3,&v4)==4) - { - wchar_t buf[100]; - if (GetLocaleInfo(wIDLanguage,LOCALE_SNAME,buf,_countof(buf))) - { - langData.languageId=wIDLanguage; - langData.language=buf; - langData.version=(v1<<24)|(v2<<16)|v3; - langData.build=v4; - langData.url=url; - wchar_t *q; - langData.hash=wcstoul(crc,&q,16); - data.languages.push_back(langData); - } - } - - return TRUE; -} - static bool VerifyDigitalCertificate( const wchar_t *fname, const wchar_t *signer ) { // verify the certificate @@ -814,101 +622,130 @@ static bool VerifyDigitalCertificate( const wchar_t *fname, const wchar_t *signe void VersionData::Clear( void ) { bValid=false; - newVersion=encodedLangVersion=0; + newVersion=0; downloadUrl.Empty(); downloadSigner.Empty(); news.Empty(); - updateLink.Empty(); - languageLink.Empty(); - altUrl.Empty(); - bNewVersion=bIgnoreVersion=bNewLanguage=bIgnoreLanguage=false; - newLanguage.Empty(); - for (std::vector::iterator it=languages.begin();it!=languages.end();++it) - if (it->bitmap) - DeleteObject(it->bitmap); - languages.clear(); + updateLink="https://github.com/Open-Shell/Open-Shell-Menu/releases"; + bNewVersion=bIgnoreVersion=false; } void VersionData::Swap( VersionData &data ) { std::swap(bValid,data.bValid); std::swap(newVersion,data.newVersion); - std::swap(encodedLangVersion,data.encodedLangVersion); std::swap(downloadUrl,data.downloadUrl); std::swap(downloadSigner,data.downloadSigner); std::swap(news,data.news); std::swap(updateLink,data.updateLink); - std::swap(languageLink,data.languageLink); - std::swap(altUrl,data.altUrl); std::swap(bNewVersion,data.bNewVersion); std::swap(bIgnoreVersion,data.bIgnoreVersion); - std::swap(bNewLanguage,data.bNewLanguage); - std::swap(bIgnoreLanguage,data.bIgnoreLanguage); - std::swap(newLanguage,data.newLanguage); - std::swap(languages,data.languages); } -VersionData::TLoadResult VersionData::Load( const wchar_t *fname, bool bLoadFlags ) +std::vector DownloadUrl(const wchar_t* url) +{ +#ifdef UPDATE_LOG + LogToFile(UPDATE_LOG, L"URL: %s", url); +#endif + + std::vector buffer; + TDownloadResult download = DownloadFile(url, buffer, nullptr, false, nullptr, COMPONENT_UPDATE); + +#ifdef UPDATE_LOG + LogToFile(UPDATE_LOG, L"Download result: %d", download); +#endif + + if (download != DOWNLOAD_OK) + buffer.clear(); + + return buffer; +} + +using namespace nlohmann; + +VersionData::TLoadResult VersionData::Load(bool official) { Clear(); - if (!VerifyDigitalCertificate(fname,L"Ivaylo Beltchev")) - return LOAD_BAD_FILE; - HMODULE hModule=LoadLibraryEx(fname,NULL,LOAD_LIBRARY_AS_DATAFILE|LOAD_LIBRARY_AS_IMAGE_RESOURCE); - if (!hModule) return LOAD_BAD_FILE; + std::wstring baseUrl = L"https://api.github.com/repos/Open-Shell/Open-Shell-Menu/releases"; + if (official) + baseUrl += L"/latest"; - if (GetVersionEx(hModule)!=GetVersionEx(g_Instance)) - { - FreeLibrary(hModule); - return LOAD_BAD_VERSION; - } + auto buf = DownloadUrl(baseUrl.c_str()); + if (buf.empty()) + return LOAD_ERROR; - wchar_t defLang[100]=L""; + try { - CRegKey regKeyLng; - if (regKeyLng.Open(HKEY_LOCAL_MACHINE,L"Software\\OpenShell\\OpenShell",KEY_READ|KEY_WOW64_64KEY)==ERROR_SUCCESS) + auto jsonData = json::parse(buf.begin(), buf.end()); + auto& data = jsonData; + + if (official) { - ULONG size=_countof(defLang); - if (regKeyLng.QueryStringValue(L"DefaultLanguage",defLang,&size)!=ERROR_SUCCESS) - defLang[0]=0; + // skip prerelease versions (just in case) + if (data["prerelease"].get()) + return LOAD_BAD_VERSION; + } + else + { + // we've got list of versions (release and pre-release) + // lets pick first one (that should be the latest one) + data = jsonData[0]; } - } - const int DEFAULT_LANGUAGE=0x409; + // make sure we didn't get draft release (for whatever reason) + if (data["draft"].get()) + return LOAD_BAD_VERSION; - int defLangId; - if (!defLang[0] || !GetLocaleInfoEx(defLang,LOCALE_ILANGUAGE|LOCALE_RETURN_NUMBER,(LPWSTR)&defLangId,4)) - defLangId=DEFAULT_LANGUAGE; + // get version from tag name + auto tag = data["tag_name"].get(); + if (tag.empty()) + return LOAD_BAD_FILE; - downloadUrl=LoadStringEx(hModule,IDS_INSTALL_URL,defLangId); - // these are always in en-US - downloadSigner=LoadStringEx(hModule,IDS_INSTALL_SIGNER,DEFAULT_LANGUAGE); - CString strVer=LoadStringEx(hModule,IDS_VERSION,defLangId); - if (strVer.IsEmpty()) - strVer=LoadStringEx(hModule,IDS_VERSION,DEFAULT_LANGUAGE); - updateLink=LoadStringEx(hModule,IDS_UPDATE_LINK,DEFAULT_LANGUAGE); - languageLink=LoadStringEx(hModule,IDS_LANGUAGE_LINK,DEFAULT_LANGUAGE); - altUrl=LoadStringEx(hModule,IDS_ALT_URL,DEFAULT_LANGUAGE); + int v1, v2, v3; + if (sscanf_s(tag.c_str(), "v%d.%d.%d", &v1, &v2, &v3) != 3) + return LOAD_BAD_FILE; - int v1, v2, v3; - if (!downloadUrl.IsEmpty() && swscanf_s(strVer,L"%d.%d.%d",&v1,&v2,&v3)==3) - { - newVersion=(v1<<24)|(v2<<16)|v3; - news=LoadStringEx(hModule,IDS_NEWS,defLangId); - if (news.IsEmpty()) - news=LoadStringEx(hModule,IDS_NEWS,DEFAULT_LANGUAGE); - - EnumResourceLanguages(hModule,RT_STRING,MAKEINTRESOURCE((IDS_LNG_URL>>4)+1),EnumStringLanguages,(LONG_PTR)this); - for (std::vector::iterator it=languages.begin();it!=languages.end();++it) - it->bitmap=(HBITMAP)LoadImage(hModule,MAKEINTRESOURCE(it->languageId),IMAGE_BITMAP,22,27,LR_CREATEDIBSECTION); - } + newVersion = (v1 << 24) | (v2 << 16) | v3; + + // installer url + std::string url; + for (const auto& asset : data["assets"]) + { + if (asset["name"].get().find("OpenShellSetup") == 0) + { + url = asset["browser_download_url"].get(); + break; + } + } + + if (url.empty()) + return LOAD_BAD_FILE; - FreeLibrary(hModule); + downloadUrl.Append(CA2T(url.c_str())); + + // changelog + auto body = data["body"].get(); + if (!body.empty()) + { + auto name = data["name"].get(); + if (!name.empty()) + { + news.Append(CA2T(name.c_str())); + news.Append(L"\r\n\r\n"); + } + + news.Append(CA2T(body.c_str())); + news.Replace(L"\\n", L"\n"); + news.Replace(L"\\r", L"\r"); + } - if (newVersion && !downloadUrl.IsEmpty() && !news.IsEmpty()) return LOAD_OK; - Clear(); - return LOAD_ERROR; + } + catch (...) + { + return LOAD_BAD_FILE; + } } struct DownloadFileParams @@ -937,7 +774,7 @@ static DWORD WINAPI ThreadDownloadFile( void *param ) params.saveRes=0; std::vector buf; - params.downloadRes=DownloadFile(params.url,buf,params.fname.IsEmpty()?¶ms.fname:NULL,0,params.bAcceptCached,params.progress,params.component); + params.downloadRes=DownloadFile(params.url,buf,params.fname.IsEmpty()?¶ms.fname:NULL,params.bAcceptCached,params.progress,params.component); if (params.downloadRes==DOWNLOAD_CANCEL || params.downloadRes>=DOWNLOAD_FIRST_ERROR) return 0; @@ -971,6 +808,7 @@ static DWORD WINAPI ThreadDownloadFile( void *param ) return 0; // validate signer +/* if (params.signer) { if (params.progress) @@ -982,86 +820,10 @@ static DWORD WINAPI ThreadDownloadFile( void *param ) return 0; } } - +*/ return 0; } -DWORD DownloadLanguageDll( HWND owner, TSettingsComponent component, const LanguageVersionData &data, CString &error ) -{ - // download file - wchar_t path[_MAX_PATH]=L"%ALLUSERSPROFILE%\\OpenShell\\Languages"; - DoEnvironmentSubst(path,_countof(path)); - SHCreateDirectory(NULL,path); - wchar_t fname[_MAX_PATH]; - Sprintf(fname,_countof(fname),L"%s.dll",data.language); - - CProgressDlg progress; - progress.Create(owner,LoadStringEx(IDS_PROGRESS_TITLE_DOWNLOAD)); - - DownloadFileParams params; - params.url=data.url; - params.signer=NULL; - params.hash=data.hash; - params.path=path; - params.fname=fname; - params.progress=&progress; - params.bAcceptCached=true; - params.component=component; - - HANDLE hThread=CreateThread(NULL,0,ThreadDownloadFile,¶ms,0,NULL); - - while (1) - { - DWORD wait=MsgWaitForMultipleObjects(1,&hThread,FALSE,INFINITE,QS_ALLINPUT); - if (wait!=WAIT_OBJECT_0+1) - break; - MSG msg; - while (PeekMessage(&msg,0,0,0,PM_REMOVE)) - { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - } - progress.DestroyWindow(); - CloseHandle(hThread); - - if (params.downloadRes==DOWNLOAD_CANCEL) - return 2; - if (params.downloadRes==DOWNLOAD_INTERNET) - { - error=LoadStringEx(IDS_INTERNET_FAIL); - return 0; - } - else if (params.downloadRes==DOWNLOAD_START) - { - error=LoadStringEx(IDS_INITIATE_FAIL); - return 0; - } - else if (params.downloadRes==DOWNLOAD_FAIL) - { - error=LoadStringEx(IDS_LANG_DOWNLOAD_FAIL); - return 0; - } - - if (params.saveRes) - { - wchar_t msg[256]; - FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,NULL,params.saveRes,0,msg,_countof(msg),NULL); - error.Format(LoadStringEx(IDS_LANG_SAVE_FAIL),params.fname); - error+="\r\n"; - error+=msg; - return 0; - } - - if (!params.valid) - { - error=LoadStringEx(IDS_LANG_DOWNLOAD_FAIL); - return 0; - } - - return 1; -} - DWORD DownloadNewVersion( HWND owner, TSettingsComponent component, const wchar_t *url, const wchar_t *signer, CString &fname, CString &error ) { CComString pPath; @@ -1089,6 +851,12 @@ DWORD DownloadNewVersion( HWND owner, TSettingsComponent component, const wchar_ params.bAcceptCached=true; params.component=component; + { + const wchar_t* name = wcsrchr(url, '/'); + if (name && name[1]) + params.fname.Append(name+1); + } + HANDLE hThread=CreateThread(NULL,0,ThreadDownloadFile,¶ms,0,NULL); while (1) diff --git a/Src/Lib/DownloadHelper.h b/Src/Lib/DownloadHelper.h index 915f76fec..12e8becbe 100644 --- a/Src/Lib/DownloadHelper.h +++ b/Src/Lib/DownloadHelper.h @@ -15,37 +15,16 @@ enum TVersionCheck enum TSettingsComponent; -struct LanguageVersionData -{ - CString language; - CString url; - DWORD version; - DWORD build; - DWORD hash; - bool bBasic; - WORD languageId; - HBITMAP bitmap; - - LanguageVersionData( void ) { bBasic=false; bitmap=NULL; } -}; - struct VersionData { - bool bValid; - DWORD newVersion; - DWORD encodedLangVersion; + bool bValid = false; + DWORD newVersion = 0; CString downloadUrl; CString downloadSigner; CString news; CString updateLink; - CString languageLink; - CString altUrl; - bool bNewVersion; - bool bIgnoreVersion; - bool bNewLanguage; - bool bIgnoreLanguage; - CString newLanguage; - std::vector languages; + bool bNewVersion = false; + bool bIgnoreVersion = false; ~VersionData( void ) { Clear(); } void Clear( void ); @@ -59,7 +38,7 @@ struct VersionData LOAD_BAD_FILE, // the file is corrupted }; - TLoadResult Load( const wchar_t *fname, bool bLoadFlags ); + TLoadResult Load(bool official); private: void operator=( const VersionData& ); }; @@ -68,5 +47,4 @@ typedef void (*tNewVersionCallback)( VersionData &data ); // 0 - fail, 1 - success, 2 - cancel DWORD CheckForNewVersion( HWND owner, TSettingsComponent component, TVersionCheck check, tNewVersionCallback callback ); -DWORD DownloadLanguageDll( HWND owner, TSettingsComponent component, const LanguageVersionData &data, CString &error ); DWORD DownloadNewVersion( HWND owner, TSettingsComponent component, const wchar_t *url, const wchar_t *signer, CString &fname, CString &error ); diff --git a/Src/Lib/FileHelper.cpp b/Src/Lib/FileHelper.cpp index 2d928f849..7d6664edb 100644 --- a/Src/Lib/FileHelper.cpp +++ b/Src/Lib/FileHelper.cpp @@ -60,3 +60,17 @@ bool IsFakeFolder( const wchar_t *fname ) } return false; } + +bool GetFakeFolder( wchar_t *dst, int len, const wchar_t *src ) +{ + Sprintf(dst,len,L"%s\\target.lnk",src); + if (GetFileAttributes(dst)!=INVALID_FILE_ATTRIBUTES) + { + wchar_t path[_MAX_PATH]; + Sprintf(path,_countof(path),L"%s\\desktop.ini",src); + DWORD attrib=GetFileAttributes(path); + if (attrib!=INVALID_FILE_ATTRIBUTES && (attrib&FILE_ATTRIBUTE_SYSTEM)) + return true; + } + return false; +} diff --git a/Src/Lib/FileHelper.h b/Src/Lib/FileHelper.h index 4d33ffc6a..2a5b20bbd 100644 --- a/Src/Lib/FileHelper.h +++ b/Src/Lib/FileHelper.h @@ -7,3 +7,4 @@ bool CreateFakeFolder( const wchar_t *source, const wchar_t *fname ); void DeleteFakeFolder( const wchar_t *fname ); bool IsFakeFolder( const wchar_t *fname ); +bool GetFakeFolder( wchar_t *dst, int len, const wchar_t *src ); diff --git a/Src/Lib/IatHookHelper.cpp b/Src/Lib/IatHookHelper.cpp index 4a34d315b..5305811ed 100644 --- a/Src/Lib/IatHookHelper.cpp +++ b/Src/Lib/IatHookHelper.cpp @@ -70,12 +70,17 @@ IatHookData *SetIatHook( IMAGE_DOS_HEADER *dosHeader, DWORD iatOffset, DWORD int { IatHookData *hook=g_IatHooks+g_IatHookCount; g_IatHookCount++; +#if defined(_M_AMD64) || defined(_M_IX86) hook->jump[0]=hook->jump[1]=0x90; // NOP hook->jump[2]=0xFF; hook->jump[3]=0x25; // JUMP -#ifdef _WIN64 +#if defined(_M_AMD64) hook->jumpOffs=0; #else hook->jumpOffs=(DWORD)(hook)+8; +#endif +#elif defined(_M_ARM64) + hook->jump[0]=0x48; hook->jump[1]=0x00; hook->jump[2]=0x00; hook->jump[3]=0x58; // LDR X8, newProc + hook->jump[4]=0x00; hook->jump[5]=0x01; hook->jump[6]=0x1F; hook->jump[7]=0xD6; // BR X8 #endif hook->newProc=newProc; hook->oldProc=(void*)thunk->u1.Function; diff --git a/Src/Lib/IatHookHelper.h b/Src/Lib/IatHookHelper.h index 2a4603f0d..d522bfbd7 100644 --- a/Src/Lib/IatHookHelper.h +++ b/Src/Lib/IatHookHelper.h @@ -6,8 +6,12 @@ struct IatHookData { +#if defined(_M_AMD64) || defined(_M_IX86) unsigned char jump[4]; // jump instruction 0x90, 0x90, 0xFF, 0x25 DWORD jumpOffs; // jump instruction offset +#elif defined(_M_ARM64) + unsigned char jump[8]; // LDR
, BR +#endif void *newProc; // the address of the new proc void *oldProc; // the address of the old proc IMAGE_THUNK_DATA *thunk; // the IAT thunk diff --git a/Src/Lib/LanguageSettingsHelper.cpp b/Src/Lib/LanguageSettingsHelper.cpp index bb3d43c43..a9c4c6381 100644 --- a/Src/Lib/LanguageSettingsHelper.cpp +++ b/Src/Lib/LanguageSettingsHelper.cpp @@ -68,17 +68,13 @@ class CLanguageSettingsDlg: public CResizeableDlg MESSAGE_HANDLER( WM_INITDIALOG, OnInitDialog ) MESSAGE_HANDLER( WM_DESTROY, OnDestroy ) MESSAGE_HANDLER( WM_SIZE, OnSize ) - COMMAND_ID_HANDLER( IDC_BUTTONCHECK, OnCheckUpdates ) NOTIFY_HANDLER( IDC_LISTLANGUAGE, LVN_ITEMCHANGED, OnSelChange ) NOTIFY_HANDLER( IDC_LISTLANGUAGE, LVN_ITEMCHANGING, OnSelChanging ) NOTIFY_HANDLER( IDC_LISTLANGUAGE, NM_CUSTOMDRAW, OnCustomDraw ) - NOTIFY_HANDLER( IDC_LINKDOWNLOAD, NM_CLICK, OnDownload ) END_MSG_MAP() BEGIN_RESIZE_MAP RESIZE_CONTROL(IDC_LISTLANGUAGE,MOVE_SIZE_X|MOVE_SIZE_Y) - RESIZE_CONTROL(IDC_BUTTONCHECK,MOVE_MOVE_Y) - RESIZE_CONTROL(IDC_LINKDOWNLOAD,MOVE_SIZE_X|MOVE_MOVE_Y) END_RESIZE_MAP void SetGroup( CSetting *pGroup ); @@ -92,11 +88,9 @@ class CLanguageSettingsDlg: public CResizeableDlg LRESULT OnInitDialog( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ); LRESULT OnDestroy( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ); LRESULT OnSize( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ); - LRESULT OnCheckUpdates( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled ); LRESULT OnSelChange( int idCtrl, LPNMHDR pnmh, BOOL& bHandled ); LRESULT OnSelChanging( int idCtrl, LPNMHDR pnmh, BOOL& bHandled ); LRESULT OnCustomDraw( int idCtrl, LPNMHDR pnmh, BOOL& bHandled ); - LRESULT OnDownload( int idCtrl, LPNMHDR pnmh, BOOL& bHandled ); private: CSetting *m_pSetting; @@ -114,20 +108,14 @@ class CLanguageSettingsDlg: public CResizeableDlg bool operator<( const LangInfo &info ) { return _wcsicmp(name,info.name)<0; } }; std::vector m_LanguageIDs; // the order matches the items in the listbox - static VersionData s_VersionData; - static void NewVersionCallback( VersionData &data ); void UpdateFlags( void ); - void UpdateLink( const wchar_t *language ); void AddFlag( const wchar_t *langName, int langId, HBITMAP bmp ); }; -VersionData CLanguageSettingsDlg::s_VersionData; - void CLanguageSettingsDlg::AddFlag( const wchar_t *langName, int langId, HBITMAP bmp ) { - std::vector::iterator it=m_LanguageIDs.begin()+1; int idx=1; for (;idx<(int)m_LanguageIDs.size();idx++) { @@ -157,39 +145,6 @@ void CLanguageSettingsDlg::AddFlag( const wchar_t *langName, int langId, HBITMAP void CLanguageSettingsDlg::UpdateFlags( void ) { - // add flags from s_VersionData - for (std::vector::const_iterator it=s_VersionData.languages.begin();it!=s_VersionData.languages.end();++it) - { - if (it->bitmap) - { - BITMAPINFO bi={0}; - bi.bmiHeader.biSize=sizeof(BITMAPINFOHEADER); - bi.bmiHeader.biWidth=m_bLargeFlags?32:24; - bi.bmiHeader.biHeight=m_bLargeFlags?16:11; - bi.bmiHeader.biPlanes=1; - bi.bmiHeader.biBitCount=32; - - HDC hdc=CreateCompatibleDC(NULL); - HBITMAP bmp=CreateDIBSection(hdc,&bi,DIB_RGB_COLORS,NULL,NULL,0); - HGDIOBJ bmp0=SelectObject(hdc,bmp); - HDC hsrc=CreateCompatibleDC(hdc); - HGDIOBJ bmp02=SelectObject(hsrc,it->bitmap); - SetDCBrushColor(hdc,0xFF00FF); - RECT rc={0,0,bi.bmiHeader.biWidth,bi.bmiHeader.biHeight}; - FillRect(hdc,&rc,(HBRUSH)GetStockObject(DC_BRUSH)); - if (m_bLargeFlags) - BitBlt(hdc,3,0,22,16,hsrc,0,11,SRCCOPY); - else - BitBlt(hdc,2,0,16,11,hsrc,0,0,SRCCOPY); - SelectObject(hsrc,bmp02); - DeleteDC(hsrc); - SelectObject(hdc,bmp0); - DeleteDC(hdc); - AddFlag(it->language,it->languageId,bmp); - DeleteObject(bmp); - } - } - // add flags from dlls for (int pass=0;pass<2;pass++) { @@ -205,8 +160,6 @@ void CLanguageSettingsDlg::UpdateFlags( void ) DoEnvironmentSubst(path,_countof(path)); } - CWindow list=GetDlgItem(IDC_LISTLANGUAGE); - wchar_t find[_MAX_PATH]; Sprintf(find,_countof(find),L"%s\\*.dll",path); WIN32_FIND_DATA data; @@ -291,7 +244,6 @@ LRESULT CLanguageSettingsDlg::OnInitDialog( UINT uMsg, WPARAM wParam, LPARAM lPa ListView_SetExtendedListViewStyleEx(list,LVS_EX_DOUBLEBUFFER,LVS_EX_DOUBLEBUFFER); LVCOLUMN column={LVCF_WIDTH,0,rc.right-rc.left}; ListView_InsertColumn(list,0,&column); - SetDlgItemText(IDC_LINKDOWNLOAD,L""); m_LanguageIDs.resize(_countof(g_LanguageIDs)+1); { @@ -334,11 +286,6 @@ LRESULT CLanguageSettingsDlg::OnInitDialog( UINT uMsg, WPARAM wParam, LPARAM lPa ListView_InsertItem(list,&item); } - // parse update.ver in data and add all flags - wchar_t path[_MAX_PATH]=L"%ALLUSERSPROFILE%\\OpenShell\\update.ver"; - DoEnvironmentSubst(path,_countof(path)); - s_VersionData.bValid=(s_VersionData.Load(path,true)==VersionData::LOAD_OK); - UpdateFlags(); m_Tooltip.Create(TOOLTIPS_CLASS,m_hWnd,NULL,NULL,WS_POPUP|TTS_NOPREFIX); @@ -362,40 +309,6 @@ LRESULT CLanguageSettingsDlg::OnSize( UINT uMsg, WPARAM wParam, LPARAM lParam, B return 0; } -void CLanguageSettingsDlg::NewVersionCallback( VersionData &data ) -{ - s_VersionData.Swap(data); -} - -LRESULT CLanguageSettingsDlg::OnCheckUpdates( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled ) -{ - DWORD res=CheckForNewVersion(m_hWnd,m_Component,CHECK_UPDATE,NewVersionCallback); - if (res==2) return 0; - if (res) - { - UpdateFlags(); - CString language=GetSettingString(L"Language"); - CWindow list=GetDlgItem(IDC_LISTLANGUAGE); - for (int idx=0;idx<(int)m_LanguageIDs.size();idx++) - { - const wchar_t *name=idx>0?m_LanguageIDs[idx].name.GetString():L""; - if (_wcsicmp(language,name)==0) - { - ListView_SetItemState(list,idx,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED); - ListView_EnsureVisible(list,idx,FALSE); - break; - } - } - UpdateLink(language); - } - else - { - s_VersionData.Clear(); - SetDlgItemText(IDC_LINKDOWNLOAD,LoadStringEx(IDS_LANGUAGE_FAIL)); - } - return 0; -} - LRESULT CLanguageSettingsDlg::OnSelChange( int idCtrl, LPNMHDR pnmh, BOOL& bHandled ) { // set setting @@ -408,13 +321,12 @@ LRESULT CLanguageSettingsDlg::OnSelChange( int idCtrl, LPNMHDR pnmh, BOOL& bHand CComVariant val(name); if (m_pSetting->value!=val) SetSettingsDirty(); - m_pSetting->value=val; + m_pSetting->value=std::move(val); if (_wcsicmp(m_pSetting->value.bstrVal,m_pSetting->defValue.bstrVal)==0) m_pSetting->flags|=CSetting::FLAG_DEFAULT; else m_pSetting->flags&=~CSetting::FLAG_DEFAULT; - UpdateLink(name); return 0; } @@ -451,41 +363,6 @@ static HRESULT CALLBACK TaskDialogCallbackProc( HWND hwnd, UINT uNotification, W return S_OK; } -LRESULT CLanguageSettingsDlg::OnDownload( int idCtrl, LPNMHDR pnmh, BOOL& bHandled ) -{ - CString language=GetSettingString(L"Language"); - if (language.IsEmpty()) - language=m_LanguageIDs[0].name; - - for (std::vector::const_iterator it=s_VersionData.languages.begin();it!=s_VersionData.languages.end();++it) - { - if (_wcsicmp(it->language,language)==0) - { - CString error; - DWORD res=DownloadLanguageDll(m_hWnd,m_Component,*it,error); - if (res==2) - return 0; - if (res) - MessageBox(LoadStringEx(it->bBasic?IDS_LANGUAGE_SUCCESS2:IDS_LANGUAGE_SUCCESS),LoadStringEx(IDS_UPDATE_TITLE),MB_OK|(it->bBasic?MB_ICONWARNING:MB_ICONINFORMATION)); - else - { - if (!s_VersionData.languageLink.IsEmpty()) - error+=L" "+LoadStringEx(IDS_DOWNLOAD_TIP)+L"\r\n\r\n"+s_VersionData.languageLink; - TASKDIALOGCONFIG task={sizeof(task),m_hWnd,NULL,TDF_ENABLE_HYPERLINKS|TDF_ALLOW_DIALOG_CANCELLATION|TDF_USE_HICON_MAIN,TDCBF_OK_BUTTON}; - CString title=LoadStringEx(IDS_UPDATE_TITLE); - task.pszWindowTitle=title; - task.pszContent=error; - task.hMainIcon=LoadIcon(NULL,IDI_ERROR); - task.pfCallback=TaskDialogCallbackProc; - TaskDialogIndirect(&task,NULL,NULL,NULL); - } - UpdateLink(language); - break; - } - } - return 0; -} - void CLanguageSettingsDlg::SetGroup( CSetting *pGroup ) { m_bLocked=false; @@ -507,7 +384,6 @@ void CLanguageSettingsDlg::SetGroup( CSetting *pGroup ) break; } } - UpdateLink(m_pSetting->value.bstrVal); m_bLocked=m_pSetting->IsLocked(); TOOLINFO tool={sizeof(tool),0,m_hWnd,'CLSH'}; @@ -520,52 +396,6 @@ void CLanguageSettingsDlg::SetGroup( CSetting *pGroup ) ListView_SetBkColor(list,GetSysColor(m_bLocked?COLOR_BTNFACE:COLOR_WINDOW)); } -void CLanguageSettingsDlg::UpdateLink( const wchar_t *language ) -{ - TOOLINFO tool={sizeof(tool),TTF_SUBCLASS|TTF_IDISHWND,m_hWnd,'CLSH'}; - tool.uId=(UINT_PTR)GetDlgItem(IDC_LINKDOWNLOAD).m_hWnd; - m_Tooltip.SendMessage(TTM_DELTOOL,0,(LPARAM)&tool); - - if (!s_VersionData.bValid) - { - SetDlgItemText(IDC_LINKDOWNLOAD,L""); - return; - } - if (!*language) - language=m_LanguageIDs[0].name; - - wchar_t text[1024]; - for (std::vector::const_iterator it=s_VersionData.languages.begin();it!=s_VersionData.languages.end();++it) - { - if (_wcsicmp(it->language,language)==0) - { - DWORD dllVersion=0, dllBuild=0; - HINSTANCE resInstance=LoadTranslationDll(language); - if (resInstance) - { - dllVersion=GetVersionEx(resInstance,&dllBuild); - FreeLibrary(resInstance); - } - if (it->version>dllVersion || (it->version==dllVersion && it->build>dllBuild)) - { - Sprintf(text,_countof(text),LoadStringEx(IDS_LANGUAGE_DOWNLOAD),language); - SetDlgItemText(IDC_LINKDOWNLOAD,text); - - tool.lpszText=(LPWSTR)(LPCWSTR)it->url; - m_Tooltip.SendMessage(TTM_ADDTOOL,0,(LPARAM)&tool); - } - else - { - Sprintf(text,_countof(text),LoadStringEx(IDS_LANGUAGE_UPDATED),language); - SetDlgItemText(IDC_LINKDOWNLOAD,text); - } - return; - } - } - Sprintf(text,_countof(text),LoadStringEx(IDS_LANGUAGE_MISSING),language); - SetDlgItemText(IDC_LINKDOWNLOAD,text); -} - class CLanguageSettingsPanel: public ISettingsPanel { public: diff --git a/Src/Lib/Lib.rc b/Src/Lib/Lib.rc index 58445918a..d34dbaf46 100644 --- a/Src/Lib/Lib.rc +++ b/Src/Lib/Lib.rc @@ -71,7 +71,7 @@ BEGIN CONTROL "Show all settings",IDC_CHECKALL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,154,7,79,12 CONTROL "Help...",IDC_LINKHELP,"SysLink",WS_TABSTOP,348,9,26,10,WS_EX_TRANSPARENT CONTROL "",IDC_TABSETTINGS,"SysTabControl32",TCS_MULTILINE | TCS_FOCUSNEVER,7,20,367,169 - CONTROL "www.classicshell.net",IDC_LINKWEB,"SysLink",WS_TABSTOP,7,195,66,10,WS_EX_TRANSPARENT + CONTROL "Open-Shell Homepage",IDC_LINKWEB,"SysLink",WS_TABSTOP,7,195,75,10,WS_EX_TRANSPARENT CONTROL "Name of translator goes here",IDC_SYSLINKLOC, "SysLink",NOT WS_VISIBLE | WS_TABSTOP,80,195,111,10 PUSHBUTTON "&Backup",IDC_BUTTONBACKUP,200,192,60,14,WS_GROUP @@ -98,8 +98,6 @@ FONT 9, "Segoe UI", 400, 0, 0x0 BEGIN CONTROL "",IDC_LISTLANGUAGE,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,7,18,302,99 LTEXT "Select a language for the user interface:",IDC_STATICHINT,7,7,131,8 - PUSHBUTTON "&Check for Updates",IDC_BUTTONCHECK,7,123,75,14 - CONTROL "download link goes here",IDC_LINKDOWNLOAD,"SysLink",WS_TABSTOP,85,126,224,10 END IDD_CUSTOMTREE DIALOGEX 0, 0, 365, 183 @@ -277,22 +275,14 @@ BEGIN IDS_BMP_TITLE "Select Image File" IDS_SEARCH_PROMPT "Search Settings" IDS_SETTING_SEARCH "Search Results" - IDS_WEBSITE_TIP "Visit Open-Shell on the web - http://www.classicshell.net" + IDS_WEBSITE_TIP "Visit Open-Shell on the web - https://open-shell.github.io/Open-Shell-Menu" IDS_LOCATE_SETTING "Locate setting" - IDS_LANGUAGE_UPDATED "The language %s is up to date." - IDS_LANGUAGE_MISSING "Update for language %s is not available." - IDS_LANGUAGE_DOWNLOAD "New update for language %s is available. Click here to install it." - IDS_LANGUAGE_SUCCESS "The language file was installed successfully.\nYou need to log off and back on for the update to take effect." - IDS_LANGUAGE_SUCCESS2 "The language file was installed successfully.\nYou need to log off and back on for the update to take effect.\n\nNote: This update provides only basic translations. It supports only the main text found in the start menu and in Explorer. The settings will not be translated." - IDS_LANGUAGE_FAIL "Failed to check for updates." IDS_INTERNET_FAIL "Failed to connect to the Internet." END STRINGTABLE BEGIN IDS_INITIATE_FAIL "Failed to initiate the download." - IDS_LANG_DOWNLOAD_FAIL "Failed to download the language file." - IDS_LANG_SAVE_FAIL "Failed to save language file '%s'." IDS_UPDATE_TITLE "Open-Shell Update" IDS_INST_DOWNLOAD_FAIL "Failed to download the new version." IDS_INST_SAVE_FAIL "Failed to save file '%s'." @@ -308,11 +298,6 @@ BEGIN IDS_UNSAVED_TITLE "Unsaved changes" END -STRINGTABLE -BEGIN - IDS_VERSION_URL "http://www.classicshell.net/files/updates/update_" -END - #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/Src/Lib/Lib.vcxproj b/Src/Lib/Lib.vcxproj index 6bb16b15b..8c29ee77c 100644 --- a/Src/Lib/Lib.vcxproj +++ b/Src/Lib/Lib.vcxproj @@ -1,6 +1,14 @@ + + Debug + ARM64 + + + Debug + ARM64EC + Debug Win32 @@ -9,6 +17,14 @@ Debug x64 + + Release + ARM64 + + + Release + ARM64EC + Release Win32 @@ -22,128 +38,37 @@ {D42FE717-485B-492D-884A-1999F6D51154} Lib Win32Proj - 10.0.17134.0 + 10.0 - - StaticLibrary - v141 - Static - Unicode - true - - - StaticLibrary - v141 - Static - Unicode - - - StaticLibrary - v141 - Static - Unicode - true - - + StaticLibrary - v141 + $(DefaultPlatformToolset) Static Unicode + true - - - - - - - - - - - + + - - $(Configuration)\ - $(Configuration)\ + + $(IntDir) - - $(Configuration)64\ - $(Configuration)64\ + + true - - $(Configuration)\ - $(Configuration)\ - - - $(Configuration)64\ - $(Configuration)64\ - - - - Disabled - WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebug - Use - Level3 - EditAndContinue - true - true - stdcpp17 - - - + - Disabled - WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebug - Use - Level3 - ProgramDatabase - true - true - stdcpp17 - - - - - MaxSpeed - WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) - MultiThreaded - true - Use - Level3 - true - ProgramDatabase - true - true - stdcpp17 + _LIB;%(PreprocessorDefinitions) - MachineX86 + MachineX86 - - - MaxSpeed - WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) - MultiThreaded - true - Use - Level3 - true - ProgramDatabase - true - true - stdcpp17 - - @@ -195,7 +120,17 @@ + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + \ No newline at end of file diff --git a/Src/Lib/Lib.vcxproj.filters b/Src/Lib/Lib.vcxproj.filters index fbcf3efb1..5f8d42680 100644 --- a/Src/Lib/Lib.vcxproj.filters +++ b/Src/Lib/Lib.vcxproj.filters @@ -149,4 +149,7 @@ Lib - + + + + \ No newline at end of file diff --git a/Src/Lib/ResourceHelper.cpp b/Src/Lib/ResourceHelper.cpp index 76b2d407c..b7388a554 100644 --- a/Src/Lib/ResourceHelper.cpp +++ b/Src/Lib/ResourceHelper.cpp @@ -332,6 +332,7 @@ HBITMAP BitmapFromIcon( HICON hIcon, int iconSize, unsigned int **pBits, bool bD // Premultiplies a DIB section by the alpha channel and a given color void PremultiplyBitmap( HBITMAP hBitmap, COLORREF rgb ) { + if (hBitmap == NULL) return; BITMAP info; GetObject(hBitmap,sizeof(info),&info); int n=info.bmWidth*info.bmHeight; @@ -383,20 +384,23 @@ HICON CreateDisabledIcon( HICON hIcon, int iconSize ) } // Loads an image file into a bitmap and optionally resizes it -HBITMAP LoadImageFile( const wchar_t *path, const SIZE *pSize, bool bUseAlpha, bool bPremultiply, std::vector *pButtonAnim ) +HBITMAP LoadImageFile( const wchar_t *path, const SIZE *pSize, bool bUseAlpha, bool bPremultiply, std::vector *pButtonAnim, UINT dpi ) { HBITMAP srcBmp=NULL; if (_wcsicmp(PathFindExtension(path),L".bmp")==0) { srcBmp=(HBITMAP)LoadImage(NULL,path,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_LOADFROMFILE); } - if (srcBmp && !pSize) + if (srcBmp && !pSize && !dpi) return srcBmp; CComPtr pFactory; if (FAILED(pFactory.CoCreateInstance(CLSID_WICImagingFactory))) { - if (srcBmp) DeleteObject(srcBmp); - return NULL; + if (FAILED(pFactory.CoCreateInstance(CLSID_WICImagingFactory1))) + { + if (srcBmp) DeleteObject(srcBmp); + return NULL; + } } CComPtr pBitmap; @@ -478,6 +482,12 @@ HBITMAP LoadImageFile( const wchar_t *path, const SIZE *pSize, bool bUseAlpha, b else frameHeightD=frameWidthD*frameHeightS/frameWidthS; } + + if (dpi) + { + frameWidthD=ScaleForDpi(dpi,frameWidthD); + frameHeightD=ScaleForDpi(dpi,frameHeightD); + } } BITMAPINFO bi={0}; @@ -533,7 +543,10 @@ HBITMAP LoadImageResource( HMODULE hModule, const wchar_t *name, bool bTopDown, { CComPtr pFactory; if (FAILED(pFactory.CoCreateInstance(CLSID_WICImagingFactory))) - return NULL; + { + if (FAILED(pFactory.CoCreateInstance(CLSID_WICImagingFactory1))) + return NULL; + } CComPtr pBitmap; if (hModule) @@ -726,6 +739,19 @@ bool IsWin10RS4( void ) return bIsRS4; } +static bool IsWin11Helper() +{ + auto version = GetOSVersion(); + return version.dwMajorVersion >= 10 && version.dwBuildNumber >= 22000; +} + +// Returns true if the version is Windows11 or later +bool IsWin11(void) +{ + static bool bIsWin11 = IsWin11Helper(); + return bIsWin11; +} + // Wrapper for IShellFolder::ParseDisplayName HRESULT ShParseDisplayName( const wchar_t *pszName, PIDLIST_ABSOLUTE *ppidl, SFGAOF sfgaoIn, SFGAOF *psfgaoOut ) { @@ -900,5 +926,38 @@ HFONT CreateFontSetting( const wchar_t *fontStr, int dpi ) weight=FW_BOLD, bItalic=true; str=GetToken(str,token,_countof(token),L", \t"); int size=-_wtol(token); - return CreateFont(size*dpi/72,0,0,0,weight,bItalic?1:0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,name); + return CreateFont(MulDiv(size,dpi,72),0,0,0,weight,bItalic?1:0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,name); +} + +static UINT WINAPI GetDpiForWindow(HWND hwnd) +{ + static auto p = static_cast((void*)GetProcAddress(GetModuleHandle(L"user32.dll"), "GetDpiForWindow")); + if (p) + return p(hwnd); + + return 0; +} + +UINT GetDpi(HWND hwnd) +{ + UINT dpi = GetDpiForWindow(hwnd); + if (!dpi) + { + // fall-back for older systems + HDC hdc = GetDC(nullptr); + dpi = GetDeviceCaps(hdc, LOGPIXELSY); + ReleaseDC(nullptr, hdc); + } + + return dpi; +} + +int ScaleForDpi(UINT dpi, int value) +{ + return MulDiv(value, dpi, USER_DEFAULT_SCREEN_DPI); +} + +int ScaleForDpi(HWND hwnd, int value) +{ + return ScaleForDpi(GetDpi(hwnd), value); } diff --git a/Src/Lib/ResourceHelper.h b/Src/Lib/ResourceHelper.h index ac7399acd..5afc1d1dc 100644 --- a/Src/Lib/ResourceHelper.h +++ b/Src/Lib/ResourceHelper.h @@ -35,7 +35,7 @@ HICON ShExtractIcon( const char *path, int index, int iconSize ); HBITMAP BitmapFromIcon( HICON hIcon, int iconSize, unsigned int **pBits, bool bDestroyIcon ); // Loads an image file into a bitmap and optionally resizes it -HBITMAP LoadImageFile( const wchar_t *path, const SIZE *pSize, bool bUseAlpha, bool bPremultiply, std::vector *pButtonAnim ); +HBITMAP LoadImageFile( const wchar_t *path, const SIZE *pSize, bool bUseAlpha, bool bPremultiply, std::vector *pButtonAnim, UINT dpi=0 ); // Loads a bitmap from a IMAGE resource HBITMAP LoadImageResource( HMODULE hModule, const wchar_t *name, bool bTopDown, bool bPremultiply ); @@ -67,6 +67,9 @@ bool IsWin10RS1( void ); // Returns true if the version is Windows10 RS4 (Spring Creator Update) or later bool IsWin10RS4( void ); +// Returns true if the version is Windows11 or later +bool IsWin11(); + // Wrapper for IShellFolder::ParseDisplayName HRESULT ShParseDisplayName( const wchar_t *pszName, PIDLIST_ABSOLUTE *ppidl, SFGAOF sfgaoIn, SFGAOF *psfgaoOut ); @@ -82,6 +85,14 @@ void StringUpper( CString &str ); // Create a font from the user settings HFONT CreateFontSetting( const wchar_t *fontStr, int dpi ); +// Return DPI of given window (or system DPI on older systems) +UINT GetDpi(HWND hwnd = nullptr); + +// Scale given value according to given DPI +int ScaleForDpi(UINT dpi, int value); +// Scale given value according to DPI of window +int ScaleForDpi(HWND hwnd, int value); + extern HINSTANCE g_Instance; const int ANIM_BUTTON_TAG1='ANM'; diff --git a/Src/Lib/Settings.cpp b/Src/Lib/Settings.cpp index 7dbcc94e3..599cb9fed 100644 --- a/Src/Lib/Settings.cpp +++ b/Src/Lib/Settings.cpp @@ -13,17 +13,12 @@ #include #include #include +#include #include #include #include #include -#ifdef BUILD_SETUP -#define DOC_PATH L"" -#else -#define DOC_PATH L"..\\..\\Docs\\Help\\" -#endif - /////////////////////////////////////////////////////////////////////////////// // Read/Write lock for accessing the settings. Can't be acquired recursively. Only the main UI thread (the one displaying the settings UI) @@ -125,7 +120,7 @@ bool CSetting::IsEnabled( void ) const if (operation=='>' && pSetting->GetValue().intVal<=val) return false; } - if ((pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG) && pSetting->GetValue().vt==VT_BSTR) + if ((pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG || pSetting->type==CSetting::TYPE_DIRECTORY) && pSetting->GetValue().vt==VT_BSTR) { if (operation=='~' && *pSetting->GetValue().bstrVal==0) return false; @@ -202,7 +197,7 @@ bool CSetting::ReadValue( CRegKey ®Key, const wchar_t *valName ) } // string - if (type>=CSetting::TYPE_STRING && type=CSetting::TYPE_STRING && type!=CSetting::TYPE_MULTISTRING) { ULONG len; if (regKey.QueryStringValue(valName,NULL,&len)==ERROR_SUCCESS) @@ -789,7 +784,7 @@ CString CSettingsManager::LoadSettingsXml( const wchar_t *fname ) } CComPtr next; child2->get_nextSibling(&next); - child2=next; + child2=std::move(next); } string.push_back(0); pSetting->value=CComVariant(&string[0]); @@ -839,7 +834,7 @@ CString CSettingsManager::LoadSettingsXml( const wchar_t *fname ) CComPtr next; if (child->get_nextSibling(&next)!=S_OK) break; - child=next; + child=std::move(next); } if (ver<0x03090000) UpgradeSettings(false); @@ -984,7 +979,7 @@ void CSettingsManager::ResetSettings( void ) HIMAGELIST CSettingsManager::GetImageList( HWND tree ) { if (m_ImageList) return m_ImageList; - HTHEME theme=OpenThemeData(tree,L"button"); + HTHEME theme=OpenThemeData(GetParent(tree),L"button"); HDC hdc=CreateCompatibleDC(NULL); int iconSize=(TreeView_GetItemHeight(tree)<32)?16:32; int checkSize=16; @@ -1114,7 +1109,7 @@ class CSettingsDlg: public CResizeableDlg { public: CSettingsDlg( void ); - void Init( CSetting *pSettings, ICustomSettings *pCustom, int tab ); + void Init( CSetting *pSettings, ICustomSettings *pCustom, int tab, const wchar_t* appId ); BEGIN_MSG_MAP( CSettingsDlg ) MESSAGE_HANDLER( WM_INITDIALOG, OnInitDialog ) @@ -1188,6 +1183,7 @@ class CSettingsDlg: public CResizeableDlg bool m_bIgnoreEdit; bool m_bDirty; CString m_FilterText; + const wchar_t* m_AppId; void AddTabs( int name, const CSetting *pSelect=NULL ); void SetCurTab( int index, bool bReset, const CSetting *pSelect=NULL ); @@ -1220,15 +1216,17 @@ CSettingsDlg::CSettingsDlg( void ) m_bOnTop=false; m_bIgnoreEdit=false; m_bDirty=false; + m_AppId=NULL; } -void CSettingsDlg::Init( CSetting *pSettings, ICustomSettings *pCustom, int tab ) +void CSettingsDlg::Init( CSetting *pSettings, ICustomSettings *pCustom, int tab, const wchar_t* appId ) { m_pSettings=pSettings; m_pCustom=pCustom; m_InitialTab=tab; m_FilterText.Empty(); m_bDirty=false; + m_AppId=appId; } // Subclass the tooltip to delay the tip when the mouse moves from one tree item to the next @@ -1252,17 +1250,19 @@ LRESULT CSettingsDlg::OnInitDialog( UINT uMsg, WPARAM wParam, LPARAM lParam, BOO #ifdef _DEBUG g_bUIThread=true; #endif -/* - // attempt to make the dialog have its own icon. doesn't work though. the icon changes, but to the default folder icon - CComPtr pStore; - if (SUCCEEDED(SHGetPropertyStoreForWindow(m_hWnd,IID_IPropertyStore,(void**)&pStore))) + + if (m_AppId) { - PROPVARIANT val; - val.vt=VT_LPWSTR; - val.pwszVal=L"OpenShell.Settings.Dialog"; - pStore->SetValue(PKEY_AppUserModel_ID,val); + // attempt to make the dialog have its own icon + CComPtr pStore; + if (SUCCEEDED(SHGetPropertyStoreForWindow(m_hWnd,IID_IPropertyStore,(void**)&pStore))) + { + PROPVARIANT val; + InitPropVariantFromString(m_AppId,&val); + pStore->SetValue(PKEY_AppUserModel_ID,val); + } } -*/ + InitResize(MOVE_MODAL); HMENU menu=GetSystemMenu(FALSE); bool bAdded=false; @@ -1670,7 +1670,7 @@ LRESULT CSettingsDlg::OnBackup( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& ofn.lpstrTitle=title; ofn.lpstrDefExt=L".xml"; ofn.Flags=OFN_DONTADDTORECENT|OFN_ENABLESIZING|OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY|OFN_NOCHANGEDIR; - if (GetSaveFileName(&ofn)) + if (GetSaveFileNameSafe(&ofn)) { CString err=g_SettingsManager.SaveSettingsXml(path); if (!err.IsEmpty()) @@ -1699,8 +1699,9 @@ LRESULT CSettingsDlg::OnBackup( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& CString title=LoadStringEx(IDS_XML_TITLE_LOAD); ofn.lpstrTitle=title; ofn.Flags=OFN_DONTADDTORECENT|OFN_ENABLESIZING|OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_NOCHANGEDIR; - if (GetOpenFileName(&ofn)) + if (GetOpenFileNameSafe(&ofn)) { + SetCurTab(m_Index,true); // reload tab once to force-close any active edit boxes CString error=g_SettingsManager.LoadSettingsXml(path); if (!error.IsEmpty()) { @@ -1710,7 +1711,7 @@ LRESULT CSettingsDlg::OnBackup( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& ::MessageBox(m_hWnd,text,LoadStringEx(IDS_ERROR_TITLE),MB_OK|MB_ICONERROR); } SetSettingsDirty(); - SetCurTab(m_Index,true); + SetCurTab(m_Index,true); // reload tab again to show the new settings } } if (res==3) @@ -1810,7 +1811,7 @@ LRESULT CSettingsDlg::OnHelp( int idCtrl, LPNMHDR pnmh, BOOL& bHandled ) LRESULT CSettingsDlg::OnWeb( int idCtrl, LPNMHDR pnmh, BOOL& bHandled ) { - ShellExecute(m_hWnd,NULL,L"http://www.classicshell.net",NULL,NULL,SW_SHOWNORMAL); + ShellExecute(m_hWnd,NULL,L"https://open-shell.github.io/Open-Shell-Menu",NULL,NULL,SW_SHOWNORMAL); return 0; } @@ -1845,7 +1846,7 @@ bool CSettingsDlg::IsTabValid( void ) static CSettingsDlg g_SettingsDlg; -void EditSettings( const wchar_t *title, bool bModal, int tab ) +void EditSettings( const wchar_t *title, bool bModal, int tab, const wchar_t* appId ) { if (g_SettingsDlg.m_hWnd) { @@ -1863,7 +1864,7 @@ void EditSettings( const wchar_t *title, bool bModal, int tab ) } DLGTEMPLATE *pTemplate=LoadDialogEx(IDD_SETTINGS); g_SettingsManager.ResetImageList(); - g_SettingsDlg.Init(g_SettingsManager.GetSettings(),g_SettingsManager.GetCustom(),tab); + g_SettingsDlg.Init(g_SettingsManager.GetSettings(),g_SettingsManager.GetCustom(),tab,appId); g_SettingsDlg.Create(NULL,pTemplate); g_SettingsDlg.SetWindowText(title); g_SettingsDlg.SetWindowPos(HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE|(g_SettingsDlg.GetOnTop()?0:SWP_NOZORDER)|SWP_SHOWWINDOW); @@ -1951,6 +1952,13 @@ bool ImportSettingsXml( const wchar_t *fname ) if (error.IsEmpty()) { g_SettingsManager.SaveSettings(false); + + // we have successfuly imported settings from XML + // so there is no need to show settings dialog when start menu is triggered for the first time + CRegKey regKey; + if (regKey.Open(HKEY_CURRENT_USER,GetSettingsRegPath())==ERROR_SUCCESS) + regKey.SetDWORDValue(L"ShowedStyle2",1); + return true; } @@ -2177,7 +2185,7 @@ bool HasHelp( void ) GetModuleFileName(_AtlBaseModule.GetResourceInstance(),path,_countof(path)); *PathFindFileName(path)=0; wchar_t topic[_MAX_PATH]; - Sprintf(topic,_countof(topic),L"%s%sOpenShell.chm",path,GetDocRelativePath()); + Sprintf(topic,_countof(topic),L"%sOpenShell.chm",path); return (GetFileAttributes(topic)!=INVALID_FILE_ATTRIBUTES); } @@ -2187,7 +2195,7 @@ void ShowHelp( void ) GetModuleFileName(_AtlBaseModule.GetResourceInstance(),path,_countof(path)); *PathFindFileName(path)=0; wchar_t topic[_MAX_PATH]; - Sprintf(topic,_countof(topic),L"%s%sOpenShell.chm::/%s.html",path,GetDocRelativePath(),PathFindFileName(g_SettingsManager.GetRegPath())); + Sprintf(topic,_countof(topic),L"%sOpenShell.chm::/%s.html",path,PathFindFileName(g_SettingsManager.GetRegPath())); HtmlHelp(GetDesktopWindow(),topic,HH_DISPLAY_TOPIC,NULL); } @@ -2208,7 +2216,7 @@ bool GetSettingBool( const CSetting &setting ) CString GetSettingString( const CSetting &setting ) { - Assert(setting.type==CSetting::TYPE_STRING); + Assert(setting.type==CSetting::TYPE_STRING || setting.type==CSetting::TYPE_DIRECTORY); if (setting.value.vt!=VT_BSTR) return CString(); return setting.value.bstrVal; @@ -2709,7 +2717,7 @@ bool SaveAdmx( TSettingsComponent component, const char *admxFile, const char *a { fprintf_s(fAdmx,"\t\t\t\t\r\n",pSetting->name); } - else if (pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_ICON || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG || pSetting->type==CSetting::TYPE_SOUND || pSetting->type==CSetting::TYPE_FONT) + else if (pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_ICON || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG || pSetting->type==CSetting::TYPE_SOUND || pSetting->type==CSetting::TYPE_FONT || pSetting->type==CSetting::TYPE_DIRECTORY) { fprintf_s(fAdmx,"\t\t\t\t\r\n",pSetting->name); } @@ -2769,7 +2777,7 @@ bool SaveAdmx( TSettingsComponent component, const char *admxFile, const char *a { fprintf_s(fAdml,"\t\t\t\t%s\r\n",(const char*)name); } - else if (pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_ICON || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG || pSetting->type==CSetting::TYPE_SOUND || pSetting->type==CSetting::TYPE_FONT) + else if (pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_ICON || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG || pSetting->type==CSetting::TYPE_SOUND || pSetting->type==CSetting::TYPE_FONT || pSetting->type==CSetting::TYPE_DIRECTORY) { fprintf_s(fAdml,"\t\t\t\t\r\n",(const char*)name); } diff --git a/Src/Lib/Settings.h b/Src/Lib/Settings.h index 0306a85d2..92fa88f25 100644 --- a/Src/Lib/Settings.h +++ b/Src/Lib/Settings.h @@ -32,6 +32,7 @@ struct CSetting TYPE_SOUND, TYPE_FONT, TYPE_MULTISTRING, + TYPE_DIRECTORY, }; enum @@ -128,14 +129,13 @@ void InitSettings( CSetting *pSettings, TSettingsComponent component, ICustomSet void LoadSettings( void ); void SaveSettings( void ); void UpdateDefaultSettings( void ); -void EditSettings( const wchar_t *title, bool bModal, int tab ); +void EditSettings( const wchar_t *title, bool bModal, int tab, const wchar_t *appId = nullptr ); void CloseSettings( void ); void SetSettingsDirty( void ); void SelectSettingsTab( int tab, bool bAdvanced, const CSetting *pSelect ); void UpdateSettings( void ); // implemented by the user void UpgradeSettings( bool bShared ); // implemented by the user (called when converting 3.0 settings to 4.0) void ClosingSettings( HWND hWnd, int flags, int command ); // implemented by the user -const wchar_t *GetDocRelativePath( void ); // implemented by the user void SettingChangedCallback( const CSetting *pSetting ); // implemented by the user bool IsSettingsMessage( MSG *msg ); bool ImportSettingsXml( const wchar_t *fname ); diff --git a/Src/Lib/SettingsUIHelper.cpp b/Src/Lib/SettingsUIHelper.cpp index 63a211bab..9b988e282 100644 --- a/Src/Lib/SettingsUIHelper.cpp +++ b/Src/Lib/SettingsUIHelper.cpp @@ -15,6 +15,7 @@ #include #include #include +#include const KNOWNFOLDERID FOLDERID_DesktopRoot={'DESK', 'TO', 'P', {'D', 'E', 'S', 'K', 'T', 'O', 'P', 0x00}}; @@ -1156,7 +1157,7 @@ HRESULT STDMETHODCALLTYPE CBrowseLinkEvents::OnButtonClicked( IFileDialogCustomi { pfd->GetFolder(&pItem); } - m_pResult=pItem; + m_pResult=std::move(pItem); pfd->Close(S_FALSE); return S_OK; } @@ -1193,7 +1194,7 @@ bool BrowseCommandHelper( HWND parent, wchar_t *text ) ofn.lpstrFile=text; ofn.nMaxFile=_MAX_PATH; ofn.Flags=OFN_DONTADDTORECENT|OFN_ENABLESIZING|OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_NOCHANGEDIR|OFN_NODEREFERENCELINKS; - if (GetOpenFileName(&ofn)) + if (GetOpenFileNameSafe(&ofn)) { wchar_t buf[_MAX_PATH]; UnExpandEnvStrings(text,buf,_countof(buf)); @@ -1216,7 +1217,8 @@ bool BrowseCommandHelper( HWND parent, wchar_t *text ) return false; } -bool BrowseLinkHelper( HWND parent, wchar_t *text ) +// Internal implementation that must be run on an STA thread with COM initialized. +static bool BrowseLinkHelperImpl( HWND parent, wchar_t *text, bool bFoldersOnly ) { DoEnvironmentSubst(text,_MAX_PATH); @@ -1227,16 +1229,22 @@ bool BrowseLinkHelper( HWND parent, wchar_t *text ) if (!pCustomize) return false; - pDialog->SetTitle(LoadStringEx(IDS_PICK_LINK_TITLE)); - pDialog->SetOkButtonLabel(LoadStringEx(IDS_PICK_LINK_FILE)); - wchar_t button[256]; - Sprintf(button,_countof(button),L" %s ",LoadStringEx(IDS_PICK_LINK_FOLDER)); - pCustomize->AddPushButton(101,button); + pDialog->SetTitle(LoadStringEx(bFoldersOnly?IDS_PICK_LINK_FOLDER:IDS_PICK_LINK_TITLE)); + if (!bFoldersOnly) // add separate buttons for selecting files/folders to the dialog + { + pDialog->SetOkButtonLabel(LoadStringEx(IDS_PICK_LINK_FILE)); + wchar_t button[256]; + Sprintf(button,_countof(button),L" %s ",LoadStringEx(IDS_PICK_LINK_FOLDER)); + pCustomize->AddPushButton(101,button); + } CBrowseLinkEvents events; DWORD cookie; pDialog->Advise(&events,&cookie); - pDialog->SetOptions(FOS_ALLNONSTORAGEITEMS|FOS_FILEMUSTEXIST|FOS_DONTADDTORECENT|FOS_DEFAULTNOMINIMODE|FOS_NODEREFERENCELINKS); + if (bFoldersOnly) // set FOS_PICKFOLDERS option to use dialog in folder-only mode + pDialog->SetOptions(FOS_PICKFOLDERS|FOS_ALLNONSTORAGEITEMS|FOS_DONTADDTORECENT|FOS_DEFAULTNOMINIMODE); + else + pDialog->SetOptions(FOS_ALLNONSTORAGEITEMS|FOS_FILEMUSTEXIST|FOS_DONTADDTORECENT|FOS_DEFAULTNOMINIMODE|FOS_NODEREFERENCELINKS); { const wchar_t *c=wcschr(text,'|'); if (c) @@ -1270,6 +1278,41 @@ bool BrowseLinkHelper( HWND parent, wchar_t *text ) return pResult!=NULL; } +// Run IFileOpenDialog on a separate STA thread and pump messages on the caller while waiting. +bool BrowseLinkHelper( HWND parent, wchar_t *text, bool bFoldersOnly ) +{ + bool result = false; + + std::thread worker([&parent, &text, &bFoldersOnly, &result]() mutable { + CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); + result = BrowseLinkHelperImpl(parent, text, bFoldersOnly); + CoUninitialize(); + }); + + // Pump messages while waiting for the worker (dialog) to finish + while (true) + { + HANDLE hWorker = worker.native_handle(); + if (MsgWaitForMultipleObjects(1, &hWorker, FALSE, INFINITE, QS_ALLINPUT) == WAIT_OBJECT_0) + break; + + MSG msg; + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) + { + if (msg.message == WM_QUIT) + { + PostQuitMessage((int)msg.wParam); + break; + } + TranslateMessage(&msg); + DispatchMessage(&msg); + } + } + worker.join(); + + return result; +} + bool BrowseIconHelper( HWND parent, wchar_t *text ) { int id=0; @@ -2005,7 +2048,7 @@ LRESULT CBrowseForIconDlg::OnBrowse( WORD wNotifyCode, WORD wID, HWND hWndCtl, B CString title=LoadStringEx(IDS_ICON_TITLE); ofn.lpstrTitle=title; ofn.Flags=OFN_DONTADDTORECENT|OFN_ENABLESIZING|OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_NOCHANGEDIR; - if (GetOpenFileName(&ofn)) + if (GetOpenFileNameSafe(&ofn)) { wchar_t buf[_MAX_PATH]; UnExpandEnvStrings(path,buf,_countof(buf)); @@ -2204,7 +2247,7 @@ bool BrowseForBitmap( HWND hWndParent, wchar_t *path, bool bAllowJpeg ) CString title=LoadStringEx(IDS_BMP_TITLE); ofn.lpstrTitle=title; ofn.Flags=OFN_DONTADDTORECENT|OFN_ENABLESIZING|OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_NOCHANGEDIR; - if (GetOpenFileName(&ofn)) + if (GetOpenFileNameSafe(&ofn)) { wchar_t buf[_MAX_PATH]; UnExpandEnvStrings(path,buf,_countof(buf)); @@ -2236,7 +2279,7 @@ bool BrowseForSound( HWND hWndParent, wchar_t *path ) CString title=LoadStringEx(IDS_WAV_TITLE); ofn.lpstrTitle=title; ofn.Flags=OFN_DONTADDTORECENT|OFN_ENABLESIZING|OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_NOCHANGEDIR; - if (GetOpenFileName(&ofn)) + if (GetOpenFileNameSafe(&ofn)) { wchar_t buf[_MAX_PATH]; UnExpandEnvStrings(path,buf,_countof(buf)); @@ -2271,6 +2314,7 @@ class CTreeSettingsDlg: public CResizeableDlg EDIT_HOTKEY_ANY, EDIT_COLOR, EDIT_FONT, + EDIT_DIRECTORY, }; BEGIN_MSG_MAP( CTreeSettingsDlg ) @@ -2644,15 +2688,14 @@ LRESULT CTreeSettingsDlg::OnBrowse( WORD wNotifyCode, WORD wID, HWND hWndCtl, BO CString str; m_EditBox.GetWindowText(str); str.TrimLeft(); str.TrimRight(); - wchar_t *end; - COLORREF val=wcstol(str,&end,16)&0xFFFFFF; + COLORREF val=RgbToBgr(ParseColor(str)); static COLORREF customColors[16]; CHOOSECOLOR choose={sizeof(choose),m_hWnd,NULL,val,customColors}; choose.Flags=CC_ANYCOLOR|CC_FULLOPEN|CC_RGBINIT; if (ChooseColor(&choose)) { wchar_t text[100]; - Sprintf(text,_countof(text),L"%06X",choose.rgbResult); + Sprintf(text,_countof(text),L"%06X",BgrToRgb(choose.rgbResult)); m_EditBox.SetWindowText(text); ApplyEditBox(); UpdateGroup(m_pEditSetting); @@ -2695,7 +2738,7 @@ LRESULT CTreeSettingsDlg::OnBrowse( WORD wNotifyCode, WORD wID, HWND hWndCtl, BO else if (_wcsicmp(token,L"bold_italic")==0) font.lfWeight=FW_BOLD, font.lfItalic=1; str=GetToken(str,token,_countof(token),L", \t"); - font.lfHeight=-(_wtol(token)*dpi+36)/72; + font.lfHeight=-MulDiv(_wtol(token),dpi,72); CHOOSEFONT choose={sizeof(choose),m_hWnd,NULL,&font}; choose.Flags=CF_NOSCRIPTSEL; @@ -2714,6 +2757,29 @@ LRESULT CTreeSettingsDlg::OnBrowse( WORD wNotifyCode, WORD wID, HWND hWndCtl, BO m_EditBox.SetFocus(); m_bIgnoreFocus=false; } + else if (m_EditMode==EDIT_DIRECTORY) + { + m_bIgnoreFocus=true; + CString str; + m_EditBox.GetWindowText(str); + str.TrimLeft(); str.TrimRight(); + wchar_t text[1024]; + DWORD dwAttrs=GetFileAttributes(str); // ensure directory exists before passing it to dialog + if (dwAttrs!=INVALID_FILE_ATTRIBUTES && dwAttrs&FILE_ATTRIBUTE_DIRECTORY) + { + Strcpy(text,_countof(text),str); + DoEnvironmentSubst(text,_countof(text)); + } + else + text[0]=0; + Strcpy(text,_countof(text),str); + DoEnvironmentSubst(text,_countof(text)); + if (BrowseLinkHelper(m_hWnd,text,true)) + m_EditBox.SetWindowText(text); + SendMessage(WM_NEXTDLGCTL,(LPARAM)m_EditBox.m_hWnd,TRUE); + m_EditBox.SetFocus(); + m_bIgnoreFocus=false; + } return 0; } @@ -3018,8 +3084,7 @@ void CTreeSettingsDlg::ApplyEditBox( void ) } else if (pSetting->type==CSetting::TYPE_COLOR) { - wchar_t *end; - int val=wcstol(str,&end,16)&0xFFFFFF; + int val=RgbToBgr(ParseColor(str)); if (pSetting->value.vt!=VT_I4 || pSetting->value.intVal!=val) { pSetting->value=CComVariant(val); @@ -3034,6 +3099,20 @@ void CTreeSettingsDlg::ApplyEditBox( void ) pSetting->flags&=~CSetting::FLAG_DEFAULT; } } + else if (pSetting->type==CSetting::TYPE_DIRECTORY) + { + if (pSetting->value.vt!=VT_BSTR || str!=pSetting->value.bstrVal) + { + if (str.IsEmpty()) // empty directory strings cause unexpected behavior, so we reset to avoid this + pSetting->value=pSetting->defValue; + else // otherwise we are very lenient about what users can input as a path + pSetting->value=CComVariant(str); + if (pSetting->value==pSetting->defValue) + pSetting->flags|=CSetting::FLAG_DEFAULT; + else + pSetting->flags&=~CSetting::FLAG_DEFAULT; + } + } else { if (pSetting->value.vt!=VT_BSTR || str!=pSetting->value.bstrVal) @@ -3074,7 +3153,7 @@ void CTreeSettingsDlg::ItemSelected( HTREEITEM hItem, CSetting *pSetting, bool b val=valVar.intVal; Sprintf(text,_countof(text),L"%d",val); } - else if (pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_ICON || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG || pSetting->type==CSetting::TYPE_SOUND || pSetting->type==CSetting::TYPE_FONT) + else if (pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_ICON || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG || pSetting->type==CSetting::TYPE_SOUND || pSetting->type==CSetting::TYPE_FONT || pSetting->type==CSetting::TYPE_DIRECTORY) { if (valVar.vt==VT_BSTR) Strcpy(text,_countof(text),valVar.bstrVal); @@ -3090,8 +3169,10 @@ void CTreeSettingsDlg::ItemSelected( HTREEITEM hItem, CSetting *pSetting, bool b mode=EDIT_BITMAP_JPG; else if (pSetting->type==CSetting::TYPE_SOUND) mode=EDIT_SOUND; - else + else if (pSetting->type==CSetting::TYPE_FONT) mode=EDIT_FONT; + else + mode=EDIT_DIRECTORY; } else if (pSetting->type==CSetting::TYPE_HOTKEY || pSetting->type==CSetting::TYPE_HOTKEY_ANY) { @@ -3110,7 +3191,7 @@ void CTreeSettingsDlg::ItemSelected( HTREEITEM hItem, CSetting *pSetting, bool b mode=EDIT_COLOR; int val=0; if (valVar.vt==VT_I4) - val=valVar.intVal; + val=BgrToRgb(valVar.intVal); Sprintf(text,_countof(text),L"%06X",val); } } @@ -3131,7 +3212,7 @@ void CTreeSettingsDlg::ItemSelected( HTREEITEM hItem, CSetting *pSetting, bool b m_pEditSetting=pSetting; } - if (mode==EDIT_ICON || mode==EDIT_BITMAP || mode==EDIT_BITMAP_JPG || mode==EDIT_SOUND || mode==EDIT_FONT || mode==EDIT_COLOR) + if (mode==EDIT_ICON || mode==EDIT_BITMAP || mode==EDIT_BITMAP_JPG || mode==EDIT_SOUND || mode==EDIT_FONT || mode==EDIT_COLOR || mode==EDIT_DIRECTORY) { RECT rc2=rc; int width=(rc2.bottom-rc2.top)*3/2; @@ -3189,14 +3270,15 @@ void CTreeSettingsDlg::UpdateEditPosition( void ) DeleteDC(hdc); DWORD margins=(DWORD)m_EditBox.SendMessage(EM_GETMARGINS); size.cx+=HIWORD(margins)+LOWORD(margins)+12; - if (m_EditMode==EDIT_ICON || m_EditMode==EDIT_BITMAP || m_EditMode==EDIT_BITMAP_JPG || m_EditMode==EDIT_FONT || m_EditMode==EDIT_COLOR) + // adjust size and position of edit boxes for settings that use browse/play buttons + if (m_EditMode==EDIT_ICON || m_EditMode==EDIT_BITMAP || m_EditMode==EDIT_BITMAP_JPG || m_EditMode==EDIT_FONT || m_EditMode==EDIT_COLOR || m_EditMode==EDIT_DIRECTORY) size.cx+=width; if (m_EditMode==EDIT_SOUND) size.cx+=width*2; if (size.cxIsDefault(); const CComVariant &valVar=pSetting->GetValue(); + // check if modified items should be bold + bool bBoldSettings=GetSettingBool(L"BoldSettings"); + // calculate text if (pSetting!=m_pEditSetting) { @@ -3412,7 +3497,7 @@ void CTreeSettingsDlg::UpdateGroup( const CSetting *pModified ) CString str=LoadStringEx(pSetting->nameID); int val=0; if (valVar.vt==VT_I4) - val=valVar.intVal; + val=BgrToRgb(valVar.intVal); Sprintf(text,_countof(text),L"%s: %06X",str,val); item.mask|=TVIF_TEXT; } @@ -3458,7 +3543,7 @@ void CTreeSettingsDlg::UpdateGroup( const CSetting *pModified ) DeleteDC(hdc); DeleteDC(hdcMask); } - int state=bDefault?0:TVIS_BOLD; + int state=bDefault||!bBoldSettings?0:TVIS_BOLD; // check if item should be highlighted in bold if (!bEnabled) { if (pSetting->type!=CSetting::TYPE_COLOR) image|=SETTING_STATE_DISABLED; @@ -3566,3 +3651,65 @@ bool CDefaultSettingsPanel::Validate( HWND parent ) s_Dialog.Validate(); return true; } + +DWORD RgbToBgr(DWORD val) +{ + return ((val & 0xFF) << 16) | (val & 0xFF00) | ((val >> 16) & 0xFF); +} + +DWORD BgrToRgb(DWORD val) +{ + return RgbToBgr(val); +} + +DWORD ParseColor(const wchar_t* str) +{ + wchar_t* end; + return wcstoul(str, &end, 16) & 0xFFFFFF; +} + +// Run GetOpenFileName/GetSaveFileName on a separate STA thread and pump messages on the caller +template +static BOOL GetFileNameSafe(OPENFILENAME* pOfn) +{ + BOOL result = FALSE; + + std::thread worker([&pOfn, &result]() mutable { + CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); + result = Fnc(pOfn); + CoUninitialize(); + }); + + // Pump messages while waiting for the worker (dialog) to finish + while (true) + { + HANDLE hWorker = worker.native_handle(); + if (MsgWaitForMultipleObjects(1, &hWorker, FALSE, INFINITE, QS_ALLINPUT) == WAIT_OBJECT_0) + break; + + MSG msg; + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) + { + if (msg.message == WM_QUIT) + { + PostQuitMessage((int)msg.wParam); + break; + } + TranslateMessage(&msg); + DispatchMessage(&msg); + } + } + worker.join(); + + return result; +} + +BOOL GetOpenFileNameSafe(OPENFILENAME* pOfn) +{ + return GetFileNameSafe(pOfn); +} + +BOOL GetSaveFileNameSafe(OPENFILENAME* pOfn) +{ + return GetFileNameSafe(pOfn); +} diff --git a/Src/Lib/SettingsUIHelper.h b/Src/Lib/SettingsUIHelper.h index cd37bcc0a..8a66f72c3 100644 --- a/Src/Lib/SettingsUIHelper.h +++ b/Src/Lib/SettingsUIHelper.h @@ -385,5 +385,17 @@ const wchar_t *GetSettingsRegPath( void ); extern const GUID FOLDERID_DesktopRoot; bool BrowseCommandHelper( HWND parent, wchar_t *text ); -bool BrowseLinkHelper( HWND parent, wchar_t *text ); +bool BrowseLinkHelper( HWND parent, wchar_t *text, bool bFoldersOnly ); bool BrowseIconHelper( HWND parent, wchar_t *text ); + +// convert color in RRGGBB format to BBGGRR +DWORD RgbToBgr(DWORD val); +// convert color in BBGGRR format to RRGGBB +DWORD BgrToRgb(DWORD val); + +// parse color from hexadecimal string +DWORD ParseColor(const wchar_t* str); + +// safe versions of GetOpenFileName/GetSaveFileName (run API on a separate STA thread and pump messages on the caller) +BOOL GetOpenFileNameSafe(OPENFILENAME* pOfn); +BOOL GetSaveFileNameSafe(OPENFILENAME* pOfn); diff --git a/Src/Lib/packages.config b/Src/Lib/packages.config new file mode 100644 index 000000000..ac5e593b6 --- /dev/null +++ b/Src/Lib/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Src/Lib/stdafx.h b/Src/Lib/stdafx.h index 122f46672..9f7676bd1 100644 --- a/Src/Lib/stdafx.h +++ b/Src/Lib/stdafx.h @@ -14,6 +14,7 @@ #include #include +#define _ATL_MODULES // compatibility with /permissive- #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit #include diff --git a/Src/Localization/Chinese/Main.html b/Src/Localization/Chinese/Main.html index f6a23616c..493cf8ad7 100644 --- a/Src/Localization/Chinese/Main.html +++ b/Src/Localization/Chinese/Main.html @@ -33,7 +33,7 @@

系统要求

组件


Open-Shell 包含三个组件: diff --git a/Src/Localization/Chinese/OpenShell.hhp b/Src/Localization/Chinese/OpenShell.hhp index 323719722..29d77f23b 100644 --- a/Src/Localization/Chinese/OpenShell.hhp +++ b/Src/Localization/Chinese/OpenShell.hhp @@ -5,11 +5,11 @@ Contents file=OpenShellTOC.hhc Default topic=Main.html Display compile progress=Yes Language=0x409 English (United States) - +Title=Open-Shell Help [FILES] ClassicExplorer.html -Menu.html +StartMenu.html ClassicIE.html [INFOTYPES] diff --git a/Src/Localization/Chinese/OpenShellTOC.hhc b/Src/Localization/Chinese/OpenShellTOC.hhc index 9835e2363..cbbb5bb83 100644 --- a/Src/Localization/Chinese/OpenShellTOC.hhc +++ b/Src/Localization/Chinese/OpenShellTOC.hhc @@ -15,51 +15,51 @@
  • - +
    • - +
    • - +
    • - - + +
    • - - + +
    • - +
    • - +
    • - +
    • - +
    • - +
    • - +
  • diff --git a/Src/Localization/Chinese/Menu.html b/Src/Localization/Chinese/StartMenu.html similarity index 99% rename from Src/Localization/Chinese/Menu.html rename to Src/Localization/Chinese/StartMenu.html index 497350ae3..039c2e096 100644 --- a/Src/Localization/Chinese/Menu.html +++ b/Src/Localization/Chinese/StartMenu.html @@ -209,7 +209,7 @@

    管理员设置


    在这个例子中,设置“启用右键菜单“一直锁定,任何用户都不能改变。这是实现 -通过添加设置 HKEY_LOCAL_MACHINE\SOFTWARE\OpenShell\Menu registry key. 创建一个 DWORD 值叫 "EnableContextMenu" 并且设置为 0.
    +通过添加设置 HKEY_LOCAL_MACHINE\SOFTWARE\OpenShell\StartMenu registry key. 创建一个 DWORD 值叫 "EnableContextMenu" 并且设置为 0.

    在某些情况下,您可能不希望锁定为所有用户的值,只是修改初始值的设置。在这样的情况下添加“默认”名称的值。例如如果你想上下文菜单默认为禁用,但仍允许用户启用它,如果他们愿意,创建一个DWORD值命名为“EnableContextMenu_Default”并将它设置为0。

    diff --git a/Src/Localization/Chinese/images/OpenShell.png b/Src/Localization/Chinese/images/OpenShell.png index 1c1786845..228453efc 100644 Binary files a/Src/Localization/Chinese/images/OpenShell.png and b/Src/Localization/Chinese/images/OpenShell.png differ diff --git a/Src/Localization/ChineseTW/Main.html b/Src/Localization/ChineseTW/Main.html index d66f3fb4d..7e91858b1 100644 --- a/Src/Localization/ChineseTW/Main.html +++ b/Src/Localization/ChineseTW/Main.html @@ -39,7 +39,7 @@


    Open-Shell 3 ӥDn: diff --git a/Src/Localization/ChineseTW/OpenShell.hhp b/Src/Localization/ChineseTW/OpenShell.hhp index be8ce5caa..bea8a6fd9 100644 --- a/Src/Localization/ChineseTW/OpenShell.hhp +++ b/Src/Localization/ChineseTW/OpenShell.hhp @@ -6,11 +6,11 @@ Default Font= Default topic=Main.html Display compile progress=Yes Language=0x404 (cAxW) - +Title=Open-Shell Help [FILES] ClassicExplorer.html -Menu.html +StartMenu.html ClassicIE.html [INFOTYPES] diff --git a/Src/Localization/ChineseTW/OpenShellTOC.hhc b/Src/Localization/ChineseTW/OpenShellTOC.hhc index c8da1397e..109c7e3cb 100644 --- a/Src/Localization/ChineseTW/OpenShellTOC.hhc +++ b/Src/Localization/ChineseTW/OpenShellTOC.hhc @@ -15,51 +15,51 @@
  • - +
    • - +
    • - +
    • - - + +
    • - - + +
    • - +
    • - +
    • - +
    • - +
    • - +
    • - +
  • diff --git a/Src/Localization/ChineseTW/Menu.html b/Src/Localization/ChineseTW/StartMenu.html similarity index 99% rename from Src/Localization/ChineseTW/Menu.html rename to Src/Localization/ChineseTW/StartMenu.html index 7c03963d3..486837d4f 100644 --- a/Src/Localization/ChineseTW/Menu.html +++ b/Src/Localization/ChineseTW/StartMenu.html @@ -156,7 +156,7 @@

    ]wOCӨϥΪ̥BsbnɡC w]CӨϥΪ̯sҦ]wC tκ޲zww]wA]SϥΪ̯s:

    -bdҡA]wuҥΥk\vwlפBϥΪ̵LkܧC oOzL[J]w HKEY_LOCAL_MACHINE\SOFTWARE\OpenShell\Menu nɾXӹFC إߦW٬uEnableContextMenuv DWORD Ȩó] 0C
    +bdҡA]wuҥΥk\vwlפBϥΪ̵LkܧC oOzL[J]w HKEY_LOCAL_MACHINE\SOFTWARE\OpenShell\StartMenu nɾXӹFC إߦW٬uEnableContextMenuv DWORD Ȩó] 0C

    YDZΤUziणnwҦϥΪwƭȡAӥuO²檺ק]wlȡC bΫhbƭȪW٥[Ju_DefaultvC ҦpApGznw]Τe\\ϥΪ̵ݭnҥΡAإߦW٬uEnableContextMenu_Defaultv DWORD Ȩó] 0C

    diff --git a/Src/Localization/English/ButtonTutorial.html b/Src/Localization/English/ButtonTutorial.html new file mode 100644 index 000000000..8bb0a9c09 --- /dev/null +++ b/Src/Localization/English/ButtonTutorial.html @@ -0,0 +1,143 @@ + + + + Custom Start Buttons + + +

    Custom Start Buttons Tutorial

    +
    +

    Simple Start Buttons

    +A custom start button requires an image that contains 3 distinct parts one for the normal state of the button, one for the hot state (when the mouse is over the button), and one for the pressed state. The 3 parts must be the same size. +
    +
    + +
    +
    +By default the width of the start button equals the width of the image. The height of the button is the height of the image divided by 3. You can scale the image by overriding the width of the button from the Open-Shell settings. The height will be adjusted to preserve the aspect ratio. +
    +
    +The image must be saved in either PNG or BMP format (including 32-bit BMP files). For best results use an image editor that supports transparency, like Photoshop, Gimp or Paint .NET. +
    +
    +

    Where to download

    +You can find many start button images on the Internet. Here are some of the places: +
    +http://www.classicshell.net/forum/viewforum.php?f=18 +
    +https://www.sevenforums.com/themes-styles/34951-custom-start-menu-button-collection.html +
    +https://www.sevenforums.com/customization/78291-big-group-custom-start-orbs.html +
    +https://tutoriales13.deviantart.com/art/Orbs-153450418 +
    +https://www.deviantart.com/?q=start+button+orb +
    +
    +

    Animated Buttons

    +Open-Shell does support animated start buttons. They contain animated transitions between the different states. +
    +
    +The animated image consists of one or more rows of pixels that describe the animation, followed by one or more button frames. The description rows need to be fully opaque (A=255). The frames are counted from 0 frame0, frame1, .... All frames must be the same size. +
    +
    + +
    +
    +

    Main information (stored in the first 6 pixels)

    +The first two pixels of the first row need to be: +
    + Pixel 0: color R=65, G=78, B=77 (This is the text ANM in ASCII) +
    + Pixel 1: color R=66, G=84, B=78 (This is the text BTN in ASCII) +
    +They allow the start button to recognize that this image contains animation. +
    +
    +The next pixel describes the number of frames and the number of description rows: +
    + Pixel 2: The red channel contains the number of description rows (usually 1). The blue channel contains the number of total frames in the bitmap (this limits the number of frames to 255). +
    +If one row is not enough to describe the animations, it can continue on two or more rows. +
    +The contents of this pixel and the total size of the image determine the size of the individual frame. The number of description rows (red channel) is subtracted by the total height of the image, and then it is divided by the number of frames (blue channel). +
    +
    +The next 3 pixels contain the frames for the 3 distinct states of the start button Normal, Hot and Pressed. +
    + Pixel 3: The blue channel contains the index of the frame for the Normal state (usually 0) +
    + Pixel 4: The blue channel contains the index of the frame for the Hot state +
    + Pixel 5: The blue channel contains the index of the frame for the Pressed state +
    +
    + +
    +
    +

    Transitions

    +The rest of the pixels describe the transitions between the different states, in this order: +
    +
      +
    1. Normal to Hot
    2. +
    3. Hot to Normal
    4. +
    5. Normal to Pressed
    6. +
    7. Pressed to Normal
    8. +
    9. Hot to Pressed
    10. +
    11. Pressed to Hot
    12. +
    +The blue channel of the first pixel of each transition contains the duration of the animation in 1/60th of a second (so 60 means 1 second). If this is 0, then there is no transition. +
    +The green channel contains the number of frame ranges that follow. If this is 0, then the transition is a direct transition from the start state to the end state. +
    +The red channel is 1 for the default behavior to cross-blend between frames and 0 to disable blending. +
    +
    +The next few pixels contain pairs or frame ranges that make up the animation between the states. Their count is in the green channel of the first pixel of the transition. The first frame in the range is in the blue channel and the last frame is in the red channel. If the first and last frame of the range are different, then both frames and all frames between them are included. +
    +
    +If the first and the last frame are the same, then the range identifies a single frame. This allows for precise selection of each frame of the animation. +
    +
    + +
    +
    +In this example the Normal to Hot animation contains frames from 0 to 10. They play for 0.3 seconds and allow blending between frames. The Hot to Normal animation is the same but in reverse it plays from frame 10 to frame 0. +
    +The other 4 transitions are empty. +
    +
    +

    Open-Shell Limitations

    +While the format is very flexible and allows for custom animations between all states, Open-Shell does not support all features. +
    +
      +
    1. It only supports animations between the Normal and Hot states. Any transitions involving the Pressed state are instant to improve responsiveness +
      +
      +
    2. +
    3. The animations between Normal and Hot must use the same (or similar) frames in both directions. Potentially the two transitions can play at different speed. The reason is that at any point during the animation it can be interrupted and the opposite animation will start from the current frame. This can happen when the mouse moves in and out of the start button +
      +
    4. +
    +
    +The system also allows you to create a button with a single image. Just set pixels from 3 to 11 to 0. Then frame 0 will be used for all states. +
    + + \ No newline at end of file diff --git a/Src/Localization/English/ClassicExplorer.html b/Src/Localization/English/ClassicExplorer.html index 3d0eb8a4a..496a86b4e 100644 --- a/Src/Localization/English/ClassicExplorer.html +++ b/Src/Localization/English/ClassicExplorer.html @@ -6,16 +6,21 @@ Classic Explorer -

    Open-Shell website  Classic Explorer


    -Classic +Open-Shell website

      Classic Explorer


    +Classic Explorer is a plugin for Windows Explorer that:
      @@ -41,7 +46,7 @@

      New copy UI (Windows 7 only)
      +

      Classic copy UI (Windows 7 only)

      In Vista when you copy files and there is a conflict you are presented @@ -49,7 +54,7 @@

      New copy UI (Windows 7 only)

      -Before
      +Before

      What’s wrong with it?

      @@ -59,8 +64,8 @@

      New copy UI (Windows 7 only)
      move the mouse around to discover the UI like in a Lucas Arts adventure game. And finally the keyboard usability is awful. To tell it -“yes, I know what I’m doing, I want to overwrite all files” you have to -press Alt+D, up, up, up, Space! It is harder than performing the Akuma +“yes, I know what I’m doing, I want to overwrite all files” you have to +press Alt+D, up, up, up, Space! It is harder than performing the Akuma Kara Demon move in Street Fighter 3. There is a time and a place for that stuff and copying files is not it.

      @@ -68,14 +73,14 @@

      New copy UI (Windows 7 only)

      The Classic Explorer plugin brings back the simpler dialog box from Windows XP:

      -

      After
      +

      After

      It is immediately clear what is clickable (clue – the buttons at the -bottom), there is easy keyboard navigation (press Y for “Yes”, A to +bottom), there is easy keyboard navigation (press Y for “Yes”, A to copy all files) and you can still see which file is newer and which is -larger. And of course just like in Windows XP, holding down Shift while clicking on the No button means "No to All" (or just press Shift+N).
      +larger. And of course just like in Windows XP, holding down Shift while clicking on the No button means "No to All" (or just press Shift+N).

      If you click @@ -117,12 +122,12 @@

      Toolbar for Windows Explorer

      To solve the problem, the Classic Explorer plugin adds a new toolbar:

      Explorer Toolbar
      Explorer Toolbar

      The available button are: Go Up, Cut, Copy, Paste, Delete, Properties, Email, Settings. More buttons can be added from the Settings dialog.

      -Hints:
      +Hints:
          - Hold the Control key when clicking the Up button to open the parent folder in a new Explorer window.
          - Hold the Shift key when clicking the Delete button to permanently delete a file
      @@ -131,7 +136,7 @@

      Toolbar for Windows Explorer

      The new toolbar doesn’t show up in Explorer automatically after installation. You have to do a few things before you can use it:
      -
        +
        1. Open a new Windows Explorer window (Win key+E)
        2. Turn on the menu in Explorer – Go to Tools (Alt+T), Folder @@ -154,7 +159,7 @@

          Status bar

          Classic Explorer restores the original Explorer status bar that shows the free disk space and the size of the selected files:

          -File size in status bar
          +File size in status bar

          Unlike the built-in status bar, the selection size is shown even if more than 100 files are selected. When no files are selected the total @@ -166,8 +171,8 @@

          Status bar
          Details Pane you see at the bottom of Explorer. You can turn off the Details Pane from the Organize menu to save space. Also there is a bug in the Windows 7 Explorer that sometimes doesn't show any text in the -status bar. Press F5 to refresh the view and get the status text.
          -
          Windows 8 note: Classic Explorer adds its own +status bar. Press F5 to refresh the view and get the status text.
          +
          Windows 8+ note: Classic Explorer adds its own status bar. You should hide the default status bar to save space. Select the View tab in the ribbon, then click on Options. Select the View tab in the options. Locate the checkbox "Show status bar" and @@ -176,8 +181,8 @@

          Status bar

          -

          Settings

          You can access the settings of Classic Explorer from the toolbar or from the start menu:
          -
          +

          Settings

          You can access the settings of Classic Explorer from the toolbar or from the Start menu:
          +


          You can choose from seeing only the basic settings, or all available settings. Hover over each setting to see a description of what it's for. Type in the search box to find a setting by name.
          @@ -202,10 +207,10 @@

          Settings

          You can access the settings of Classic E
          Here's one example of what can be customized:
          - Title bar tweaks
          + Title bar tweaks

          Click on the Toolbar Buttons tab to customize the toolbar:
          -
          +

          The column on the left shows the current buttons in the toolbar, and the column on the right lists the buttons you can add to the toolbar. You can drag and drop buttons from the right column to the @@ -222,7 +227,7 @@

          Settings

          You can access the settings of Classic E Important Note: Not all available commands have default icons or text. That's because Windows doesn't have icons for things like Undo, Select All, etc. If you want to use such buttons in your toolbar you will have to provide your own icon. See below how to do it.

          After you place a button in the toolbar, you can edit it's attributes. Double-click on the button to edit:
          -Edit toolbar button
          +Edit toolbar button
          Here you can select a command for the button, its text and icon. Press the Restore Defaults button to get the default text and icon for the chosen command.
          The command can be:
            @@ -365,7 +370,7 @@

            Administrative Settings

            The settings are per user and are stored in the registry. By default every user can edit all of their settings. An administrator can lock specific settings, so no user can edit them:
            -
            +
            In this example the setting "Show Up button" is locked to always be "Before Back/Forward" and can't be changed by any user. This is achieved by adding the setting to the HKEY_LOCAL_MACHINE\SOFTWARE\OpenShell\ClassicExplorer registry key. Create a string value called "ShowUpButton" and set it to "BeforeBack".
            @@ -383,7 +388,7 @@

            Administrative Settings

            The settings are
            There is also a global setting EnableSettings. Set it to 0 in the registry to prevent the users from even opening the Settings dialog:
            -Disable all settings
            +Disable all settings

            You can enable or disable Classic Explorer for individual processes using the 2 registry settings "ProcessWhiteList" and diff --git a/Src/Localization/English/ClassicIE.html b/Src/Localization/English/ClassicIE.html index c121d167d..3693fdadf 100644 --- a/Src/Localization/English/ClassicIE.html +++ b/Src/Localization/English/ClassicIE.html @@ -13,45 +13,46 @@ Classic IE -

            Open-Shell website  -Classic IE


            + +Open-Shell website

              Classic IE

            +
            Classic IE
            is a small plugin for Internet Explorer that:
            • Adds a caption to the title -bar so you can see the full title of the page
            • +bar so you can see the full title of a page
            • Shows the security zone in the status bar
            • Shows the loading progress in the status bar

            See the full page title even when it doesn't fit in the tab:
            -
            +

            See the progress and the security zone:
            -
            +

            Installation

            When you run Internet Explorer for the first time after installing -Classic IE it may prompt you that a new add-on called ClassicIEBHO is +Classic IE, it may prompt you that a new add-on called ClassicIEBHO is installed and if you want to enable it. Click on the Enable button. If -you don't get a prompt, go to Tools -> Manage add-ons and make sure ClassicIEBHO is enabled. After enabling the add-on you have to restart Internet Explorer to activate the plugin.
            +you don't get a prompt, go to Tools -> Manage add-ons and make sure ClassicIEBHO is enabled. After enabling the add-on, you have to restart Internet Explorer to activate the plugin.

            Settings

            You can access the settings from Tools -> Classic IE Settings -or from the start menu. The settings control the color and the font of +or from the Start menu. The settings control the color and the font of the caption, and what information to display on the status bar.
            -
            +

            You can choose from seeing only the basic settings, or all available settings. Hover over each setting to see a description of what it's for. Type in the search box to find a setting by name.
            @@ -80,20 +81,20 @@

            Administrative Settings

            no user can edit them. This is achieved by adding the setting to the HKEY_LOCAL_MACHINE\SOFTWARE\OpenShell\ClassicIE registry key.

            You may also wish to not lock the setting but only override its initial -value. Then add "_Default" to the name of the registry value.
            +value. Do this by adding "_Default" to the name of the registry value.

            The easiest way to know the registry name of a setting and its value is to modify it, and then look it up in HKEY_CURRENT_USER\Software\OpenShell\ClassicIE\Settings.
            Sometimes you may want to lock a setting to its default value, but you -don't know what the default value is. Then create a DWORD value and set +don't know what the default value is. Do this by creating a DWORD value and setting it to 0xDEFA.

            There is also a global setting EnableSettings. Set it to 0 in the -registry to prevent the users from even opening the Settings dialog:
            +registry to prevent the users from opening the Settings dialog:
            -
            +

            Editing the settings through group policies is also supported. Extract the file PolicyDefinitions.zip found in the installation folder and read the document PolicyDefinitions.rtf for more details.

            diff --git a/Src/Localization/English/License.html b/Src/Localization/English/License.html index ae628eab6..cfe3306e9 100644 --- a/Src/Localization/English/License.html +++ b/Src/Localization/English/License.html @@ -6,18 +6,20 @@ License Agreement -

            Open-Shell website  License Agreement
            -


            -Open-Shell 2009-2017, Ivo Beltchev

            -http://www.classicshell.net/
            +Open-Shell website

              License Agreement

            + +Classic Shell © 2009-2017, Ivo Beltchev http://www.classicshell.net/
            + +Open-Shell © 2017-2018, The Open-Shell Team https://github.com/Open-Shell

            BY USING THIS SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE.

            @@ -48,9 +50,8 @@

            IN OTHER WORDS: -Basically you can use this software freely for any purpose but don’t be -surprised if it doesn’t work as you expect. You can’t hold the author -responsible for any damages that come to you from using the software. +You can use this software freely for any purpose, however it is not the author's +responsiblity for any damages that come from using the software. You can’t profit from selling this software. You got it for free after all.

            diff --git a/Src/Localization/English/Links.html b/Src/Localization/English/Links.html index 36f21b45c..589bcc149 100644 --- a/Src/Localization/English/Links.html +++ b/Src/Localization/English/Links.html @@ -7,33 +7,32 @@ Open-Shell -

            Open-Shell website  Links


            The latest version can be found on the Open-Shell website:
            -http://www.classicshell.net/
            -
            -View the project history here:
            -History: http://www.classicshell.net/history/
            -
            -
            -

            Get Help

            -For answers to frequently asked questions look here:
            -FAQ: http://www.classicshell.net/faq/
            +Open-Shell website

              Links

            +
            The latest version can be found on the Open-Shell website:
            +https://github.com/Open-Shell/Open-Shell-Menu/releases/latest/

            -If you don't find your answer in the FAQ, try the discussion forums:
            -Discussion Forums: http://www.classicshell.net/forum/viewforum.php?f=6
            +

            Get Help

            +Discussion forums:
            +https://github.com/Open-Shell/Open-Shell-Menu/discussions

            -
            -

            Report Problems

            +

            Report a Problem

            Report bugs and feature requests in the development forums:
            -Development Forums: http://www.classicshell.net/forum/viewforum.php?f=11
            +https://github.com/Open-Shell/Open-Shell-Menu/issues
            diff --git a/Src/Localization/English/Main.html b/Src/Localization/English/Main.html index ce136c631..b44b117c9 100644 --- a/Src/Localization/English/Main.html +++ b/Src/Localization/English/Main.html @@ -2,48 +2,47 @@ - - - - - - + + + + + Open-Shell -

            Open-Shell website  Open-Shell

            -Version 4.3.1 – general release

            -

            What is Open-Shell?

            -Open-Shell™ is a collection of usability enhancement for Windows. It -has a customizable Start menu and Start button, it adds a -toolbar for Windows Explorer and supports a variety of smaller features.
            -
            +Open-Shell website

              Open-Shell

            +

            What is Open-Shell?

            +Open-Shell™ is a collection of usability enhancements for Windows. It +has a customizable Start menu and Start button, adds a +toolbar for Windows Explorer, and supports a variety of smaller features.

            -

            System Requirements

            -Open-Shell works on Windows 7, Windows 8, Windows 8.1, Windows Server 2008 R2, -Windows Server 2012 and Windows Server 2012 R2. Both 32 and 64-bit versions are -supported (the same installer works for both). Some skins for the start menu -require Aero theme to be enabled. Others require at least Basic theme.
            +

            System Requirements

            +Open-Shell works on Windows 7, Windows 8, Windows 8.1, Windows 10, and Windows 11, along with their server counterparts. Both 32 and 64-bit versions are +supported (the same installer works for both).

            -
            -

            Components


            - +

            Components

            Open-Shell has three major components:
            -

            Uninstallation

            -You can uninstall Open-Shell from Control Panel -> Programs and Features. Another way is  to run the setup again and chose "Remove".
            +

            Uninstallation

            +You can uninstall Open-Shell from Control Panel -> Programs and Features. Another way is to run the setup again and choose "Remove".
            A logoff may be required to complete the process.

            diff --git a/Src/Localization/English/MenuADMX.txt b/Src/Localization/English/MenuADMX.txt index 712f70eaf..a86ff27a2 100644 --- a/Src/Localization/English/MenuADMX.txt +++ b/Src/Localization/English/MenuADMX.txt @@ -190,3 +190,4 @@ StartHoverDelay.nameOverride = Hover delay (for Start button) AllProgramsDelay.nameOverride = Hover delay (for All Programs in Windows 7) CSMHotkey.tipAddition = .\n\nThe base value is the main key's virtual code. Add 256 for Shift, 512 for Control and 1024 for Alt.\nThe best way to get the value is to select the hotkey in the Open-Shell Menu settings dialog and then look up the value named CSMHotkey in HKCU\Software\OpenShell\StartMenu\Settings WSMHotkey.tipAddition = .\n\nThe base value is the main key's virtual code. Add 256 for Shift, 512 for Control and 1024 for Alt.\nThe best way to get the value is to select the hotkey in the Open-Shell Menu settings dialog and then look up the value named WSMHotkey in HKCU\Software\OpenShell\StartMenu\Settings +SearchFiles.tipOverride = When this is checked, the search results will include files, emails and other items from indexed locations diff --git a/Src/Localization/English/OpenShell.hhp b/Src/Localization/English/OpenShell.hhp index 323719722..cf641de9f 100644 --- a/Src/Localization/English/OpenShell.hhp +++ b/Src/Localization/English/OpenShell.hhp @@ -5,12 +5,11 @@ Contents file=OpenShellTOC.hhc Default topic=Main.html Display compile progress=Yes Language=0x409 English (United States) - +Title=Open-Shell Help [FILES] ClassicExplorer.html -Menu.html +StartMenu.html ClassicIE.html [INFOTYPES] - diff --git a/Src/Localization/English/OpenShellEULA.rtf b/Src/Localization/English/OpenShellEULA.rtf index dde44156e..8c3c08114 100644 Binary files a/Src/Localization/English/OpenShellEULA.rtf and b/Src/Localization/English/OpenShellEULA.rtf differ diff --git a/Src/Localization/English/OpenShellReadme.rtf b/Src/Localization/English/OpenShellReadme.rtf index de2d4e631..7435293bc 100644 --- a/Src/Localization/English/OpenShellReadme.rtf +++ b/Src/Localization/English/OpenShellReadme.rtf @@ -1,86 +1,82 @@ -{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fprq2\fcharset0 Cambria;}{\f1\fswiss\fprq2\fcharset0 Calibri;}{\f2\fnil\fcharset2 Symbol;}} -{\colortbl ;\red23\green54\blue93;\red79\green129\blue189;\red0\green112\blue192;\red0\green0\blue255;\red54\green95\blue145;} +{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033\deflangfe1033{\fonttbl{\f0\fnil\fcharset0 Segoe UI Semibold;}{\f1\fnil\fcharset0 Segoe UI;}{\f2\fswiss\fprq2\fcharset0 Calibri;}{\f3\fnil\fcharset2 Symbol;}} +{\colortbl ;\red0\green120\blue212;\red43\green136\blue216;\red0\green0\blue255;\red0\green90\blue158;\red54\green95\blue145;\red0\green112\blue192;} {\stylesheet{ Normal;}{\s1 heading 1;}} -{\*\generator Riched20 10.0.17134}{\*\mmathPr\mnaryLim0\mdispDef1\mwrapIndent1440 }\viewkind4\uc1 -\pard\brdrb\brdrs\brdrw20\brsp80 \widctlpar\sa300\qc\cf1\expndtw5\kerning28\f0\fs52 Open-Shell\par +{\*\generator Riched20 10.0.25262}{\*\mmathPr\mdispDef1\mwrapIndent1440 }\viewkind4\uc1 +\pard\brdrb\brdrs\brdrw20\brsp80 \widctlpar\sa300\qc\cf1\expndtw5\kerning28\f0\fs44 Open-Shell\cf0\expndtw0\f1\fs22\par -\pard\widctlpar\cf0\expndtw0\b0\i0\f1\fs22\par -Thank you for installing \cf3\b Open-Shell\'99\cf0\b0 . It adds some missing features to Windows 7, Windows 8, Windows 8.1 and Windows 10 - like a classic start menu, start button, a toolbar for Windows Explorer and others.\par +\pard\widctlpar Thank you for installing \cf2\b Open-Shell\'99\cf0\b0 . It adds some missing features to Windows 7, Windows 8, Windows 8.1 and Windows 10, like a classic Start menu, Start button, a toolbar for Windows Explorer and more.\par \par The latest version can be found on the Open-Shell website:\par -{{\field{\*\fldinst{HYPERLINK http://www.classicshell.net/ }}{\fldrslt{http://www.classicshell.net/\ul0\cf0}}}}\f1\fs22\par +{{\field{\*\fldinst{HYPERLINK https://github.com/Open-Shell/Open-Shell-Menu }}{\fldrslt{https://github.com/Open-Shell/Open-Shell-Menu\ul0\cf0}}}}\f1\fs22\par \par -For answers to frequently asked questions look here:\par -{{\field{\*\fldinst{HYPERLINK http://www.classicshell.net/faq/ }}{\fldrslt{http://www.classicshell.net/faq/\ul0\cf0}}}}\f1\fs22\par -\par -Or use the discussion forums to get help:\par -{{\field{\*\fldinst{HYPERLINK http://www.classicshell.net/forum/viewforum.php?f=6 }}{\fldrslt{http://www.classicshell.net/forum/viewforum.php?f=6\ul0\cf0}}}}\f1\fs22\par +Use the discussion forums to get help:\par +{{\field{\*\fldinst{HYPERLINK https://github.com/Open-Shell/Open-Shell-Menu/discussions }}{\fldrslt{https://github.com/Open-Shell/Open-Shell-Menu/discussions\ul0\cf0}}}}\f1\fs22\par \par Report problems in the Open-Shell development forums:\par -{{\field{\*\fldinst{HYPERLINK http://www.classicshell.net/forum/viewforum.php?f=11 }}{\fldrslt{http://www.classicshell.net/forum/viewforum.php?f=11\ul0\cf0}}}}\f1\fs22\par +{{\field{\*\fldinst{HYPERLINK https://github.com/Open-Shell/Open-Shell-Menu/issues }}{\fldrslt{https://github.com/Open-Shell/Open-Shell-Menu/issues\ul0\cf0}}}}\f1\fs22\par \par -\pard\keep\keepn\widctlpar\s1\sb480\sl276\slmult1\cf5\b\f0\fs28 Open-Shell Menu\par +\pard\keep\keepn\widctlpar\s1\sb480\sl276\slmult1\cf4\f0\fs28 Open-Shell Menu\cf5\f1\par -\pard\widctlpar\cf0\b0\f1\fs22\par -\cf3\b Open-Shell Menu\cf0 \b0 is a flexible start menu that can mimic the menu behavior of Windows 2000, XP and Windows 7. It has a variety of advanced features:\par +\pard\widctlpar\cf0\fs22\par +\cf2\b Open-Shell Menu \cf0\b0 is a flexible start menu that can mimic the menu behavior of Windows 2000, XP and Windows 7. It has a variety of advanced features:\par \par -\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\widctlpar\fi-360\li720 Choose between \ldblquote Classic\rdblquote and \ldblquote Windows 7\rdblquote styles\par -{\pntext\f2\'B7\tab}Drag and drop to let you organize your applications\par -{\pntext\f2\'B7\tab}Options to show Favorites, expand Control Panel, etc\par -{\pntext\f2\'B7\tab}Shows recently used documents. The number of documents to display is customizable\par -{\pntext\f2\'B7\tab}Translated in 35 languages, including Right-to-left support for Arabic and Hebrew\par -{\pntext\f2\'B7\tab}Does not disable the original start menu in Windows. You can access it by Shift+Click on the start button\par -{\pntext\f2\'B7\tab}Right-click on an item in the menu to delete, rename, sort, or perform other tasks\par -{\pntext\f2\'B7\tab}The search box helps you find your programs and files without getting in the way of your keyboard shortcuts\par -{\pntext\f2\'B7\tab}Supports jumplists for easy access to recent documents and common tasks\par -{\pntext\f2\'B7\tab}Available for 32 and 64-bit operating systems\par -{\pntext\f2\'B7\tab}Has support for skins, including additional 3rd party skins. Make your own!\par -{\pntext\f2\'B7\tab}Fully customizable in both looks and functionality\par -{\pntext\f2\'B7\tab}Support for Microsoft\rquote s Active Accessibility\par -{\pntext\f2\'B7\tab}Converts the \ldblquote All Programs\rdblquote button in the Windows menu into a cascading menu\par -{\pntext\f2\'B7\tab}Implements a customizable start button\par -{\pntext\f2\'B7\tab}Can show, search and launch Windows Store apps (Windows 8)\par - -\pard\keep\keepn\widctlpar\s1\sb480\sl276\slmult1\cf5\b\f0\fs28 Classic Explorer\par - -\pard\widctlpar\cf0\b0\f1\fs22\par -\cf3\b Classic Explorer\cf0 \b0 is a plugin for Windows Explorer that:\par +\pard{\pntext\f3\'B7\tab}{\*\pn\pnlvlblt\pnf3\pnindent0{\pntxtb\'B7}}\fi-360\li720 Choose between \ldblquote Classic\rdblquote and \ldblquote Windows 7\rdblquote styles\par +{\pntext\f3\'B7\tab}Drag and drop to let you organize your applications\par +{\pntext\f3\'B7\tab}Options to show Favorites, expand Control Panel, etc\par +{\pntext\f3\'B7\tab}Shows recently used documents. The number of documents to display is customizable\par +{\pntext\f3\'B7\tab}Translated in 35 languages, including Right-to-left support for Arabic and Hebrew\par +{\pntext\f3\'B7\tab}Does not disable the original start menu in Windows. You can access it by Shift+Click on the start button\par +{\pntext\f3\'B7\tab}Right-click on an item in the menu to delete, rename, sort, or perform other tasks\par +{\pntext\f3\'B7\tab}The search box helps you find your programs and files without getting in the way of your keyboard shortcuts\par +{\pntext\f3\'B7\tab}Supports jumplists for easy access to recent documents and common tasks\par +{\pntext\f3\'B7\tab}Available for 32 and 64-bit operating systems\par +{\pntext\f3\'B7\tab}Has support for skins, including additional 3rd party skins. Make your own!\par +{\pntext\f3\'B7\tab}Fully customizable in both looks and functionality\par +{\pntext\f3\'B7\tab}Support for Microsoft\rquote s Active Accessibility\par +{\pntext\f3\'B7\tab}Converts the \ldblquote All Programs\rdblquote button in the Windows menu into a cascading menu\par +{\pntext\f3\'B7\tab}Implements a customizable start button\par +{\pntext\f3\'B7\tab}Can show, search and launch Windows Store apps (Windows 8)\par + +\pard\keep\keepn\widctlpar\s1\sb480\sl276\slmult1\cf4\f0\fs28 Classic Explorer\cf5\f1\par + +\pard\widctlpar\cf0\fs22\par +\cf2\b Classic Explorer \cf0\b0 is a plugin for Windows Explorer that:\par \par -\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\widctlpar\fi-360\li720 Adds a toolbar to Explorer for some common operations (Go to parent folder, Cut, Copy, Paste, Delete, Properties, Email). The toolbar is fully customizable\par -{\pntext\f2\'B7\tab}Replaces the copy UI in Windows 7 with the more user-friendly \ldblquote classic\rdblquote version similar to Windows XP\par -{\pntext\f2\'B7\tab}Handles Alt+Enter in the folder panel of Windows Explorer and shows the properties of the selected folder\par -{\pntext\f2\'B7\tab}Has options for customizing the folder panel to look more like the Windows XP version or to not fade the expand buttons\par -{\pntext\f2\'B7\tab}Can show the free disk space and the total size of the selected files in the status bar\par -{\pntext\f2\'B7\tab}Can disable the breadcrumbs in the address bar\par -{\pntext\f2\'B7\tab}Fixes a long list of features that are broken in Windows 7 \endash missing icon overlay for shared folders, the jumping folders in the navigation pane, missing sorting headers in list view, and more\par +\pard{\pntext\f3\'B7\tab}{\*\pn\pnlvlblt\pnf3\pnindent0{\pntxtb\'B7}}\fi-360\li720 Adds a toolbar to Explorer for some common operations (Go to parent folder, Cut, Copy, Paste, Delete, Properties, Email). The toolbar is fully customizable\par +{\pntext\f3\'B7\tab}Replaces the copy UI in Windows 7 with the more user-friendly \ldblquote classic\rdblquote version similar to Windows XP\par +{\pntext\f3\'B7\tab}Handles Alt+Enter in the folder panel of Windows Explorer and shows the properties of the selected folder\par +{\pntext\f3\'B7\tab}Has options for customizing the folder panel to look more like the Windows XP version or to not fade the expand buttons\par +{\pntext\f3\'B7\tab}Can show the free disk space and the total size of the selected files in the status bar\par +{\pntext\f3\'B7\tab}Can disable the breadcrumbs in the address bar\par +{\pntext\f3\'B7\tab}Fixes a long list of features that are broken in Windows 7 \endash missing icon overlay for shared folders, the jumping folders in the navigation pane, missing sorting headers in list view, and more\par -\pard\keep\keepn\widctlpar\s1\sb480\sl276\slmult1\cf5\b\f0\fs28 Classic IE\par +\pard\keep\keepn\widctlpar\s1\sb480\sl276\slmult1\cf4\f0\fs28 Classic IE\par -\pard\widctlpar\cf0\b0\f1\fs22\par -\cf3\b Classic IE is a plugin for Internet Explorer 9 and later versions that:\par +\pard\widctlpar\cf0\f1\fs22\par +\cf2\b Classic IE is a plugin for Internet Explorer 9 and later versions that:\par \cf0\b0\par -\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\widctlpar\fi-360\li720 Adds a caption to the title bar so you can see the full title of the page\par -{\pntext\f2\'B7\tab}Shows the security zone in the status bar\par -{\pntext\f2\'B7\tab}Shows the loading progress in the status bar\par +\pard{\pntext\f3\'B7\tab}{\*\pn\pnlvlblt\pnf3\pnindent0{\pntxtb\'B7}}\fi-360\li720 Adds a caption to the title bar so you can see the full title of the page\par +{\pntext\f3\'B7\tab}Shows the security zone in the status bar\par +{\pntext\f3\'B7\tab}Shows the loading progress in the status bar\par -\pard\keep\keepn\widctlpar\s1\sb480\sl276\slmult1\cf5\b\f0\fs28 Installation instructions\par +\pard\keep\keepn\widctlpar\s1\sb480\sl276\slmult1\cf4\f0\fs28 Installation Instructions\par -\pard\widctlpar\cf0\b0\f1\fs22\par +\pard\widctlpar\cf0\f1\fs22\par The toolbar for Windows Explorer may not show up automatically after installation. You have to do a few things before you can use it.\par \par -\cf3\b Windows 7:\cf0\b0 Press Alt+V to open the View menu. Open the \ldblquote Toolbars\rdblquote sub-menu and select \ldblquote Classic Exlporer Bar\rdblquote . Keep in mind that the menu will always be displayed as long as the toolbar is visible.\par +\cf6\b Windows 7:\cf0\b0 Press Alt+V to open the View menu. Open the \ldblquote Toolbars\rdblquote sub-menu and select \ldblquote Classic Exlporer Bar\rdblquote . Keep in mind that the menu will always be displayed as long as the toolbar is visible.\par \par -\cf3\b Windows 8:\cf0\b0 Press Alt+V to open the View ribbon. Click on the down arrow in the \ldblquote Options\rdblquote section. Select \ldblquote Classic Explorer Bar\rdblquote\par +\cf6\b Windows 8:\cf0\b0 Press Alt+V to open the View ribbon. Click on the down arrow in the \ldblquote Options\rdblquote section. Select \ldblquote Classic Explorer Bar\rdblquote\par \par If these steps don\rquote t work, it may be possible that the Explorer extensions have been disabled. Check the following, then try to show the toolbar again:\par \pard {\pntext\f1 1)\tab}{\*\pn\pnlvlbody\pnf1\pnindent0\pnstart1\pndec{\pntxta)}} -\widctlpar\fi-360\li720 Open Internet Explorer and go to Tools -> Manage add-ons. Locate the add-ons \ldblquote Classic Explorer Bar\rdblquote and \ldblquote ExplorerBHO Class\rdblquote and make sure they are enabled.\par +\fi-360\li720 Open Internet Explorer and go to Tools -> Manage add-ons. Locate the add-ons \ldblquote Classic Explorer Bar\rdblquote and \ldblquote ExplorerBHO Class\rdblquote and make sure they are enabled.\par {\pntext\f1 2)\tab}Maybe the browser extensions are disabled on your system. This is usually the default for Windows Server. Open the "Internet Options", go to the "Advanced" tab, and check the option "Enable third-party browser extensions".\par \pard\widctlpar\par @@ -89,18 +85,18 @@ On Windows 8 the Classic Explorer status bar is different from the one in Explor \par The caption in Internet Explorer may not show up automatically after installation. You may get a prompt to enable the ClassicIEBHO plugin. If you get the prompt, select \ldblquote Enable\rdblquote . If you don\rquote t get a prompt, go to Tools -> Manage add-ons and make sure the add-on \ldblquote ClassicIEBHO\rdblquote is enabled. After that restart Internet Explorer.\par -\pard\keep\keepn\widctlpar\s1\sb480\sl276\slmult1\cf5\b\f0\fs28 Uninstallation\par +\pard\keep\keepn\widctlpar\s1\sb480\sl276\slmult1\cf4\b\f0\fs28 Uninstallation\par \pard\widctlpar\cf0\b0\f1\fs22\par -To uninstall \cf3\b Open-Shell\cf0\b0 follow these steps:\par +To uninstall \cf2\b Open-Shell\b0 \cf0 follow these steps:\par \pard {\pntext\f1 1)\tab}{\*\pn\pnlvlbody\pnf1\pnindent0\pnstart1\pndec{\pntxta)}} -\widctlpar\fi-360\li720 Open \b Control Panel -> Programs and Features\b0 and double-click on \b Open-Shell\b0 . Then follow the instructions. You may have to restart Windows to complete the process.\par -{\pntext\f1 2)\tab}If you installed any additional skins for the start menu you will have to delete them manually\par +\fi-360\li720 Open \b Control Panel -> Programs and Features\b0 and double-click on \b Open-Shell\b0 . Then follow the instructions. You may have to restart Windows to complete the process.\par +{\pntext\f1 2)\tab}If you installed any additional skins for the start menu you will have to delete them manually.\par -\pard\widctlpar\par +\pard\widctlpar\f2\par \pard\widctlpar\sa200\sl276\slmult1\par } - + \ No newline at end of file diff --git a/Src/Localization/English/OpenShellTOC.hhc b/Src/Localization/English/OpenShellTOC.hhc index 9835e2363..8797f8fdb 100644 --- a/Src/Localization/English/OpenShellTOC.hhc +++ b/Src/Localization/English/OpenShellTOC.hhc @@ -15,51 +15,65 @@
  • - +
    • - +
    • - +
    • - - + +
    • - - + +
    • - + + +
        +
      • + + + +
    • - +
    • - + + +
        +
      • + + + +
    • - +
    • - +
    • - +
  • diff --git a/Src/Localization/English/OpenShellText-en-US.wxl b/Src/Localization/English/OpenShellText-en-US.wxl index dd4bc0213..4a1941857 100644 --- a/Src/Localization/English/OpenShellText-en-US.wxl +++ b/Src/Localization/English/OpenShellText-en-US.wxl @@ -1,6 +1,7 @@ This installer is only for 32-bit version of Windows. For 64-bit Windows you need to run Setup64. + This installer is only for 64-bit version of Windows. For ARM64 Windows you need to run SetupARM64. Open-Shell requires Windows 7 or above. A newer version of [ProductName] is already installed. The setup will now exit. Classic Explorer diff --git a/Src/Localization/English/SkinTutorial.html b/Src/Localization/English/SkinTutorial.html new file mode 100644 index 000000000..a2ca5df55 --- /dev/null +++ b/Src/Localization/English/SkinTutorial.html @@ -0,0 +1,2204 @@ + + + + Start Menu Skinning + + +

    Start Menu Skinning Tutorial

    +
    +

    Introduction

    Open-Shell supports skin files for the start menu. The skin can change things like: +
    +
      +
    • The background image or color of the menu
    • +
    • The font and text color for various elements
    • +
    • Arrows and other icons
    • +
    • Sizes, padding and alignment
    • +
    • The image to use for the menu separators
    • +
    +
    +All information about a skin is stored in a .skin or a .skin7 file (the .skin7 files are for use by the Windows 7 style). The skin files must be installed in the Skins directory of Open-Shell (for example C:\Program Files\Open-Shell\Skins). +
    +
    +Tutorial Contents: +
    + +
    +
    +

    Anatomy of a skin file

    +The skin file is a DLL that contains specific resources like bitmaps, icons, etc. The only mandatory resource is a text resource with ID=1 and type="SKIN". It is the text that describes the skin. The description can refer to other resources like bitmaps and icons. +
    +
    +The easiest way to create a new skin is to start from an existing .skin file. Make a copy of one of the default skins and save it under a new name. Then open it in Visual Studio's resource editor, or another resource editor like Resource Hacker: +
    +
    +Skin file +
    +
    +A great feature of Resource Hacker is that it lets you edit the text directly inside. When you are done, press the "Compile Script" button, then save the file. +
    +Note: Keep in mind that often the Skins folder is protected by the OS. If you want to use a tool to edit a file directly in that folder, the tool must be started as Administrator. +
    +
    +To replace a bitmap resource, select Action > Replace Bitmap. Then pick your new bitmap file, pick the ID of the bitmap resource you want to replace, click Replace and save. You can replace an icon resource in a similar way. +
    +
    +To add a new bitmap, select Action > Add a new Resource. Pick the new bitmap file, enter a new name (must be a number), and you can leave the language blank. Finally click Add Resource and save. +
    +
    +
    +

    Bitmaps

    +The start menu uses various bitmap resources for its graphical elements. Every bitmap in the menu has a name for its setting (for example "Main_pager_arrows" or "Search_bitmap"). You specify the bitmap resource with the setting <name>=<resource index>. For example: +
    + +
    +Main_bitmap=1
    use bitmap resource with index 1 +
    +
    +You can use BMP, PNG and JPG images as resources. Put BMP files into the BITMAP resource section. Put PNG and JPG files into the IMAGE resource section. The menu will first search the BITMAP section for the given resource index, and then the IMAGE section. +
    +BMP and PNG images can have alpha channels to support transparency. JPG images are always opaque, and of course, of lower quality. +
    +
    +A bitmap can optionally have a color mask. The mask determines how the bitmap is mixed with up to 3 additional colors, called "tint colors". The Red channel of the mask controls how much of the first tint color to mix in, the Green channel controls the second tint color and the Blue channel controls the third tint color. By default the first tint color is the system window (Glass) color, and the second tint color is the menu background color. +
    +The mask only applies to the RGB portion of the bitmap. The Alpha channel remains unchanged: +
    +
    +Color masks +
    +In this example the first image is the background, the second is the mask and the third is the end result. The red portions of the mask blend the glass color (purple) with the background. The green portions blend the menu color (gray) with the background. By varying the intensity of red and green in the mask image we control how much the colors are blended. +
    +
    +The mask can be specified in one of two ways either <bitmap>_mask=<resource index> or <bitmap>_mask=#RRGGBB (a color in hexadecimal format). If the mask is a bitmap it must have the same dimensions as the main bitmap. Some examples: +
    + +
    +Main_bitmap_mask=2 use a bitmap resource with index 2
    +Main_bitmap_mask=#FF0000 use a fixed color with Red=255, Green=0, Blue=0
    +
    +
    +To change the tint color: +
    +
    +Main_bitmap_tint1=#000000 The first tint color is black
    +Main_bitmap_tint2=#808080 The second tint color is gray
    +
    +
    +The main bitmap can also be a solid color. If both the bitmap and the mask are solid colors, the end result is a solid-color bitmap that is the result of the bitmap color and the tint colors all mixed together according to the mask. +
    +If the main bitmap is a solid color and the mask is a bitmap, then the dimensions of the mask bitmap determine the dimensions of the final bitmap. In this case the alpha channel of the mask is used as alpha channel of the result. +
    +
    +The masks and tint colors are a powerful system that allows you to achieve a large variation of possibilities without the need for a large number of bitmap resources. For good examples how to use the color tints, look at the Metro skin. +
    +
    +See the reference section at the end for the supported bitmaps.
    +
    +

    Named colors

    +Everywhere a solid color is accepted, you can use one of the predefined named colors. The actual color at any given moment will depend on the current Windows settings. Using named colors allows you to create skins that follow the current Windows color scheme. +
    +
    +A small number of colors are system colors for classic window elements like button color, text highlight color, and so on. For example: +
    +
    +Main_bitmap=$SystemActiveBorder use the system active border color
    +
    +You can see a full list of those system colors in the reference section. +
    +
    +The rest of the named colors are only available on Windows 8 and up. They come from the Metro palette, which is a complete set of hundreds of named colors, designed to look good together. +
    +
    +Main_bitmap_jump=$StartHighlight use the start screen highlight color
    + +
    +
    Not all colors are available on all versions of Windows. Windows 8.1 adds new ones that don't exist in Windows 8, and Windows 10 adds even more colors. To make skins that look good on all versions of Windows, you may use a list of colors in order of preference. If the first one is not available, the menu will use the next one in the list. +
    +
    +Main_selection=$SystemAccentDark2|$StartSelectionBackground use the system accent dark 2 color, or if it is not available, use the start selection background color +
    +
    +You can get a full list of the Metro colors using the Classic Shell Utility. You can find it on the main Downloads page. +
    +
    +For an example how to use the Metro colors, look at the Metro skin. It makes a heavy use of the named colors to achieve look that matches the current color scheme of the start screen. +
    +
    +

    Bitmap slices

    +Since many of the start menu elements are not fixed size (they is resized depending on the number of menu items, the font size, etc) and bitmaps are fixed size, we need a way to resize the bitmap to fill a given area. Simply stretching the whole bitmap will not work because fine details around the border will get blurred. +
    +
    +That's where the "slicing" system comes in. Each bitmap is split into slices horizontally and vertically: +
    +
    +bitmap slices +
    +
    +The 4 corners are never stretched. The left and right slices are stretched only vertically. The top and bottom slices are stretched only horizontally. And the middle portion can be stretched in any direction. This lets us get any size background without sacrificing the sharp edges or the smooth gradient in the middle: +
    +
    +Resized images +
    +
    +Some images can have more than 3 slices. The main menu background has 6 slices 3 for the caption area and 3 for the menu area. +
    +
    +Some images don't need both vertical and horizontal slices. The menu separator image is only split horizontally because all separators have the same height. +
    +
    +
    +

    Backgrounds

    +A background is a combination of a bitmap and its slices. It consists of the following settings: <name>, <name>_mask, <name>_slices_X, <name>_slices_Y. For example if the name is "Main_bitmap": +
    +
    +Main_bitmap=1 use bitmap resource with index 1 +
    +Main_bitmap_mask=2 use a bitmap resource with index 2 +
    +Main_bitmap_slices_X=6,1,1,6,1,13 +
    +Main_bitmap_slices_Y=60,317,8 +
    +
    + +Not all backgrounds have both X and Y slices. For example horizontal separators only have X, and vertical separators only have Y, since they can only stretch in one direction. +
    +
    +See the reference section at the end for the supported backgrounds. +
    +
    +
    +

    Skin items

    +A skin item is a combination of settings that control a particular element of the menu, for example the selected element. The following settings are supported: +
    +<name>_font the font used for the text +
    +<name>_glow_size the glow size for the text (only works in Windows 7) +
    +<name>_text_color the color for the text (4 colors for normal, selected, disabled, disabled+selected) +
    +<name>_text_padding the padding on all sides of the text (left, top, right, bottom) +
    +<name>_icon_padding the padding on all sides of the icon +
    +<name>_selection the background of the item, usually when it is selected (this setting has the _mask, _slices_X and _slices_Y sub-settings, it can also be a solid color in #RRGGBB format) +
    +<name>_arrow_color the color of the sub-menu arrow triangle if the arrow is solid color (2 colors for normal and selected) +
    +<name>_arrow a bitmap for the arrow if the arrow is a bitmap +
    +<name>_arrow_padding the left and right padding of the arrow +
    +<name>_icon_frame a background for the frame of the icon +
    +<name>_icon_frame_offset an X and Y padding between the frame and the icon (X applies for left and right, Y applies to top and bottom) +
    +
    +For example this defines the normal text in the main menu: +
    +Main_font="Segoe UI",normal,-10
    +Main_text_color=#FFFFFF,#FFFFFF,#9F9F9F,#AFAFAF
    +Main_text_padding=1,0,8,0
    +Main_icon_padding=4,3,3,3
    +Main_selection=3
    +Main_selection_slices_X=4,63,4
    +Main_selection_slices_Y=4,20,4
    +Main_arrow_color=#FFFFFF,#FFFFFF
    +Main_arrow_padding=8,9
    +
    +
    +When you specify a font you need to provide the font name, the weight (normal or bold), and a size. The font size is given in points. A point is 1/72 of an inch. So the font size in pixels is: +
    +
    +pixel_size = point_size * DPI / 72 +
    +
    +where DPI is the current DPI display setting. +
    +The font size can be negative or positive. A negative size measures the character height and a positive size measures the cell height of the font. Since the cell is usually taller than a character, a font size -10 is usually slightly larger than 10. +
    +
    +
    +Some items inherit settings from other items. For example the "Main_split" item may only have these settings: +
    +Main_split_selection=11 +
    +Main_split_selection_slices_X=4,63,4,0,16,4
    +Main_split_selection_slices_Y=4,20,4 +
    +
    +
    +The settings that are not specified will come from the "Main" item. +
    +
    +See the reference section at the end for the supported items. +
    +
    +

    Main menu

    +Now that we know what is a Bitmap, Background and Skin item, we are ready to define the look of the main menu. +
    +
    +The main menu can use a solid color for its background or use a bitmap. +
    +
    +If you want solid color, use this in the skin description: +
    +
    +Main_opacity=solid  the menu is a solid rectangle +
    Main_background=#00FF00  green color +
    +
    +The color (and all colors in this file) are in the #RRGGBB hexadecimal format. This is the same format that is used by HTML text. +
    +
    +To specify a bitmap, use: +
    +
    +Main_bitmap=1  use bitmap resource 1
    Main_bitmap_slices_X=8,1,1,5,1,13  the horizontal slices
    Main_bitmap_slices_Y=13,50,9  the vertical slices
    Main_opacity=glass  use glass effect
    +
    +Main_opacity can be solid, region, alpha, glass, fullalpha or fullglass. Solid means the menu will be filled with the Main_background color and the bitmap will be drawn on top. Region means the pixels with alpha=0 will be transparent, and the rest will be opaque. Alpha means that the bitmap will be alpha-blended with the desktop behind it. Glass means the pixels with alpha=0 will be transparent, all the rest will blend between the glass color and the pixel color (alpha=1 is full glass, alpha=255 is fully opaque). Fullalpha and fullglass are the same as alpha/glass but inform the start menu that the background behind the menu items can be transparent. +
    +
    +The bitmap must follow certain restrictions: +
    +
      +
    • The bitmap can be either 24-bit or 32-bit with alpha channel.
    • +
    • For 32-bit images don't premultiply the alpha channel. If you don't know what "premultiply the alpha" means, never mind +
      +
    • +
    • The area where the menu items are going to be must be completely opaque if fullalpha or fullglass are not used +
      +
    • +
    • For region, alpha, glass, fullalpha or fullglass modes there is a limitation where the fully transparent (alpha=0) pixels can be. For every horizontal line of the bitmap there can be transparent pixels on the left end and on the right end, but not in the middle. The non-transparent (alpha>0) pixels must be contiguous with no holes.
    • +
    • For right-to-left versions of Windows (like Arabic and Hebrew) the bitmap will be mirrored. Any text or directionally-sensitive graphics (like a logo) will be backwards. If you want to support right-to-left Windows, either don't use such graphics or provide an option that uses alternative image
    • +
    • The Windows 7 style (skin with extension .skin7) does not support fullalpha or fullglass opacity modes +
      +
    • +
    To create a 32-bit bitmap with alpha channel you need an image editor like Photoshop or GIMP. In Photoshop the alpha channel goes here: +
    +
    +Alpha in Photoshop +d +
    +
    +When saving the bmp file make sure you pick the 32-bit file format. +
    +
    +The first 3 numbers of Main_bitmap_slices_X relate to the caption area. Set them all to 0 if you don't want caption. If you do want caption, set the numbers to to the left, middle and right slice of the caption area of the bitmap. +
    +The second 3 numbers of Main_bitmap_slices_X are for the left, middle, and right slice of the menu area. +
    +The 3 numbers of Main_bitmap_slices_Y are for the top, middle and bottom slice of the whole menu. The same numbers are used for the caption and the menu. +
    +
    +Here's an example of how the slices should look: +
    +Main menu slices +
    +The highlighted vertical slices are single pixel wide and are stretched to fill the width of the caption area and the menu area. +
    +
    +If your menu background is solid color or a completely rectangular bitmap, and you are running in Windows 7's Classic theme, you can select whether the menu will have a 1-pixel thin border or 2-pixel 3D border: +
    +Main_thin_frame=1 use thin frame instead of the thick 3D frame (for Classic mode only)
    +
    +
    +

    The caption

    +The caption is the area on the side of the menu that shows text like Windows 7 Home. If you want caption you must provide a bitmap for the main menu. There are few parameters related to the caption: +
    +
    +Caption_font="Segoe UI",normal,18  the name, weight and size of the caption font
    +Caption_text_color=#FFFFFF  the color of the caption text
    +Caption_glow_color=#FFFFFF  the color of the glow behind the text
    +Caption_glow_size=10  the size of the glow (0 no glow)
    +Caption_padding=4,8,2,16  the padding on the left, top, right and bottom of the caption
    +
    +The padding is the number of pixels to leave on each side of the caption text. +
    +
    +
    +

    Two columns

    +All Classic skins must support either a single column mode or two-column mode. The Windows 7 skins only support two columns. +
    +There is a system option "TWO_COLUMNS", which is set when the skin runs in two-column mode. You may use that option to provide a different bitmap and other settings. For more on options look at the Skin Options section. +
    +
    +The main bitmap for two columns must have 6 vertical slices, just like if the menu has a caption. But instead of having a caption section and the menu section, there are the first column section and the second color section. +
    +
    +The second column can have its own set of properties to specify a different font, colors, selection bitmap, etc.: +
    +
    +Main2_opacity=fullglass +
    +Main2_font="Segoe UI",bold,-10 +
    +Main2_text_color=#FFFFFF,#FFFFFF,#7F7F7F,#7F7F7F +
    Main2_padding=3,10,4,8 +
    +
    +
    These properties are optional. If something is not set, the values from the first column will be used. +
    +
    +
    +

    The menu items

    +The main menu can display different kinds of items. Also some items can have multiple states. Each item is described in the skin as one or more "skin items" (as explained above). Here are some examples of items: +
    +Main the normal items in the main menu +
    +Main_new highlighted new programs +
    +Main2_separator a separator in the second column of the main menu +
    +
    +Note on separators: For simple separators (with no text) the height of the separator is determined by the height of the provided bitmap. If no separator bitmap is given the menu uses the default etched line. +
    +
    +Custom separator +
    +
    +
    For the complete list see the reference section at the end. +
    +
    +

    Patterns

    +The main menu supports overlays of tiled (repeated) textures that are blended with the main background. You can have up to 4 patterns. +
    +
    + +Pattern1=11 the first pattern will use image resource 11
    +Pattern2=15 +
    +
    +
    +Just like regular bitmaps, patterns can have masks and tint colors +
    +
    + +Pattern1_mask=#303000 mask that blends 20% of tint1 and 20% of tint2
    +Pattern1_tint1=#000000 black color
    +Pattern1_tint2=#FFFF00 yellow color
    +
    +
    +By default the patterns will cover the entire menu. You can use a mask image to control where the patterns will be visible. The Red channel controls the first pattern, Green controls the second pattern, Blue controls the third pattern and Alpha controls the fourth pattern. +
    +
    +Color masks +
    +In this example the red areas of the mask are replaced by Pattern1 and the green areas are replaced by Pattern2. +
    +
    + +Main_pattern_mask=19 use image resource 19 for pattern mask +
    +Main_pattern_search_mask=20 mask for the search mode of the menu +
    +Main_pattern_jump_mask=21 mask for the jumplist mode +
    +
    Search_pattern_mask=22 mask for the search portion of the main menu +
    Search_pattern_search_mask=23 mask for the search portion of the main menu in search mode +
    Search_pattern_jump_mask=24 mask for the search portion of the main menu in jumplist mode +
    +
    +
    +The masks must have the same size as the images they correspond Main_bitmap, Main_bitmap_search, Main_bitmap_jump and Search_background. +
    +
    +Note: +
    +Having multiple patterns blended together can be slow. For fastest results, try to limit most areas to a single pattern with the mask at full intensity (100% Red or 100% Blue, etc). If you want to have a semi-transparent pattern, it is more efficient to have the transparency in the alpha channel of the pattern bitmap instead of using half-intensity mask. +
    +
    +For an example on using patterns, take a look at the Metallic skin. +
    +
    +

    Emblems

    +The main menu background can have additional images drawn on it, called "emblems". They are drawn without any stretching. You can have up to 10 of them. The first 4 can use a mask bitmap to control where in the image the emblems will be visible and where they will be hidden. +
    +
    + +Main_emblem1=11 use image resource 11 for the emblem
    +Main_emblem1_padding=20,20,20,20 keep 20 pixels padding on all sides of the emblem
    +Main_emblem1_alignH=right align to the right side of the menu
    +Main_emblem1_alignV=bottom align to the bottom side of the menu
    +Main_emblem_mask=12 use image resource 12 for the emblem mask
    +
    + +Main_emblem + + +_search_mask=20 emblem mask for the search mode of the menu +
    +Main_
    emblem_jump_mask=21 emblem mask for the jumplist mode +
    +
    Search_emblem_mask=22 emblem mask for the search portion of the main menu +
    Search_emblem_search_mask=23 emblem mask for the search portion of the main menu in search mode +
    Search_emblem_jump_mask=24 emblem mask for the search portion of the main menu in jumplist mode +
    +
    +
    +The horizontal alignment can be left, right or center for the entire menu, left1, right1, center1 for the first column, left2, right2, center2 for the second column, or corner. The corner alignment will align the emblem to the same corner of the screen where the start menu is shown. +
    +
    +The certical alignment can be top, bottom, center or corner. +
    +
    +The emblem mask controls where the emblems will be visible. Red is for the first emble, Green for the second, and so on. +
    +
    +
    +

    Other menu elements

    +
    +You can provide a custom bitmap to be used for the arrows: +
    +
    +Main_arrow=3  the resource ID of the sub-menu arrow bitmap +
    +
    +The arrows bitmap (Main_arrow) needs 2 have 2 arrow images like this: +
    +Sub-menu arrows +
    +The top half is used for the normal arrow and the bottom half is for the selected arrow. +
    +
    +The pager is used to scroll items in the menus if they don't fit. The pager needs a background and a bitmap for the arrow: +
    + +
    +Main_pager=2
      the resource ID of the pager bitmap +
    Main_pager_slices_X=3,1,3  the horizontal slices of the pager bitmap +
    Main_pager_slices_Y=4,66,4  the vertical slices of the pager bitmap +
    Main_pager_arrows=3  the resource ID of the pager arrows bitmap +
    +
    +Main_pager has the normal and selected backgrounds for the scroll buttons: +
    +Pager buttons +
    +
    Main_pager_arrows must have 4 arrow images like this: +
    +Pager Arrows +
    +The top 2 point up, the bottom 2 point down, the left 2 are normal and the right 2 are selected. +
    +
    +
    +

    More on padding

    +The start menu uses multiple padding settings to correctly align all graphical elements. You can see from this image: +
    +Padding settings +
    +
    +Tweak the numbers to get the desired alignment of the caption, or the gap between the icon and the text, etc. +
    +
    +
    +

    User Picture (Classic skins)

    +
    +The start menu can also show the user picture. You enable it by setting the size of the user picture. All original skins use 48x48 pixels, but you can choose any size up to 128x128: +
    +
    +User_image_size=48 +
    +
    +You must also set the position of the image inside the menu: +
    +
    +User_frame_position=-10,6 +
    +
    Positive position is measured from the left and top, and negative numbers are from the right and the bottom. So "-10,6" means 10 pixels from the right and 6 pixels from the top. The horizontal position can also be "center", "center1" or "center2". Then the image will be centered over the whole menu, or over the first column, or over the second column: +
    +
    +User_frame_position=center2,6  + center on top of the second column +
    +
    +Optionally, you can specify a frame bitmap: +
    +
    +User_bitmap=12  + the resource ID of the frame bitmap +
    +User_image_offset=8,8  + how many pixels between the top/left corner of the frame and the top/left corner of the user picture +
    +
    +
    The frame is drawn on top of the user picture, so it must have a hole where the picture is supposed to be. That means the frame bitmap must have alpha channel. +
    +
    +By default the user picture is drawn opaque. You can control the transparency of the picture with this property: +
    +
    +User_image_alpha=200  + set the transparency to 200 (out of 255) +
    +
    +
    +

    User Picture (Windows 7 skins)

    +
    +The Windows 7 style shows the user picture as a separate window that can extend beyond the size of the start menu. The user image is restricted to 48x48 pixels and the frame around it is always 64x64 pixels. This limitation is because the size must match the size of the extra-large icons used by the items in the second column of the menu. +
    +
    +You can provide the following settings: +
    +User_bitmap=12  + the resource ID of the frame bitmap +
    +User_bitmap_outside=1 if the frame can go outside of the main menu (but only when the start menu is at the bottom of the screen) +
    +User_image_padding= -4,8 top and bottom padding of the frame (used to fine-tune the vertical position of the frame. the horizontal position is always centered) +
    +
    +
    +

    User Name (Classic skins only)

    +
    +The start menu can also show the user name. To enable that feature you have to provide the location of the name inside the menu, its font and alignment: +
    +
    +User_name_position=10,15,-75,55 +
    +User_name_align=right +
    +User_font="Segoe UI",bold,22 +
    +User_text_color=#FFFFFF +
    +User_glow_color=#000000 +
    +User_glow_size=2 +
    +
    +
    +
    +The four number are the left, top, right and bottom offsets of the rectangle. Positive numbers mean offsets from the left and top. Negative numbers mean offsets from the right and bottom. In this example the rectangle will be 10 pixels from the left, 15 from the top, 75 from the right and the bottom will be 55 from the top. Since the top and bottom numbers (second and fourth) are both positive, the rectangle will be aligned to the top of the menu and will always be 40 pixels tall. +
    +
    +Unlike other fonts in the skin, the font for the user name does not scale when the screen DPI changes. Read more about font scaling in the Scaling section below. +
    +
    +The alignment can be center, center1, center2, left, left1, left2, right, right1 or right2. If this setting is missing, the name is centered by default. Center, left and right align the name relative to the whole menu. Center1, left1 and right1 align inside the first column, and center2, left2 and right2 align inside the second column. +
    +
    +The user name is usually taken from the system. For systems that provide full name it will be something like "Smith, John". Otherwise it will be the login name like "jsmith". You can override the text from the settings, using the User name text setting in the Menu Look tab. +
    +
    +
    +

    Search box

    +The icon next to the search box can be skinned to match the menu background. You need to provide one bitmap that contains 8 images like this: +
    +Search icons +
    +The top row has 16x16 images and the bottom row has 20x20. Then specify the bitmap ID: +
    +
    +Search_bitmap=11
    + +
    +

    Windows 7 style +
    +

    +The Windows 7 style (the .skin7 skins) have some additional requirements for the main menu. +
    +
    +First, it requires 3 separate backgrounds to be set, Main_bitmap (as shown above), Main_bitmap_search (used during search) and Main_bitmap_jump (used when a jumplist is opened). It is recommended that the top and bottom padding for all 3 backgrounds are the same, otherwise the menu items may move around as the menu transitions between different modes. +
    +
    +Second, the skin needs some new skin items to be defined, like Shutdown, List, Programs, etc. For the complete list see the reference section at the end. +
    +
    +There are some additional bitmap resources that need to be defined, also listed in the reference section. These include the background around the search box in various modes, custom pin icon, etc. +
    +
    +
    +

    Sub-menus

    +For sub-menus the parameters are similar to a simple main menu: +
    +
    +Submenu_padding=2,2,2,2 +
    +Submenu_thin_frame=1
    +
    +Submenu_font="Segoe UI",normal,-9
    +Submenu_background=#FFFFFF
    +Submenu_text_color=#000000,#000000,#7F7F7F,#7F7F7F
    +Submenu_selection=2
    Submenu_selection_slices_X=3,1,3
    +Submenu_selection_slices_Y=4,66,4
    +Submenu_separator=3 +
    Submenu_separator_slices_X=3,34,3 +
    +....... +
    +
    +Sub-menus can also have a vertical separator. It is used when a menu has more than one column: +
    +Submenu_separatorV=12  bitmap to use as a vertical separator between multiple columns +
    +Submenu_separator_slices_Y=2,16,2  vertical slices for Submenu_separatorV +
    +
    +
    +

    About box

    +In the settings of the start menu there is a button About This Skin that opens a message box. Use it to provide information about the skin and about yourself. List any requirements of your skin Does it require Aero? Is it intended for Vista only? +
    +
    +The parameters are: +
    +About=Some text  the text you want displayed +
    +AboutIcon=1  the icon resource to use in the About box +
    +
    +In the text you can use \n as a line break, like "Line1\nLine2". The text also supports hyperlinks in the format <A HREF="www.mycoolsite.com">Visit my site</A>. +
    +
    +The icon can be any icon resource you want displayed. If no icon is provided, the system "info" icon is used. +
    +
    +
    +

    Skin variations

    +One skin file can contain multiple skins. The first one (defined in the SKIN resource with ID=1) is the main skin and the rest are variations. The variations are described in the main SKIN resource like this: +
    +Variation1=0, "Large Icons, With Caption"
    +Variation2=2, "Large Icons, No Caption" +
    +
    +Each variation has a resource ID and a text. The ID refers to a secondary SKIN resource, which contains overrides for some parameters (for example an alternative Main_bitmap, or Submenu_font). The text is the name of the skin variation that will be used in the Settings box. +
    +
    +The skin variations make it possible to pack multiple skins into one file, which makes them easier to distribute together. Also all skins can share bitmap resources from the skin file, reducing the total size. +
    +
    +
    +

    Skin options

    +A skin can define a list of options for the user to pick. In the simple case an option is a checkbox that can be ON or OFF. The options are defined like this: +
    +OPTION CAPTION="Caption",1
    +OPTION SMALL_ICONS="Small Icons",0
    +
    +
    +First there is the word OPTION, then the name of the option (like CAPTION), then the label for the checkbox (like "Caption") and finally the default value (1 ON, 0 OFF). +
    +
    +At the end of the skin file you can have one or more sections that provide overrides for some parameters. Each section has a condition, which is evaluated based on the options that the user has selected. The condition can be an expression that uses operations like AND, OR and NOT like OPTION1 AND (OPTION2 OR NOT OPTION3). +
    +For example: +
    +[NOT CAPTION] this section will be used when CAPTION is OFF
    +Main_bitmap_slices_X=0,0,0,15,1,13
    +Main_padding=12,10,10,8
    +
    +
    +[SMALL_ICONS] this section will be used when SMALL_ICONS is ON
    +Main_large_icons=0
    +Main_font="Segoe UI",normal,-9
    +
    +
    +Each section starts from its header and ends at the next section or the end of the file. So it is important to place the sections at the very end of the file. +
    +
    +It is possible to disable an option depending on some other options. You do that by providing an expression for the option, as well as an alternate default value when the expression is false. For example: +
    +OPTION USER_NAME="Show user name",0
    +OPTION CENTER_NAME="Center user name",1, USER_NAME, 0
    +
    +
    +The "Center user name" option will be disabled when USER_NAME is false (that is, when the "Show user name" option is unchecked). When the option is disabled, its value will be fixed to 0. The idea is to make it clear for the user that if you don't show the user name then you can't center it. +
    +
    +Important Note: An option can only depend on other options that are defined before it. So in this example USER_NAME must be defined after CENTER_NAME. +
    +
    +

    Complex options

    +More complex options can have an actual value in addition to being turned ON or OFF. The value can be a number, a text string, a color or an image. +
    + +
    +
    This defines a color option named COLOR_CUSTOM. The default value is FFFFFF. The condition for the option is TRUE, which makes it always enabled. +
    +
    +OPTION_COLOR COLOR_CUSTOM=Custom color,0,TRUE,FFFFFF +
    +[COLOR_CUSTOM] +
    +Main_background=@COLOR_CUSTOM@
    +
    +
    +The option will be displayed as a checkbox and a color picker. When the checkbox is clicked, the value COLOR_CUSTOM will become true, which will enable the [COLOR_CUSTOM] section. The actual color value selected by the user will replace @COLOR_CUSTOM@. +
    +
    +For number, text, or image options, use OPTION_NUMBER, OPTION_STRING and OPTION_IMAGE. +
    +
    +Check out the Metallic skin for many examples of complex options. +
    +
    +

    Skin modes

    +The classic skins (the ones stored in .skin files) can be used in 3 modes "one column", "two columns" and "all programs". The first and the second are used depending on the current menu style. The last one is used on Windows 7 to show the All Programs sub-menu of the Windows start menu. +
    +
    +The skin system defines 2 built-in options TWO_COLUMNS and ALL_PROGRAMS. The skin can use them to detect which of the modes is being requested. For example: +
    +
    +[ALL_PROGRAMS] this section will be used only for the All Programs menu +
    +Submenu_text_color=#0000FF,#0000FF,#7F7F7F,#7F7F7F override the text color +
    +
    +Not all options make sense in all modes, so it is nice to hide them from the user. For example the caption settings can't be used in "two columns" mode, and any main menu settings are ignored in "all programs" mode. +
    +You can define the following settings to restrict what options to show: +
    +Classic1_options a list of options to show in "one column" mode +
    +Classic2_options a list of options to show in "two columns" mode +
    +AllPrograms_options a list of options to show in "all programs" mode +
    +
    +For example: +
    +Classic1_options=CAPTION, USER_IMAGE, USER_NAME, CENTER_NAME, SMALL_ICONS
    +Classic2_options=NO_ICONS, SMALL_ICONS
    +AllPrograms_options=THICK_BORDER, SOLID_SELECTION
    +
    +
    +
    +

    Radio groups

    +Sometimes you may want to present a set of options, such as only one option is active at a time. This is called a radio group. You define it like that: +
    +
    +OPTION RADIOGROUP=<name of the group>,0,<option1>|<option2>
    +OPTION <option1>=<name1>,1
    +OPTION <option2>=<name2>,0

    +
    +
    +The first option in the list defines the group. It has a name, then the value (which is ignored), then the list of the possible options. +
    +The next few options define the possible selections. Exactly one of them must be set to 1 and that will be the default selection. When the user clicks on one of the options the rest will be set to 0 automatically. +
    +
    +For example: +
    +
    +OPTION RADIOGROUP=Transparency,0,TRANSPARENT_LESS|TRANSPARENT_DEF|TRANSPARENT_MORE
    +OPTION TRANSPARENT_LESS=Less,0
    +OPTION TRANSPARENT_DEF=Default,1
    +OPTION TRANSPARENT_MORE=More,0
    +
    +
    +
    +
    +

    Scaling

    +

    DPI scaling

    +The skin parameters are authored for the default resolution of 96 DPI. When the skin is used at higher DPI setting you have the option to scale up some of the parameters. For example: +
    +
    +Main_arrow_padding=8,10,50% +
    +
    +
    +This means that the arrow padding will be scaled by 50% of the increase in DPI. If the current DPI is 120 (25% increase over 96 DPI), then the numbers will be scaled up by 50% of 25%, which is 12.5%. 8 will become 9 and 10 will become 11.25 (rounded to 11). If instead the skin was: +
    +
    +Main_arrow_padding=8,10,100% +
    +
    +Then the full 25% increase will be applied, so 8 will become 10 and 10 will become 12.5 (rounded to 13). +
    +
    +It is also possible to use different scaling values for each number: +
    +
    +Main_icon_padding=4,4,3,4,100%,0%,100%,0%
    +
    +
    +In this case the first and third number will be scaled by 100% and the rest will not be scaled. +
    +
    +Not all skin parameters support scaling. For example bitmap slices cannot be scaled because they represent portions of some bitmap resource. The parameters that can be scaled are marked as such in the reference section. +
    +
    +

    Fonts

    +By default the fonts are scaled with the DPI at 100%. You can overwrite that: +
    +
    +Main_font="Segoe UI",normal,-9,50%
    +
    +
    +This will make the Main_font scale with half of the rate of the DPI increase. +
    +
    +Note: One exception is the User_font. It is not scaled by default because it is intended to fit in the User_name_position box. If you want the font to scale, you should use the same scale for the user name position. +
    +
    +

    High DPI parameters

    +When the DPI is 144 or higher (text size 150% and up), the skin defines a setting HIGH_DPI, which allows you to provide alternative bitmap resources and other parameters that are intended to be used with higher resolutions. Use it for example to define larger graphical elements like arrows and icons. +
    +
    +

    Localization

    +The built-in skins contain localizations for all their options and variations. Instead of providing the text directly in the skin file, the setting refers to a string in the localization DLL. For example: +
    +OPTION USER_IMAGE=#7014,1 +
    +OPTION SMALL_ICONS=#7011,0 +
    +
    +
    #7014 means to look up string number #7014 in the DLL. Custom skins can use the strings that already exist in the DLL, but unfortunately new strings cannot be added by the skin itself. +
    +
    + +
    +

    Custom skin

    +During development it can be a bother to have to Resource-Hack the skin file for every little change. That's why the start menu supports a special "custom" skin. Instead of packing all resources in a DLL, you can leave them as loose files in the Skins directory: +
    +
    +1.txt the main skin description
    +12.bmp bitmap used by 1.txt +
    +2.txt a skin variation
    +7.ico
    +...
    +
    +The file name must be the resource ID of that asset in the skin file. For example 12.bmp will go into a bitmap resource with ID 12. Edit them until you are ready to package them into a skin file. +
    +
    +The "Custom" skin option is available in the settings only if the start menu can find the 1.txt file. +
    +
    +The custom skin has an additional parameter that is not available for other skins: +
    +ForceRTL=1
    +
    +This makes the start menu run in right-to-left mode. Use it to see how your background image will look on an Arabic OS. Note: The RTL emulation is not perfect. One notable difference is that all menu icons are mirrored. On a real RTL Windows they will not be. +
    +
    +
    +

    Troubleshooting

    +If your skin is causing an error, the start menu will drop it and use the Default skin instead. The reason can range from a missing resource to an incompatible version to a bitmap with wrong size, and so on. +
    +
    +To figure out the cause of the problem turn on "Report Skin Errors" in the start menu settings. Then you'll see a popup like this: +
    +Skin error +
    +
    +Note that only errors related to the current skin variation and the current skin options will be reported. So test your skin with every combination to ensure it works in all conditions. +
    +
    +
    +

    Skin reference

    +This section describes all possible settings that can be used in a skin file. Before we can define the individual settings we need to define the types that a setting can have. A setting can be one of the following types: text, number (or multiple numbers), color (or multiple colors), font, icon, bitmap, background or skin item. Some settings like background or skin item have multiple sub-settings described below. The names of the sub-settings begin with the name of the parent setting. +
    +
    +Here are the types in more detail: +
    +
    +A color is represented in the hexadecimal format #RRGGBB, where each color component takes 2 hex digits. For example: +
    +Caption_text_color=#00FF00
    +
    +
    +It can also be a named color. The actual value will depend on the currnt system settings: +
    +Caption_text_color=$StartHighlight +
    +
    +
    These are the main system colors that are available on all versions of Windows: +
    $SystemScrollbar
    +$SystemBackground
    +$SystemActiveCaption
    +$SystemInactiveCaption
    +$SystemMenu
    +$SystemWindow
    +$SystemWindowFrame
    +$SystemMenuText
    +$SystemWindowText
    +$SystemCaptionText
    +$SystemActiveBorder
    +$SystemInactiveBorder
    +$SystemAppWorkspace
    +$SystemHighlight
    +$SystemHighlightText
    +$SystemBtnFace
    +$SystemBtnShadow
    +$SystemGrayText
    +$SystemBtnText
    +$SystemInactiveCaptionText
    +$SystemBtnHighlight
    +$System3DDKShadow
    +$System3DLight
    +$SystemInfoText
    +$SystemInfoBK
    +$SystemHotLight
    +$SystemGradientActiveCaption
    +$SystemGradientInactiveCaption
    +$SystemMenuHilight
    +$SystemMenuBar
    +For Windows 8 and later you can use many more named colors from the Metro palette. Use the Classic Shell Utility to view the full list. +
    +
    +
    +A font selects the font's name, size, and weight (normal or bold). For example: +
    +Main_font="Segoe UI",normal,-10 +
    +
    +
    +
    An icon is a reference to an icon resource number in the skin file: +
    +About=1 +
    +
    +
    +A bitmap is a reference to a bitmap resource number in the skin file. It can have an optional mask that determines how to mix the bitmap resource with the tint colors. The mask can be another bitmap or it can be a solid color: +
    +Main_bitmap=2
    +Main_bitmap_mask=#FF0000 +
    +Main_bitmap_tint1=#E0E000 +
    +
    +
    +
    +A background is a bitmap that can be resized to the necessary size. It consists of a bitmap resource and slice numbers. The number of slices depends on the actual background. Some are 3x3, some are 3x1, some 6x3. +
    +
    +Possible settings for a background with a given <name>: +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameType +
    +
    Notes +
    +
    <name> +
    +
    number or color +
    +
    The main image. It can be a BITMAP or IMAGE resource identifier, or a #RRGGBB color +
    <name>_masknumber or color +
    +
    The color mask. It can be a bitmap resource identifier or a #RRGGBB color. If it is a bitmap then it must have the same size as the original bitmap +
    +
    <name>_slices_Xnumbers +
    +
    The sizes for the horizontal slices. The sum of the numbers must not exceed the width of the bitmap +
    +
    <name>_slices_YnumbersThe sizes for the vertical slices. The sum of the numbers must not exceed the height of the bitmap
    <name>_tint1 +
    +
    color +
    +
    The first tint color. It will be blended with the main image according to the Red channel of the mask. By default it is the glass color +
    +
    <name>_tint2colorThe second tint color. It will be blended with the main image according to the Green channel of the mask. By default it is the menu background color +
    +
    <name>_tint3colorThe third tint color. It will be blended with the main image according to the Blue channel of the mask. By default it is black
    +
    +
    +A skin item controls the complete look for individual menu elements. It sets the font, colors, and other settings. +
    +
    +Possible settings for skin item with a given <name>: +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameType +
    +
    Notes +
    +
    <name>_font +
    +
    font +
    +
    The font for the item's text +
    +
    <name>_text_color +
    +
    4 colors +
    +
    Colors for the text normal, selected, disabled, disabled+selected +
    +
    <name>_glow_size +
    +
    number +
    +
    Size of the glow in pixels (only supported on Windows 7) +
    <name>_text_padding +
    +
    4 numbers (with scale) + Padding on the left, top, right, bottom around the item's text +
    +
    <name>_icon_padding +
    +
    4 numbers (with scale) + Padding on the left, top, right, bottom around the icon +
    <name>_selection +
    +
    background or color +
    +
    Background for the item when it is selected (can also be a solid color) +
    +
    <name>_arrow_color +
    +
    2 colors +
    +
    The arrow colors normal and selected (when the arrow is solid color) +
    +
    <name>_arrow +
    +
    bitmap +
    +
    The arrow bitmap (when the arrow is a bitmap). The bitmap must contain 2 images, the top one is normal and the bottom is selected +
    +
    <name>_arrow_padding +
    +
    2 numbers (with scale) + Padding on the left and right side of the arrow +
    <name>_icon_frame +
    +
    background +
    +
    Background for the icon frame +
    +
    <name>_icon_frame_offset +
    +
    2 numbers (with scale) + Horizontal and vertical padding between the icon and the frame +
    +
    +
    +Now that we know how to define settings of different types, here is a list of all settings used by the menu skins: +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Name + Type +
    +
    Notes +
    +
    About +
    +
    text +
    +
    The text to display in the About box +
    +
    AboutIcon + icon +
    +
    The icon to display in the About box +
    +
    Version + number +
    +
    Use version 2 +
    +
    Caption +
    +
    Caption_font + font +
    +
    The font to use in the caption on the side of the main menu +
    +
    Caption_text_colorcolor +
    +
    Color for the caption text +
    +
    Caption_glow_colorcolor +
    +
    Color for the caption text glow +
    +
    Caption_glow_sizenumber +
    +
    Size of the glow in pixels (only supported on Windows 7) +
    +
    Caption_padding4 numbers (with scale) + Padding on the left, top, right, bottom around the caption text +
    +
    Patterns +
    +
    Pattern1 through Pattern4 +
    +
    background +
    +
    Tileable image for the main menu +
    +
    Main_emblem1 through Main_emblem10 +
    +
    background +
    +
    Emblem images for the main menu +
    +
    Main_emblem1_padding +
    +
    4 numbers (with scale) +
    +
    Padding on the left, top, right, bottom around the emblem image +
    +
    Main_emblem1_alignH +
    +
    stringHorizontal padding for the emblem center, center1, center2, left, left1, left2, right, right1, right2, corner +
    +
    Main_emblem1_alignV +
    +
    string +
    +
    Vertical padding for the emblem center, top, bottom, corner +
    +
    Main menu +
    +
    Main_backgroundcolor +
    +
    Background color for the main menu +
    +
    Main_bitmapbackground +
    +
    Background for the main menu. Needs 6 vertical and 3 horizontal slices +
    +
    Main_opacitytextOpacity of the main menu solid, region, alpha, glass, fullalpha, fullglass +
    +
    Main_large_iconsnumber +
    +
    Set to 1 to use large icons in the main menu +
    +
    Main_thin_framenumber +
    +
    Set to 1 to use a thin border (as opposed to thick 3D border). Only applies to Classic theme in Windows 7 +
    +
    Main_padding4 numbers (with scale) + Padding on the left, top, right, bottom around the items in the main menu +
    +
    Mainskin item +
    +
    The look for the normal items in the main menu +
    +
    Main_splitskin item +
    +
    The look for the split items in the main menu. Inherits from Main
    Main_newskin item +
    +
    The look for the highlighted items (like new programs) in the main menu. Inherits from Main
    Main_separatorskin item +
    +
    The look for the text in the separators in the main menu. Inherits from Main +
    +
    Main_separatorbackgroundThe bitmap for the horizontal separators in the main menu +
    +
    Main_separatorVbackground +
    +
    The vertical separator between the two columns of the main menu +
    +
    Main_pagerbackground +
    +
    The background for the main menu pager. Requires 2 pictures, the top one is normal state, the bottom is highlighted state +
    +
    Main_pager_arrowsbitmap +
    +
    The arrow for the pager. Requires 2x2 grid with up, down, normal and hot states +
    +
    Search_hint_fontfont +
    +
    The font for the hint text in the search box +
    +
    Main_pattern_mask +
    +
    bitmap +
    +
    A bitmap mask that controls the placement of the patterns in the main menu (must match the size of the Main_bitmap) +
    +
    Main_emblem_mask +
    +
    bitmap +
    +
    A bitmap mask that controls the placement of the emblems in the main menu (must match the size of the Main_bitmap)
    Two-column main menu +
    +
    Main2_opacitytextOpacity for the second column of the main menu +
    +
    Main_no_icons2number +
    +
    Set to 1 to hide the icons in the second column +
    +
    Main2_padding4 numbers (with scale) + Padding on the left, top, right, bottom around the items in the second column +
    +
    Main2skin item +
    +
    The look for the normal items in the second column. Inherits from Main +
    +
    Main2_splitskin item +
    +
    The look for the split items in the second column. Inherits from Main2 +
    +
    Main2_newskin item +
    +
    The look for the highlighted items in the second column. Inherits from Main2 +
    +
    Main2_separatorbackground +
    +
    Horizontal separator for the second column. Inherits from Main_separator
    Windows 7-style main menu +
    +
    Main_bitmap_searchbackgroundBackground for the main menu in search mode +
    +
    Main_search_padding4 numbers (with scale) + Padding for the menu items in search mode +
    +
    Main_bitmap_jumpbackgroundBackground for the main menu in jumplist mode +
    +
    Main_jump_padding4 numbers (with scale) + Padding for the jumplist items +
    +
    Main_search_indentnumber (with scale) + The indent in pixels of the search results relative to the search headers +
    +
    Main_pattern_search_mask +
    +
    bitmapPattern mask for the main menu in search mode (must match the size of Main_bitmap_search) +
    +
    Main_pattern_jump_mask +
    +
    bitmapPattern mask for the main menu in jumplist mode (must match the size of Main_bitmap_jump)
    Main_emblem_search_mask +
    +
    bitmapEmblem mask for the main menu in search mode (must match the size of Main_bitmap_search)
    Main_emblem_jump_mask +
    +
    bitmapEmblem mask for the main menu in jumplist mode (must match the size of Main_bitmap_jump)
    Shutdownskin item +
    +
    The look for the shutdown button. Inherits from Main +
    +
    Shutdown_searchskin item +
    +
    The look for the shutdown button in search mode. Inherits from Shutdown +
    +
    Shutdown_jumpskin item +
    +
    The look for the shutdown button in jumplist mode. Inherits from Shutdown +
    +
    Shutdown_padding4 numbers (with scale) + Padding around the shutdown button +
    +
    Listskin item +
    +
    The look for the search results and jumplist items. Inherits from Main +
    +
    List_splitskin item +
    +
    The look for the search results and jumplist items that are split in two parts. Inherits from List +
    +
    List_separatorskin item +
    +
    The look for the text in the separators in the search results and jumplists. Inherits from List +
    +
    List_separatorbackgroundHorizontal separator for the search results and jumplists Inherits from Main_separator
    List_separator_splitskin item +
    +
    The look for the split separators in the search results. Inherits from List_split +
    +
    List_separator_splitbackgroundHorizontal split separator for the search results and jumplists Inherits from Main_separator
    Programs_iconbitmap +
    +
    The icon for the All Programs button. Requires 2 pictures, one for the normal state and one for the selected state +
    +
    Programs_buttonskin item +
    +
    The look for the All Programs button. Inherits from Main +
    +
    Programs_button_newskin item +
    +
    The look for the highlighted All Programs button. Inherits from Main +
    +
    Search_bitmapbitmap +
    +
    A bitmap with various icons used by the search box +
    +
    Search_arrowbitmap +
    +
    A bitmap for the arrow in the search separators. Requires 2 pictures, one for the minimized and one for the maximized state +
    +
    Search_padding4 numbers (with scale) + Padding around the search box +
    +
    Search_framenumber +
    +
    Set to 0 to disable the black frame of the search box, for example if Search_background has a built-in border +
    +
    Search_backgroundbackground +
    +
    Background around the search box +
    +
    Search_background_padding4 numbers (with scale) + Padding around the search background +
    +
    Search_background_searchbackground +
    +
    Background around the search box in search mode +
    +
    Search_background_search_padding4 numbers (with scale)Padding around the search background in search mode +
    +
    Search_background_jumpbackgroundBackground around the search box in jumplist mode
    Search_background_jump_padding4 numbers (with scale)Padding around the search background in jumplist mode
    Search_pattern_mask +
    +
    bitmap +
    +
    Pattern mask around the search box (must match the size of Search_background) +
    +
    Search_pattern_search_mask +
    +
    bitmapPattern mask around the search box in search mode (must match the size of Search_background_search)
    Search_pattern_jump_mask +
    +
    bitmapPattern mask around the search box in jumplist mode (must match the size of Search_background_jump)
    Search_emblem_maskbitmapEmblem mask around the search box (must match the size of Search_background)
    Search_emblem_search_maskbitmapEmblem mask around the search box in search mode (must match the size of Search_background_search)
    Search_emblem_jump_maskbitmapEmblem mask around the search box in jumplist mode (must match the size of Search_background_jump)
    Pin_bitmapbitmap +
    +
    Icon for pinned and unpinned items. Requires 2x2 grid with pinned, unpinned, normal and selected states +
    +
    More_bitmapbitmap +
    +
    Icon for the "More results" item. Requires 2 pictures, one for normal and one for selected state +
    +
    Shutdown_bitmapbitmap +
    +
    Icon that is added to the shutdown button when there are updates to be installed +
    +
    Programs_backgroundcolor +
    +
    Background color for the programs tree +
    +
    Programsskin item +
    +
    The look for the items in the programs tree. Inherits from Main +
    +
    Programs_newskin item +
    +
    The look for the highlighted items in the programs tree. Inherits from Programs +
    +
    Programs_indentnumber (with scale) + Additional indentation (positive or negative) for the nested items in the programs tree +
    +
    User Picture (Classic style) +
    User_bitmapbitmap +
    +
    The frame for the user bitmap +
    +
    User_image_offset2 numbersThe offset of the user picture inside the frame
    User_image_size +
    +
    number (with scale) + The size of the user image +
    +
    User_image_alphanumberOpacity between 0 and 255 for the user picture inside the frame +
    +
    User_frame_position2 values (with scale) + The horizontal and vertical position of the frame. The horizontal can be also "center", "center1", or "center2"
    User Picture (Windows 7 style) +
    +
    User_bitmapbitmapThe frame for the user bitmap. Must be 64x64 or larger
    User_image_offset2 numbers +
    +
    The offset of the user picture inside the frame +
    +
    User_image_sizenumberThe size of the user image (should be no less than the size of User_bitmap). The default is 48
    User_image_padding2 numbers (with scale)Top and bottom padding around the user frame
    User_bitmap_outsidenumberSet to 1 for the user bitmap to appear partially outside of the main menu (only when the menu is at the bottom)
    User_frame_positionnumber (with scale)The amount by which the user frame is partially inside the main menu. The default is 36 +
    +
    User Name (only for Classic style) +
    +
    User_name_position4 numbers +
    +
    Position of the user name +
    +
    User_name_alignstring +
    +
    Alignment of the user name center, center1, center2, left, left1, left2, right, right1, right2 +
    +
    User_fontfont +
    +
    The font for the user name. By default this font is not scaled with the DPI +
    +
    User_text_colorcolor +
    +
    The color for the user name +
    +
    User_glow_colorcolor +
    +
    The glow color for the user name +
    +
    User_glow_sizenumber +
    +
    The glow size in pixels (only supported on Windows 7)
    Sub-Menu +
    +
    Submenu_backgroundcolor +
    +
    Background color for the sub-menus +
    +
    Submenu_bitmapbackground +
    +
    Background image for the sub-menus +
    +
    Submenu_opacitytextOpacity for the sub-menus +
    +
    Submenuskin item +
    +
    The look for the items in the sub-menus +
    +
    Submenu_splitskin item +
    +
    The look for the split items in the sub-menus. Inherits from Submenu +
    +
    Submenu_newskin item +
    +
    The look for the highlighted items in the sub-menus. Inherits from Submenu +
    +
    Submenu_separatorbackgroundThe bitmap for the separators in the submenus +
    +
    Submenu_separatorskin itemThe look for the text in the separators in the sub-menus. Inherits from Submenu
    Submenu_separator_splitbackgroundThe bitmap for the split separators in the submenus. Inherits from Submenu_separator
    Submenu_separator_splitskin itemThe look for the text in the split separators items in the sub-menus. Inherits from Submenu_split
    Submenu_padding4 numbers (with scale) + Padding on all sides of the sub-menu items +
    +
    Submenu_offsetnumber (with scale) + Additional horizontal offset (positive or negative) for sub-menus relative to their parent menu +
    +
    Submenu_thin_framenumber +
    +
    Set to 1 to use a thin border (as opposed to thick 3D border). Only applies to Classic theme in Windows 7
    Submenu_separatorVbackground +
    +
    Vertical separators between the columns of the sub-menus +
    +
    Submenu_pagerbackgroundThe background for the sub-menu pager. Requires 2 pictures, the top one is normal state, the bottom is highlighted state
    Submenu_pager_arrowsbitmap +
    +
    The arrow for the pager. Requires 2x2 grid with up, down, normal and hot states
    AllPrograms_offsetnumber (with scale) + additional horizontal offset (positive or negative) for the first sub-menu in All Programs mode
    +
    + + + + + + \ No newline at end of file diff --git a/Src/Localization/English/Menu.html b/Src/Localization/English/StartMenu.html similarity index 72% rename from Src/Localization/English/Menu.html rename to Src/Localization/English/StartMenu.html index 87e69c793..1f966435a 100644 --- a/Src/Localization/English/Menu.html +++ b/Src/Localization/English/StartMenu.html @@ -12,21 +12,26 @@ Open-Shell Menu -

    Open-Shell website  -Open-Shell Menu


    + +Open-Shell website

      Open-Shell Menu

    +
    Open-Shell Menu
    -is a flexible start menu that can mimic the menu behavior of Windows +is a flexible Start menu that can mimic the menu behavior of Windows 2000, XP and Windows 7. It has a variety of advanced features:
      @@ -34,13 +39,13 @@

      Styles

      -The start menu offers 3 styles to choose from.
      +The Start menu offers 3 styles to choose from.

      1) Single-column classic style

      -
      +
      This style is similar to the menu found in Windows 2000. It has one -column in the main menu with vertical text on the side. you can +column in the main menu with vertical text on the side. You can customize the order of items, icons and text.
      Programs, jumplists and search results show as cascading sub-menus.

      2) Two-column classic style

      -
      +
      This style is similar to the Windows XP menu. There are two columns where you can arrange your menu items. Customize the order, icons and text.
      @@ -79,30 +84,30 @@

      2) Two-column classic style


      3) Windows 7 style

      -
      +
      This style is similar to the Windows Vista and Windows 7 menu. The items in the first column are pre-defined to pinned and recent programs, all programs list and search box. The items in the second column are fully customizable.
      The jumplists and search results show inside the main menu. The programs can be inside the main menu or open as a cascading sub-menu.
      -This style offers less customizing options than the classic styles, but -has look and feel more familiar to people used to Windows 7.
      +This style offers less customization than the classic styles, but +has a look and feel more familiar to people used to Windows 7.


      Operation

      -If you have used the start menu in older versions of Windows you’ll +If you have used the Start menu in older versions of Windows you’ll feel right at home:

      Press the Windows key or click on the orb in the corner of the -screen to open the start menu.

      +screen to open the Start menu.

      Hold down Shift while clicking on the orb to access the operating system's own -start menu. +Start menu.

      Click on an item to execute it. @@ -112,19 +117,18 @@

      Operation

      move it to another folder.

      -Right-click on an item to rename it, delete it, explore it, sort the -menu, or perform other tasks.

      +Right-click on an item to rename it, delete it, or perform other tasks.

      -Right-click on the orb to edit the settings for the start menu, to view this help file, or to -stop the start menu.
      +Right-click on the orb to edit the settings for the Start menu, to view this help file, or to +stop the Start menu process.


      -Settings

      Right-click on the start button to access the settings:
      -
      +SettingsRight-click on the Start button to access the settings:
      +

      You can choose from seeing only the basic settings, or all available settings. Hover over each setting to see a description of what it's for. Type in the search box to find a setting by name.
      @@ -143,9 +147,9 @@


      Most settings will be changed immediately as you edit them. For example -you can edit the start menu, then while the Settings dialog is open, -access the start menu to see the changes. Small number of settings will -require you to exit the start menu before you can see the change.
      +you can edit the Start menu, then while the Settings dialog is open, +access the Start menu to see the changes. Small number of settings will +require you to exit the Start menu before you can see the change.

      @@ -156,17 +160,17 @@


      Click on the Customize Start Menu tab to customize the menu items. Depending on the style you will see different UI.

      -For classic styles you can customize both columns of the start menu and +For classic styles you can customize both columns of the Start menu and create sub-menus. The left column shows the current items in the menu and the right column shows the available menu items. Drag from the right to the left to add items to the menu.
      -
      +

      For the Windows 7 style you can only edit the items for the second column and there are no sub-menus.
      -
      +


      Double-click on the icon to edit the item properties:
      -
      +
      Here you can select a command for the item, its text, icon and other attributes. Press the Restore Defaults button to get the default text and icon for the chosen command.

      The command can be:
      @@ -197,7 +201,7 @@

      is useful when creating a menu that can be used by multiple languages.

      If you check "Insert Sub-items as Buttons", instead of showing the menu -item itself, the start menu will show the sub-items as a row of +item itself, the Start menu will show the sub-items as a row of buttons. By default the buttons are centered. You can align them to the left by adding a separator as the last item, or align them to the right by adding a separator as the first item. One possible use is to replace @@ -210,10 +214,10 @@

      Administrative Settings

      all of their settings. An administrator can lock specific settings, so no user can edit them:
      -
      +
      In this example the setting "Enable right-click menu" is locked to always be unchecked and can't be changed by any user. This is achieved -by adding the setting to the HKEY_LOCAL_MACHINE\SOFTWARE\OpenShell\Menu registry key. Create a DWORD value called "EnableContextMenu" and set it to 0.
      +by adding the setting to the HKEY_LOCAL_MACHINE\SOFTWARE\OpenShell\StartMenu registry key. Create a DWORD value called "EnableContextMenu" and set it to 0.

      In some cases you may not want to lock the value for all users, but simply modify the initial value of the setting. In such case add @@ -233,24 +237,24 @@

      Administrative Settings

      There is also a global setting "EnableSettings". Set it to 0 in the registry to prevent the users from even opening the Settings dialog:
      -
      +

      -The start menu also checks most of the group policies set by the administrator. Run gpedit.msc and go to User Configuration -> Administrative Templates -> Start Menu and Taskbar. From there you can disable Run, Shutdown, Help, and other features. (Not available on Home versions of Windows).
      +The Start menu also checks most of the group policies set by the administrator. Run gpedit.msc and go to User Configuration -> Administrative Templates -> Start Menu and Taskbar. From there you can disable Run, Shutdown, Help, and other features. (Not available on Home versions of Windows).

      Editing the settings through group policies is also supported. Extract the file PolicyDefinitions.zip found in the installation folder and read the document PolicyDefinitions.rtf for more details.


      -

      More About Skins

      +

      Skins

      You can pick from the many pre-installed skins:

      -Skins for Open-Shell Menu
      +Skins for Open-Shell Menu

      Or you can download and install additional 3rd party skins (from the main website or from another place). After you download a new skin you -must copy the .skin file to the Skins directory – usually C:\Program +must copy the .skin file to the Skins directory – usually C:\Program Files\Open-Shell\Skins. After that it will be available in the settings.

      -Note: Some skins may be specifically designed for +Windows 7 Note: Some skins may be specifically designed for Classic, Basic, or Aero mode. For example an Aero skin may require glass support any will look weird if the Classic or Basic theme is selected. Some Aero skins may also require specific glass color to be @@ -259,10 +263,10 @@

      More About Skins

      You can create your own skin. You will need an image editor that supports alpha channel (like Gimp or Photoshop) and a tool to edit resource files (like Resource Hacker or Visual Studio). And of course -some talent for graphical design :). Read the Skinning Tutorial before you begin.
      +some talent for graphical design :). Read the Skinning Tutorial before you begin.



      -

      Search


      +

      Search



      The search box lets you search the contents of the start menu, the programs in the PATH environment variable and the indexed files. You can have the search box @@ -279,10 +283,10 @@

      Search


      +

      This is done by adding sub-items of the SearchBoxItem in the Customize Start Menu tab:
      -
      +

      Open each of the sub-items and enter a command to start the search program. If you use %1 in the command, it will be replaced by the contents of the search box. If you use %2 it will be replaced by the url-style encoded search text. Enter a @@ -297,17 +301,17 @@

      Search

      Custom Start Button
      -Open-Shell can add its own start button to the taskbar. It can -even replace the default start button in Windows 7. You can choose from +Open-Shell can add its own Start button to the taskbar. It can +even replace the default Start button in Windows 7. You can choose from an Aero-style orb, a rectangular classic button, or -you can make your own. For a custom start button you need an image that +you can make your own. For a custom Start button you need an image that contain the 3 states of the button - normal, hot and pressed:
      -Start button images
      +Start button images
      The image must be a 32-bit PNG or BMP. By default the width of the image determines the size of the button. You can override that by entering a custom width.
      -Read the Button Tutorial for more information about creating custom buttons.
      -You can find many custom start button images online. Here are few examples:
      +Read the Button Tutorial for more information about creating custom buttons.
      +You can find many custom Start button images online. Here are few examples:
      http://www.classicshell.net/forum/viewforum.php?f=18
      http://www.sevenforums.com/themes-styles/34951-custom-start-menu-button-collection.html
      http://www.sevenforums.com/customization/78291-big-group-custom-start-orbs.html
      @@ -326,23 +330,23 @@

      Localization



      Command Line

      -The StartMenu.exe supports 5 command line parameters: -open, -toggle, -togglenew, -exit and -settings.
      +StartMenu.exe supports 5 command line parameters: -open, -toggle, -togglenew, -exit and -settings.

      -The first two do what the name suggests. One opens the classic start menu, the other +The first two do what the name suggests. One opens the classic Start menu, the other toggles it. You can use the parameters to create a shortcut in your -QuickLaunch bar that opens the start menu. Or to set a hotkey in +QuickLaunch bar that opens the Start menu. Or to set a hotkey in programs such as WinKey.

      -The third one "-togglenew" toggles the default Windows start menu (or start screen). It is useful if +The third one "-togglenew" toggles the default Windows Start menu (or Start screen). It is useful if you want to create a shortcut or a hotkey to open the default menu and use the Win key for the classic menu.

      -Use "-exit" to exit the start menu. This command will only work if the start menu is not currently busy.
      +Use "-exit" to exit the Start menu. This command will only work if the Start menu is not currently busy.

      -Use "-settings" to open the start menu settings. This is useful for creating a shortcut for editing the settings.
      +Use "-settings" to open the Start menu settings. This is useful for creating a shortcut for editing the settings.


      -

      Accessibility

      The start menu supports screen readers like JAWS, +

      Accessibility

      The Start menu supports screen readers like JAWS, or Microsoft's Narrator. If the accessibility support causes problems it can be disabled from the General Behavior tab of the Settings.

      diff --git a/Src/Localization/English/en-US.csv b/Src/Localization/English/en-US.csv index fc7f9e7ec..e3ad0c683 100644 Binary files a/Src/Localization/English/en-US.csv and b/Src/Localization/English/en-US.csv differ diff --git a/Src/Localization/English/images/OpenShell.png b/Src/Localization/English/images/OpenShell.png index 1c1786845..228453efc 100644 Binary files a/Src/Localization/English/images/OpenShell.png and b/Src/Localization/English/images/OpenShell.png differ diff --git a/Src/Localization/English/images/button0.png b/Src/Localization/English/images/button0.png new file mode 100644 index 000000000..3d1fffef3 Binary files /dev/null and b/Src/Localization/English/images/button0.png differ diff --git a/Src/Localization/English/images/button1.png b/Src/Localization/English/images/button1.png new file mode 100644 index 000000000..e89b8c1bc Binary files /dev/null and b/Src/Localization/English/images/button1.png differ diff --git a/Src/Localization/English/images/button2.png b/Src/Localization/English/images/button2.png new file mode 100644 index 000000000..e08425b5b Binary files /dev/null and b/Src/Localization/English/images/button2.png differ diff --git a/Src/Localization/English/images/button3.png b/Src/Localization/English/images/button3.png new file mode 100644 index 000000000..5b6ea7f5d Binary files /dev/null and b/Src/Localization/English/images/button3.png differ diff --git a/Src/Localization/English/images/color_mask.png b/Src/Localization/English/images/color_mask.png new file mode 100644 index 000000000..cde0b00aa Binary files /dev/null and b/Src/Localization/English/images/color_mask.png differ diff --git a/Src/Localization/English/images/error_balloon.png b/Src/Localization/English/images/error_balloon.png new file mode 100644 index 000000000..6d00be392 Binary files /dev/null and b/Src/Localization/English/images/error_balloon.png differ diff --git a/Src/Localization/English/images/main_slices.png b/Src/Localization/English/images/main_slices.png new file mode 100644 index 000000000..47d888425 Binary files /dev/null and b/Src/Localization/English/images/main_slices.png differ diff --git a/Src/Localization/English/images/menu_arrows.png b/Src/Localization/English/images/menu_arrows.png new file mode 100644 index 000000000..ba3ba4c62 Binary files /dev/null and b/Src/Localization/English/images/menu_arrows.png differ diff --git a/Src/Localization/English/images/padding.png b/Src/Localization/English/images/padding.png new file mode 100644 index 000000000..0e4be066c Binary files /dev/null and b/Src/Localization/English/images/padding.png differ diff --git a/Src/Localization/English/images/pager_arrows.png b/Src/Localization/English/images/pager_arrows.png new file mode 100644 index 000000000..122e59855 Binary files /dev/null and b/Src/Localization/English/images/pager_arrows.png differ diff --git a/Src/Localization/English/images/pager_buttons.png b/Src/Localization/English/images/pager_buttons.png new file mode 100644 index 000000000..a4ae357dd Binary files /dev/null and b/Src/Localization/English/images/pager_buttons.png differ diff --git a/Src/Localization/English/images/pattern_mask.png b/Src/Localization/English/images/pattern_mask.png new file mode 100644 index 000000000..5736ba331 Binary files /dev/null and b/Src/Localization/English/images/pattern_mask.png differ diff --git a/Src/Localization/English/images/photoshop.png b/Src/Localization/English/images/photoshop.png new file mode 100644 index 000000000..55a47e380 Binary files /dev/null and b/Src/Localization/English/images/photoshop.png differ diff --git a/Src/Localization/English/images/reshacker.png b/Src/Localization/English/images/reshacker.png new file mode 100644 index 000000000..f340136e4 Binary files /dev/null and b/Src/Localization/English/images/reshacker.png differ diff --git a/Src/Localization/English/images/resize.png b/Src/Localization/English/images/resize.png new file mode 100644 index 000000000..4f7ee6bb7 Binary files /dev/null and b/Src/Localization/English/images/resize.png differ diff --git a/Src/Localization/English/images/search_icons.png b/Src/Localization/English/images/search_icons.png new file mode 100644 index 000000000..a17ba8ba5 Binary files /dev/null and b/Src/Localization/English/images/search_icons.png differ diff --git a/Src/Localization/English/images/separator.png b/Src/Localization/English/images/separator.png new file mode 100644 index 000000000..d791bc17b Binary files /dev/null and b/Src/Localization/English/images/separator.png differ diff --git a/Src/Localization/English/images/slices.png b/Src/Localization/English/images/slices.png new file mode 100644 index 000000000..36dd85769 Binary files /dev/null and b/Src/Localization/English/images/slices.png differ diff --git a/Src/Localization/French/Main.html b/Src/Localization/French/Main.html index b6eca137d..61eb94705 100644 --- a/Src/Localization/French/Main.html +++ b/Src/Localization/French/Main.html @@ -34,7 +34,7 @@

      Configuration Système requise

      Composants


      Open-Shell a trois composants majeurs : diff --git a/Src/Localization/French/MenuADMX.txt b/Src/Localization/French/MenuADMX.txt index 1303a761e..d4dc11c92 100644 --- a/Src/Localization/French/MenuADMX.txt +++ b/Src/Localization/French/MenuADMX.txt @@ -190,3 +190,4 @@ StartHoverDelay.nameOverride = Délai du survol (pour le bouton Démarrer) AllProgramsDelay.nameOverride = Délai du survol (Pour Tous les Programmes dans Windows 7) CSMHotkey.tipAddition = .\n\nLa valeur de base est le code virtuel principal de la touche. Ajouter 256 pour Maj, 512 pour Contrôle et 1024 pour and 1024 Alt.\nLa meilleur façon pour obtenir la valeur est de sélectionnez la touche raccourcie dans le boîte de dialogue des Paramètres et de chercher la valeur nommée CSMHotkey dans HKCU\Software\OpenShell\StartMenu\Settings WSMHotkey.tipAddition = .\n\nLa valeur de base est le code virtuel principal de la touche. Ajouter 256 pour Maj, 512 pour Contrôle et 1024 pour and 1024 Alt.\nLa meilleur façon pour obtenir la valeur est de sélectionnez la touche raccourcie dans le boîte de dialogue des Paramètres et de chercher la valeur nommée WSMHotkey in HKCU\Software\OpenShell\StartMenu\Settings +SearchFiles.tipOverride = Lorsque cette case est cochée, les résultats de la recherche incluront les fichiers, e-mails et autres éléments provenant d'emplacements indexés diff --git a/Src/Localization/French/OpenShell.hhp b/Src/Localization/French/OpenShell.hhp index 2966625e8..1713822a4 100644 --- a/Src/Localization/French/OpenShell.hhp +++ b/Src/Localization/French/OpenShell.hhp @@ -5,12 +5,11 @@ Contents file=OpenShellTOC.hhc Default topic=Main.html Display compile progress=Yes Language=0x40C French (France) - +Title=Open-Shell Help [FILES] ClassicExplorer.html -Menu.html +StartMenu.html ClassicIE.html [INFOTYPES] - diff --git a/Src/Localization/French/OpenShellADMX.txt b/Src/Localization/French/OpenShellADMX.txt index d29752a6d..aaac49839 100644 --- a/Src/Localization/French/OpenShellADMX.txt +++ b/Src/Localization/French/OpenShellADMX.txt @@ -1,7 +1,7 @@ ; TRANSLATE =================================================================== Title.text = Paramètres Open-Shell -State.text = Etat: +State.text = État: State1.text = Verrouillé sur cette valeur State2.text = Verrouillé sur le paramètre par défaut State3.text = Déverrouillé @@ -13,7 +13,7 @@ OpenShellCat.text = Open-Shell OpenShellCatHelp.text = Paramètres de la stratégie de groupe de Open-Shell SUPPORTED_CS404.text = Nécessite Open-Shell 4.0.4 ou plus. -Language.nameOverride = Langage pour les composants Open-Shell -Language.tipOverride = Sélectionnez la langue pour être utilisée avec Open-Shell (par exemple en-US ou de-DE). La langue affectera le texte dans le menu démarrer, les barres d'outils, etc. Si la DLL de langue appropriée est installée, les paramètres UI peuvent aussi être traduits +Language.nameOverride = Langue pour les composants Open-Shell +Language.tipOverride = Sélectionnez la langue à utiliser avec Open-Shell (par exemple en-US ou de-DE). Le choix de langue affectera le texte dans le menu démarrer, les barres d'outils, etc. Si la DLL de langue appropriée est installée, les paramètres UI peuvent aussi être traduits Update.nameOverride = Activer la vérification automatique de nouvelles versions -Update.tipOverride = Lorsque ceci est coché, Open-Shell vérifiera s'il y a des nouvelles versions chaque semaine. Vous serez averti s'il y a une nouvelle version du logiciel ou une mise à jour pour votre langage actuel +Update.tipOverride = Lorsque ceci est coché, Open-Shell vérifiera s'il y a des nouvelles versions chaque semaine. Vous serez averti s'il y a une nouvelle version du logiciel ou une mise à jour pour votre langue actuelle diff --git a/Src/Localization/French/OpenShellTOC.hhc b/Src/Localization/French/OpenShellTOC.hhc index 2352b44c4..bc1909814 100644 --- a/Src/Localization/French/OpenShellTOC.hhc +++ b/Src/Localization/French/OpenShellTOC.hhc @@ -15,51 +15,51 @@
  • - +
    • - +
    • - +
    • - - + +
    • - - + +
    • - +
    • - +
    • - +
    • - +
    • - +
    • - +
  • diff --git a/Src/Localization/French/Menu.html b/Src/Localization/French/StartMenu.html similarity index 86% rename from Src/Localization/French/Menu.html rename to Src/Localization/French/StartMenu.html index 4b6854181..e22e58aab 100644 --- a/Src/Localization/French/Menu.html +++ b/Src/Localization/French/StartMenu.html @@ -37,13 +37,13 @@

    Styles

    Le menu démarrer offre 3 choix de styles.

    1) Simple colonne style classique (classic)


    -Ce style est très similaire au menu trouvé dans Windows 2000. Il a une colonne dans le menu principal avec du texte vertical sur le côté, vous pouvez personnaliser l'ordre des éléments, icônes et texte.
    +Ce style est très similaire au menu trouvé dans Windows 2000. Il a une colonne dans le menu principal avec du texte vertical sur le côté, vous pouvez personnaliser l’ordre des éléments, icônes et texte.
    -Programmes, listes de raccourcis, et résultats de recherche s'affichent comme des sous-menus cascadés.
    +Programmes, listes de raccourcis, et résultats de recherche s’affichent comme des sous-menus cascadés.

    2) Style classique (classic) 2 colonnes


    Ceci est similaire au menu de Windows XP. Il y a 2 colonnes où vous pouvez arranger vos éléments de menu. Personnaliser leurs ordres, icônes et texte.
    -Programmes, listes de raccourcis, et résultats de recherche s'affichent comme des sous-menus cascadés.
    +Programmes, listes de raccourcis, et résultats de recherche s’affichent comme des sous-menus cascadés.

    3) Style Windows 7


    Ceci est similaire au menu Windows Vista et Windows 7. Les éléments dans la première colonne sont prédéfinis comme épingler et Programmes Récents, la liste de Tous les Programmes et la zone de recherche. Les éléments dans la seconde colonne sont entièrement personnalisable.
    -Les listes de raccourcis et les résultats de recherche sont affichés à l'intérieur du menu principal. Les programmes peuvent être à l'intérieur du menu principal ou -s'afficher sous la forme d’un sous-menu cascadé.
    +Les listes de raccourcis et les résultats de recherche sont affichés à l’intérieur du menu principal. Les programmes peuvent être à l’intérieur du menu principal ou +s’afficher sous la forme d’un sous-menu cascadé.
    Ce style offre moins d’ options de personnalisation que les styles classiques (classic), mais donne une apparence et un sentiment plus familier aux personnes ayant utilisé Windows 7.


    @@ -87,16 +87,16 @@

    Opération

    Appuyez sur la touche Windows ou cliquez sur l’ orbe de Open-Shell dans le coin de l’ écran pour ouvrir le menu démarrer.

    -Maintenez Majuscule enfoncée pendant que vous cliquez sur l’ orbe de Open-Shell pour accéder au menu démarrer d'origine du système d'exploitation. +Maintenez Majuscule enfoncée pendant que vous cliquez sur l’ orbe de Open-Shell pour accéder au menu démarrer d’origine du système d’exploitation.

    -Cliquez sur un élément pour l'exécuter. +Cliquez sur un élément pour l’exécuter.

    -Glissez un programme pour changer l'ordre des programmes dans un menu, ou pour le déplacer dans un autre dossier. +Glissez un programme pour changer l’ordre des programmes dans un menu, ou pour le déplacer dans un autre dossier.

    -Clic droit sur un élément pour le renomer, le supprimer, l’explorer, trier le menu, ou effectuer d'autres tches.

    +Clic droit sur un élément pour le renomer, le supprimer, l’explorer, trier le menu, ou effectuer d’autres tâches.

    Clic droit sur l’orbe de Open-Shell pour modifier les paramètres du menu démarrer, pour voir ce fichier d’aide, ou pour stopper le menu démarrer.

    @@ -109,7 +109,7 @@



    Vous pouvez choisir d'afficher les paramètres de base ou tous les paramètres disponibles. Survolez chaque paramètre pour obtenir une description de sa fonction. -Saisissez un mot dans la zone de recherche pour trouver un paramètre grce à son nom.
    +Saisissez un mot dans la zone de recherche pour trouver un paramètre grâce à son nom.
    Chaque paramètre à une valeur par défaut. La valeur par défaut peut-être une constante, ou elle peut dépendre des paramètres systèmes actuels. Une fois que vous modifiez un paramètre, celui-ci devient "modifié" et est affiché en gras. Pour revenir au paramètre par défaut, clic droit sur le paramètre.
    @@ -177,14 +177,14 @@

    Paramètres Administratifs

    Les paramètres sont par utilisateur et sont stocker dans la registrerie. Par défaut chaque utilisateur peut modifier n’importe quel paramètre. Un administrateur peut verrouiller des paramètres spécifiques, de façon à ce qu’aucun utilisateur ne puisse les modifier :

    -Dans cet exemple le paramètre "Activer menu clic-droit" est verrouillé non coché et ne peut pas être modifer par aucun utilisateur. Ceci est rendu possible par l’ajout du paramètre HKEY_LOCAL_MACHINE\SOFTWARE\OpenShell\Menu dans la clef de registrerie. Créez une valeur DWORD nommée "EnableContextMenu" et +Dans cet exemple le paramètre "Activer menu clic-droit" est verrouillé non coché et ne peut pas être modifer par aucun utilisateur. Ceci est rendu possible par l’ajout du paramètre HKEY_LOCAL_MACHINE\SOFTWARE\OpenShell\StartMenu dans la clef de registrerie. Créez une valeur DWORD nommée "EnableContextMenu" et configurez là à 0.

    Dans certains cas vous ne voudrez peut être pas verrouiller une valeur pour tous les utilisateurs, mais simplement modifier la valeur initiale du paramètre. Dans ce cas ajoutez "_Default" au nom de la valeur. Par exemple si vous voulez que le menu contextuel soit désactivé par défaut mais que vous voulez autoriser les utilisateurs à modifier cette valeur s’ils le veulent, créez une valeur DWORD nommée "EnableContextMenu_Default" et configurez là à 0.

    -La façon la plus facile de connaître le nom registrerie d'un paramètre et ça valeur pour la modifier, est de la rechercher dans HKEY_CURRENT_USER\Software\OpenShell\StartMenu\Settings.
    +La façon la plus facile de connaître le nom registrerie d’un paramètre et ça valeur pour la modifier, est de la rechercher dans HKEY_CURRENT_USER\Software\OpenShell\StartMenu\Settings.
    Quelqes fois vous voudrez verrouiller un paramètre à sa valeur par défaut, mais vous ne savez quelle est la valeur par défaut. Dans ce cas créez une valeur DWORD et configurez là à 0xDEFA.
    @@ -194,7 +194,7 @@

    Paramètres Administratifs



    -Le menu démarrer vérifie aussi la plupart des stratégies de groupe configurées par l’administrateur. Exécutez gpedit.msc et aller à Configuration User Configuration -> Modèles Administratifs -> Menu Démarrer et Barre des Tches. A partir de là, vous pouvez désactiver Exécuter, Arrêter, Aide, et d'autres fonctions. (Non disponible sur les version Home de Windows).
    +Le menu démarrer vérifie aussi la plupart des stratégies de groupe configurées par l’administrateur. Exécutez gpedit.msc et aller à Configuration User Configuration -> Modèles Administratifs -> Menu Démarrer et Barre des Tâches. A partir de là, vous pouvez désactiver Exécuter, Arrêter, Aide, et d’autres fonctions. (Non disponible sur les version Home de Windows).

    Modifier les paramètres au travers des stratégies de groupe est aussi supporté. Décompressez le fichier PolicyDefinitions.zip qui se trouve dans le dossier d’installation et lisez le document PolicyDefinitions.rtf pour plus de détails.

    @@ -208,24 +208,24 @@

    En savoir plus à propos des Peaux (Skins)

    Files\Open-Shell\Skins. Après cela, elle sera disponible dans les paramètres.

    Note: Certaines peaux (skins) peuvent être spécifiquement conçues pour le mode -Classic, Basic, ou Aero. Par exemple une peau (skin) Aero nécessitera peut être le support de l'option verre, les autres auront une apparence bizarre si le thème Classique (Classic) ou Base (Basic) est sélectionné. Certaines peaux (skins) Aero nécessiteront aussi peut être une couleur de verre spécifique à sélectionner.
    +Classic, Basic, ou Aero. Par exemple une peau (skin) Aero nécessitera peut être le support de l’option verre, les autres auront une apparence bizarre si le thème Classique (Classic) ou Base (Basic) est sélectionné. Certaines peaux (skins) Aero nécessiteront aussi peut être une couleur de verre spécifique à sélectionner.

    -Vous pouvez créer votre propre peau (skin). Vous aurez besoin d'un logiciel de retouche d’image qui supporte le canal Alpha (comme Gimp ou Photoshop) et un outil pour modifier les fichiers ressources (comme Resource Hacker ou Visual Studio). Et bien sûr quelques talents en conception de graphisme :). Lisez le Tutoriel de peaux (Skinning Tutorial) en anglais avant de commencer.
    +Vous pouvez créer votre propre peau (skin). Vous aurez besoin d’un logiciel de retouche d’image qui supporte le canal Alpha (comme Gimp ou Photoshop) et un outil pour modifier les fichiers ressources (comme Resource Hacker ou Visual Studio). Et bien sûr quelques talents en conception de graphisme :). Lisez le Tutoriel de peaux (Skinning Tutorial) en anglais avant de commencer.



    Recherche



    - La zone de recherche vous laisse rechercher du contenu dans le menu démarrer, les programmes qui se trouvent dans la variable d'environnement PATH et les fichiers indexés. -Vous pouvez avoir la zone de recherche apparaître sous forme d'élément de menu normal et ensuite vous pouvez y aller en utilisant les touches claviers flèches haut/bas. -Vous pouvez choisir d'avoir la zone de recherche sélectionné par défaut quand vous ouvrez le menu démarrer. Ou vous pouvez choisir d’activer la zone de recherche seulement avec la touche Tab, de façon que tant que vous n'utilisez pas la touche tab vous pouvez utiliser le clavier pour naviguer comme si la zone de recherche n'était pas là.
    + La zone de recherche vous laisse rechercher du contenu dans le menu démarrer, les programmes qui se trouvent dans la variable d’environnement PATH et les fichiers indexés. +Vous pouvez avoir la zone de recherche apparaître sous forme d’élément de menu normal et ensuite vous pouvez y aller en utilisant les touches claviers flèches haut/bas. +Vous pouvez choisir d’avoir la zone de recherche sélectionné par défaut quand vous ouvrez le menu démarrer. Ou vous pouvez choisir d’activer la zone de recherche seulement avec la touche Tab, de façon que tant que vous n’utilisez pas la touche tab vous pouvez utiliser le clavier pour naviguer comme si la zone de recherche n’était pas là.

    Les résultats de recherche s'affichent dans le menu principal si vous utilisez le style Windows 7 ou dans un sous-menu pour les styles Classiques (Classic).
    Cliquez sur chaque catégorie pour la développer et voir plus de résultats. Cliquez sur l’icône à la fin pour voir tous les résultats dans l’Explorateur.

    -Les styles Classiques (Classic) vous permettent de configurer des "fournisseurs de recherche" additionnels, que vous pouvez utiliser pour rechercher du texte à partir de la zone de recherche. Vous pouvez exécuter ce programme de recherche soit en le sélectionnant à partir du menu, soit en appuyant sur la touche Alt. Dans cet exemple utilisez Alt+A pour l'Agent Ransack.
    +Les styles Classiques (Classic) vous permettent de configurer des "fournisseurs de recherche" additionnels, que vous pouvez utiliser pour rechercher du texte à partir de la zone de recherche. Vous pouvez exécuter ce programme de recherche soit en le sélectionnant à partir du menu, soit en appuyant sur la touche Alt. Dans cet exemple utilisez Alt+A pour l’Agent Ransack.


    -Ceci est fait en ajoutant des sous-éléments à l'élément zone de recherche dans l’onglet Personnaliser le Menu Démarrer :
    +Ceci est fait en ajoutant des sous-éléments à l’élément zone de recherche dans l’onglet Personnaliser le Menu Démarrer :


    Ouvrez chaque sous-élément et saisissez la commande pour démarrer le programme de recherche. Si vous utilisez %1 dans la commande, cela sera remplacé par le contenu de la zone de recherche. Si vous utilisez %2 cela sera remplacé par le texte de la zone de recherche encodé au format url. @@ -240,7 +240,7 @@

    Recherche

    Bouton Démarrer Personnalisable
    -Open-Shell peut ajouter son propre bouton démarrer à la barre des tches. Il peut même remplacer le bouton démarrer par défaut de Windows 7. +Open-Shell peut ajouter son propre bouton démarrer à la barre des tâches. Il peut même remplacer le bouton démarrer par défaut de Windows 7. Vous pouvez choisir entre un bouton orbe style Aero, un bouton classique rectangulaire, ou vous pouvez faire le vôtre. Pour un bouton démarrer personnalisé vous avez besoin d’une image qui contient 3 états du bouton - normal, chaud et cliqué :
    Images du bouton démarrer
    diff --git a/Src/Localization/French/images/OpenShell.png b/Src/Localization/French/images/OpenShell.png index 1c1786845..228453efc 100644 Binary files a/Src/Localization/French/images/OpenShell.png and b/Src/Localization/French/images/OpenShell.png differ diff --git a/Src/Localization/German/Main.html b/Src/Localization/German/Main.html index 2701aa697..9b65db1b5 100644 --- a/Src/Localization/German/Main.html +++ b/Src/Localization/German/Main.html @@ -33,7 +33,7 @@

    System Anforderungen

    Programmteile


    Open-Shell besteht aus drei Hauptprogrammteilen: diff --git a/Src/Localization/German/OpenShell.hhp b/Src/Localization/German/OpenShell.hhp index 323719722..cf641de9f 100644 --- a/Src/Localization/German/OpenShell.hhp +++ b/Src/Localization/German/OpenShell.hhp @@ -5,12 +5,11 @@ Contents file=OpenShellTOC.hhc Default topic=Main.html Display compile progress=Yes Language=0x409 English (United States) - +Title=Open-Shell Help [FILES] ClassicExplorer.html -Menu.html +StartMenu.html ClassicIE.html [INFOTYPES] - diff --git a/Src/Localization/German/OpenShellTOC.hhc b/Src/Localization/German/OpenShellTOC.hhc index 9835e2363..cbbb5bb83 100644 --- a/Src/Localization/German/OpenShellTOC.hhc +++ b/Src/Localization/German/OpenShellTOC.hhc @@ -15,51 +15,51 @@
  • - +
    • - +
    • - +
    • - - + +
    • - - + +
    • - +
    • - +
    • - +
    • - +
    • - +
    • - +
  • diff --git a/Src/Localization/Polish/Main.html b/Src/Localization/Polish/Main.html index 5e444c462..7d3c93217 100644 --- a/Src/Localization/Polish/Main.html +++ b/Src/Localization/Polish/Main.html @@ -34,7 +34,7 @@

    Wymagania systemowe

    Składniki


    Open-Shell składa się z trzech głównych składników: diff --git a/Src/Localization/Polish/OpenShell.hhp b/Src/Localization/Polish/OpenShell.hhp index f9e030867..661febeb1 100644 --- a/Src/Localization/Polish/OpenShell.hhp +++ b/Src/Localization/Polish/OpenShell.hhp @@ -5,12 +5,11 @@ Contents file=OpenShellTOC.hhc Default topic=Main.html Display compile progress=Yes Language=0x415 Polish (Poland) - +Title=Open-Shell Help [FILES] ClassicExplorer.html -Menu.html +StartMenu.html ClassicIE.html [INFOTYPES] - diff --git a/Src/Localization/Polish/OpenShellTOC.hhc b/Src/Localization/Polish/OpenShellTOC.hhc index 7579a7370..914f17989 100644 --- a/Src/Localization/Polish/OpenShellTOC.hhc +++ b/Src/Localization/Polish/OpenShellTOC.hhc @@ -15,51 +15,51 @@
  • - +
    • - +
    • - +
    • - - + +
    • - - + +
    • - +
    • - +
    • - +
    • - +
    • - +
    • - +
  • diff --git a/Src/Localization/Polish/Menu.html b/Src/Localization/Polish/StartMenu.html similarity index 99% rename from Src/Localization/Polish/Menu.html rename to Src/Localization/Polish/StartMenu.html index 04ffcd6ff..1677ec63f 100644 --- a/Src/Localization/Polish/Menu.html +++ b/Src/Localization/Polish/StartMenu.html @@ -192,7 +192,7 @@

    Ustawienia administracyjne


    W tym przykładzie ustawienie "Włącz menu kontekstowe" jest zablokowane, tak aby pole wyboru zawsze było odznaczone i nie mogło być zmienione przez dowolnego użytkownika. Osiąga się to przez -dodanie odpowiednich ustawień w kluczu rejestru HKEY_LOCAL_MACHINE\SOFTWARE\OpenShell\Menu. Należy utworzyć wartość DWORD o nazwie "EnableContextMenu" i ustawić jej wartość na 0.
    +dodanie odpowiednich ustawień w kluczu rejestru HKEY_LOCAL_MACHINE\SOFTWARE\OpenShell\StartMenu. Należy utworzyć wartość DWORD o nazwie "EnableContextMenu" i ustawić jej wartość na 0.

    W niektórych przypadkach możesz nie chcieć zablokować wartości dla wszystkich użytkowników, ale jedynie chcesz zmienić początkową wartość ustawienia. W takim przypadku należy dodać diff --git a/Src/Localization/Russian/Main.html b/Src/Localization/Russian/Main.html index 558aeb73e..6e6503680 100644 --- a/Src/Localization/Russian/Main.html +++ b/Src/Localization/Russian/Main.html @@ -12,7 +12,7 @@

    Веб-узел Open-Shell  Open-Shell

    Версия 4.3.1 общий выпуск

    Что такое Open-Shell?

    Open-Shellпредставляет собой коллекцию улучшений для Windows. Open-Shell имеет настраиваемые главное меню и кнопку Пуск, добавляет панель инструментов для проводника Windows и поддерживает множество мелких функций.



    Системные требования

    Open-Shell работает на Windows 7, Windows 8, Windows 8.1, Windows Server 2008 R2, Windows Server 2012 и Windows Server 2012 R2. Поддерживает 32 и 64-разрядные версии (универсальная программа установки). Для некоторых обложек меню "Пуск" необходимо включить тему Aero. Для других обложек требуется тема упрощенного стиля Windows.


    Компоненты


    Open-Shell имеет три основных компонента:

    Удаление

    Вы можете удалить Open-Shell через Панель управления -> Программы и компоненты. Другой способ удаления заключается в  в повторном запуске программы установки и выборе команды "Удалить".
    Возможно потребуется завершить сеанс для завершения этого процесса.

    diff --git a/Src/Localization/Russian/OpenShell.hhp b/Src/Localization/Russian/OpenShell.hhp index b8e59e062..371c59f73 100644 --- a/Src/Localization/Russian/OpenShell.hhp +++ b/Src/Localization/Russian/OpenShell.hhp @@ -5,12 +5,11 @@ Contents file=OpenShellTOC.hhc Default topic=Main.html Display compile progress=Yes Language=0x419 Russian (Russia) - +Title= Open-Shell [FILES] ClassicExplorer.html -Menu.html +StartMenu.html ClassicIE.html [INFOTYPES] - diff --git a/Src/Localization/Russian/OpenShellTOC.hhc b/Src/Localization/Russian/OpenShellTOC.hhc index 6b13bab3d..c8d482149 100644 --- a/Src/Localization/Russian/OpenShellTOC.hhc +++ b/Src/Localization/Russian/OpenShellTOC.hhc @@ -15,51 +15,51 @@
  • - +
    • - +
    • - +
    • - - + +
    • - - + +
    • - +
    • - +
    • - +
    • - +
    • - +
    • - +
  • diff --git a/Src/Localization/Russian/Menu.html b/Src/Localization/Russian/StartMenu.html similarity index 99% rename from Src/Localization/Russian/Menu.html rename to Src/Localization/Russian/StartMenu.html index 54789712d..0a29c0700 100644 --- a/Src/Localization/Russian/Menu.html +++ b/Src/Localization/Russian/StartMenu.html @@ -112,7 +112,7 @@

    Парамет сможет редактировать их:

    В данном примере параметр "Включить меню правой кнопки мыши" всегда заблокировано и не может быть изменен любым пользователем. Это -достигается путем добавления параметра в разделе реестра HKEY_LOCAL_MACHINE\SOFTWARE\OpenShell\Menu. Создайте значение DWORD под названием "EnableContextMenu" и установите его в 0.

    +достигается путем добавления параметра в разделе реестра HKEY_LOCAL_MACHINE\SOFTWARE\OpenShell\StartMenu. Создайте значение DWORD под названием "EnableContextMenu" и установите его в 0.

    В некоторых случаях возможно вы не захотите заблокировать значение для всех пользователей, просто измените начальное значение параметра. В таком случае добавьте имя значения "_Default". Например, если diff --git a/Src/Localization/Spanish/Main.html b/Src/Localization/Spanish/Main.html index 7a4bda638..64e838a63 100644 --- a/Src/Localization/Spanish/Main.html +++ b/Src/Localization/Spanish/Main.html @@ -34,7 +34,7 @@

    Requisitos del sistema

    Componentes


    Open-Shell tiene tres componentes principales: diff --git a/Src/Localization/Spanish/OpenShell.hhp b/Src/Localization/Spanish/OpenShell.hhp index 3dc1b9426..bb6c4194c 100644 --- a/Src/Localization/Spanish/OpenShell.hhp +++ b/Src/Localization/Spanish/OpenShell.hhp @@ -6,12 +6,11 @@ Default topic=Main.html Display compile progress=Yes Full-text search=Yes Language=0xc0a Espaol (Espaa, internacional) - +Title=Open-Shell Help [FILES] ClassicExplorer.html -Menu.html +StartMenu.html ClassicIE.html [INFOTYPES] - diff --git a/Src/Localization/Spanish/OpenShellTOC.hhc b/Src/Localization/Spanish/OpenShellTOC.hhc index 29b642b34..128fa956f 100644 --- a/Src/Localization/Spanish/OpenShellTOC.hhc +++ b/Src/Localization/Spanish/OpenShellTOC.hhc @@ -15,51 +15,51 @@
  • - +
    • - +
    • - +
    • - - + +
    • - - + +
    • - +
    • - +
    • - +
    • - +
    • - +
    • - +
  • diff --git a/Src/Localization/Spanish/Menu.html b/Src/Localization/Spanish/StartMenu.html similarity index 99% rename from Src/Localization/Spanish/Menu.html rename to Src/Localization/Spanish/StartMenu.html index fe680ba25..f1116027a 100644 --- a/Src/Localization/Spanish/Menu.html +++ b/Src/Localization/Spanish/StartMenu.html @@ -179,7 +179,7 @@

    Configuraci
    En este ejemplo, la configuracin "Habilitar el men del botn secundario" est bloqueada para que siempre est desmarcada y ningn usuario la pueda cambiar. Esto se logra -agregando la configuracin a la clave del registro HKEY_LOCAL_MACHINE\SOFTWARE\OpenShell\Menu. Cree un valor DWORD llamado "EnableContextMenu" y establzcalo en 0.
    +agregando la configuracin a la clave del registro HKEY_LOCAL_MACHINE\SOFTWARE\OpenShell\StartMenu. Cree un valor DWORD llamado "EnableContextMenu" y establzcalo en 0.

    En algunos casos quiz no desee bloquear el valor para todos los usuarios, sino simplemente modificar el valor inicial de la configuracin. En tal caso, agregue diff --git a/Src/Localization/Spanish/images/OpenShell.png b/Src/Localization/Spanish/images/OpenShell.png index 1c1786845..228453efc 100644 Binary files a/Src/Localization/Spanish/images/OpenShell.png and b/Src/Localization/Spanish/images/OpenShell.png differ diff --git a/Src/Localization/WixUI/WixUI_ja-jp.wxl b/Src/Localization/WixUI/WixUI_ja-jp.wxl index f6e5e4faf..5487b6ccf 100644 --- a/Src/Localization/WixUI/WixUI_ja-jp.wxl +++ b/Src/Localization/WixUI/WixUI_ja-jp.wxl @@ -31,7 +31,7 @@ 12 9 8 - "MS UI Gothic", "MS PGothic", "MS Pゴシック", "MS Gothic", "MS ゴシック", Osaka, Tahoma + "MS UI Gothic", "MS PGothic", "MS Pゴシック", "MS Gothic", "MS ゴシック", Yu Gothic UI, Tahoma [ProductName] セットアップ 場所(&L): diff --git a/Src/OpenShell.sln b/Src/OpenShell.sln index b80c0f99f..c53d1eb2f 100644 --- a/Src/OpenShell.sln +++ b/Src/OpenShell.sln @@ -1,18 +1,18 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27130.2010 +# Visual Studio Version 17 +VisualStudioVersion = 17.4.33205.214 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Skins", "Skins", "{409484D8-C0DB-4991-AF03-124128EDEF98}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Setup", "Setup", "{B695E1F6-785D-45CB-BCE0-0E9635DFC1DE}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ClassicExplorer", "ClassicExplorer\ClassicExplorer.vcxproj", "{9AF324B7-F786-4D85-B2E1-6E51720F874E}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StartMenu", "StartMenu\StartMenu.vcxproj", "{87D5FE20-AF86-458A-9AA3-3131EB06179B}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StartMenuDLL", "StartMenu\StartMenuDLL\StartMenuDLL.vcxproj", "{85DEECBB-1F9B-4983-9D54-3BF42182B7E7}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ClassicExplorer", "ClassicExplorer\ClassicExplorer.vcxproj", "{9AF324B7-F786-4D85-B2E1-6E51720F874E}" +EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Setup", "Setup\Setup.vcxproj", "{A4A4D3B1-24E7-401E-A37C-72141D7603DC}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Win7Aero", "Skins\Win7Aero\Win7Aero.vcxproj", "{EA65FDDD-CB77-417F-8BB4-2F3ECB5B3E75}" @@ -40,6 +40,9 @@ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ClassicIEDLL", "ClassicIE\ClassicIEDLL\ClassicIEDLL.vcxproj", "{BC0E6E7C-08C1-4F12-A754-4608E5A22FA8}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Update", "Update\Update.vcxproj", "{171B46B0-6083-4D9E-BD33-946EA3BD76FA}" + ProjectSection(ProjectDependencies) = postProject + {D94BD2A6-1872-4F01-B911-F406603AA2E1} = {D94BD2A6-1872-4F01-B911-F406603AA2E1} + EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Win7Aero7", "Skins\Win7Aero7\Win7Aero7.vcxproj", "{A2CCDE9F-17CE-461E-8BD9-00261B8855A6}" EndProject @@ -51,8 +54,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Win8", "Skins\Win8\Win8.vcx EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StartMenuHelper", "StartMenu\StartMenuHelper\StartMenuHelper.vcxproj", "{A42C6159-ACA8-46D1-A0FB-19C398B137D5}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UpdateBin", "Setup\UpdateBin\UpdateBin.vcxproj", "{F92A5473-F9E0-412F-923C-6632A66D13C1}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Utility", "Setup\Utility\Utility.vcxproj", "{DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Midnight7", "Skins\Midnight7\Midnight7.vcxproj", "{7BD26CB3-5280-48FD-9A86-C13E321018D5}" @@ -63,317 +64,510 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Metro", "Skins\Metro\Metro. EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Metallic7", "Skins\Metallic7\Metallic7.vcxproj", "{CA5BFC96-428D-42F5-9F7D-CDDE048A357C}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DesktopToasts", "Update\DesktopToasts\DesktopToasts.vcxproj", "{D94BD2A6-1872-4F01-B911-F406603AA2E1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Immersive", "Skins\Immersive\Immersive.vcxproj", "{BD28B058-230E-42DF-9FB1-FFBB0153F498}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Immersive7", "Skins\Immersive7\Immersive7.vcxproj", "{75809D15-8403-420A-BBE6-05F478D88D8E}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM64 = Debug|ARM64 Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 + Release|ARM64 = Release|ARM64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 + Setup|ARM64 = Setup|ARM64 Setup|Win32 = Setup|Win32 Setup|x64 = Setup|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Debug|Win32.ActiveCfg = Debug|Win32 - {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Debug|Win32.Build.0 = Debug|Win32 - {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Debug|x64.ActiveCfg = Debug|x64 - {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Debug|x64.Build.0 = Debug|x64 - {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Release|Win32.ActiveCfg = Release|Win32 - {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Release|Win32.Build.0 = Release|Win32 - {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Release|x64.ActiveCfg = Release|x64 - {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Release|x64.Build.0 = Release|x64 - {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Setup|Win32.ActiveCfg = Setup|Win32 - {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Setup|Win32.Build.0 = Setup|Win32 - {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Setup|x64.ActiveCfg = Setup|x64 - {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Setup|x64.Build.0 = Setup|x64 + {87D5FE20-AF86-458A-9AA3-3131EB06179B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {87D5FE20-AF86-458A-9AA3-3131EB06179B}.Debug|ARM64.Build.0 = Debug|ARM64 + {87D5FE20-AF86-458A-9AA3-3131EB06179B}.Debug|ARM64.Deploy.0 = Debug|ARM64 {87D5FE20-AF86-458A-9AA3-3131EB06179B}.Debug|Win32.ActiveCfg = Debug|Win32 {87D5FE20-AF86-458A-9AA3-3131EB06179B}.Debug|Win32.Build.0 = Debug|Win32 {87D5FE20-AF86-458A-9AA3-3131EB06179B}.Debug|x64.ActiveCfg = Debug|x64 {87D5FE20-AF86-458A-9AA3-3131EB06179B}.Debug|x64.Build.0 = Debug|x64 + {87D5FE20-AF86-458A-9AA3-3131EB06179B}.Release|ARM64.ActiveCfg = Release|ARM64 + {87D5FE20-AF86-458A-9AA3-3131EB06179B}.Release|ARM64.Build.0 = Release|ARM64 + {87D5FE20-AF86-458A-9AA3-3131EB06179B}.Release|ARM64.Deploy.0 = Release|ARM64 {87D5FE20-AF86-458A-9AA3-3131EB06179B}.Release|Win32.ActiveCfg = Release|Win32 {87D5FE20-AF86-458A-9AA3-3131EB06179B}.Release|Win32.Build.0 = Release|Win32 {87D5FE20-AF86-458A-9AA3-3131EB06179B}.Release|x64.ActiveCfg = Release|x64 {87D5FE20-AF86-458A-9AA3-3131EB06179B}.Release|x64.Build.0 = Release|x64 + {87D5FE20-AF86-458A-9AA3-3131EB06179B}.Setup|ARM64.ActiveCfg = Setup|ARM64 + {87D5FE20-AF86-458A-9AA3-3131EB06179B}.Setup|ARM64.Build.0 = Setup|ARM64 {87D5FE20-AF86-458A-9AA3-3131EB06179B}.Setup|Win32.ActiveCfg = Setup|Win32 {87D5FE20-AF86-458A-9AA3-3131EB06179B}.Setup|Win32.Build.0 = Setup|Win32 {87D5FE20-AF86-458A-9AA3-3131EB06179B}.Setup|x64.ActiveCfg = Setup|x64 {87D5FE20-AF86-458A-9AA3-3131EB06179B}.Setup|x64.Build.0 = Setup|x64 + {85DEECBB-1F9B-4983-9D54-3BF42182B7E7}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {85DEECBB-1F9B-4983-9D54-3BF42182B7E7}.Debug|ARM64.Build.0 = Debug|ARM64 + {85DEECBB-1F9B-4983-9D54-3BF42182B7E7}.Debug|ARM64.Deploy.0 = Debug|ARM64 {85DEECBB-1F9B-4983-9D54-3BF42182B7E7}.Debug|Win32.ActiveCfg = Debug|Win32 {85DEECBB-1F9B-4983-9D54-3BF42182B7E7}.Debug|Win32.Build.0 = Debug|Win32 {85DEECBB-1F9B-4983-9D54-3BF42182B7E7}.Debug|x64.ActiveCfg = Debug|x64 {85DEECBB-1F9B-4983-9D54-3BF42182B7E7}.Debug|x64.Build.0 = Debug|x64 + {85DEECBB-1F9B-4983-9D54-3BF42182B7E7}.Release|ARM64.ActiveCfg = Release|ARM64 + {85DEECBB-1F9B-4983-9D54-3BF42182B7E7}.Release|ARM64.Build.0 = Release|ARM64 + {85DEECBB-1F9B-4983-9D54-3BF42182B7E7}.Release|ARM64.Deploy.0 = Release|ARM64 {85DEECBB-1F9B-4983-9D54-3BF42182B7E7}.Release|Win32.ActiveCfg = Release|Win32 {85DEECBB-1F9B-4983-9D54-3BF42182B7E7}.Release|Win32.Build.0 = Release|Win32 {85DEECBB-1F9B-4983-9D54-3BF42182B7E7}.Release|x64.ActiveCfg = Release|x64 {85DEECBB-1F9B-4983-9D54-3BF42182B7E7}.Release|x64.Build.0 = Release|x64 + {85DEECBB-1F9B-4983-9D54-3BF42182B7E7}.Setup|ARM64.ActiveCfg = Setup|ARM64 + {85DEECBB-1F9B-4983-9D54-3BF42182B7E7}.Setup|ARM64.Build.0 = Setup|ARM64 {85DEECBB-1F9B-4983-9D54-3BF42182B7E7}.Setup|Win32.ActiveCfg = Setup|Win32 {85DEECBB-1F9B-4983-9D54-3BF42182B7E7}.Setup|Win32.Build.0 = Setup|Win32 {85DEECBB-1F9B-4983-9D54-3BF42182B7E7}.Setup|x64.ActiveCfg = Setup|x64 {85DEECBB-1F9B-4983-9D54-3BF42182B7E7}.Setup|x64.Build.0 = Setup|x64 + {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Debug|ARM64.Build.0 = Debug|ARM64 + {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Debug|Win32.ActiveCfg = Debug|Win32 + {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Debug|Win32.Build.0 = Debug|Win32 + {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Debug|x64.ActiveCfg = Debug|x64 + {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Debug|x64.Build.0 = Debug|x64 + {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Release|ARM64.ActiveCfg = Release|ARM64 + {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Release|ARM64.Build.0 = Release|ARM64 + {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Release|Win32.ActiveCfg = Release|Win32 + {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Release|Win32.Build.0 = Release|Win32 + {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Release|x64.ActiveCfg = Release|x64 + {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Release|x64.Build.0 = Release|x64 + {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Setup|ARM64.ActiveCfg = Setup|ARM64 + {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Setup|ARM64.Build.0 = Setup|ARM64 + {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Setup|Win32.ActiveCfg = Setup|Win32 + {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Setup|Win32.Build.0 = Setup|Win32 + {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Setup|x64.ActiveCfg = Setup|x64 + {9AF324B7-F786-4D85-B2E1-6E51720F874E}.Setup|x64.Build.0 = Setup|x64 + {A4A4D3B1-24E7-401E-A37C-72141D7603DC}.Debug|ARM64.ActiveCfg = Debug|Win32 + {A4A4D3B1-24E7-401E-A37C-72141D7603DC}.Debug|ARM64.Build.0 = Debug|Win32 {A4A4D3B1-24E7-401E-A37C-72141D7603DC}.Debug|Win32.ActiveCfg = Debug|Win32 {A4A4D3B1-24E7-401E-A37C-72141D7603DC}.Debug|Win32.Build.0 = Debug|Win32 {A4A4D3B1-24E7-401E-A37C-72141D7603DC}.Debug|x64.ActiveCfg = Debug|Win32 + {A4A4D3B1-24E7-401E-A37C-72141D7603DC}.Debug|x64.Build.0 = Debug|Win32 + {A4A4D3B1-24E7-401E-A37C-72141D7603DC}.Release|ARM64.ActiveCfg = Release|Win32 + {A4A4D3B1-24E7-401E-A37C-72141D7603DC}.Release|ARM64.Build.0 = Release|Win32 {A4A4D3B1-24E7-401E-A37C-72141D7603DC}.Release|Win32.ActiveCfg = Release|Win32 {A4A4D3B1-24E7-401E-A37C-72141D7603DC}.Release|Win32.Build.0 = Release|Win32 {A4A4D3B1-24E7-401E-A37C-72141D7603DC}.Release|x64.ActiveCfg = Release|Win32 + {A4A4D3B1-24E7-401E-A37C-72141D7603DC}.Release|x64.Build.0 = Release|Win32 + {A4A4D3B1-24E7-401E-A37C-72141D7603DC}.Setup|ARM64.ActiveCfg = Release|Win32 {A4A4D3B1-24E7-401E-A37C-72141D7603DC}.Setup|Win32.ActiveCfg = Release|Win32 {A4A4D3B1-24E7-401E-A37C-72141D7603DC}.Setup|x64.ActiveCfg = Release|Win32 + {EA65FDDD-CB77-417F-8BB4-2F3ECB5B3E75}.Debug|ARM64.ActiveCfg = Resource|Win32 + {EA65FDDD-CB77-417F-8BB4-2F3ECB5B3E75}.Debug|ARM64.Build.0 = Resource|Win32 {EA65FDDD-CB77-417F-8BB4-2F3ECB5B3E75}.Debug|Win32.ActiveCfg = Resource|Win32 {EA65FDDD-CB77-417F-8BB4-2F3ECB5B3E75}.Debug|Win32.Build.0 = Resource|Win32 {EA65FDDD-CB77-417F-8BB4-2F3ECB5B3E75}.Debug|x64.ActiveCfg = Resource|Win32 {EA65FDDD-CB77-417F-8BB4-2F3ECB5B3E75}.Debug|x64.Build.0 = Resource|Win32 + {EA65FDDD-CB77-417F-8BB4-2F3ECB5B3E75}.Release|ARM64.ActiveCfg = Resource|Win32 + {EA65FDDD-CB77-417F-8BB4-2F3ECB5B3E75}.Release|ARM64.Build.0 = Resource|Win32 {EA65FDDD-CB77-417F-8BB4-2F3ECB5B3E75}.Release|Win32.ActiveCfg = Resource|Win32 {EA65FDDD-CB77-417F-8BB4-2F3ECB5B3E75}.Release|Win32.Build.0 = Resource|Win32 {EA65FDDD-CB77-417F-8BB4-2F3ECB5B3E75}.Release|x64.ActiveCfg = Resource|Win32 {EA65FDDD-CB77-417F-8BB4-2F3ECB5B3E75}.Release|x64.Build.0 = Resource|Win32 + {EA65FDDD-CB77-417F-8BB4-2F3ECB5B3E75}.Setup|ARM64.ActiveCfg = Resource|Win32 {EA65FDDD-CB77-417F-8BB4-2F3ECB5B3E75}.Setup|Win32.ActiveCfg = Resource|Win32 {EA65FDDD-CB77-417F-8BB4-2F3ECB5B3E75}.Setup|Win32.Build.0 = Resource|Win32 {EA65FDDD-CB77-417F-8BB4-2F3ECB5B3E75}.Setup|x64.ActiveCfg = Resource|Win32 + {404821C5-4EE4-4908-A759-5EF6DAC14AB6}.Debug|ARM64.ActiveCfg = Resource|Win32 + {404821C5-4EE4-4908-A759-5EF6DAC14AB6}.Debug|ARM64.Build.0 = Resource|Win32 {404821C5-4EE4-4908-A759-5EF6DAC14AB6}.Debug|Win32.ActiveCfg = Resource|Win32 {404821C5-4EE4-4908-A759-5EF6DAC14AB6}.Debug|Win32.Build.0 = Resource|Win32 {404821C5-4EE4-4908-A759-5EF6DAC14AB6}.Debug|x64.ActiveCfg = Resource|Win32 {404821C5-4EE4-4908-A759-5EF6DAC14AB6}.Debug|x64.Build.0 = Resource|Win32 + {404821C5-4EE4-4908-A759-5EF6DAC14AB6}.Release|ARM64.ActiveCfg = Resource|Win32 + {404821C5-4EE4-4908-A759-5EF6DAC14AB6}.Release|ARM64.Build.0 = Resource|Win32 {404821C5-4EE4-4908-A759-5EF6DAC14AB6}.Release|Win32.ActiveCfg = Resource|Win32 {404821C5-4EE4-4908-A759-5EF6DAC14AB6}.Release|Win32.Build.0 = Resource|Win32 {404821C5-4EE4-4908-A759-5EF6DAC14AB6}.Release|x64.ActiveCfg = Resource|Win32 {404821C5-4EE4-4908-A759-5EF6DAC14AB6}.Release|x64.Build.0 = Resource|Win32 + {404821C5-4EE4-4908-A759-5EF6DAC14AB6}.Setup|ARM64.ActiveCfg = Resource|Win32 {404821C5-4EE4-4908-A759-5EF6DAC14AB6}.Setup|Win32.ActiveCfg = Resource|Win32 {404821C5-4EE4-4908-A759-5EF6DAC14AB6}.Setup|Win32.Build.0 = Resource|Win32 {404821C5-4EE4-4908-A759-5EF6DAC14AB6}.Setup|x64.ActiveCfg = Resource|Win32 + {9EC23CA9-384A-4EEB-979E-69879DC1A78C}.Debug|ARM64.ActiveCfg = Resource|Win32 + {9EC23CA9-384A-4EEB-979E-69879DC1A78C}.Debug|ARM64.Build.0 = Resource|Win32 {9EC23CA9-384A-4EEB-979E-69879DC1A78C}.Debug|Win32.ActiveCfg = Resource|Win32 {9EC23CA9-384A-4EEB-979E-69879DC1A78C}.Debug|Win32.Build.0 = Resource|Win32 {9EC23CA9-384A-4EEB-979E-69879DC1A78C}.Debug|x64.ActiveCfg = Resource|Win32 {9EC23CA9-384A-4EEB-979E-69879DC1A78C}.Debug|x64.Build.0 = Resource|Win32 + {9EC23CA9-384A-4EEB-979E-69879DC1A78C}.Release|ARM64.ActiveCfg = Resource|Win32 + {9EC23CA9-384A-4EEB-979E-69879DC1A78C}.Release|ARM64.Build.0 = Resource|Win32 {9EC23CA9-384A-4EEB-979E-69879DC1A78C}.Release|Win32.ActiveCfg = Resource|Win32 {9EC23CA9-384A-4EEB-979E-69879DC1A78C}.Release|Win32.Build.0 = Resource|Win32 {9EC23CA9-384A-4EEB-979E-69879DC1A78C}.Release|x64.ActiveCfg = Resource|Win32 {9EC23CA9-384A-4EEB-979E-69879DC1A78C}.Release|x64.Build.0 = Resource|Win32 + {9EC23CA9-384A-4EEB-979E-69879DC1A78C}.Setup|ARM64.ActiveCfg = Resource|Win32 {9EC23CA9-384A-4EEB-979E-69879DC1A78C}.Setup|Win32.ActiveCfg = Resource|Win32 {9EC23CA9-384A-4EEB-979E-69879DC1A78C}.Setup|Win32.Build.0 = Resource|Win32 {9EC23CA9-384A-4EEB-979E-69879DC1A78C}.Setup|x64.ActiveCfg = Resource|Win32 + {066C9721-26D5-4C4D-868E-50C2BA0A8196}.Debug|ARM64.ActiveCfg = Resource|Win32 + {066C9721-26D5-4C4D-868E-50C2BA0A8196}.Debug|ARM64.Build.0 = Resource|Win32 {066C9721-26D5-4C4D-868E-50C2BA0A8196}.Debug|Win32.ActiveCfg = Resource|Win32 {066C9721-26D5-4C4D-868E-50C2BA0A8196}.Debug|Win32.Build.0 = Resource|Win32 {066C9721-26D5-4C4D-868E-50C2BA0A8196}.Debug|x64.ActiveCfg = Resource|Win32 {066C9721-26D5-4C4D-868E-50C2BA0A8196}.Debug|x64.Build.0 = Resource|Win32 + {066C9721-26D5-4C4D-868E-50C2BA0A8196}.Release|ARM64.ActiveCfg = Resource|Win32 + {066C9721-26D5-4C4D-868E-50C2BA0A8196}.Release|ARM64.Build.0 = Resource|Win32 {066C9721-26D5-4C4D-868E-50C2BA0A8196}.Release|Win32.ActiveCfg = Resource|Win32 {066C9721-26D5-4C4D-868E-50C2BA0A8196}.Release|Win32.Build.0 = Resource|Win32 {066C9721-26D5-4C4D-868E-50C2BA0A8196}.Release|x64.ActiveCfg = Resource|Win32 {066C9721-26D5-4C4D-868E-50C2BA0A8196}.Release|x64.Build.0 = Resource|Win32 + {066C9721-26D5-4C4D-868E-50C2BA0A8196}.Setup|ARM64.ActiveCfg = Resource|Win32 {066C9721-26D5-4C4D-868E-50C2BA0A8196}.Setup|Win32.ActiveCfg = Resource|Win32 {066C9721-26D5-4C4D-868E-50C2BA0A8196}.Setup|Win32.Build.0 = Resource|Win32 {066C9721-26D5-4C4D-868E-50C2BA0A8196}.Setup|x64.ActiveCfg = Resource|Win32 + {66D1EAA4-65D1-45CC-9989-E616FC0575EB}.Debug|ARM64.ActiveCfg = Resource|Win32 + {66D1EAA4-65D1-45CC-9989-E616FC0575EB}.Debug|ARM64.Build.0 = Resource|Win32 {66D1EAA4-65D1-45CC-9989-E616FC0575EB}.Debug|Win32.ActiveCfg = Resource|Win32 {66D1EAA4-65D1-45CC-9989-E616FC0575EB}.Debug|Win32.Build.0 = Resource|Win32 {66D1EAA4-65D1-45CC-9989-E616FC0575EB}.Debug|x64.ActiveCfg = Resource|Win32 {66D1EAA4-65D1-45CC-9989-E616FC0575EB}.Debug|x64.Build.0 = Resource|Win32 + {66D1EAA4-65D1-45CC-9989-E616FC0575EB}.Release|ARM64.ActiveCfg = Resource|Win32 + {66D1EAA4-65D1-45CC-9989-E616FC0575EB}.Release|ARM64.Build.0 = Resource|Win32 {66D1EAA4-65D1-45CC-9989-E616FC0575EB}.Release|Win32.ActiveCfg = Resource|Win32 {66D1EAA4-65D1-45CC-9989-E616FC0575EB}.Release|Win32.Build.0 = Resource|Win32 {66D1EAA4-65D1-45CC-9989-E616FC0575EB}.Release|x64.ActiveCfg = Resource|Win32 {66D1EAA4-65D1-45CC-9989-E616FC0575EB}.Release|x64.Build.0 = Resource|Win32 + {66D1EAA4-65D1-45CC-9989-E616FC0575EB}.Setup|ARM64.ActiveCfg = Resource|Win32 {66D1EAA4-65D1-45CC-9989-E616FC0575EB}.Setup|Win32.ActiveCfg = Resource|Win32 {66D1EAA4-65D1-45CC-9989-E616FC0575EB}.Setup|Win32.Build.0 = Resource|Win32 {66D1EAA4-65D1-45CC-9989-E616FC0575EB}.Setup|x64.ActiveCfg = Resource|Win32 + {81EB6336-366C-47DD-82CF-FF6C36CCD2B5}.Debug|ARM64.ActiveCfg = Resource|Win32 + {81EB6336-366C-47DD-82CF-FF6C36CCD2B5}.Debug|ARM64.Build.0 = Resource|Win32 {81EB6336-366C-47DD-82CF-FF6C36CCD2B5}.Debug|Win32.ActiveCfg = Resource|Win32 {81EB6336-366C-47DD-82CF-FF6C36CCD2B5}.Debug|Win32.Build.0 = Resource|Win32 {81EB6336-366C-47DD-82CF-FF6C36CCD2B5}.Debug|x64.ActiveCfg = Resource|Win32 {81EB6336-366C-47DD-82CF-FF6C36CCD2B5}.Debug|x64.Build.0 = Resource|Win32 + {81EB6336-366C-47DD-82CF-FF6C36CCD2B5}.Release|ARM64.ActiveCfg = Resource|Win32 + {81EB6336-366C-47DD-82CF-FF6C36CCD2B5}.Release|ARM64.Build.0 = Resource|Win32 {81EB6336-366C-47DD-82CF-FF6C36CCD2B5}.Release|Win32.ActiveCfg = Resource|Win32 {81EB6336-366C-47DD-82CF-FF6C36CCD2B5}.Release|Win32.Build.0 = Resource|Win32 {81EB6336-366C-47DD-82CF-FF6C36CCD2B5}.Release|x64.ActiveCfg = Resource|Win32 {81EB6336-366C-47DD-82CF-FF6C36CCD2B5}.Release|x64.Build.0 = Resource|Win32 + {81EB6336-366C-47DD-82CF-FF6C36CCD2B5}.Setup|ARM64.ActiveCfg = Resource|Win32 {81EB6336-366C-47DD-82CF-FF6C36CCD2B5}.Setup|Win32.ActiveCfg = Resource|Win32 {81EB6336-366C-47DD-82CF-FF6C36CCD2B5}.Setup|Win32.Build.0 = Resource|Win32 {81EB6336-366C-47DD-82CF-FF6C36CCD2B5}.Setup|x64.ActiveCfg = Resource|Win32 + {E1017135-9916-4B11-9AC5-1EC0BD8F8CD6}.Debug|ARM64.ActiveCfg = Debug|Win32 {E1017135-9916-4B11-9AC5-1EC0BD8F8CD6}.Debug|Win32.ActiveCfg = Debug|Win32 {E1017135-9916-4B11-9AC5-1EC0BD8F8CD6}.Debug|Win32.Build.0 = Debug|Win32 {E1017135-9916-4B11-9AC5-1EC0BD8F8CD6}.Debug|x64.ActiveCfg = Debug|Win32 + {E1017135-9916-4B11-9AC5-1EC0BD8F8CD6}.Release|ARM64.ActiveCfg = Release|Win32 {E1017135-9916-4B11-9AC5-1EC0BD8F8CD6}.Release|Win32.ActiveCfg = Release|Win32 {E1017135-9916-4B11-9AC5-1EC0BD8F8CD6}.Release|Win32.Build.0 = Release|Win32 {E1017135-9916-4B11-9AC5-1EC0BD8F8CD6}.Release|x64.ActiveCfg = Release|Win32 + {E1017135-9916-4B11-9AC5-1EC0BD8F8CD6}.Setup|ARM64.ActiveCfg = Release|Win32 {E1017135-9916-4B11-9AC5-1EC0BD8F8CD6}.Setup|Win32.ActiveCfg = Release|Win32 {E1017135-9916-4B11-9AC5-1EC0BD8F8CD6}.Setup|Win32.Build.0 = Release|Win32 {E1017135-9916-4B11-9AC5-1EC0BD8F8CD6}.Setup|x64.ActiveCfg = Release|Win32 + {E93271C8-0252-4A08-8227-1978C64C2D34}.Debug|ARM64.ActiveCfg = Debug|Win32 {E93271C8-0252-4A08-8227-1978C64C2D34}.Debug|Win32.ActiveCfg = Debug|Win32 {E93271C8-0252-4A08-8227-1978C64C2D34}.Debug|Win32.Build.0 = Debug|Win32 {E93271C8-0252-4A08-8227-1978C64C2D34}.Debug|x64.ActiveCfg = Debug|Win32 + {E93271C8-0252-4A08-8227-1978C64C2D34}.Release|ARM64.ActiveCfg = Release|Win32 {E93271C8-0252-4A08-8227-1978C64C2D34}.Release|Win32.ActiveCfg = Release|Win32 {E93271C8-0252-4A08-8227-1978C64C2D34}.Release|Win32.Build.0 = Release|Win32 {E93271C8-0252-4A08-8227-1978C64C2D34}.Release|x64.ActiveCfg = Release|Win32 + {E93271C8-0252-4A08-8227-1978C64C2D34}.Setup|ARM64.ActiveCfg = Setup|Win32 {E93271C8-0252-4A08-8227-1978C64C2D34}.Setup|Win32.ActiveCfg = Setup|Win32 {E93271C8-0252-4A08-8227-1978C64C2D34}.Setup|Win32.Build.0 = Setup|Win32 {E93271C8-0252-4A08-8227-1978C64C2D34}.Setup|x64.ActiveCfg = Setup|Win32 + {0A60FD06-3A81-4651-A869-9850DBC115EA}.Debug|ARM64.ActiveCfg = Resource|Win32 {0A60FD06-3A81-4651-A869-9850DBC115EA}.Debug|Win32.ActiveCfg = Resource|Win32 {0A60FD06-3A81-4651-A869-9850DBC115EA}.Debug|Win32.Build.0 = Resource|Win32 {0A60FD06-3A81-4651-A869-9850DBC115EA}.Debug|x64.ActiveCfg = Resource|Win32 + {0A60FD06-3A81-4651-A869-9850DBC115EA}.Release|ARM64.ActiveCfg = Resource|Win32 {0A60FD06-3A81-4651-A869-9850DBC115EA}.Release|Win32.ActiveCfg = Resource|Win32 {0A60FD06-3A81-4651-A869-9850DBC115EA}.Release|Win32.Build.0 = Resource|Win32 {0A60FD06-3A81-4651-A869-9850DBC115EA}.Release|x64.ActiveCfg = Resource|Win32 + {0A60FD06-3A81-4651-A869-9850DBC115EA}.Setup|ARM64.ActiveCfg = Resource|Win32 {0A60FD06-3A81-4651-A869-9850DBC115EA}.Setup|Win32.ActiveCfg = Resource|Win32 {0A60FD06-3A81-4651-A869-9850DBC115EA}.Setup|Win32.Build.0 = Resource|Win32 {0A60FD06-3A81-4651-A869-9850DBC115EA}.Setup|x64.ActiveCfg = Resource|Win32 + {D42FE717-485B-492D-884A-1999F6D51154}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D42FE717-485B-492D-884A-1999F6D51154}.Debug|ARM64.Build.0 = Debug|ARM64 {D42FE717-485B-492D-884A-1999F6D51154}.Debug|Win32.ActiveCfg = Debug|Win32 {D42FE717-485B-492D-884A-1999F6D51154}.Debug|Win32.Build.0 = Debug|Win32 {D42FE717-485B-492D-884A-1999F6D51154}.Debug|x64.ActiveCfg = Debug|x64 {D42FE717-485B-492D-884A-1999F6D51154}.Debug|x64.Build.0 = Debug|x64 + {D42FE717-485B-492D-884A-1999F6D51154}.Release|ARM64.ActiveCfg = Release|ARM64 + {D42FE717-485B-492D-884A-1999F6D51154}.Release|ARM64.Build.0 = Release|ARM64 {D42FE717-485B-492D-884A-1999F6D51154}.Release|Win32.ActiveCfg = Release|Win32 {D42FE717-485B-492D-884A-1999F6D51154}.Release|Win32.Build.0 = Release|Win32 {D42FE717-485B-492D-884A-1999F6D51154}.Release|x64.ActiveCfg = Release|x64 {D42FE717-485B-492D-884A-1999F6D51154}.Release|x64.Build.0 = Release|x64 + {D42FE717-485B-492D-884A-1999F6D51154}.Setup|ARM64.ActiveCfg = Release|ARM64 + {D42FE717-485B-492D-884A-1999F6D51154}.Setup|ARM64.Build.0 = Release|ARM64 {D42FE717-485B-492D-884A-1999F6D51154}.Setup|Win32.ActiveCfg = Release|Win32 {D42FE717-485B-492D-884A-1999F6D51154}.Setup|Win32.Build.0 = Release|Win32 {D42FE717-485B-492D-884A-1999F6D51154}.Setup|x64.ActiveCfg = Release|x64 {D42FE717-485B-492D-884A-1999F6D51154}.Setup|x64.Build.0 = Release|x64 + {65D5C193-E807-4094-AE19-19E6A310A312}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {65D5C193-E807-4094-AE19-19E6A310A312}.Debug|ARM64.Build.0 = Debug|ARM64 {65D5C193-E807-4094-AE19-19E6A310A312}.Debug|Win32.ActiveCfg = Debug|Win32 {65D5C193-E807-4094-AE19-19E6A310A312}.Debug|Win32.Build.0 = Debug|Win32 {65D5C193-E807-4094-AE19-19E6A310A312}.Debug|x64.ActiveCfg = Debug|x64 {65D5C193-E807-4094-AE19-19E6A310A312}.Debug|x64.Build.0 = Debug|x64 + {65D5C193-E807-4094-AE19-19E6A310A312}.Release|ARM64.ActiveCfg = Release|ARM64 + {65D5C193-E807-4094-AE19-19E6A310A312}.Release|ARM64.Build.0 = Release|ARM64 {65D5C193-E807-4094-AE19-19E6A310A312}.Release|Win32.ActiveCfg = Release|Win32 {65D5C193-E807-4094-AE19-19E6A310A312}.Release|Win32.Build.0 = Release|Win32 {65D5C193-E807-4094-AE19-19E6A310A312}.Release|x64.ActiveCfg = Release|x64 {65D5C193-E807-4094-AE19-19E6A310A312}.Release|x64.Build.0 = Release|x64 + {65D5C193-E807-4094-AE19-19E6A310A312}.Setup|ARM64.ActiveCfg = Setup|ARM64 + {65D5C193-E807-4094-AE19-19E6A310A312}.Setup|ARM64.Build.0 = Setup|ARM64 {65D5C193-E807-4094-AE19-19E6A310A312}.Setup|Win32.ActiveCfg = Setup|Win32 {65D5C193-E807-4094-AE19-19E6A310A312}.Setup|Win32.Build.0 = Setup|Win32 {65D5C193-E807-4094-AE19-19E6A310A312}.Setup|x64.ActiveCfg = Setup|x64 {65D5C193-E807-4094-AE19-19E6A310A312}.Setup|x64.Build.0 = Setup|x64 + {BC0E6E7C-08C1-4F12-A754-4608E5A22FA8}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {BC0E6E7C-08C1-4F12-A754-4608E5A22FA8}.Debug|ARM64.Build.0 = Debug|ARM64 {BC0E6E7C-08C1-4F12-A754-4608E5A22FA8}.Debug|Win32.ActiveCfg = Debug|Win32 {BC0E6E7C-08C1-4F12-A754-4608E5A22FA8}.Debug|Win32.Build.0 = Debug|Win32 {BC0E6E7C-08C1-4F12-A754-4608E5A22FA8}.Debug|x64.ActiveCfg = Debug|x64 {BC0E6E7C-08C1-4F12-A754-4608E5A22FA8}.Debug|x64.Build.0 = Debug|x64 + {BC0E6E7C-08C1-4F12-A754-4608E5A22FA8}.Release|ARM64.ActiveCfg = Release|ARM64 + {BC0E6E7C-08C1-4F12-A754-4608E5A22FA8}.Release|ARM64.Build.0 = Release|ARM64 {BC0E6E7C-08C1-4F12-A754-4608E5A22FA8}.Release|Win32.ActiveCfg = Release|Win32 {BC0E6E7C-08C1-4F12-A754-4608E5A22FA8}.Release|Win32.Build.0 = Release|Win32 {BC0E6E7C-08C1-4F12-A754-4608E5A22FA8}.Release|x64.ActiveCfg = Release|x64 {BC0E6E7C-08C1-4F12-A754-4608E5A22FA8}.Release|x64.Build.0 = Release|x64 + {BC0E6E7C-08C1-4F12-A754-4608E5A22FA8}.Setup|ARM64.ActiveCfg = Setup|ARM64 + {BC0E6E7C-08C1-4F12-A754-4608E5A22FA8}.Setup|ARM64.Build.0 = Setup|ARM64 {BC0E6E7C-08C1-4F12-A754-4608E5A22FA8}.Setup|Win32.ActiveCfg = Setup|Win32 {BC0E6E7C-08C1-4F12-A754-4608E5A22FA8}.Setup|Win32.Build.0 = Setup|Win32 {BC0E6E7C-08C1-4F12-A754-4608E5A22FA8}.Setup|x64.ActiveCfg = Setup|x64 {BC0E6E7C-08C1-4F12-A754-4608E5A22FA8}.Setup|x64.Build.0 = Setup|x64 + {171B46B0-6083-4D9E-BD33-946EA3BD76FA}.Debug|ARM64.ActiveCfg = Debug|Win32 {171B46B0-6083-4D9E-BD33-946EA3BD76FA}.Debug|Win32.ActiveCfg = Debug|Win32 {171B46B0-6083-4D9E-BD33-946EA3BD76FA}.Debug|Win32.Build.0 = Debug|Win32 {171B46B0-6083-4D9E-BD33-946EA3BD76FA}.Debug|x64.ActiveCfg = Debug|Win32 + {171B46B0-6083-4D9E-BD33-946EA3BD76FA}.Release|ARM64.ActiveCfg = Release|Win32 {171B46B0-6083-4D9E-BD33-946EA3BD76FA}.Release|Win32.ActiveCfg = Release|Win32 {171B46B0-6083-4D9E-BD33-946EA3BD76FA}.Release|Win32.Build.0 = Release|Win32 {171B46B0-6083-4D9E-BD33-946EA3BD76FA}.Release|x64.ActiveCfg = Release|Win32 + {171B46B0-6083-4D9E-BD33-946EA3BD76FA}.Setup|ARM64.ActiveCfg = Release|Win32 {171B46B0-6083-4D9E-BD33-946EA3BD76FA}.Setup|Win32.ActiveCfg = Release|Win32 {171B46B0-6083-4D9E-BD33-946EA3BD76FA}.Setup|Win32.Build.0 = Release|Win32 {171B46B0-6083-4D9E-BD33-946EA3BD76FA}.Setup|x64.ActiveCfg = Release|Win32 + {A2CCDE9F-17CE-461E-8BD9-00261B8855A6}.Debug|ARM64.ActiveCfg = Resource|Win32 + {A2CCDE9F-17CE-461E-8BD9-00261B8855A6}.Debug|ARM64.Build.0 = Resource|Win32 {A2CCDE9F-17CE-461E-8BD9-00261B8855A6}.Debug|Win32.ActiveCfg = Resource|Win32 {A2CCDE9F-17CE-461E-8BD9-00261B8855A6}.Debug|Win32.Build.0 = Resource|Win32 {A2CCDE9F-17CE-461E-8BD9-00261B8855A6}.Debug|x64.ActiveCfg = Resource|Win32 {A2CCDE9F-17CE-461E-8BD9-00261B8855A6}.Debug|x64.Build.0 = Resource|Win32 + {A2CCDE9F-17CE-461E-8BD9-00261B8855A6}.Release|ARM64.ActiveCfg = Resource|Win32 + {A2CCDE9F-17CE-461E-8BD9-00261B8855A6}.Release|ARM64.Build.0 = Resource|Win32 {A2CCDE9F-17CE-461E-8BD9-00261B8855A6}.Release|Win32.ActiveCfg = Resource|Win32 {A2CCDE9F-17CE-461E-8BD9-00261B8855A6}.Release|Win32.Build.0 = Resource|Win32 {A2CCDE9F-17CE-461E-8BD9-00261B8855A6}.Release|x64.ActiveCfg = Resource|Win32 {A2CCDE9F-17CE-461E-8BD9-00261B8855A6}.Release|x64.Build.0 = Resource|Win32 + {A2CCDE9F-17CE-461E-8BD9-00261B8855A6}.Setup|ARM64.ActiveCfg = Resource|Win32 {A2CCDE9F-17CE-461E-8BD9-00261B8855A6}.Setup|Win32.ActiveCfg = Resource|Win32 {A2CCDE9F-17CE-461E-8BD9-00261B8855A6}.Setup|Win32.Build.0 = Resource|Win32 {A2CCDE9F-17CE-461E-8BD9-00261B8855A6}.Setup|x64.ActiveCfg = Resource|Win32 + {31C016FB-9EA1-4AF5-987A-37210C04DA06}.Debug|ARM64.ActiveCfg = Resource|Win32 + {31C016FB-9EA1-4AF5-987A-37210C04DA06}.Debug|ARM64.Build.0 = Resource|Win32 {31C016FB-9EA1-4AF5-987A-37210C04DA06}.Debug|Win32.ActiveCfg = Resource|Win32 {31C016FB-9EA1-4AF5-987A-37210C04DA06}.Debug|Win32.Build.0 = Resource|Win32 {31C016FB-9EA1-4AF5-987A-37210C04DA06}.Debug|x64.ActiveCfg = Resource|Win32 {31C016FB-9EA1-4AF5-987A-37210C04DA06}.Debug|x64.Build.0 = Resource|Win32 + {31C016FB-9EA1-4AF5-987A-37210C04DA06}.Release|ARM64.ActiveCfg = Resource|Win32 + {31C016FB-9EA1-4AF5-987A-37210C04DA06}.Release|ARM64.Build.0 = Resource|Win32 {31C016FB-9EA1-4AF5-987A-37210C04DA06}.Release|Win32.ActiveCfg = Resource|Win32 {31C016FB-9EA1-4AF5-987A-37210C04DA06}.Release|Win32.Build.0 = Resource|Win32 {31C016FB-9EA1-4AF5-987A-37210C04DA06}.Release|x64.ActiveCfg = Resource|Win32 {31C016FB-9EA1-4AF5-987A-37210C04DA06}.Release|x64.Build.0 = Resource|Win32 + {31C016FB-9EA1-4AF5-987A-37210C04DA06}.Setup|ARM64.ActiveCfg = Resource|Win32 {31C016FB-9EA1-4AF5-987A-37210C04DA06}.Setup|Win32.ActiveCfg = Resource|Win32 {31C016FB-9EA1-4AF5-987A-37210C04DA06}.Setup|Win32.Build.0 = Resource|Win32 {31C016FB-9EA1-4AF5-987A-37210C04DA06}.Setup|x64.ActiveCfg = Resource|Win32 + {5C875214-0E3A-4CF0-BC0C-BFF6FAA4C089}.Debug|ARM64.ActiveCfg = Resource|Win32 + {5C875214-0E3A-4CF0-BC0C-BFF6FAA4C089}.Debug|ARM64.Build.0 = Resource|Win32 {5C875214-0E3A-4CF0-BC0C-BFF6FAA4C089}.Debug|Win32.ActiveCfg = Resource|Win32 {5C875214-0E3A-4CF0-BC0C-BFF6FAA4C089}.Debug|Win32.Build.0 = Resource|Win32 {5C875214-0E3A-4CF0-BC0C-BFF6FAA4C089}.Debug|x64.ActiveCfg = Resource|Win32 {5C875214-0E3A-4CF0-BC0C-BFF6FAA4C089}.Debug|x64.Build.0 = Resource|Win32 + {5C875214-0E3A-4CF0-BC0C-BFF6FAA4C089}.Release|ARM64.ActiveCfg = Resource|Win32 + {5C875214-0E3A-4CF0-BC0C-BFF6FAA4C089}.Release|ARM64.Build.0 = Resource|Win32 {5C875214-0E3A-4CF0-BC0C-BFF6FAA4C089}.Release|Win32.ActiveCfg = Resource|Win32 {5C875214-0E3A-4CF0-BC0C-BFF6FAA4C089}.Release|Win32.Build.0 = Resource|Win32 {5C875214-0E3A-4CF0-BC0C-BFF6FAA4C089}.Release|x64.ActiveCfg = Resource|Win32 {5C875214-0E3A-4CF0-BC0C-BFF6FAA4C089}.Release|x64.Build.0 = Resource|Win32 + {5C875214-0E3A-4CF0-BC0C-BFF6FAA4C089}.Setup|ARM64.ActiveCfg = Resource|Win32 {5C875214-0E3A-4CF0-BC0C-BFF6FAA4C089}.Setup|Win32.ActiveCfg = Resource|Win32 {5C875214-0E3A-4CF0-BC0C-BFF6FAA4C089}.Setup|Win32.Build.0 = Resource|Win32 {5C875214-0E3A-4CF0-BC0C-BFF6FAA4C089}.Setup|x64.ActiveCfg = Resource|Win32 + {ED74EBA9-1BCB-4B8F-9AE1-DC63B3C24A94}.Debug|ARM64.ActiveCfg = Resource|Win32 + {ED74EBA9-1BCB-4B8F-9AE1-DC63B3C24A94}.Debug|ARM64.Build.0 = Resource|Win32 {ED74EBA9-1BCB-4B8F-9AE1-DC63B3C24A94}.Debug|Win32.ActiveCfg = Resource|Win32 {ED74EBA9-1BCB-4B8F-9AE1-DC63B3C24A94}.Debug|Win32.Build.0 = Resource|Win32 {ED74EBA9-1BCB-4B8F-9AE1-DC63B3C24A94}.Debug|x64.ActiveCfg = Resource|Win32 {ED74EBA9-1BCB-4B8F-9AE1-DC63B3C24A94}.Debug|x64.Build.0 = Resource|Win32 + {ED74EBA9-1BCB-4B8F-9AE1-DC63B3C24A94}.Release|ARM64.ActiveCfg = Resource|Win32 + {ED74EBA9-1BCB-4B8F-9AE1-DC63B3C24A94}.Release|ARM64.Build.0 = Resource|Win32 {ED74EBA9-1BCB-4B8F-9AE1-DC63B3C24A94}.Release|Win32.ActiveCfg = Resource|Win32 {ED74EBA9-1BCB-4B8F-9AE1-DC63B3C24A94}.Release|Win32.Build.0 = Resource|Win32 {ED74EBA9-1BCB-4B8F-9AE1-DC63B3C24A94}.Release|x64.ActiveCfg = Resource|Win32 {ED74EBA9-1BCB-4B8F-9AE1-DC63B3C24A94}.Release|x64.Build.0 = Resource|Win32 + {ED74EBA9-1BCB-4B8F-9AE1-DC63B3C24A94}.Setup|ARM64.ActiveCfg = Resource|Win32 {ED74EBA9-1BCB-4B8F-9AE1-DC63B3C24A94}.Setup|Win32.ActiveCfg = Resource|Win32 {ED74EBA9-1BCB-4B8F-9AE1-DC63B3C24A94}.Setup|Win32.Build.0 = Resource|Win32 {ED74EBA9-1BCB-4B8F-9AE1-DC63B3C24A94}.Setup|x64.ActiveCfg = Resource|Win32 + {A42C6159-ACA8-46D1-A0FB-19C398B137D5}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A42C6159-ACA8-46D1-A0FB-19C398B137D5}.Debug|ARM64.Build.0 = Debug|ARM64 + {A42C6159-ACA8-46D1-A0FB-19C398B137D5}.Debug|ARM64.Deploy.0 = Debug|ARM64 {A42C6159-ACA8-46D1-A0FB-19C398B137D5}.Debug|Win32.ActiveCfg = Debug|Win32 {A42C6159-ACA8-46D1-A0FB-19C398B137D5}.Debug|Win32.Build.0 = Debug|Win32 {A42C6159-ACA8-46D1-A0FB-19C398B137D5}.Debug|x64.ActiveCfg = Debug|x64 {A42C6159-ACA8-46D1-A0FB-19C398B137D5}.Debug|x64.Build.0 = Debug|x64 + {A42C6159-ACA8-46D1-A0FB-19C398B137D5}.Release|ARM64.ActiveCfg = Release|ARM64 + {A42C6159-ACA8-46D1-A0FB-19C398B137D5}.Release|ARM64.Build.0 = Release|ARM64 + {A42C6159-ACA8-46D1-A0FB-19C398B137D5}.Release|ARM64.Deploy.0 = Release|ARM64 {A42C6159-ACA8-46D1-A0FB-19C398B137D5}.Release|Win32.ActiveCfg = Release|Win32 {A42C6159-ACA8-46D1-A0FB-19C398B137D5}.Release|Win32.Build.0 = Release|Win32 {A42C6159-ACA8-46D1-A0FB-19C398B137D5}.Release|x64.ActiveCfg = Release|x64 {A42C6159-ACA8-46D1-A0FB-19C398B137D5}.Release|x64.Build.0 = Release|x64 + {A42C6159-ACA8-46D1-A0FB-19C398B137D5}.Setup|ARM64.ActiveCfg = Setup|ARM64 + {A42C6159-ACA8-46D1-A0FB-19C398B137D5}.Setup|ARM64.Build.0 = Setup|ARM64 {A42C6159-ACA8-46D1-A0FB-19C398B137D5}.Setup|Win32.ActiveCfg = Setup|Win32 {A42C6159-ACA8-46D1-A0FB-19C398B137D5}.Setup|Win32.Build.0 = Setup|Win32 {A42C6159-ACA8-46D1-A0FB-19C398B137D5}.Setup|x64.ActiveCfg = Setup|x64 {A42C6159-ACA8-46D1-A0FB-19C398B137D5}.Setup|x64.Build.0 = Setup|x64 - {F92A5473-F9E0-412F-923C-6632A66D13C1}.Debug|Win32.ActiveCfg = update_4.3.1|Win32 - {F92A5473-F9E0-412F-923C-6632A66D13C1}.Debug|x64.ActiveCfg = update_4.2.7|Win32 - {F92A5473-F9E0-412F-923C-6632A66D13C1}.Release|Win32.ActiveCfg = update_4.2.7|Win32 - {F92A5473-F9E0-412F-923C-6632A66D13C1}.Release|Win32.Build.0 = update_4.2.7|Win32 - {F92A5473-F9E0-412F-923C-6632A66D13C1}.Release|x64.ActiveCfg = update_4.2.7|Win32 - {F92A5473-F9E0-412F-923C-6632A66D13C1}.Setup|Win32.ActiveCfg = update_4.2.7|Win32 - {F92A5473-F9E0-412F-923C-6632A66D13C1}.Setup|x64.ActiveCfg = update_4.3.0|Win32 + {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}.Debug|ARM64.Build.0 = Debug|ARM64 {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}.Debug|Win32.ActiveCfg = Debug|Win32 {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}.Debug|Win32.Build.0 = Debug|Win32 {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}.Debug|x64.ActiveCfg = Debug|x64 {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}.Debug|x64.Build.0 = Debug|x64 + {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}.Release|ARM64.ActiveCfg = Release|ARM64 + {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}.Release|ARM64.Build.0 = Release|ARM64 {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}.Release|Win32.ActiveCfg = Release|Win32 {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}.Release|Win32.Build.0 = Release|Win32 {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}.Release|x64.ActiveCfg = Release|x64 {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}.Release|x64.Build.0 = Release|x64 + {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}.Setup|ARM64.ActiveCfg = Release|ARM64 + {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}.Setup|ARM64.Build.0 = Release|ARM64 {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}.Setup|Win32.ActiveCfg = Release|Win32 {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}.Setup|Win32.Build.0 = Release|Win32 {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}.Setup|x64.ActiveCfg = Release|x64 {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}.Setup|x64.Build.0 = Release|x64 + {7BD26CB3-5280-48FD-9A86-C13E321018D5}.Debug|ARM64.ActiveCfg = Resource|Win32 + {7BD26CB3-5280-48FD-9A86-C13E321018D5}.Debug|ARM64.Build.0 = Resource|Win32 {7BD26CB3-5280-48FD-9A86-C13E321018D5}.Debug|Win32.ActiveCfg = Resource|Win32 {7BD26CB3-5280-48FD-9A86-C13E321018D5}.Debug|Win32.Build.0 = Resource|Win32 {7BD26CB3-5280-48FD-9A86-C13E321018D5}.Debug|x64.ActiveCfg = Resource|Win32 {7BD26CB3-5280-48FD-9A86-C13E321018D5}.Debug|x64.Build.0 = Resource|Win32 + {7BD26CB3-5280-48FD-9A86-C13E321018D5}.Release|ARM64.ActiveCfg = Resource|Win32 + {7BD26CB3-5280-48FD-9A86-C13E321018D5}.Release|ARM64.Build.0 = Resource|Win32 {7BD26CB3-5280-48FD-9A86-C13E321018D5}.Release|Win32.ActiveCfg = Resource|Win32 {7BD26CB3-5280-48FD-9A86-C13E321018D5}.Release|Win32.Build.0 = Resource|Win32 {7BD26CB3-5280-48FD-9A86-C13E321018D5}.Release|x64.ActiveCfg = Resource|Win32 {7BD26CB3-5280-48FD-9A86-C13E321018D5}.Release|x64.Build.0 = Resource|Win32 + {7BD26CB3-5280-48FD-9A86-C13E321018D5}.Setup|ARM64.ActiveCfg = Resource|Win32 {7BD26CB3-5280-48FD-9A86-C13E321018D5}.Setup|Win32.ActiveCfg = Resource|Win32 {7BD26CB3-5280-48FD-9A86-C13E321018D5}.Setup|Win32.Build.0 = Resource|Win32 {7BD26CB3-5280-48FD-9A86-C13E321018D5}.Setup|x64.ActiveCfg = Resource|Win32 + {598AB4AC-008E-4501-90B3-C5213834C1DA}.Debug|ARM64.ActiveCfg = Resource|Win32 + {598AB4AC-008E-4501-90B3-C5213834C1DA}.Debug|ARM64.Build.0 = Resource|Win32 {598AB4AC-008E-4501-90B3-C5213834C1DA}.Debug|Win32.ActiveCfg = Resource|Win32 {598AB4AC-008E-4501-90B3-C5213834C1DA}.Debug|Win32.Build.0 = Resource|Win32 {598AB4AC-008E-4501-90B3-C5213834C1DA}.Debug|x64.ActiveCfg = Resource|Win32 {598AB4AC-008E-4501-90B3-C5213834C1DA}.Debug|x64.Build.0 = Resource|Win32 + {598AB4AC-008E-4501-90B3-C5213834C1DA}.Release|ARM64.ActiveCfg = Resource|Win32 + {598AB4AC-008E-4501-90B3-C5213834C1DA}.Release|ARM64.Build.0 = Resource|Win32 {598AB4AC-008E-4501-90B3-C5213834C1DA}.Release|Win32.ActiveCfg = Resource|Win32 {598AB4AC-008E-4501-90B3-C5213834C1DA}.Release|Win32.Build.0 = Resource|Win32 {598AB4AC-008E-4501-90B3-C5213834C1DA}.Release|x64.ActiveCfg = Resource|Win32 {598AB4AC-008E-4501-90B3-C5213834C1DA}.Release|x64.Build.0 = Resource|Win32 + {598AB4AC-008E-4501-90B3-C5213834C1DA}.Setup|ARM64.ActiveCfg = Resource|Win32 {598AB4AC-008E-4501-90B3-C5213834C1DA}.Setup|Win32.ActiveCfg = Resource|Win32 {598AB4AC-008E-4501-90B3-C5213834C1DA}.Setup|Win32.Build.0 = Resource|Win32 {598AB4AC-008E-4501-90B3-C5213834C1DA}.Setup|x64.ActiveCfg = Resource|Win32 + {63BAF573-170B-4FA0-AEE3-16E04F3E9DF5}.Debug|ARM64.ActiveCfg = Resource|Win32 + {63BAF573-170B-4FA0-AEE3-16E04F3E9DF5}.Debug|ARM64.Build.0 = Resource|Win32 {63BAF573-170B-4FA0-AEE3-16E04F3E9DF5}.Debug|Win32.ActiveCfg = Resource|Win32 {63BAF573-170B-4FA0-AEE3-16E04F3E9DF5}.Debug|Win32.Build.0 = Resource|Win32 {63BAF573-170B-4FA0-AEE3-16E04F3E9DF5}.Debug|x64.ActiveCfg = Resource|Win32 {63BAF573-170B-4FA0-AEE3-16E04F3E9DF5}.Debug|x64.Build.0 = Resource|Win32 + {63BAF573-170B-4FA0-AEE3-16E04F3E9DF5}.Release|ARM64.ActiveCfg = Resource|Win32 + {63BAF573-170B-4FA0-AEE3-16E04F3E9DF5}.Release|ARM64.Build.0 = Resource|Win32 {63BAF573-170B-4FA0-AEE3-16E04F3E9DF5}.Release|Win32.ActiveCfg = Resource|Win32 {63BAF573-170B-4FA0-AEE3-16E04F3E9DF5}.Release|Win32.Build.0 = Resource|Win32 {63BAF573-170B-4FA0-AEE3-16E04F3E9DF5}.Release|x64.ActiveCfg = Resource|Win32 {63BAF573-170B-4FA0-AEE3-16E04F3E9DF5}.Release|x64.Build.0 = Resource|Win32 + {63BAF573-170B-4FA0-AEE3-16E04F3E9DF5}.Setup|ARM64.ActiveCfg = Resource|Win32 {63BAF573-170B-4FA0-AEE3-16E04F3E9DF5}.Setup|Win32.ActiveCfg = Resource|Win32 {63BAF573-170B-4FA0-AEE3-16E04F3E9DF5}.Setup|Win32.Build.0 = Resource|Win32 {63BAF573-170B-4FA0-AEE3-16E04F3E9DF5}.Setup|x64.ActiveCfg = Resource|Win32 + {CA5BFC96-428D-42F5-9F7D-CDDE048A357C}.Debug|ARM64.ActiveCfg = Resource|Win32 + {CA5BFC96-428D-42F5-9F7D-CDDE048A357C}.Debug|ARM64.Build.0 = Resource|Win32 {CA5BFC96-428D-42F5-9F7D-CDDE048A357C}.Debug|Win32.ActiveCfg = Resource|Win32 {CA5BFC96-428D-42F5-9F7D-CDDE048A357C}.Debug|Win32.Build.0 = Resource|Win32 {CA5BFC96-428D-42F5-9F7D-CDDE048A357C}.Debug|x64.ActiveCfg = Resource|Win32 {CA5BFC96-428D-42F5-9F7D-CDDE048A357C}.Debug|x64.Build.0 = Resource|Win32 + {CA5BFC96-428D-42F5-9F7D-CDDE048A357C}.Release|ARM64.ActiveCfg = Resource|Win32 + {CA5BFC96-428D-42F5-9F7D-CDDE048A357C}.Release|ARM64.Build.0 = Resource|Win32 {CA5BFC96-428D-42F5-9F7D-CDDE048A357C}.Release|Win32.ActiveCfg = Resource|Win32 {CA5BFC96-428D-42F5-9F7D-CDDE048A357C}.Release|Win32.Build.0 = Resource|Win32 {CA5BFC96-428D-42F5-9F7D-CDDE048A357C}.Release|x64.ActiveCfg = Resource|Win32 {CA5BFC96-428D-42F5-9F7D-CDDE048A357C}.Release|x64.Build.0 = Resource|Win32 + {CA5BFC96-428D-42F5-9F7D-CDDE048A357C}.Setup|ARM64.ActiveCfg = Resource|Win32 {CA5BFC96-428D-42F5-9F7D-CDDE048A357C}.Setup|Win32.ActiveCfg = Resource|Win32 {CA5BFC96-428D-42F5-9F7D-CDDE048A357C}.Setup|Win32.Build.0 = Resource|Win32 {CA5BFC96-428D-42F5-9F7D-CDDE048A357C}.Setup|x64.ActiveCfg = Resource|Win32 + {D94BD2A6-1872-4F01-B911-F406603AA2E1}.Debug|ARM64.ActiveCfg = Debug|Win32 + {D94BD2A6-1872-4F01-B911-F406603AA2E1}.Debug|Win32.ActiveCfg = Debug|Win32 + {D94BD2A6-1872-4F01-B911-F406603AA2E1}.Debug|Win32.Build.0 = Debug|Win32 + {D94BD2A6-1872-4F01-B911-F406603AA2E1}.Debug|x64.ActiveCfg = Debug|Win32 + {D94BD2A6-1872-4F01-B911-F406603AA2E1}.Release|ARM64.ActiveCfg = Release|Win32 + {D94BD2A6-1872-4F01-B911-F406603AA2E1}.Release|Win32.ActiveCfg = Release|Win32 + {D94BD2A6-1872-4F01-B911-F406603AA2E1}.Release|Win32.Build.0 = Release|Win32 + {D94BD2A6-1872-4F01-B911-F406603AA2E1}.Release|x64.ActiveCfg = Release|Win32 + {D94BD2A6-1872-4F01-B911-F406603AA2E1}.Setup|ARM64.ActiveCfg = Release|Win32 + {D94BD2A6-1872-4F01-B911-F406603AA2E1}.Setup|Win32.ActiveCfg = Release|Win32 + {D94BD2A6-1872-4F01-B911-F406603AA2E1}.Setup|Win32.Build.0 = Release|Win32 + {D94BD2A6-1872-4F01-B911-F406603AA2E1}.Setup|x64.ActiveCfg = Release|Win32 + {BD28B058-230E-42DF-9FB1-FFBB0153F498}.Debug|ARM64.ActiveCfg = Resource|Win32 + {BD28B058-230E-42DF-9FB1-FFBB0153F498}.Debug|ARM64.Build.0 = Resource|Win32 + {BD28B058-230E-42DF-9FB1-FFBB0153F498}.Debug|Win32.ActiveCfg = Resource|Win32 + {BD28B058-230E-42DF-9FB1-FFBB0153F498}.Debug|Win32.Build.0 = Resource|Win32 + {BD28B058-230E-42DF-9FB1-FFBB0153F498}.Debug|x64.ActiveCfg = Resource|Win32 + {BD28B058-230E-42DF-9FB1-FFBB0153F498}.Debug|x64.Build.0 = Resource|Win32 + {BD28B058-230E-42DF-9FB1-FFBB0153F498}.Release|ARM64.ActiveCfg = Resource|Win32 + {BD28B058-230E-42DF-9FB1-FFBB0153F498}.Release|ARM64.Build.0 = Resource|Win32 + {BD28B058-230E-42DF-9FB1-FFBB0153F498}.Release|Win32.ActiveCfg = Resource|Win32 + {BD28B058-230E-42DF-9FB1-FFBB0153F498}.Release|Win32.Build.0 = Resource|Win32 + {BD28B058-230E-42DF-9FB1-FFBB0153F498}.Release|x64.ActiveCfg = Resource|Win32 + {BD28B058-230E-42DF-9FB1-FFBB0153F498}.Release|x64.Build.0 = Resource|Win32 + {BD28B058-230E-42DF-9FB1-FFBB0153F498}.Setup|ARM64.ActiveCfg = Resource|Win32 + {BD28B058-230E-42DF-9FB1-FFBB0153F498}.Setup|ARM64.Build.0 = Resource|Win32 + {BD28B058-230E-42DF-9FB1-FFBB0153F498}.Setup|Win32.ActiveCfg = Resource|Win32 + {BD28B058-230E-42DF-9FB1-FFBB0153F498}.Setup|Win32.Build.0 = Resource|Win32 + {BD28B058-230E-42DF-9FB1-FFBB0153F498}.Setup|x64.ActiveCfg = Resource|Win32 + {BD28B058-230E-42DF-9FB1-FFBB0153F498}.Setup|x64.Build.0 = Resource|Win32 + {75809D15-8403-420A-BBE6-05F478D88D8E}.Debug|ARM64.ActiveCfg = Resource|Win32 + {75809D15-8403-420A-BBE6-05F478D88D8E}.Debug|ARM64.Build.0 = Resource|Win32 + {75809D15-8403-420A-BBE6-05F478D88D8E}.Debug|Win32.ActiveCfg = Resource|Win32 + {75809D15-8403-420A-BBE6-05F478D88D8E}.Debug|Win32.Build.0 = Resource|Win32 + {75809D15-8403-420A-BBE6-05F478D88D8E}.Debug|x64.ActiveCfg = Resource|Win32 + {75809D15-8403-420A-BBE6-05F478D88D8E}.Debug|x64.Build.0 = Resource|Win32 + {75809D15-8403-420A-BBE6-05F478D88D8E}.Release|ARM64.ActiveCfg = Resource|Win32 + {75809D15-8403-420A-BBE6-05F478D88D8E}.Release|ARM64.Build.0 = Resource|Win32 + {75809D15-8403-420A-BBE6-05F478D88D8E}.Release|Win32.ActiveCfg = Resource|Win32 + {75809D15-8403-420A-BBE6-05F478D88D8E}.Release|Win32.Build.0 = Resource|Win32 + {75809D15-8403-420A-BBE6-05F478D88D8E}.Release|x64.ActiveCfg = Resource|Win32 + {75809D15-8403-420A-BBE6-05F478D88D8E}.Release|x64.Build.0 = Resource|Win32 + {75809D15-8403-420A-BBE6-05F478D88D8E}.Setup|ARM64.ActiveCfg = Resource|Win32 + {75809D15-8403-420A-BBE6-05F478D88D8E}.Setup|ARM64.Build.0 = Resource|Win32 + {75809D15-8403-420A-BBE6-05F478D88D8E}.Setup|Win32.ActiveCfg = Resource|Win32 + {75809D15-8403-420A-BBE6-05F478D88D8E}.Setup|Win32.Build.0 = Resource|Win32 + {75809D15-8403-420A-BBE6-05F478D88D8E}.Setup|x64.ActiveCfg = Resource|Win32 + {75809D15-8403-420A-BBE6-05F478D88D8E}.Setup|x64.Build.0 = Resource|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -392,12 +586,13 @@ Global {31C016FB-9EA1-4AF5-987A-37210C04DA06} = {409484D8-C0DB-4991-AF03-124128EDEF98} {5C875214-0E3A-4CF0-BC0C-BFF6FAA4C089} = {409484D8-C0DB-4991-AF03-124128EDEF98} {ED74EBA9-1BCB-4B8F-9AE1-DC63B3C24A94} = {409484D8-C0DB-4991-AF03-124128EDEF98} - {F92A5473-F9E0-412F-923C-6632A66D13C1} = {B695E1F6-785D-45CB-BCE0-0E9635DFC1DE} {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF} = {B695E1F6-785D-45CB-BCE0-0E9635DFC1DE} {7BD26CB3-5280-48FD-9A86-C13E321018D5} = {409484D8-C0DB-4991-AF03-124128EDEF98} {598AB4AC-008E-4501-90B3-C5213834C1DA} = {409484D8-C0DB-4991-AF03-124128EDEF98} {63BAF573-170B-4FA0-AEE3-16E04F3E9DF5} = {409484D8-C0DB-4991-AF03-124128EDEF98} {CA5BFC96-428D-42F5-9F7D-CDDE048A357C} = {409484D8-C0DB-4991-AF03-124128EDEF98} + {BD28B058-230E-42DF-9FB1-FFBB0153F498} = {409484D8-C0DB-4991-AF03-124128EDEF98} + {75809D15-8403-420A-BBE6-05F478D88D8E} = {409484D8-C0DB-4991-AF03-124128EDEF98} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {AF7D0AE8-B556-4840-92EF-CEADC95A5CD1} diff --git a/Src/Setup/BuildArchives.bat b/Src/Setup/BuildArchives.bat index 75d38f72d..b3000d7fd 100644 --- a/Src/Setup/BuildArchives.bat +++ b/Src/Setup/BuildArchives.bat @@ -1,11 +1,9 @@ REM ***** Collect PDBs echo -- Creating symbols package -set CS_SYMBOLS_NAME=OpenShellPDB_%CS_VERSION_STR%.7z +set CS_SYMBOLS_NAME=OpenShellSymbols_%CS_VERSION_STR%.7z -cd Output -7z a -mx9 ..\Final\%CS_SYMBOLS_NAME% PDB32 PDB64 > nul -cd .. +7z a -mx9 .\Final\%CS_SYMBOLS_NAME% .\Output\symbols\* > nul if defined APPVEYOR ( appveyor PushArtifact Final\%CS_SYMBOLS_NAME% @@ -22,4 +20,10 @@ cd .. cd Setup +copy /B ..\..\build\bin\Release\Utility.exe .\Final > nul + +if defined APPVEYOR ( + appveyor PushArtifact ..\..\build\bin\Release\Utility.exe +) + exit /b 0 diff --git a/Src/Setup/BuildBinaries.bat b/Src/Setup/BuildBinaries.bat index 7ea5a847e..0241c892e 100644 --- a/Src/Setup/BuildBinaries.bat +++ b/Src/Setup/BuildBinaries.bat @@ -1,31 +1,38 @@ if exist Output rd /Q /S Output md Output md Output\x64 -md Output\PDB32 -md Output\PDB64 +md Output\ARM64 echo -- Compiling -for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -requires Microsoft.Component.MSBuild -property installationPath`) do set MSBuildDir=%%i\MSBuild\15.0\Bin\ +for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -requires Microsoft.Component.MSBuild -property installationPath`) do set MSBuildDir=%%i\MSBuild\Current\Bin\ -REM ********* Build 64-bit solution -echo --- 64bit +REM Restore NuGet packages +"%MSBuildDir%MSBuild.exe" ..\OpenShell.sln /m /t:Restore -p:RestorePackagesConfig=true /verbosity:quiet /nologo + +REM ********* Build x64 solution +echo --- x64 "%MSBuildDir%MSBuild.exe" ..\OpenShell.sln /m /t:Rebuild /p:Configuration="Setup" /p:Platform="x64" /verbosity:quiet /nologo @if ERRORLEVEL 1 exit /b 1 +REM ********* Build ARM64 solution +echo --- ARM64 +"%MSBuildDir%MSBuild.exe" ..\OpenShell.sln /m /t:Rebuild /p:Configuration="Setup" /p:Platform="ARM64" /verbosity:quiet /nologo +if ERRORLEVEL 1 exit /b 1 + REM ********* Build 32-bit solution (must be after 64-bit) -echo --- 32bit +echo --- x86 "%MSBuildDir%MSBuild.exe" ..\OpenShell.sln /m /t:Rebuild /p:Configuration="Setup" /p:Platform="Win32" /verbosity:quiet /nologo @if ERRORLEVEL 1 exit /b 1 REM ********* Make en-US.dll cd .. -Setup\Utility\Release\Utility.exe makeEN ClassicExplorer\Setup\ClassicExplorer32.dll StartMenu\Setup\StartMenuDLL.dll ClassicIE\Setup\ClassicIEDLL_32.dll Update\Release\Update.exe +..\build\bin\Release\Utility.exe makeEN ..\build\bin\Setup\ClassicExplorer32.dll ..\build\bin\Setup\StartMenuDLL.dll ..\build\bin\Setup\ClassicIEDLL_32.dll ..\build\bin\Release\Update.exe @if ERRORLEVEL 1 exit /b 1 -Setup\Utility\Release\Utility.exe extract en-US.dll en-US.csv -copy /B en-US.dll Localization\English > nul +..\build\bin\Release\Utility.exe extract en-US.dll en-US.csv +move en-US.dll Localization\English > nul move en-US.csv Localization\English > nul cd Setup @@ -33,85 +40,117 @@ cd Setup REM ********* Copy binaries -copy /B ..\ClassicExplorer\Setup\ClassicExplorer32.dll Output > nul -copy /B ..\ClassicExplorer\Setup\ClassicExplorerSettings.exe Output > nul -copy /B ..\ClassicIE\Setup\ClassicIEDLL_32.dll Output > nul -copy /B ..\ClassicIE\Setup\ClassicIE_32.exe Output > nul -copy /B ..\StartMenu\Setup\StartMenu.exe Output > nul -copy /B ..\StartMenu\Setup\StartMenuDLL.dll Output > nul -copy /B ..\Update\Release\Update.exe Output > nul -copy /B ..\StartMenu\StartMenuHelper\Setup\StartMenuHelper32.dll Output > nul -copy /B ..\Setup\SetupHelper\Release\SetupHelper.exe Output > nul - -copy /B ..\ClassicExplorer\Setup64\ClassicExplorer64.dll Output\x64 > nul -copy /B ..\ClassicIE\Setup64\ClassicIEDLL_64.dll Output\x64 > nul -copy /B ..\ClassicIE\Setup64\ClassicIE_64.exe Output\x64 > nul -copy /B ..\StartMenu\Setup64\StartMenu.exe Output\x64 > nul -copy /B ..\StartMenu\Setup64\StartMenuDLL.dll Output\x64 > nul -copy /B ..\StartMenu\StartMenuHelper\Setup64\StartMenuHelper64.dll Output\x64 > nul - -copy /B "..\StartMenu\Skins\Classic Skin.skin" Output > nul -copy /B "..\StartMenu\Skins\Full Glass.skin" Output > nul -copy /B "..\StartMenu\Skins\Smoked Glass.skin" Output > nul -copy /B "..\StartMenu\Skins\Windows Aero.skin" Output > nul -copy /B "..\StartMenu\Skins\Windows Basic.skin" Output > nul -copy /B "..\StartMenu\Skins\Windows XP Luna.skin" Output > nul -copy /B "..\StartMenu\Skins\Windows 8.skin" Output > nul -copy /B "..\StartMenu\Skins\Metro.skin" Output > nul -copy /B "..\StartMenu\Skins\Classic Skin.skin7" Output > nul -copy /B "..\StartMenu\Skins\Windows Aero.skin7" Output > nul -copy /B "..\StartMenu\Skins\Windows 8.skin7" Output > nul -copy /B "..\StartMenu\Skins\Midnight.skin7" Output > nul -copy /B "..\StartMenu\Skins\Metro.skin7" Output > nul -copy /B "..\StartMenu\Skins\Metallic.skin7" Output > nul +copy /B ..\..\build\bin\Setup\ClassicExplorer32.dll Output > nul +copy /B ..\..\build\bin\Setup\ClassicExplorerSettings.exe Output > nul +copy /B ..\..\build\bin\Setup\ClassicIEDLL_32.dll Output > nul +copy /B ..\..\build\bin\Setup\ClassicIE_32.exe Output > nul +copy /B ..\..\build\bin\Setup\StartMenu.exe Output > nul +copy /B ..\..\build\bin\Setup\StartMenuDLL.dll Output > nul +copy /B ..\..\build\bin\Setup\StartMenuHelper32.dll Output > nul +copy /B ..\..\build\bin\Release\Update.exe Output > nul +copy /B ..\..\build\bin\Release\DesktopToasts.dll Output > nul +copy /B ..\..\build\bin\Release\SetupHelper.exe Output > nul + +copy /B ..\..\build\bin\SetupARM64\ClassicExplorer64.dll Output\ARM64 > nul +copy /B ..\..\build\bin\SetupARM64\ClassicIEDLL_64.dll Output\ARM64 > nul +copy /B ..\..\build\bin\SetupARM64\ClassicIE_64.exe Output\ARM64 > nul +copy /B ..\..\build\bin\SetupARM64\StartMenu.exe Output\ARM64 > nul +copy /B ..\..\build\bin\SetupARM64\StartMenuDLL.dll Output\ARM64 > nul +copy /B ..\..\build\bin\SetupARM64\StartMenuHelper64.dll Output\ARM64 > nul + +copy /B ..\..\build\bin\Setup64\ClassicExplorer64.dll Output\x64 > nul +copy /B ..\..\build\bin\Setup64\ClassicIEDLL_64.dll Output\x64 > nul +copy /B ..\..\build\bin\Setup64\ClassicIE_64.exe Output\x64 > nul +copy /B ..\..\build\bin\Setup64\StartMenu.exe Output\x64 > nul +copy /B ..\..\build\bin\Setup64\StartMenuDLL.dll Output\x64 > nul +copy /B ..\..\build\bin\Setup64\StartMenuHelper64.dll Output\x64 > nul + +copy /B "..\..\build\bin\Skins\Classic Skin.skin" Output > nul +copy /B "..\..\build\bin\Skins\Full Glass.skin" Output > nul +copy /B "..\..\build\bin\Skins\Smoked Glass.skin" Output > nul +copy /B "..\..\build\bin\Skins\Windows Aero.skin" Output > nul +copy /B "..\..\build\bin\Skins\Windows Basic.skin" Output > nul +copy /B "..\..\build\bin\Skins\Windows XP Luna.skin" Output > nul +copy /B "..\..\build\bin\Skins\Windows 8.skin" Output > nul +copy /B "..\..\build\bin\Skins\Metro.skin" Output > nul +copy /B "..\..\build\bin\Skins\Classic Skin.skin7" Output > nul +copy /B "..\..\build\bin\Skins\Windows Aero.skin7" Output > nul +copy /B "..\..\build\bin\Skins\Windows 8.skin7" Output > nul +copy /B "..\..\build\bin\Skins\Midnight.skin7" Output > nul +copy /B "..\..\build\bin\Skins\Metro.skin7" Output > nul +copy /B "..\..\build\bin\Skins\Metallic.skin7" Output > nul +copy /B "..\..\build\bin\Skins\Immersive.skin" Output > nul +copy /B "..\..\build\bin\Skins\Immersive.skin7" Output > nul REM ********* Collect debug info +md Output\PDB32 +md Output\PDB64 +md Output\PDBARM64 REM Explorer 32 -copy /B ..\ClassicExplorer\Setup\ClassicExplorer32.pdb Output\PDB32 > nul +copy /B ..\..\build\bin\Setup\ClassicExplorer32.pdb Output\PDB32 > nul copy /B Output\ClassicExplorer32.dll Output\PDB32 > nul -copy /B ..\ClassicExplorer\Setup\ClassicExplorerSettings.pdb Output\PDB32 > nul +copy /B ..\..\build\bin\Setup\ClassicExplorerSettings.pdb Output\PDB32 > nul copy /B Output\ClassicExplorerSettings.exe Output\PDB32 > nul REM Explorer 64 -copy /B ..\ClassicExplorer\Setup64\ClassicExplorer64.pdb Output\PDB64 > nul +copy /B ..\..\build\bin\Setup64\ClassicExplorer64.pdb Output\PDB64 > nul copy /B Output\x64\ClassicExplorer64.dll Output\PDB64 > nul +REM Explorer ARM64 +copy /B ..\..\build\bin\SetupARM64\ClassicExplorer64.pdb Output\PDBARM64 > nul +copy /B Output\ARM64\ClassicExplorer64.dll Output\PDBARM64 > nul + REM IE 32 -copy /B ..\ClassicIE\Setup\ClassicIEDLL_32.pdb Output\PDB32 > nul +copy /B ..\..\build\bin\Setup\ClassicIEDLL_32.pdb Output\PDB32 > nul copy /B Output\ClassicIEDLL_32.dll Output\PDB32 > nul -copy /B ..\ClassicIE\Setup\ClassicIE_32.pdb Output\PDB32 > nul +copy /B ..\..\build\bin\Setup\ClassicIE_32.pdb Output\PDB32 > nul copy /B Output\ClassicIE_32.exe Output\PDB32 > nul REM IE 64 -copy /B ..\ClassicIE\Setup64\ClassicIEDLL_64.pdb Output\PDB64 > nul +copy /B ..\..\build\bin\Setup64\ClassicIEDLL_64.pdb Output\PDB64 > nul copy /B Output\x64\ClassicIEDLL_64.dll Output\PDB64 > nul -copy /B ..\ClassicIE\Setup64\ClassicIE_64.pdb Output\PDB64 > nul +copy /B ..\..\build\bin\Setup64\ClassicIE_64.pdb Output\PDB64 > nul copy /B Output\x64\ClassicIE_64.exe Output\PDB64 > nul +REM IE ARM64 +copy /B ..\..\build\bin\SetupARM64\ClassicIEDLL_64.pdb Output\PDBARM64 > nul +copy /B Output\ARM64\ClassicIEDLL_64.dll Output\PDBARM64 > nul +copy /B ..\..\build\bin\SetupARM64\ClassicIE_64.pdb Output\PDBARM64 > nul +copy /B Output\ARM64\ClassicIE_64.exe Output\PDBARM64 > nul + REM Menu 32 -copy /B ..\StartMenu\Setup\StartMenu.pdb Output\PDB32 > nul +copy /B ..\..\build\bin\Setup\StartMenu.pdb Output\PDB32 > nul copy /B Output\StartMenu.exe Output\PDB32 > nul -copy /B ..\StartMenu\Setup\StartMenuDLL.pdb Output\PDB32 > nul +copy /B ..\..\build\bin\Setup\StartMenuDLL.pdb Output\PDB32 > nul copy /B Output\StartMenuDLL.dll Output\PDB32 > nul -copy /B ..\StartMenu\StartMenuHelper\Setup\StartMenuHelper32.pdb Output\PDB32 > nul +copy /B ..\..\build\bin\Setup\StartMenuHelper32.pdb Output\PDB32 > nul copy /B Output\StartMenuHelper32.dll Output\PDB32 > nul -copy /B ..\Update\Release\Update.pdb Output\PDB32 > nul +copy /B ..\..\build\bin\Release\Update.pdb Output\PDB32 > nul copy /B Output\Update.exe Output\PDB32 > nul +copy /B ..\..\build\bin\Release\DesktopToasts.pdb Output\PDB32 > nul +copy /B Output\DesktopToasts.dll Output\PDB32 > nul REM Menu 64 -copy /B ..\StartMenu\Setup64\StartMenu.pdb Output\PDB64 > nul +copy /B ..\..\build\bin\Setup64\StartMenu.pdb Output\PDB64 > nul copy /B Output\x64\StartMenu.exe Output\PDB64 > nul -copy /B ..\StartMenu\Setup64\StartMenuDLL.pdb Output\PDB64 > nul +copy /B ..\..\build\bin\Setup64\StartMenuDLL.pdb Output\PDB64 > nul copy /B Output\x64\StartMenuDLL.dll Output\PDB64 > nul -copy /B ..\StartMenu\StartMenuHelper\Setup64\StartMenuHelper64.pdb Output\PDB64 > nul +copy /B ..\..\build\bin\Setup64\StartMenuHelper64.pdb Output\PDB64 > nul copy /B Output\x64\StartMenuHelper64.dll Output\PDB64 > nul +REM Menu ARM64 +copy /B ..\..\build\bin\SetupARM64\StartMenu.pdb Output\PDBARM64 > nul +copy /B Output\ARM64\StartMenu.exe Output\PDBARM64 > nul +copy /B ..\..\build\bin\SetupARM64\StartMenuDLL.pdb Output\PDBARM64 > nul +copy /B Output\ARM64\StartMenuDLL.dll Output\PDBARM64 > nul +copy /B ..\..\build\bin\SetupARM64\StartMenuHelper64.pdb Output\PDBARM64 > nul +copy /B Output\ARM64\StartMenuHelper64.dll Output\PDBARM64 > nul REM ********* Source Index PDBs -set PDBSTR_PATH="C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\srcsrv\pdbstr.exe" +set PDBSTR_PATH="C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\srcsrv\pdbstr.exe" if exist %PDBSTR_PATH% ( echo --- Adding source index to PDBs @@ -119,24 +158,54 @@ if exist %PDBSTR_PATH% ( for %%f in (Output\PDB32\*.pdb) do ( %PDBSTR_PATH% -w -p:%%f -s:srcsrv -i:Output\pdbstr.txt + if not ERRORLEVEL 0 ( + echo Error adding source index to PDB + exit /b 1 + ) ) for %%f in (Output\PDB64\*.pdb) do ( %PDBSTR_PATH% -w -p:%%f -s:srcsrv -i:Output\pdbstr.txt + if not ERRORLEVEL 0 ( + echo Error adding source index to PDB + exit /b 1 + ) + ) + + for %%f in (Output\PDBARM64\*.pdb) do ( + %PDBSTR_PATH% -w -p:%%f -s:srcsrv -i:Output\pdbstr.txt + if not ERRORLEVEL 0 ( + echo Error adding source index to PDB + exit /b 1 + ) ) ) +REM ********* Prepare symbols + +set SYMSTORE_PATH="C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\symstore.exe" + +%SYMSTORE_PATH% add /r /f Output\PDB32 /s Output\symbols /t OpenShell -:NOREFS > nul +%SYMSTORE_PATH% add /r /f Output\PDB64 /s Output\symbols /t OpenShell -:NOREFS > nul +%SYMSTORE_PATH% add /r /f Output\PDBARM64 /s Output\symbols /t OpenShell -:NOREFS > nul +rd /Q /S Output\symbols\000Admin > nul +del Output\symbols\pingme.txt > nul + +rd /Q /S Output\PDB32 +rd /Q /S Output\PDB64 +rd /Q /S Output\PDBARM64 + REM ********* Build ADMX echo --- ADMX if exist Output\PolicyDefinitions.zip ( del Output\PolicyDefinitions.zip ) cd ..\Localization\English -..\..\StartMenu\Setup\StartMenu.exe -saveadmx en-US +..\..\..\build\bin\Setup\StartMenu.exe -saveadmx en-US @if ERRORLEVEL 1 exit /b 1 -..\..\ClassicExplorer\Setup\ClassicExplorerSettings.exe -saveadmx en-US +..\..\..\build\bin\Setup\ClassicExplorerSettings.exe -saveadmx en-US @if ERRORLEVEL 1 exit /b 1 -..\..\ClassicIE\Setup\ClassicIE_32.exe -saveadmx en-US +..\..\..\build\bin\Setup\ClassicIE_32.exe -saveadmx en-US @if ERRORLEVEL 1 exit /b 1 md en-US copy /B *.adml en-US > nul diff --git a/Src/Setup/BuildInstaller.bat b/Src/Setup/BuildInstaller.bat index ab63d01b0..42d444554 100644 --- a/Src/Setup/BuildInstaller.bat +++ b/Src/Setup/BuildInstaller.bat @@ -36,9 +36,9 @@ md Temp @set /a "CS_VERSION_NUM=%%A<<24|%%B<<16|%%C" ) -REM ********* Build 32-bit MSI -echo --- 32bit MSI -candle Setup.wxs -nologo -out Temp\Setup32.wixobj -ext WixUIExtension -ext WixUtilExtension -dx64=0 -dCS_LANG_FOLDER=%CS_LANG_FOLDER% -dCS_LANG_NAME=%CS_LANG_NAME% +REM ********* Build x86 MSI +echo --- x86 MSI +candle Setup.wxs -nologo -out Temp\Setup32.wixobj -ext WixUIExtension -ext WixUtilExtension -dx64=0 -dARM64=0 -dCS_LANG_FOLDER=%CS_LANG_FOLDER% -dCS_LANG_NAME=%CS_LANG_NAME% @if ERRORLEVEL 1 exit /b 1 @REM We need to suppress ICE38 and ICE43 because they apply only to per-user installation. We only support per-machine installs @@ -46,10 +46,9 @@ candle Setup.wxs -nologo -out Temp\Setup32.wixobj -ext WixUIExtension -ext WixUt light Temp\Setup32.wixobj -nologo -out Temp\Setup32.msi -ext WixUIExtension -ext WixUtilExtension -loc ..\Localization\%CS_LANG_FOLDER%\OpenShellText-%CS_LANG_NAME%.wxl -loc ..\Localization\%CS_LANG_FOLDER%\WixUI_%CS_LANG_NAME%.wxl -sice:ICE38 -sice:ICE43 -sice:ICE09 @if ERRORLEVEL 1 exit /b 1 - -REM ********* Build 64-bit MSI -echo --- 64bit MSI -candle Setup.wxs -nologo -out Temp\Setup64.wixobj -ext WixUIExtension -ext WixUtilExtension -dx64=1 -dCS_LANG_FOLDER=%CS_LANG_FOLDER% -dCS_LANG_NAME=%CS_LANG_NAME% +REM ********* Build x64 MSI +echo --- x64 MSI +candle Setup.wxs -nologo -out Temp\Setup64.wixobj -ext WixUIExtension -ext WixUtilExtension -dx64=1 -dARM64=0 -dCS_LANG_FOLDER=%CS_LANG_FOLDER% -dCS_LANG_NAME=%CS_LANG_NAME% @if ERRORLEVEL 1 exit /b 1 @REM We need to suppress ICE38 and ICE43 because they apply only to per-user installation. We only support per-machine installs @@ -57,15 +56,24 @@ candle Setup.wxs -nologo -out Temp\Setup64.wixobj -ext WixUIExtension -ext WixUt light Temp\Setup64.wixobj -nologo -out Temp\Setup64.msi -ext WixUIExtension -ext WixUtilExtension -loc ..\Localization\%CS_LANG_FOLDER%\OpenShellText-%CS_LANG_NAME%.wxl -loc ..\Localization\%CS_LANG_FOLDER%\WixUI_%CS_LANG_NAME%.wxl -sice:ICE38 -sice:ICE43 -sice:ICE09 @if ERRORLEVEL 1 exit /b 1 +REM ********* Build ARM64 MSI +echo --- ARM64 MSI +candle Setup.wxs -nologo -out Temp\SetupARM64.wixobj -ext WixUIExtension -ext WixUtilExtension -dx64=0 -dARM64=1 -dCS_LANG_FOLDER=%CS_LANG_FOLDER% -dCS_LANG_NAME=%CS_LANG_NAME% +@if ERRORLEVEL 1 exit /b 1 + +@REM We need to suppress ICE38 and ICE43 because they apply only to per-user installation. We only support per-machine installs +@REM We need to suppress ICE09 because the helper DLLs need to go into the system directory (for safety reasons) +light Temp\SetupARM64.wixobj -nologo -out Temp\SetupARM64.msi -ext WixUIExtension -ext WixUtilExtension -loc ..\Localization\%CS_LANG_FOLDER%\OpenShellText-%CS_LANG_NAME%.wxl -loc ..\Localization\%CS_LANG_FOLDER%\WixUI_%CS_LANG_NAME%.wxl -sice:ICE38 -sice:ICE43 -sice:ICE09 +@if ERRORLEVEL 1 exit /b 1 REM ********* Build MSI Checksums echo --- MSI Checksums -Utility\Release\Utility.exe crcmsi Temp +..\..\build\bin\Release\Utility.exe crcmsi Temp @if ERRORLEVEL 1 exit /b 1 REM ********* Build bootstrapper echo --- Bootstrapper -for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -requires Microsoft.Component.MSBuild -property installationPath`) do set MSBuildDir=%%i\MSBuild\15.0\Bin\ +for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -requires Microsoft.Component.MSBuild -property installationPath`) do set MSBuildDir=%%i\MSBuild\Current\Bin\ "%MSBuildDir%MSBuild.exe" Setup.sln /m /t:Rebuild /p:Configuration="Release" /p:Platform="Win32" /verbosity:quiet /nologo @if ERRORLEVEL 1 exit /b 1 @@ -73,10 +81,10 @@ for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio if exist Final rd /Q /S Final md Final -copy /B Release\Setup.exe Final\%CS_INSTALLER_NAME%.exe > nul +copy /B ..\..\build\bin\Release\Setup.exe Final\%CS_INSTALLER_NAME%.exe > nul if defined APPVEYOR ( - appveyor PushArtifact Release\Setup.exe -FileName %CS_INSTALLER_NAME%.exe + appveyor PushArtifact Final\%CS_INSTALLER_NAME%.exe ) SET CS_LANG_FOLDER= diff --git a/Src/Setup/OpenShell.ico b/Src/Setup/OpenShell.ico index 3ccb8349a..74b9a0d32 100644 Binary files a/Src/Setup/OpenShell.ico and b/Src/Setup/OpenShell.ico differ diff --git a/Src/Setup/Setup.cpp b/Src/Setup/Setup.cpp index d3471af40..c7c144e20 100644 --- a/Src/Setup/Setup.cpp +++ b/Src/Setup/Setup.cpp @@ -12,10 +12,13 @@ #include "StringUtils.h" #include "FNVHash.h" -// Setup.exe is a bootstrap application that contains installers for 32-bit and 64-bit. +// Setup.exe is a bootstrap application that contains installers for x86, x64 and ARM64. // It unpacks the right installer into the temp directory and executes it. typedef BOOL (WINAPI *FIsWow64Process)( HANDLE hProcess, PBOOL Wow64Process ); +typedef BOOL (WINAPI *FIsWow64Process2)( HANDLE hProcess, USHORT *pProcessMachine, USHORT *pNativeMachine ); +typedef BOOL (WINAPI *FWow64DisableWow64FsRedirection)( PVOID* OldValue ); +typedef BOOL (WINAPI *FWow64RevertWow64FsRedirection)( PVOID OldValue ); @@ -31,6 +34,14 @@ enum ERR_MSIEXEC, // msiexec failed to start }; +enum ExtractType +{ + None, + x86, + x64, + ARM64 +}; + struct Chunk { int start1, start2, len; @@ -49,7 +60,7 @@ static void WriteFileXOR( HANDLE hFile, const unsigned char *buf, int size ) } } -static int ExtractMsi( HINSTANCE hInstance, const wchar_t *msiName, bool b64, bool bQuiet ) +static int ExtractMsi( HINSTANCE hInstance, const wchar_t *msiName, ExtractType extractType, bool bQuiet ) { void *pRes=NULL; HRSRC hResInfo=FindResource(hInstance,MAKEINTRESOURCE(IDR_MSI_CHECKSUM),L"MSI_FILE"); @@ -70,13 +81,21 @@ static int ExtractMsi( HINSTANCE hInstance, const wchar_t *msiName, bool b64, bo } return ERR_HASH_NOTFOUND; } - unsigned int hash0=((unsigned int*)pRes)[b64?1:0]; + unsigned int hash0=((unsigned int*)pRes)[extractType-1]; const Chunk *pChunks=NULL; int chunkCount=0; - if (b64) + if (extractType==x64) { - chunkCount=((unsigned int*)pRes)[2]; - pChunks=(Chunk*)((unsigned int*)pRes+3); + chunkCount=((unsigned int*)pRes)[3]; + pChunks=(Chunk*)((unsigned int*)pRes+4); + } + if (extractType==ARM64) + { + int x64chunkCount=((unsigned int*)pRes)[3]; + const Chunk *px64Chunks=(Chunk*)((unsigned int*)pRes+4); + + chunkCount=((unsigned int*)(px64Chunks+x64chunkCount))[0]; + pChunks = (Chunk*)((unsigned int*)(px64Chunks+x64chunkCount)+1); } // extract the installer @@ -99,11 +118,11 @@ static int ExtractMsi( HINSTANCE hInstance, const wchar_t *msiName, bool b64, bo } return ERR_MSIRES_NOTFOUND; } - const unsigned char *pRes64=NULL; + const unsigned char *pRes64=NULL, *pResArm64=NULL; int size32=SizeofResource(hInstance,hResInfo); unsigned int hash; - int size64=0; - if (b64) + int size64=0, sizeArm64=0; + if (extractType==x64) { HRSRC hResInfo=FindResource(hInstance,MAKEINTRESOURCE(IDR_MSI_FILE64),L"MSI_FILE"); if (hResInfo) @@ -140,6 +159,43 @@ static int ExtractMsi( HINSTANCE hInstance, const wchar_t *msiName, bool b64, bo if (pos0;count--,params++) { - if (_wcsicmp(params[0],L"help")==0 || _wcsicmp(params[0],L"/?")==0) + if (_wcsicmp(params[0],L"help")==0 || _wcsicmp(params[0],L"/help")==0 || _wcsicmp(params[0],L"/h")==0 || _wcsicmp(params[0],L"/?")==0) { wchar_t strTitle[256]; if (!LoadString(hInstance,IDS_APP_TITLE,strTitle,_countof(strTitle))) strTitle[0]=0; @@ -233,9 +305,11 @@ int APIENTRY wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCm return 0; } if (_wcsicmp(params[0],L"extract32")==0) - extract=32; + extractType=x86; if (_wcsicmp(params[0],L"extract64")==0) - extract=64; + extractType=x64; + if (_wcsicmp(params[0],L"extractARM64")==0) + extractType=ARM64; if (_wcsicmp(params[0],L"/qn")==0 || _wcsicmp(params[0],L"/q")==0 || _wcsicmp(params[0],L"/quiet")==0 || _wcsicmp(params[0],L"/passive")==0) { bQuiet=true; @@ -255,11 +329,11 @@ int APIENTRY wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCm return ERR_VERRES_NOTFOUND; } - if (extract) + if (extractType != None) { wchar_t msiName[_MAX_PATH]; - Sprintf(msiName,_countof(msiName),L"OpenShellSetup%d_%d_%d_%d.msi",extract,HIWORD(pVer->dwProductVersionMS),LOWORD(pVer->dwProductVersionMS),HIWORD(pVer->dwProductVersionLS)); - return ExtractMsi(hInstance,msiName,extract==64,bQuiet); + Sprintf(msiName,_countof(msiName),L"OpenShellSetup%s_%d_%d_%d.msi",(extractType==x86?L"32":(extractType==x64?L"64":L"ARM64")),HIWORD(pVer->dwProductVersionMS),LOWORD(pVer->dwProductVersionMS),HIWORD(pVer->dwProductVersionLS)); + return ExtractMsi(hInstance,msiName,extractType,bQuiet); } // check Windows version @@ -282,7 +356,9 @@ int APIENTRY wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCm // dynamically link to IsWow64Process because it is not available for Windows 2000 HMODULE hKernel32=GetModuleHandle(L"kernel32.dll"); FIsWow64Process isWow64Process=(FIsWow64Process)GetProcAddress(hKernel32,"IsWow64Process"); - if (!isWow64Process) + FWow64DisableWow64FsRedirection wow64DisableWow64FsRedirection=(FWow64DisableWow64FsRedirection)GetProcAddress(hKernel32,"Wow64DisableWow64FsRedirection"); + FWow64RevertWow64FsRedirection wow64RevertWow64FsRedirection=(FWow64RevertWow64FsRedirection)GetProcAddress(hKernel32,"Wow64RevertWow64FsRedirection"); + if (!isWow64Process || !wow64DisableWow64FsRedirection || !wow64RevertWow64FsRedirection) { if (!bQuiet) { @@ -295,13 +371,25 @@ int APIENTRY wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCm return ERR_WRONG_OS; } - BOOL b64=FALSE; - isWow64Process(GetCurrentProcess(),&b64); + // Use IsWow64Process2 if it's available (Windows 10 1511+), otherwise fall back to IsWow64Process + FIsWow64Process2 isWow64Process2=(FIsWow64Process2)GetProcAddress(hKernel32,"IsWow64Process2"); + if (isWow64Process2) + { + USHORT processMachine = 0, nativeMachine = 0; + isWow64Process2(GetCurrentProcess(), &processMachine, &nativeMachine); + extractType=nativeMachine==IMAGE_FILE_MACHINE_AMD64?x64:nativeMachine==IMAGE_FILE_MACHINE_ARM64?ARM64:x86; + } + else + { + BOOL x64=FALSE; + isWow64Process(GetCurrentProcess(),&x64); + extractType=x64?ExtractType::x64:x86; + } wchar_t msiName[_MAX_PATH]; - Sprintf(msiName,_countof(msiName),L"%%ALLUSERSPROFILE%%\\OpenShellSetup%d_%d_%d_%d.msi",b64?64:32,HIWORD(pVer->dwProductVersionMS),LOWORD(pVer->dwProductVersionMS),HIWORD(pVer->dwProductVersionLS)); + Sprintf(msiName,_countof(msiName),L"%%ALLUSERSPROFILE%%\\OpenShellSetup%s_%d_%d_%d.msi",(extractType==x86?L"32":(extractType==x64?L"64":L"ARM64")),HIWORD(pVer->dwProductVersionMS),LOWORD(pVer->dwProductVersionMS),HIWORD(pVer->dwProductVersionLS)); DoEnvironmentSubst(msiName,_countof(msiName)); - int ex=ExtractMsi(hInstance,msiName,b64!=FALSE,bQuiet); + int ex=ExtractMsi(hInstance,msiName,extractType,bQuiet); if (ex) return ex; wchar_t cmdLine[2048]; @@ -316,11 +404,19 @@ int APIENTRY wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCm Sprintf(cmdLine,_countof(cmdLine),L"msiexec.exe /i \"%s\" %s",msiName,lpCmdLine); } + // On ARM64 we must launch msiexec.exe from system32 and not syswow64 as would otherwise happen + PVOID wow64FsRedirVal=NULL; + if (extractType == ARM64) + Wow64DisableWow64FsRedirection(&wow64FsRedirVal); + // start the installer STARTUPINFO startupInfo={sizeof(startupInfo)}; PROCESS_INFORMATION processInfo; memset(&processInfo,0,sizeof(processInfo)); - if (!CreateProcess(NULL,cmdLine,NULL,NULL,TRUE,0,NULL,NULL,&startupInfo,&processInfo)) + BOOL ret=CreateProcess(NULL,cmdLine,NULL,NULL,TRUE,0,NULL,NULL,&startupInfo,&processInfo); + if (extractType == ARM64) + Wow64RevertWow64FsRedirection(wow64FsRedirVal); + if (!ret) { DeleteFile(msiName); if (!bQuiet) diff --git a/Src/Setup/Setup.rc b/Src/Setup/Setup.rc index 8d479c126..020a47b53 100644 --- a/Src/Setup/Setup.rc +++ b/Src/Setup/Setup.rc @@ -102,6 +102,7 @@ END IDR_MSI_FILE32 MSI_FILE "Temp\\Setup32.msi_" IDR_MSI_FILE64 MSI_FILE "Temp\\Setup64.msi_" +IDR_MSI_FILEARM64 MSI_FILE "Temp\\SetupARM64.msi_" IDR_MSI_CHECKSUM MSI_FILE "msichecksum.bin" @@ -126,7 +127,7 @@ END STRINGTABLE BEGIN - IDS_HELP "Open-Shell Setup will install Open-Shell on your computer. Possible command lines:\n - runs the installer normally\n extract32 - extracts the 32-bit MSI\n extract64 - extracts the 64-bit MSI\n help, /? - shows the command line help\n - the options are passed to msiexec\n * if the options contain %MSI% (all caps) the token is replaced by the name of the extracted MSI file\n * if %MSI% is not found, the setup runs ""msiexec /i ""\n * run msiexec with no parameters to see the full list of msiexec options\n\nExamples:\n /qn - runs the installer in quiet mode\n /x %MSI% /qb - uninstalls the product in basic UI level\n /f %MSI% - repairs the product\n /l* log.txt - runs the installer and logs the process in the log.txt file\n /qn ADDLOCAL=ClassicExplorer - installs only Classic Explorer in quiet mode\n /qn ADDLOCAL=StartMenu APPLICATIONFOLDER=C:\\OpenShell - installs only Open-Shell Start Menu in quiet mode in the folder C:\\OpenShell\n ADDLOCAL=StartMenu,ClassicIE - runs the installer in full UI mode with Open-Shell Start Menu and Classic IE checked by default" + IDS_HELP "Open-Shell Setup will install Open-Shell on your computer. Possible command lines:\n - runs the installer normally\n extract32 - extracts the 32-bit MSI\n extract64 - extracts the 64-bit MSI\n extractARM64 - extracts the ARM64 MSI\n help, /? - shows the command line help\n - the options are passed to msiexec\n * if the options contain %MSI% (all caps) the token is replaced by the name of the extracted MSI file\n * if %MSI% is not found, the setup runs ""msiexec /i ""\n * run msiexec with no parameters to see the full list of msiexec options\n\nExamples:\n /qn - runs the installer in quiet mode\n /x %MSI% /qb - uninstalls the product in basic UI level\n /f %MSI% - repairs the product\n /l* log.txt - runs the installer and logs the process in the log.txt file\n /qn ADDLOCAL=ClassicExplorer - installs only Classic Explorer in quiet mode\n /qn ADDLOCAL=StartMenu APPLICATIONFOLDER=C:\\OpenShell - installs only Open-Shell Start Menu in quiet mode in the folder C:\\OpenShell\n ADDLOCAL=StartMenu,ClassicIE - runs the installer in full UI mode with Open-Shell Start Menu and Classic IE checked by default" END #endif // English (U.S.) resources diff --git a/Src/Setup/Setup.vcxproj b/Src/Setup/Setup.vcxproj index 88a78c62f..090492dce 100644 --- a/Src/Setup/Setup.vcxproj +++ b/Src/Setup/Setup.vcxproj @@ -14,89 +14,28 @@ {A4A4D3B1-24E7-401E-A37C-72141D7603DC} Setup Win32Proj - 10.0.17134.0 + 10.0 - + Application - v141 - Unicode - true - - - Application - v141 + $(DefaultPlatformToolset) Unicode + true - - - - - - - + + - - $(Configuration)\ - $(Configuration)\ - true - - - $(Configuration)\ - $(Configuration)\ - false - - - - Disabled - ..\Lib;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebug - NotUsing - Level3 - EditAndContinue - true - true - stdcpp17 - - - _DEBUG;%(PreprocessorDefinitions) - - - comctl32.lib;Psapi.lib;version.lib;%(AdditionalDependencies) - true - Windows - - - + - MaxSpeed - ..\Lib;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - MultiThreaded - true NotUsing - Level3 - ProgramDatabase - true - true - stdcpp17 - - NDEBUG;%(PreprocessorDefinitions) - comctl32.lib;Psapi.lib;version.lib;%(AdditionalDependencies) - true - Windows - true - true @@ -125,6 +64,7 @@ + diff --git a/Src/Setup/Setup.vcxproj.filters b/Src/Setup/Setup.vcxproj.filters index 613885939..00a2d7a1a 100644 --- a/Src/Setup/Setup.vcxproj.filters +++ b/Src/Setup/Setup.vcxproj.filters @@ -61,5 +61,6 @@ + \ No newline at end of file diff --git a/Src/Setup/Setup.wxs b/Src/Setup/Setup.wxs index 791b13902..b1a2f993f 100644 --- a/Src/Setup/Setup.wxs +++ b/Src/Setup/Setup.wxs @@ -3,7 +3,7 @@ # This comment is generated by WixEdit, the specific commandline # arguments for the WiX Toolset are stored here. - candleArgs: "" -out ".wixobj" -ext WixUIExtension -ext WixUtilExtension -dx64=0 + candleArgs: "" -out ".wixobj" -ext WixUIExtension -ext WixUtilExtension -dx64=0 -dARM64=0 lightArgs: ".wixobj" -out ".msi" -ext WixUIExtension -ext WixUtilExtension -loc OpenShellText-en-US.wxl --> @@ -11,6 +11,11 @@ + + + + + @@ -22,9 +27,13 @@ - + + not Msix64 + + NOT (WIX_NATIVE_MACHINE AND WIX_NATIVE_MACHINE="43620") + VersionNT>=601 NOT NEWERPRODUCTFOUND OR Installed @@ -59,7 +68,7 @@ - + @@ -71,7 +80,7 @@ - + @@ -90,22 +99,25 @@ + + - + - IE_BUILD>=90000 + + @@ -388,8 +400,8 @@ - - + Application - v141 - Unicode - true - - - Application - v141 + $(DefaultPlatformToolset) Unicode + true - - - - - + + - - $(Configuration)\ - $(Configuration)\ - true - - - $(Configuration)\ - $(Configuration)\ - false - - + - Disabled - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebug NotUsing - Level3 - true - EditAndContinue - true - stdcpp17 - - true - Windows - - - - - MaxSpeed - true - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - MultiThreaded - true - NotUsing - Level3 - true - ProgramDatabase - true - stdcpp17 - - - true - Windows - true - true - + + + diff --git a/Src/Setup/UpdateBin/Flags/gd-GB.bmp b/Src/Setup/UpdateBin/Flags/gd-GB.bmp deleted file mode 100644 index a3cabea63..000000000 Binary files a/Src/Setup/UpdateBin/Flags/gd-GB.bmp and /dev/null differ diff --git a/Src/Setup/UpdateBin/UpdateBin.rc b/Src/Setup/UpdateBin/UpdateBin.rc deleted file mode 100644 index 3849c02d2..000000000 Binary files a/Src/Setup/UpdateBin/UpdateBin.rc and /dev/null differ diff --git a/Src/Setup/UpdateBin/UpdateBin.vcxproj b/Src/Setup/UpdateBin/UpdateBin.vcxproj deleted file mode 100644 index 067bddfed..000000000 --- a/Src/Setup/UpdateBin/UpdateBin.vcxproj +++ /dev/null @@ -1,506 +0,0 @@ - - - - - update_4.1.0 - Win32 - - - update_4.2.0 - Win32 - - - update_4.2.1 - Win32 - - - update_4.2.2 - Win32 - - - update_4.2.3 - Win32 - - - update_4.2.4 - Win32 - - - update_4.2.5 - Win32 - - - update_4.2.6 - Win32 - - - update_4.2.7 - Win32 - - - update_4.3.0 - Win32 - - - update_4.3.1 - Win32 - - - - {F92A5473-F9E0-412F-923C-6632A66D13C1} - UpdateBin - Win32Proj - 10.0.17134.0 - - - - DynamicLibrary - v141 - Unicode - - - DynamicLibrary - v141 - Unicode - - - DynamicLibrary - v141 - Unicode - - - DynamicLibrary - v141 - Unicode - - - DynamicLibrary - v141 - Unicode - - - DynamicLibrary - v141 - Unicode - - - DynamicLibrary - v141 - Unicode - - - DynamicLibrary - v141 - Unicode - - - DynamicLibrary - v141 - Unicode - - - DynamicLibrary - v141 - Unicode - - - DynamicLibrary - v141 - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $(Configuration)\ - $(Configuration)\ - false - false - - - $(Configuration)\ - $(Configuration)\ - false - false - - - $(Configuration)\ - $(Configuration)\ - false - false - - - $(Configuration)\ - $(Configuration)\ - false - false - - - $(Configuration)\ - $(Configuration)\ - false - false - - - $(Configuration)\ - $(Configuration)\ - false - false - - - $(Configuration)\ - $(Configuration)\ - false - false - - - $(Configuration)\ - $(Configuration)\ - false - false - - - $(Configuration)\ - $(Configuration)\ - false - false - - - $(Configuration)\ - $(Configuration)\ - false - false - - - $(Configuration)\ - $(Configuration)\ - false - false - - - - ..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc - - - MaxSpeed - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - Level3 - ProgramDatabase - - - ..\Final\$(Configuration).ver - false - Windows - true - true - true - - - - - ..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc - - - MaxSpeed - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - Level3 - ProgramDatabase - - - ..\Final\$(Configuration).ver - false - Windows - true - true - true - - - - - ..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc - - - MaxSpeed - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - Level3 - ProgramDatabase - - - ..\Final\$(Configuration).ver - false - Windows - true - true - true - - - - - ..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc - - - MaxSpeed - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - Level3 - ProgramDatabase - - - ..\Final\$(Configuration).ver - false - Windows - true - true - true - - - - - ..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc - - - MaxSpeed - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - Level3 - ProgramDatabase - - - ..\Final\$(Configuration).ver - false - Windows - true - true - true - - - - - ..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc - - - MaxSpeed - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - Level3 - ProgramDatabase - - - ..\Final\$(Configuration).ver - false - Windows - true - true - true - - - - - ..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc - - - MaxSpeed - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - Level3 - ProgramDatabase - - - ..\Final\$(Configuration).ver - false - Windows - true - true - true - - - - - ..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc - - - MaxSpeed - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - Level3 - ProgramDatabase - - - ..\Final\$(Configuration).ver - false - Windows - true - true - true - - - - - ..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc - - - MaxSpeed - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - Level3 - ProgramDatabase - - - ..\Final\$(Configuration).ver - false - Windows - true - true - true - - - - - ..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc - - - MaxSpeed - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - Level3 - ProgramDatabase - - - ..\Final\$(Configuration).ver - false - Windows - true - true - true - - - - - ..\Utility\Debug\Utility.exe update .\$(Configuration).txt .\UpdateBin.rc - - - MaxSpeed - true - WIN32;NDEBUG;_WINDOWS;_USRDLL;UPDATEBIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - Level3 - ProgramDatabase - - - ..\Final\$(Configuration).ver - false - Windows - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - {dae66c9b-05dc-4ace-97da-2547b490bbff} - false - - - - - - diff --git a/Src/Setup/UpdateBin/resource.h b/Src/Setup/UpdateBin/resource.h deleted file mode 100644 index 06d0a79cc..000000000 --- a/Src/Setup/UpdateBin/resource.h +++ /dev/null @@ -1,10 +0,0 @@ -#define IDS_VERSION 16 -#define IDS_NEWS 17 -#define IDS_INSTALL_URL 18 -#define IDS_INSTALL_SIGNER 19 -#define IDS_LNG_URL 20 -#define IDS_LNG_VERSION 21 -#define IDS_LNG_CRC 22 -#define IDS_UPDATE_LINK 23 -#define IDS_LANGUAGE_LINK 24 -#define IDS_ALT_URL 25 diff --git a/Src/Setup/UpdateBin/update_4.1.0.txt b/Src/Setup/UpdateBin/update_4.1.0.txt deleted file mode 100644 index 6c4ba5a35..000000000 Binary files a/Src/Setup/UpdateBin/update_4.1.0.txt and /dev/null differ diff --git a/Src/Setup/UpdateBin/update_4.2.0.txt b/Src/Setup/UpdateBin/update_4.2.0.txt deleted file mode 100644 index 3c5e5b82a..000000000 Binary files a/Src/Setup/UpdateBin/update_4.2.0.txt and /dev/null differ diff --git a/Src/Setup/UpdateBin/update_4.2.1.txt b/Src/Setup/UpdateBin/update_4.2.1.txt deleted file mode 100644 index 906eb85a8..000000000 Binary files a/Src/Setup/UpdateBin/update_4.2.1.txt and /dev/null differ diff --git a/Src/Setup/UpdateBin/update_4.2.2.txt b/Src/Setup/UpdateBin/update_4.2.2.txt deleted file mode 100644 index 2b6311e80..000000000 Binary files a/Src/Setup/UpdateBin/update_4.2.2.txt and /dev/null differ diff --git a/Src/Setup/UpdateBin/update_4.2.3.txt b/Src/Setup/UpdateBin/update_4.2.3.txt deleted file mode 100644 index ead837f86..000000000 Binary files a/Src/Setup/UpdateBin/update_4.2.3.txt and /dev/null differ diff --git a/Src/Setup/UpdateBin/update_4.2.4.txt b/Src/Setup/UpdateBin/update_4.2.4.txt deleted file mode 100644 index d8974cbf7..000000000 Binary files a/Src/Setup/UpdateBin/update_4.2.4.txt and /dev/null differ diff --git a/Src/Setup/UpdateBin/update_4.2.5.txt b/Src/Setup/UpdateBin/update_4.2.5.txt deleted file mode 100644 index a82fa45a4..000000000 Binary files a/Src/Setup/UpdateBin/update_4.2.5.txt and /dev/null differ diff --git a/Src/Setup/UpdateBin/update_4.2.6.txt b/Src/Setup/UpdateBin/update_4.2.6.txt deleted file mode 100644 index 5523b9d2a..000000000 Binary files a/Src/Setup/UpdateBin/update_4.2.6.txt and /dev/null differ diff --git a/Src/Setup/UpdateBin/update_4.2.7.txt b/Src/Setup/UpdateBin/update_4.2.7.txt deleted file mode 100644 index b674d78be..000000000 Binary files a/Src/Setup/UpdateBin/update_4.2.7.txt and /dev/null differ diff --git a/Src/Setup/UpdateBin/update_4.3.0.txt b/Src/Setup/UpdateBin/update_4.3.0.txt deleted file mode 100644 index 427001085..000000000 Binary files a/Src/Setup/UpdateBin/update_4.3.0.txt and /dev/null differ diff --git a/Src/Setup/UpdateBin/update_4.3.1.txt b/Src/Setup/UpdateBin/update_4.3.1.txt deleted file mode 100644 index c75f89e2c..000000000 Binary files a/Src/Setup/UpdateBin/update_4.3.1.txt and /dev/null differ diff --git a/Src/Setup/Utility/ManualUninstall.cpp b/Src/Setup/Utility/ManualUninstall.cpp index 1644ba08c..59380befa 100644 --- a/Src/Setup/Utility/ManualUninstall.cpp +++ b/Src/Setup/Utility/ManualUninstall.cpp @@ -13,6 +13,7 @@ #include #include #include +#include #include "ResourceHelper.h" #include "ComHelper.h" #include "StringUtils.h" @@ -52,6 +53,7 @@ static const wchar_t *g_InstalledFiles[]= L"ClassicIEDLL_64.dll", L"ClassicIE_32.exe", L"ClassicIE_64.exe", + L"DesktopToasts.dll", L"OpenShell.chm", L"OpenShellReadme.rtf", L"Update.exe", @@ -81,6 +83,8 @@ static const wchar_t *g_InstalledSkins[]= L"Classic Skin.skin", L"Classic Skin.skin7", L"Full Glass.skin", + L"Immersive.skin", + L"Immersive.skin7", L"Metallic.skin7", L"Metro.skin", L"Metro.skin7", @@ -113,6 +117,7 @@ static const wchar_t *g_LocalFiles[]= L"ClassicIELog.txt", L"StartMenuLog.txt", L"DataCache.db", + L"ModernSettings.dat", }; // files to delete from the ALLUSERSPROFILE folder @@ -329,7 +334,7 @@ LRESULT CResultsDlg::OnInitDialog( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL if (m_bErrors) { SetDlgItemText(IDC_STATICRESULT,L"The Open-Shell removal tool encountered some errors. Please, restart your computer and try again. If the problem is not resolved" - L" seek help in the Open-Shell forums: www.classicshell.net/forum. Copy the following report and post it in the forum. The report is also saved in a file OpenShellReport.txt on your desktop."); + L" seek help in the Open-Shell forums: https://github.com/Open-Shell/Open-Shell-Menu/discussions. Copy the following report and post it in the forum. The report is also saved in a file OpenShellReport.txt on your desktop."); } else if (m_bReboot) { @@ -452,6 +457,32 @@ static void SaveReportFile( void ) } } +static void RemoveShellExtKey(const wchar_t* progID) +{ + static const auto ShellExtName = L"StartMenuExt"; + auto contextMenuHandlers = std::wstring(progID) + L"\\ShellEx\\ContextMenuHandlers"; + auto startMenuExt = contextMenuHandlers + L"\\" + ShellExtName; + + HKEY hkey = NULL; + if (RegOpenKeyEx(HKEY_CLASSES_ROOT, startMenuExt.c_str(), 0, KEY_READ | KEY_WOW64_64KEY, &hkey) == ERROR_SUCCESS) + { + RegCloseKey(hkey); + LogMessage(-1, L"Deleting registry key HKEY_CLASSES_ROOT\\%s", startMenuExt.c_str()); + auto error = RegCreateKeyEx(HKEY_CLASSES_ROOT, contextMenuHandlers.c_str(), NULL, NULL, REG_OPTION_BACKUP_RESTORE, KEY_WRITE | DELETE | KEY_WOW64_64KEY, NULL, &hkey, NULL); + if (error == ERROR_SUCCESS) + { + error = RegDeleteTree2(hkey, ShellExtName); + if (error != ERROR_SUCCESS && error != ERROR_FILE_NOT_FOUND) + LogMessage(error, L"Failed to delete registry key HKEY_CLASSES_ROOT\\%s.", startMenuExt.c_str()); + RegCloseKey(hkey); + } + else if (error != ERROR_FILE_NOT_FOUND) + { + LogMessage(error, L"Failed to open registry key HKEY_CLASSES_ROOT\\%s for writing.", contextMenuHandlers.c_str()); + } + } +} + static bool RemoveRegistryKeys( bool bPin ) { HKEY hkey=NULL; @@ -488,40 +519,11 @@ static bool RemoveRegistryKeys( bool bPin ) } } - hkey=NULL; if (bPin) { - if (RegOpenKeyEx(HKEY_CLASSES_ROOT,L"Launcher.ImmersiveApplication\\ShellEx\\ContextMenuHandlers\\StartMenuExt",0,KEY_READ|KEY_WOW64_64KEY,&hkey)==ERROR_SUCCESS) - { - RegCloseKey(hkey); - LogMessage(-1,L"Deleting registry key HKEY_CLASSES_ROOT\\Launcher.ImmersiveApplication\\ShellEx\\ContextMenuHandlers\\StartMenuExt"); - error=RegCreateKeyEx(HKEY_CLASSES_ROOT,L"Launcher.ImmersiveApplication\\ShellEx\\ContextMenuHandlers",NULL,NULL,REG_OPTION_BACKUP_RESTORE,KEY_WRITE|DELETE|KEY_WOW64_64KEY,NULL,&hkey,NULL); - if (error==ERROR_SUCCESS) - { - error=RegDeleteTree2(hkey,L"StartMenuExt"); - if (error!=ERROR_SUCCESS && error!=ERROR_FILE_NOT_FOUND) - LogMessage(error,L"Failed to delete registry key HKEY_CLASSES_ROOT\\Launcher.ImmersiveApplication\\ShellEx\\ContextMenuHandlers\\StartMenuExt."); - RegCloseKey(hkey); - } - else if (error!=ERROR_FILE_NOT_FOUND) - LogMessage(error,L"Failed to open registry key HKEY_CLASSES_ROOT\\Launcher.ImmersiveApplication\\ShellEx\\ContextMenuHandlers for writing."); - } - - if (RegOpenKeyEx(HKEY_CLASSES_ROOT,L"Launcher.SystemSettings\\ShellEx\\ContextMenuHandlers\\StartMenuExt",0,KEY_READ|KEY_WOW64_64KEY,&hkey)==ERROR_SUCCESS) - { - RegCloseKey(hkey); - LogMessage(-1,L"Deleting registry key HKEY_CLASSES_ROOT\\Launcher.SystemSettings\\ShellEx\\ContextMenuHandlers\\StartMenuExt"); - error=RegCreateKeyEx(HKEY_CLASSES_ROOT,L"Launcher.SystemSettings\\ShellEx\\ContextMenuHandlers",NULL,NULL,REG_OPTION_BACKUP_RESTORE,KEY_WRITE|DELETE|KEY_WOW64_64KEY,NULL,&hkey,NULL); - if (error==ERROR_SUCCESS) - { - error=RegDeleteTree2(hkey,L"StartMenuExt"); - if (error!=ERROR_SUCCESS && error!=ERROR_FILE_NOT_FOUND) - LogMessage(error,L"Failed to delete registry key HKEY_CLASSES_ROOT\\Launcher.SystemSettings\\ShellEx\\ContextMenuHandlers\\StartMenuExt."); - RegCloseKey(hkey); - } - else if (error!=ERROR_FILE_NOT_FOUND) - LogMessage(error,L"Failed to open registry key HKEY_CLASSES_ROOT\\Launcher.SystemSettings\\ShellEx\\ContextMenuHandlers for writing."); - } + RemoveShellExtKey(L"Launcher.ImmersiveApplication"); + RemoveShellExtKey(L"Launcher.DesktopPackagedApplication"); + RemoveShellExtKey(L"Launcher.SystemSettings"); } return true; @@ -645,7 +647,7 @@ static void DeleteRegValueSOFTWARE( const wchar_t *keyName, const wchar_t *value int error=RegOpenKeyEx(HKEY_LOCAL_MACHINE,keyName2,0,KEY_WRITE|DELETE|KEY_WOW64_64KEY,&hkey); if (error==ERROR_SUCCESS) { - int error=RegDeleteValue2(hkey,keyName); + int error=RegDeleteValue2(hkey,valueName); if (error!=ERROR_FILE_NOT_FOUND) { LogMessage(-1,L"Deleting registry value HKEY_LOCAL_MACHINE\\SOFTWARE\\%s:%s",keyName,valueName); @@ -668,7 +670,7 @@ static void DeleteRegValueSOFTWARE( const wchar_t *keyName, const wchar_t *value int error=RegOpenKeyEx(HKEY_LOCAL_MACHINE,keyName2,0,KEY_WRITE|DELETE|KEY_WOW64_32KEY,&hkey); if (error==ERROR_SUCCESS) { - int error=RegDeleteValue2(hkey,keyName); + int error=RegDeleteValue2(hkey,valueName); if (error!=ERROR_FILE_NOT_FOUND) { LogMessage(-1,L"Deleting registry value HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\%s:%s",keyName,valueName); @@ -981,6 +983,13 @@ static void ManualUninstallInternal( void ) DeleteRegKeyHKCR(L"ClassicIE.ClassicIEBHO.1"); DeleteRegKeyHKCR(L"StartMenuHelper.StartMenuExt"); DeleteRegKeyHKCR(L"StartMenuHelper.StartMenuExt.1"); + DeleteRegKeyHKCR(L"TypeLib\\{BF8D124A-A4E0-402F-8152-4EF377E62586}"); + DeleteRegKeyHKCR(L"TypeLib\\{FDA50A1E-B8CE-49DE-8D17-B034A84AA280}"); + DeleteRegKeyHKCR(L"Interface\\{2576496C-B58A-4995-8878-8B68F9E8D1FC}"); + DeleteRegKeyHKCR(L"Interface\\{6E00B97F-A4D4-4062-98E4-4F66FC96F32F}"); + DeleteRegKeyHKCR(L"Interface\\{A1678625-A011-4B7C-A1FA-D691E4CDDB79}"); + DeleteRegKeyHKCR(L"Interface\\{BC4C1B8F-0BDE-4E42-9583-E072B2A28E0D}"); + DeleteRegKeyHKCR(L"Interface\\{C698A81E-5D02-42B1-9801-5381CA8BBC2F}"); DeleteRegKeyCLSID(L"{449D0D6E-2412-4E61-B68F-1CB625CD9E52}",bIsWow64); DeleteRegKeyCLSID(L"{553891B7-A0D5-4526-BE18-D3CE461D6310}",bIsWow64); @@ -988,6 +997,10 @@ static void ManualUninstallInternal( void ) DeleteRegKeyCLSID(L"{8C83ACB1-75C3-45D2-882C-EFA32333491C}",bIsWow64); DeleteRegKeyCLSID(L"{D3214FBB-3CA1-406A-B3E8-3EB7C393A15E}",bIsWow64); DeleteRegKeyCLSID(L"{E595F05F-903F-4318-8B0A-7F633B520D2B}",bIsWow64); + DeleteRegKeyCLSID(L"{82E749ED-B971-4550-BAF7-06AA2BF7E836}",bIsWow64); + DeleteRegKeyCLSID(L"{5AB14324-C087-42C1-B905-A0BFDB4E9532}",bIsWow64); + DeleteRegKeyCLSID(L"{E407B70A-1FBD-4D5E-8822-231C69102472}",bIsWow64); + DeleteRegKeyCLSID(L"{EA801577-E6AD-4BD5-8F71-4BE0154331A4}",bIsWow64); DeleteRegKeySOFTWARE(L"Microsoft\\Internet Explorer\\Extensions\\{56753E59-AF1D-4FBA-9E15-31557124ADA2}",bIsWow64); DeleteRegKeySOFTWARE(L"Microsoft\\Internet Explorer\\Low Rights\\ElevationPolicy\\{02E6771D-8375-42B9-9F83-B4730F697900}",bIsWow64); @@ -1003,6 +1016,7 @@ static void ManualUninstallInternal( void ) DeleteRegValueSOFTWARE(L"Microsoft\\Windows\\CurrentVersion\\Policies\\Ext\\CLSID",L"{553891B7-A0D5-4526-BE18-D3CE461D6310}",bIsWow64); DeleteRegValueSOFTWARE(L"Microsoft\\Windows\\CurrentVersion\\Policies\\Ext\\CLSID",L"{EA801577-E6AD-4BD5-8F71-4BE0154331A4}",bIsWow64); DeleteRegValueSOFTWARE(L"Microsoft\\Windows\\CurrentVersion\\Run",L"Open-Shell Menu",bIsWow64); + DeleteRegValueSOFTWARE(L"Microsoft\\Windows\\CurrentVersion\\Run",L"Open-Shell Start Menu",bIsWow64); DeleteInstallerKey(HKEY_CLASSES_ROOT,L"HKEY_CLASSES_ROOT",L"Installer\\Features",L"OpenShell",L""); DeleteInstallerKey(HKEY_CLASSES_ROOT,L"HKEY_CLASSES_ROOT",L"Installer\\Products",L"ProductName",L"Open-Shell"); diff --git a/Src/Setup/Utility/MetroColorViewer.cpp b/Src/Setup/Utility/MetroColorViewer.cpp index cafe28f3b..79280557b 100644 --- a/Src/Setup/Utility/MetroColorViewer.cpp +++ b/Src/Setup/Utility/MetroColorViewer.cpp @@ -405,7 +405,7 @@ void ShowMetroColorViewer( void ) if (fout) fprintf(fout,"%02X%02X%02X%02X %S\n",(color>>24)&0xFF,color&0xFF,(color>>8)&0xFF,(color>>16)&0xFF,name); #endif MetroColor mc; - mc.name=name; + mc.name=text; mc.NAME=mc.name; mc.NAME.MakeUpper(); mc.type=type; diff --git a/Src/Setup/Utility/SaveLogFile.cpp b/Src/Setup/Utility/SaveLogFile.cpp index 00b6cdb0c..4149e65a6 100644 --- a/Src/Setup/Utility/SaveLogFile.cpp +++ b/Src/Setup/Utility/SaveLogFile.cpp @@ -53,11 +53,6 @@ void UpdateSettings( void ) { } -const wchar_t *GetDocRelativePath( void ) -{ - return NULL; -} - /////////////////////////////////////////////////////////////////////////////// static const wchar_t *g_Tabs=L"\t\t\t\t\t\t\t\t\t\t"; diff --git a/Src/Setup/Utility/Utility.cpp b/Src/Setup/Utility/Utility.cpp index de9b7a6d4..3cc524f4a 100644 --- a/Src/Setup/Utility/Utility.cpp +++ b/Src/Setup/Utility/Utility.cpp @@ -13,7 +13,6 @@ #include "FNVHash.h" #include "SettingsParser.h" #include "resource.h" -#include "..\UpdateBin\resource.h" #include "ResourceHelper.h" #include #include "SaveLogFile.h" @@ -87,7 +86,7 @@ int CalcMsiChecksum( wchar_t *const *params, int count ) // load files wchar_t path1[_MAX_PATH]; - std::vector buf1, buf2; + std::vector buf1, buf2, buf3; Sprintf(path1,_countof(path1),L"%s\\Setup32.msi",params[1]); LoadFile(path1,buf1); if (buf1.empty()) @@ -103,20 +102,30 @@ int CalcMsiChecksum( wchar_t *const *params, int count ) Printf("Failed to open file %s\n",path2); return 1; } + wchar_t path3[_MAX_PATH]; + Sprintf(path3,_countof(path3),L"%s\\SetupARM64.msi",params[1]); + LoadFile(path3,buf3); + if (buf3.empty()) + { + Printf("Failed to open file %s\n",path3); + return 1; + } int len1=(int)buf1.size(); int len2=(int)buf2.size(); + int len3=(int)buf3.size(); for (std::vector::iterator it=buf1.begin();it!=buf1.end();++it) *it^=0xFF; for (std::vector::iterator it=buf2.begin();it!=buf2.end();++it) *it^=0xFF; + for (std::vector::iterator it=buf3.begin();it!=buf3.end();++it) + *it^=0xFF; - // detect common blocks (assuming at least 256K in size and in the same order in both files) - const int BLOCK_SIZE=256*1024; + const int BLOCK_SIZE = 256 * 1024; + // detect x86/x64 common blocks (assuming at least 256K in size and in the same order in both files) std::vector chunks; - int start2=0; - for (int i=0;i chunks2; + for (int i=0,start2=0;i0 && chunk.start2>0 && buf1[chunk.start1-1]==buf3[chunk.start2-1]) + { + chunk.start1--; + chunk.start2--; + chunk.len++; + } + while (chunk.start1+chunk.len::const_iterator it=chunks2.begin();it!=chunks2.end();++it) + { + if (it->start2-start>0) + fwrite(&buf3[start],1,it->start2-start,f); + start=it->start2+it->len; + } + if (len3-start>0) + fwrite(&buf3[start],1,len3-start,f); + fclose(f); + } + + unsigned int fnvs[3]; fnvs[0]=CalcFNVHash(&buf1[0],len1,FNV_HASH0); fnvs[1]=CalcFNVHash(&buf2[0],len2,FNV_HASH0); + fnvs[2]=CalcFNVHash(&buf3[0],len3,FNV_HASH0); // save fnvs and chunks { @@ -194,6 +254,9 @@ int CalcMsiChecksum( wchar_t *const *params, int count ) int count=(int)chunks.size(); fwrite(&count,1,4,f); fwrite(&chunks[0],sizeof(Chunk),count,f); + count=(int)chunks2.size(); + fwrite(&count,1,4,f); + fwrite(&chunks2[0],sizeof(Chunk),count,f); fclose(f); } return 0; @@ -412,256 +475,6 @@ int MakeEnglishDll( wchar_t *const *params, int count ) /////////////////////////////////////////////////////////////////////////////// -struct LanguageData -{ - std::map strings; - CString bitmap; -}; - -int GenerateUpdateFile( wchar_t *const *params, int count ) -{ - if (count<3) return 3; - - std::vector buf; - LoadFile(params[1],buf); - if (buf.empty()) return 1; - buf.push_back(0); - buf.push_back(0); - - wchar_t token[256]; - - std::map languages; - const int DEFAULT_LANGUAGE=0x409; - - const wchar_t *str0=(wchar_t*)&buf[0]; - if (*str0==0xFEFF) str0++; - const wchar_t *str; - - // old (current) version - str=wcsstr(str0,L"{OLD_VER}"); - if (!str) return 1; - GetToken(str+9,token,_countof(token),L"\r\n"); - int v1, v2, v3; - swscanf_s(token,L"%d.%d.%d",&v1,&v2,&v3); - - // new version - str=wcsstr(str0,L"{NEW_VER}"); - if (!str) return 1; - GetToken(str+9,token,_countof(token),L"\r\n"); - languages[DEFAULT_LANGUAGE].strings[IDS_VERSION]=token; - - // signer - str=wcsstr(str0,L"{SIGNER}"); - if (!str) return 1; - GetToken(str+8,token,_countof(token),L"\r\n"); - languages[DEFAULT_LANGUAGE].strings[IDS_INSTALL_SIGNER]=token; - - // update - str=wcsstr(str0,L"{UPDATE}"); - if (!str) return 1; - GetToken(str+8,token,_countof(token),L"\r\n"); - languages[DEFAULT_LANGUAGE].strings[IDS_UPDATE_LINK]=token; - - // languages - str=wcsstr(str0,L"{LANGUAGES}"); - if (!str) return 1; - GetToken(str+11,token,_countof(token),L"\r\n"); - languages[DEFAULT_LANGUAGE].strings[IDS_LANGUAGE_LINK]=token; - - // language folder - str=wcsstr(str0,L"{LANGFOLDER}"); - if (!str) return 1; - wchar_t langFolder[_MAX_PATH]; - GetToken(str+12,langFolder,_countof(langFolder),L"\r\n"); - - // alt url - str=wcsstr(str0,L"{ALT}"); - if (str) - { - GetToken(str+5,token,_countof(token),L"\r\n"); - languages[DEFAULT_LANGUAGE].strings[IDS_ALT_URL]=token; - } - - // news - str=wcsstr(str0,L"{NEWS}"); - if (!str) return 1; - languages[DEFAULT_LANGUAGE].strings[IDS_NEWS]=str+6; - - // look for {INST: - str=str0; - bool res=true; - while (1) - { - str=wcsstr(str,L"{INST: "); - res=true; - if (!str) break; - res=false; - str+=7; - str=GetToken(str,token,_countof(token),L"}\r\n"); - int language; - if (!GetLocaleInfoEx(token,LOCALE_ILANGUAGE|LOCALE_RETURN_NUMBER,(LPWSTR)&language,4)) - break; - str=GetToken(str,token,_countof(token),L"\r\n"); - languages[language].strings[IDS_INSTALL_URL]=token; - // languages[language].strings[IDS_VERSION]=...; // TODO: allow per-language version of the installer - } - - if (!res) return 1; - - str=str0; - while (1) - { - str=wcsstr(str,L"{LANG: "); - res=true; - if (!str) break; - res=false; - str+=7; - str=GetToken(str,token,_countof(token),L"}\r\n"); - int len=Strlen(token); - bool bBasic=(len>0 && token[len-1]=='*'); - if (bBasic) token[len-1]=0; - int language; - if (!GetLocaleInfoEx(token,LOCALE_ILANGUAGE|LOCALE_RETURN_NUMBER,(LPWSTR)&language,4)) - break; - - wchar_t fname[_MAX_PATH]; - Sprintf(fname,_countof(fname),L"%s\\%s.dll",langFolder,token); -/* if (GetFileAttributes(fname)==INVALID_FILE_ATTRIBUTES) - { - fname[0]=0; - wchar_t find[_MAX_PATH]; - Sprintf(find,_countof(find),L"%s\\*.*",langFolder); - WIN32_FIND_DATA data; - HANDLE h=FindFirstFile(find,&data); - while (h!=INVALID_HANDLE_VALUE) - { - if ((data.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) && data.cFileName[0]!='.') - { - Sprintf(fname,_countof(fname),L"%s\\%s\\%s.dll",langFolder,data.cFileName,token); - if (GetFileAttributes(fname)!=INVALID_FILE_ATTRIBUTES) - { - FindClose(h); - break; - } - } - if (!FindNextFile(h,&data)) - { - FindClose(h); - break; - } - } - }*/ - if (!fname[0]) break; - - unsigned long hash=0; - wchar_t version[100]; - - hash=CalcFileFNV(fname); - if (!hash) break; - - DWORD dllBuild; - DWORD dllVer=GetFileVersion(fname,&dllBuild); - if (!dllVer) break; - if (dllVer>(DWORD)((v1<<24)|(v2<<16)|v3)) break; - - Sprintf(version,_countof(version),L"%d.%d.%d.%d%s",dllVer>>24,(dllVer>>16)&255,dllVer&65535,dllBuild,bBasic?L"*":L""); - - Sprintf(token,_countof(token),L"%08X",hash); - languages[language].strings[IDS_LNG_CRC]=token; - - languages[language].strings[IDS_LNG_VERSION]=version; - str=GetToken(str,token,_countof(token),L"\r\n"); - languages[language].strings[IDS_LNG_URL]=token; - } - - if (!res) return 1; - - // look for {FLAG: - str=str0; - while (1) - { - str=wcsstr(str,L"{FLAG: "); - res=true; - if (!str) break; - res=false; - str+=7; - str=GetToken(str,token,_countof(token),L"}\r\n"); - int language; - if (!GetLocaleInfoEx(token,LOCALE_ILANGUAGE|LOCALE_RETURN_NUMBER,(LPWSTR)&language,4)) - break; - str=GetToken(str,token,_countof(token),L"\r\n"); - languages[language].bitmap=token; - } - - if (!res) return 1; - - FILE *f=NULL; - if (_wfopen_s(&f,params[2],L"wb") || !f) - { - return 1; - } - fwprintf(f,L"\xFEFF"); - for (std::map::const_iterator it=languages.begin();it!=languages.end();++it) - { - fwprintf(f,L"/////////////////////////////////////////////////////////////////////////////\r\n"); - GetLocaleInfo(it->first,LOCALE_SLANGUAGE,token,_countof(token)); - fwprintf(f,L"// %s\r\n\r\n",token); - fwprintf(f,L"LANGUAGE 0x%02X, 0x%X\r\n",it->first&0x3FF,it->first>>10); - fwprintf(f,L"\r\nSTRINGTABLE\r\nBEGIN\r\n"); - for (std::map::const_iterator it2=it->second.strings.begin();it2!=it->second.strings.end();++it2) - { - CString str=it2->second; - str.Replace(L"\r\n",L"\\r\\n"); - str.Replace(L"\"",L"\"\""); - fwprintf(f,L"%4d \"%s\"\r\n",it2->first,(const wchar_t*)str); - } - fwprintf(f,L"END\r\n\r\n"); - - if (it->first==DEFAULT_LANGUAGE) - { - fwprintf(f,L"1 VERSIONINFO\r\n"); - fwprintf(f,L" FILEVERSION %d,%d,%d,0\r\n",v1,v2,v3); - fwprintf(f,L" PRODUCTVERSION %d,%d,%d,0\r\n",v1,v2,v3); - fwprintf(f,L" FILEFLAGSMASK 0x17L\r\n"); - fwprintf(f,L" FILEFLAGS 0x0L\r\n"); - fwprintf(f,L" FILEOS 0x4L\r\n"); - fwprintf(f,L" FILETYPE 0x1L\r\n"); - fwprintf(f,L" FILESUBTYPE 0x0L\r\n"); - fwprintf(f,L"BEGIN\r\n"); - fwprintf(f,L"\tBLOCK \"StringFileInfo\"\r\n"); - fwprintf(f,L"\tBEGIN\r\n"); - fwprintf(f,L"\t\tBLOCK \"040904b0\"\r\n"); - fwprintf(f,L"\t\tBEGIN\r\n"); - fwprintf(f,L"\t\t\tVALUE \"CompanyName\", \"OpenShell\"\r\n"); - fwprintf(f,L"\t\t\tVALUE \"FileDescription\", \"Update information\"\r\n"); - fwprintf(f,L"\t\t\tVALUE \"FileVersion\", \"%d, %d, %d, 0\"\r\n",v1,v2,v3); - fwprintf(f,L"\t\t\tVALUE \"InternalName\", \"Update\"\r\n"); - fwprintf(f,L"\t\t\tVALUE \"LegalCopyright\", \"Copyright (C) 2017-2018, The Open-Shell Team\"\r\n"); - fwprintf(f,L"\t\t\tVALUE \"OriginalFilename\", \"update.ver\"\r\n"); - fwprintf(f,L"\t\t\tVALUE \"ProductName\", \"Open-Shell\"\r\n"); - fwprintf(f,L"\t\t\tVALUE \"ProductVersion\", \"%d, %d, %d, 0\"\r\n",v1,v2,v3); - fwprintf(f,L"\t\tEND\r\n"); - fwprintf(f,L"\tEND\r\n"); - fwprintf(f,L"\tBLOCK \"VarFileInfo\"\r\n"); - fwprintf(f,L"\tBEGIN\r\n"); - fwprintf(f,L"\t\tVALUE \"Translation\", 0x409, 1200\r\n"); - fwprintf(f,L"\tEND\r\n"); - fwprintf(f,L"END\r\n\r\n"); - - for (std::map::const_iterator it3=languages.begin();it3!=languages.end();++it3) - { - if (!it3->second.bitmap.IsEmpty()) - fwprintf(f,L"%d BITMAP \"%s\"\r\n",it3->first,(const wchar_t*)it3->second.bitmap); - } - fwprintf(f,L"\r\n"); - } - } - fclose(f); - return 0; -} - -/////////////////////////////////////////////////////////////////////////////// - static void UnsescapeString( wchar_t *string ) { wchar_t *dst=string; @@ -943,7 +756,7 @@ static BOOL CALLBACK EnumResLangProc( HMODULE hModule, LPCTSTR lpszType, LPCTSTR if (IS_INTRESOURCE(lpszName)) { std::vector> &oldStrings=*(std::vector>*)lParam; - oldStrings.push_back(std::pair(PtrToInt(lpszName),wIDLanguage)); + oldStrings.emplace_back(PtrToInt(lpszName),wIDLanguage); } return TRUE; } @@ -1092,12 +905,11 @@ static HRESULT CALLBACK TaskDialogCallback( HWND hwnd, UINT uNotification, WPARA // Open-Shell utility - multiple utilities for building and maintaining Open-Shell // Usage: // no parameters - saves a troubleshooting log -// crcmsi // creates a file with checksum of both msi files +// crcmsi // creates a file with checksum of all msi files // makeEN // extracts the localization resources and creates a sample en-US.DLL // extract // extracts the string table, the dialog text, and the L10N text from a DLL and stores it in a CSV // extract en-us.dll // extracts the string table, the dialog text, and the L10N text from two DLL and stores it in a CSV // import // replaces the string table in the DLL with the text from the CSV -// update // generates a resource file for UpdateBin.dll by calculating the DLL hashes int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrCmdLine, int nCmdShow ) { @@ -1122,7 +934,7 @@ int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrC tasks.pszMainInstruction=L"Select task to perform"; tasks.cButtons=HIWORD(winVer)>=0x0602?4:3; tasks.pButtons=taskButtons; - tasks.pszFooter=L"www.classicshell.net"; + tasks.pszFooter=L"Open-Shell Homepage"; tasks.pfCallback=TaskDialogCallback; int seleciton; @@ -1176,11 +988,6 @@ int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrC return ImportStrings(params,count); } - if (_wcsicmp(params[0],L"update")==0) - { - return GenerateUpdateFile(params,count); - } - if (_wcsicmp(params[0],L"colors")==0) { ShowMetroColorViewer(); diff --git a/Src/Setup/Utility/Utility.rc b/Src/Setup/Utility/Utility.rc index 11a290c1f..a544464a8 100644 --- a/Src/Setup/Utility/Utility.rc +++ b/Src/Setup/Utility/Utility.rc @@ -52,7 +52,7 @@ END // FILE // -1 FILE "Release64\\Utility.exe" +1 FILE "..\\..\\..\\build\\bin\\Release64\\Utility.exe" ///////////////////////////////////////////////////////////////////////////// // @@ -207,6 +207,44 @@ BEGIN END #endif // APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION _PRODUCT_VERSION + PRODUCTVERSION _PRODUCT_VERSION + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "CompanyName", "Open-Shell" + VALUE "FileDescription", "Utility" + VALUE "FileVersion", _PRODUCT_VERSION_STR + VALUE "InternalName", "Utility.exe" + VALUE "LegalCopyright", "Copyright (C) 2017-2018, The Open-Shell Team" + VALUE "OriginalFilename", "Utility.exe" + VALUE "ProductName", "Open-Shell" + VALUE "ProductVersion", _PRODUCT_VERSION_STR + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/Src/Setup/Utility/Utility.vcxproj b/Src/Setup/Utility/Utility.vcxproj index 0fa1a17f9..744de02c8 100644 --- a/Src/Setup/Utility/Utility.vcxproj +++ b/Src/Setup/Utility/Utility.vcxproj @@ -1,6 +1,10 @@ + + Debug + ARM64 + Debug Win32 @@ -9,6 +13,10 @@ Debug x64 + + Release + ARM64 + Release Win32 @@ -22,159 +30,29 @@ {DAE66C9B-05DC-4ACE-97DA-2547B490BBFF} Utility Win32Proj - 10.0.17134.0 + 10.0 - - Application - v141 - Static - Unicode - true - - - Application - v141 - Static - Unicode - - - Application - v141 - Static - Unicode - true - - + Application - v141 + $(DefaultPlatformToolset) Static Unicode + true - - - - - - - - - - - + + - - $(Configuration)\ - $(Configuration)\ - true - - - $(Configuration)64\ - $(Configuration)64\ - true - - - $(Configuration)\ - $(Configuration)\ - false - - - $(Configuration)64\ - $(Configuration)64\ - false - - - - Disabled - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebug - NotUsing - Level3 - EditAndContinue - true - stdcpp17 - - - comctl32.lib;uxtheme.lib;dwmapi.lib;winmm.lib;htmlhelp.lib;psapi.lib;version.lib;Secur32.lib;Netapi32.lib;%(AdditionalDependencies) - true - Windows - - - - - Disabled - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebug - NotUsing - Level3 - ProgramDatabase - true - stdcpp17 - - - _UNICODE;UNICODE;_WIN64;%(PreprocessorDefinitions) - - - comctl32.lib;uxtheme.lib;dwmapi.lib;winmm.lib;htmlhelp.lib;psapi.lib;version.lib;Secur32.lib.;%(AdditionalDependencies) - true - Windows - - - + - MaxSpeed - true - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - MultiThreaded - true NotUsing - Level3 - ProgramDatabase - true - stdcpp17 comctl32.lib;uxtheme.lib;dwmapi.lib;winmm.lib;htmlhelp.lib;psapi.lib;version.lib;Secur32.lib;Netapi32.lib;%(AdditionalDependencies) - true - Windows - true - true - - - - - MaxSpeed - true - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - MultiThreaded - true - NotUsing - Level3 - ProgramDatabase - true - stdcpp17 - - - _UNICODE;UNICODE;_WIN64;%(PreprocessorDefinitions) - - - comctl32.lib;uxtheme.lib;dwmapi.lib;winmm.lib;htmlhelp.lib;psapi.lib;version.lib;Secur32.lib.;%(AdditionalDependencies) - true - Windows - true - true @@ -193,6 +71,7 @@ true + true diff --git a/Src/Setup/__MakeFinal.bat b/Src/Setup/__MakeFinal.bat index b66af6c4f..d1b1ebbf3 100644 --- a/Src/Setup/__MakeFinal.bat +++ b/Src/Setup/__MakeFinal.bat @@ -1,5 +1,5 @@ @echo off -set PATH=C:\Program Files\7-Zip\;C:\Program Files (x86)\HTML Help Workshop;C:\Program Files (x86)\WiX Toolset v3.11\bin\;%PATH% +set PATH=C:\Program Files\7-Zip\;C:\Program Files (x86)\HTML Help Workshop;C:\Program Files (x86)\WiX Toolset v3.14\bin\;%PATH% cd %~dp0 @@ -7,7 +7,7 @@ rem Clean repository and build fresh. Will erase current changes so disabled by rem git clean -dfx rem Default version -set CS_VERSION=4.4.110 +set CS_VERSION=4.4.1000 if defined APPVEYOR_BUILD_VERSION ( set CS_VERSION=%APPVEYOR_BUILD_VERSION% diff --git a/Src/Setup/__MakeFinalAllLanguages.bat b/Src/Setup/__MakeFinalAllLanguages.bat index dfbe2a94e..161527007 100644 --- a/Src/Setup/__MakeFinalAllLanguages.bat +++ b/Src/Setup/__MakeFinalAllLanguages.bat @@ -1,7 +1,7 @@ @echo off rem This file is to create all the files required for a new release to publish -set PATH=C:\Program Files\7-Zip\;C:\Program Files (x86)\HTML Help Workshop;C:\Program Files (x86)\WiX Toolset v3.11\bin\;%PATH% +set PATH=C:\Program Files\7-Zip\;C:\Program Files (x86)\HTML Help Workshop;C:\Program Files (x86)\WiX Toolset v3.14\bin\;%PATH% cd %~dp0 @@ -9,7 +9,7 @@ rem Clean repository and build fresh. Will erase current changes so disabled by rem git clean -dfx rem Default version -set CS_VERSION=4.3.2 +set CS_VERSION=4.4.1000 if defined APPVEYOR_BUILD_VERSION ( set CS_VERSION=%APPVEYOR_BUILD_VERSION% diff --git a/Src/Setup/banner.jpg b/Src/Setup/banner.jpg index f1d2ce16c..0a5c9ec7d 100644 Binary files a/Src/Setup/banner.jpg and b/Src/Setup/banner.jpg differ diff --git a/Src/Setup/dialog.jpg b/Src/Setup/dialog.jpg index b92341cdb..29c7fdbd1 100644 Binary files a/Src/Setup/dialog.jpg and b/Src/Setup/dialog.jpg differ diff --git a/Src/Setup/dialog2.jpg b/Src/Setup/dialog2.jpg index dc0946ba9..3158905e8 100644 Binary files a/Src/Setup/dialog2.jpg and b/Src/Setup/dialog2.jpg differ diff --git a/Src/Setup/en-US/en-US.vcxproj b/Src/Setup/en-US/en-US.vcxproj index 217f5ef09..4c16e2d32 100644 --- a/Src/Setup/en-US/en-US.vcxproj +++ b/Src/Setup/en-US/en-US.vcxproj @@ -10,28 +10,27 @@ {0A60FD06-3A81-4651-A869-9850DBC115EA} enUS Win32Proj - 10.0.17134.0 + 10.0 - + DynamicLibrary - v141 + $(DefaultPlatformToolset) Unicode - - + - + ..\..\ - $(Configuration)\ + ..\..\..\build\obj\$(ProjectName)\ true false - + false Windows diff --git a/Src/Setup/resource.h b/Src/Setup/resource.h index 85076b8d8..e77b7a46d 100644 --- a/Src/Setup/resource.h +++ b/Src/Setup/resource.h @@ -8,6 +8,7 @@ #define IDS_ERR_CORRUPTED 102 #define IDR_MSI_FILE32 132 #define IDR_MSI_FILE64 164 +#define IDR_MSI_FILEARM64 165 #define IDS_ERR_INTERNAL 166 #define IDS_ERR_EXTRACT 167 #define IDR_MSI_CHECKSUM 167 diff --git a/Src/Setup/web.ico b/Src/Setup/web.ico index 1f8c01202..66d0c62c2 100644 Binary files a/Src/Setup/web.ico and b/Src/Setup/web.ico differ diff --git a/Src/Skins/ClassicSkin/ClassicSkin.vcxproj b/Src/Skins/ClassicSkin/ClassicSkin.vcxproj index 7e702bb89..4bad04b5e 100644 --- a/Src/Skins/ClassicSkin/ClassicSkin.vcxproj +++ b/Src/Skins/ClassicSkin/ClassicSkin.vcxproj @@ -10,38 +10,25 @@ {9EC23CA9-384A-4EEB-979E-69879DC1A78C} ClassicSkin Win32Proj - 10.0.17134.0 + 10.0 - + DynamicLibrary - v141 + $(DefaultPlatformToolset) Unicode - - + + - - $(SolutionDir)StartMenu\Skins\ - $(Configuration)\ - true - false + .skin Classic Skin - - - false - Windows - true - true - true - - @@ -62,4 +49,4 @@ - + \ No newline at end of file diff --git a/Src/Skins/ClassicSkin7/ClassicSkin7.vcxproj b/Src/Skins/ClassicSkin7/ClassicSkin7.vcxproj index aefd9bd61..d4894296a 100644 --- a/Src/Skins/ClassicSkin7/ClassicSkin7.vcxproj +++ b/Src/Skins/ClassicSkin7/ClassicSkin7.vcxproj @@ -10,38 +10,25 @@ {31C016FB-9EA1-4AF5-987A-37210C04DA06} ClassicSkin7 Win32Proj - 10.0.17134.0 + 10.0 - + DynamicLibrary - v141 + $(DefaultPlatformToolset) Unicode - - + + - - $(SolutionDir)StartMenu\Skins\ - $(Configuration)\ - true - false + .skin7 Classic Skin - - - false - Windows - true - true - true - - @@ -63,4 +50,4 @@ - + \ No newline at end of file diff --git a/Src/Skins/FullGlass/FullGlass.vcxproj b/Src/Skins/FullGlass/FullGlass.vcxproj index a238ff29d..2fcb42a80 100644 --- a/Src/Skins/FullGlass/FullGlass.vcxproj +++ b/Src/Skins/FullGlass/FullGlass.vcxproj @@ -10,38 +10,25 @@ {066C9721-26D5-4C4D-868E-50C2BA0A8196} FullGlass Win32Proj - 10.0.17134.0 + 10.0 - + DynamicLibrary - v141 + $(DefaultPlatformToolset) Unicode - - + + - - $(SolutionDir)StartMenu\Skins\ - $(Configuration)\ - true - false + .skin Full Glass - - - false - Windows - true - true - true - - @@ -75,4 +62,4 @@ - + \ No newline at end of file diff --git a/Src/Skins/Immersive/Immersive.rc b/Src/Skins/Immersive/Immersive.rc new file mode 100644 index 000000000..a64965d32 --- /dev/null +++ b/Src/Skins/Immersive/Immersive.rc @@ -0,0 +1,102 @@ +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +1 ICON "..\\..\\Setup\\OpenShell.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// SKIN +// + +1 SKIN "SkinDescription.txt" + +///////////////////////////////////////////////////////////////////////////// +// +// Image +// + +1 IMAGE "fullglass1.png" +2 IMAGE "submenu.png" +3 IMAGE "submenu_vertsep.png" +4 IMAGE "fullglass_pager.png" +5 IMAGE "pager_arrows.png" +6 IMAGE "pager_arrows144.png" +7 IMAGE "separator.png" +8 IMAGE "arrow.png" +9 IMAGE "search.png" +10 IMAGE "twotone_pager.png" +11 IMAGE "pin.png" +12 IMAGE "user.png" +13 IMAGE "user144.png" +14 IMAGE "fullglass2.png" +15 IMAGE "fullglass3.png" +16 IMAGE "fullglass4.png" +17 IMAGE "fullglass_selector.png" +18 IMAGE "fullglass_splitsel.png" +19 IMAGE "newsel.png" +20 IMAGE "submenu_selector.png" +21 IMAGE "submenu_splitsel.png" +22 IMAGE "arrow144.png" +23 IMAGE "submenu_pager.png" +24 IMAGE "search_arrow.png" +25 IMAGE "search_arrow144.png" +26 IMAGE "pin144.png" +27 IMAGE "fullglass_vertsep.png" +28 IMAGE "separator144.png" +29 IMAGE "submenu_vertsep144.png" +30 IMAGE "pager_arrows120.png" +32 IMAGE "arrow120.png" +33 IMAGE "search120.png" +34 IMAGE "pin120.png" +36 IMAGE "search_arrow120.png" +37 IMAGE "user120.png" +38 IMAGE "arrow_mask.png" +39 IMAGE "arrow_mask120.png" +40 IMAGE "arrow_mask144.png" +41 IMAGE "twotone1.png" +42 IMAGE "twotone2.png" +43 IMAGE "twotone3.png" +44 IMAGE "twotone4.png" +45 IMAGE "twotone5.png" +46 IMAGE "twotone6.png" +47 IMAGE "twotone7.png" +48 IMAGE "twotone8.png" +49 IMAGE "twotone9.png" +50 IMAGE "twotone10.png" +51 IMAGE "twotone11.png" +52 IMAGE "twotone12.png" +53 IMAGE "twotone13.png" +54 IMAGE "twotone14.png" +55 IMAGE "twotone_selector.png" +56 IMAGE "twotone_splitsel.png" +57 IMAGE "twotone15.png" +58 IMAGE "twotone16.png" +59 IMAGE "twotone17.png" +60 IMAGE "twotone18.png" +61 IMAGE "twotone19.png" +62 IMAGE "twotone20.png" +63 IMAGE "twotone21.png" +64 IMAGE "twotone22.png" +65 IMAGE "twotone23.png" +66 IMAGE "twotone24.png" +67 IMAGE "twotone25.png" +68 IMAGE "twotone26.png" +69 IMAGE "twotone27.png" +70 IMAGE "twotone28.png" +71 IMAGE "twotone29.png" +72 IMAGE "twotone30.png" +73 IMAGE "twotone31.png" +74 IMAGE "twotone32.png" +75 IMAGE "twotone33.png" +76 IMAGE "twotone34.png" +77 IMAGE "twotone35.png" +78 IMAGE "pin192.png" +79 IMAGE "arrow192.png" +80 IMAGE "arrow_mask192.png" +81 IMAGE "pager_arrows192.png" +82 IMAGE "search_arrow192.png" +83 IMAGE "search192.png" diff --git a/Src/Skins/Immersive/Immersive.vcxproj b/Src/Skins/Immersive/Immersive.vcxproj new file mode 100644 index 000000000..1c2baacab --- /dev/null +++ b/Src/Skins/Immersive/Immersive.vcxproj @@ -0,0 +1,44 @@ + + + + + Resource + Win32 + + + + {BD28B058-230E-42DF-9FB1-FFBB0153F498} + Immersive + Win32Proj + 10.0 + + + + DynamicLibrary + $(DefaultPlatformToolset) + Unicode + + + + + + + + + + .skin + Immersive + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Src/Skins/Immersive/Immersive.vcxproj.filters b/Src/Skins/Immersive/Immersive.vcxproj.filters new file mode 100644 index 000000000..c787fc950 --- /dev/null +++ b/Src/Skins/Immersive/Immersive.vcxproj.filters @@ -0,0 +1,28 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + + + Resource Files + + + + + Resource Files + + + \ No newline at end of file diff --git a/Src/Skins/Immersive/SkinDescription.txt b/Src/Skins/Immersive/SkinDescription.txt new file mode 100644 index 000000000..703793aa0 --- /dev/null +++ b/Src/Skins/Immersive/SkinDescription.txt @@ -0,0 +1,716 @@ +; Immersive skin + +; About - text to use in the About box for this skin. use \n for new line +About=#7111 + +; AboutIcon - the ID of an icon resource to use in the About box +AboutIcon=1 + +; Version - version of the required skin engine. Set to 2 if the skin uses any of the new features introduced in Open-Shell 1.9.0: +; * full glass +; * skinnable sub-menus +; * skinnable pager buttons +; * skinnable arrows +; Set to 3 if the skin uses any of the new features introduced in Open-Shell 4.2.1: +; * skinnable scrollbars +; * tint colors +; * start screen colors +Version=3 + +Main_opacity=region +Main2_opacity=region +Main_large_icons=1 + +Main_bitmap=$StartPrimaryText +Main_bitmap_tint2=$ImmersiveSystemBackground|$StartPrimaryText +Main_bitmap_tint3=#808080 +Main_bitmap_mask=1 +Main_bitmap_slices_X=2,1,2,2,1,2 +Main_bitmap_slices_Y=2,8,2 +Main_padding=7,7,7,7,100% + +Main_text_padding=5,2,8,2,100% +Main_icon_padding=4,4,4,4,100% + +Main_font="Segoe UI",normal,-9 + +Main_text_color=$StartPrimaryText,$StartSelectionPrimaryText,$StartPrimaryText,$StartSelectionPrimaryText + +Main_selection=$StartPrimaryText +Main_selection_mask=17 +Main_selection_tint1=$StartPrimaryText +Main_selection_slices_X=2,2,2 +Main_selection_slices_Y=2,2,2 + +Main_split_selection=$StartPrimaryText +Main_split_selection_mask=18 +Main_split_selection_tint1=$StartPrimaryText +Main_split_selection_slices_X=2,2,2,2,2,2 +Main_split_selection_slices_Y=2,2,2 + +Caption_font="Segoe UI",normal,18 +Caption_text_color=$StartPrimaryText +Caption_padding=3,3,3,12,100% + + +; Main_pager - a bitmap that contains the background for the pager buttons (the ones that scroll menus up and down) +Main_pager=$SystemAccentDark1|$StartBackground +Main_pager_tint1=$StartPrimaryText +Main_pager_tint2=$StartPrimaryText +Main_pager_mask=4 +Main_pager_slices_X=3,10,3 +Main_pager_slices_Y=3,9,3 +Main_pager_arrows=$SystemAccentDark1|$StartBackground +Main_pager_arrows_tint1=$StartPrimaryText +Main_pager_arrows_tint2=$StartPrimaryText +Main_pager_arrows_mask=5 + +; Main_arrows - bitmap for the sub-menu arrows. The top half of the image is the normal arrow and the bottom half is the selected arrow +Main_arrow=8 +Main_arrow_mask=38 +Main_arrow_tint1=$StartPrimaryText +Main_arrow_tint2=#000000 +Main_arrow_padding=6,9,100% +Main_split_arrow_padding=8,9,100% + +; Main_separator - ID of a bitmap resource to use for the main menu separator. If no value is set the system separator is used +Main_separator=$SystemAccentDark1|$StartBackground +Main_separator_tint1=$StartPrimaryText +Main_separator_mask=7 +Main_separator_slices_X=12,9,12 +Main_search_indent=16 +Main_new_selection=$SystemAccentDark1|$StartBackground +Main_new_selection_tint1=$LightInlineErrorText +Main_new_selection_mask=19 +Main_new_selection_slices_X=2,2,2 +Main_new_selection_slices_Y=2,2,2 + +; Second column + +Main2_text_color=$StartPrimaryText,$StartSelectionPrimaryText,$StartPrimaryText,$StartSelectionPrimaryText +Main2_text_padding=5,2,8,2,100% +Main2_padding=6,7,5,7,84%,100%,100%,100% +Main2_icon_padding=4,4,4,4,100% +Main2_arrow=8 +Main2_arrow_mask=38 +Main2_arrow_tint1=$StartPrimaryText +Main2_arrow_tint2=#000000 +Main2_arrow_padding=6,7,100% +Main2_selection=$StartPrimaryText +Main2_selection_mask=17 +Main2_selection_tint1=$StartPrimaryText +Main2_selection_slices_X=2,2,2 +Main2_selection_slices_Y=2,2,2 +Main2_split_selection=$StartPrimaryText +Main2_split_selection_mask=18 +Main2_split_selection_tint1=$StartPrimaryText +Main2_split_selection_slices_X=2,2,2,2,2,2 +Main2_split_selection_slices_Y=2,2,2 +Main2_new_selection=$SystemAccentDark1|$StartBackground +Main2_new_selection_tint1=$LightInlineErrorText +Main2_new_selection_mask=19 +Main2_new_selection_slices_X=2,2,2 +Main2_new_selection_slices_Y=2,2,2 +Main2_separator_mask=7 +Main2_separator_slices_X=12,9,12 +Main2_separator=$SystemAccentDark1|$StartBackground +Main2_separator_tint1=$StartPrimaryText + +; More_bitmap - a bitmap for the "more" button in search categories. set to 0 to use the default icon. set to "none" to hide the button +More_bitmap=none +Pin_bitmap=11 +Pin_bitmap_tint1=$ImmersiveSystemText|#000000 +Pin_bitmap_mask=#FF0000 + + +Search_padding=0,5,0,5,100% +Search_hint_font="Segoe UI",normal,-9 +Search_text_color=$ImmersiveSystemText|#000000,#808080 +Search_text_background=$SystemAccentDark1|$StartBackground +Search_text_background_tint1=$ImmersiveSystemBackground|$StartPrimaryText +Search_text_background_tint2=$StartPrimaryText +Search_text_background_mask=#FF1700 +Search_bitmap=9 +Search_bitmap_tint1=$StartPrimaryText +Search_bitmap_tint2=#000000 +Search_bitmap_mask=#DF2000 + +Search_arrow=24 +Search_arrow_mask=38 +Search_arrow_tint1=$ImmersiveSystemText|#000000 +Search_arrow_tint2=$ImmersiveSystemBackground|$StartPrimaryText + +;SUB-MENU SECTION - describes the look of the sub-menus + +; The width of the standard window border is subtracted from all sides +Submenu_padding=3,5,3,5,100% +Submenu_text_padding=0,2,8,2,100% +Submenu_icon_padding=8,3,8,3,100% + +; These have the same meaning as the Main_... properties +Submenu_opacity=region +Submenu_bitmap=$ImmersiveSystemBackground|$StartPrimaryText +Submenu_bitmap_tint1=#A0A0A0 +Submenu_bitmap_tint2=#808080 +Submenu_bitmap_tint3=$StartPrimaryText +Submenu_bitmap_mask=2 +Submenu_bitmap_slices_X=4,4,4 +Submenu_bitmap_slices_Y=4,4,4 + +Submenu_font="Segoe UI",normal,-9 +Submenu_text_color=$ImmersiveSystemText|#000000,$ImmersiveSystemText|#000000,#7F7F7F,#7F7F7F +Submenu_selection=$ImmersiveSystemBackground|$StartPrimaryText +Submenu_selection_mask=20 +Submenu_selection_slices_X=2,2,2 +Submenu_selection_slices_Y=2,2,2 +Submenu_selection_tint1=$StartPrimaryText +Submenu_selection_tint2=$ImmersiveSystemText|#000000 +Submenu_split_selection=$ImmersiveSystemBackground|$StartPrimaryText +Submenu_split_selection_mask=21 +Submenu_split_selection_slices_X=2,2,2,2,2,2 +Submenu_split_selection_slices_Y=2,2,2 +Submenu_split_selection_tint1=$StartPrimaryText + +Submenu_pager=$ImmersiveSystemBackground|$StartPrimaryText +Submenu_pager_tint1=$StartPrimaryText +Submenu_pager_tint2=$ImmersiveSystemText|#000000 +Submenu_pager_mask=23 +Submenu_pager_slices_X=3,10,3 +Submenu_pager_slices_Y=3,9,3 +Submenu_pager_arrows=$SystemAccentDark1|$StartBackground +Submenu_pager_arrows_tint1=$ImmersiveSystemText|#000000 +Submenu_pager_arrows_tint2=$ImmersiveSystemText|#000000 +Submenu_pager_arrows_mask=5 + +Submenu_arrow=8 +Submenu_arrow_mask=38 +Submenu_arrow_tint1=$ImmersiveSystemText|#000000 +Submenu_arrow_tint2=$ImmersiveSystemBackground|$StartPrimaryText +Submenu_arrow_padding=3,6,100% +Submenu_split_arrow_padding=5,6,100% +Submenu_separator=$SystemAccentDark1|$StartBackground +Submenu_separator_tint1=$ImmersiveSystemText|#000000 +Submenu_separator_mask=7 +Submenu_separator_slices_X=12,9,12 +Submenu_separator_font="Segoe UI Semibold",normal,-9 +Submenu_separator_text_padding=8,3,0,5,100% +Submenu_separator_text_color=$ImmersiveSystemText|#000000,$ImmersiveSystemText|#000000 +Submenu_separator_icon_padding=10,0,2,0,100% +Submenu_separator_split_font="Segoe UI Semibold",normal,-9 +Submenu_new_selection=$SystemAccentDark1|$StartBackground +Submenu_new_selection_tint1=$LightInlineErrorText +Submenu_new_selection_mask=19 +Submenu_new_selection_slices_X=2,2,2 +Submenu_new_selection_slices_Y=2,2,2 + +Submenu_separatorV=$SystemAccentDark1|$StartBackground +Submenu_separatorV_tint1=$ImmersiveSystemText|#000000 +Submenu_separatorV_mask=3 +Submenu_separatorV_slices_Y=12,9,12 + + +; OPTIONS + +OPTION RADIOGROUP=#7039,0,LIGHT|DARK|AUTO +OPTION LIGHT=#7040,0 +OPTION DARK=#7041,0 +OPTION AUTO=#7042,1 +OPTION NO_ICONS=#7008,1, TWO_COLUMNS +OPTION CAPTION=#7003,0, NOT TWO_COLUMNS, 0 +OPTION USER_IMAGE=#7014,0 +OPTION USER_NAME=#7015,1 +OPTION CENTER_NAME=#7004,0, USER_NAME, 0 +OPTION SMALL_ICONS=#7011,0 +OPTION OPAQUE=#7009,0 +OPTION DISABLE_MASK=#7005,0 +OPTION_NUMBER CUSTOM_TEXT_SIZE=#7038,0,TRUE,12 +OPTION BLACK_TEXT=#7002,0 +OPTION BLACK_FRAMES=#7001,0 +OPTION RADIOGROUP=#7043,0,TRANSPARENT_LESS|TRANSPARENT_MORE +OPTION TRANSPARENT_LESS=#7044,1 +OPTION TRANSPARENT_MORE=#7045,0 + +Classic1_options=LIGHT, DARK, AUTO, CAPTION, USER_IMAGE, USER_NAME, CENTER_NAME, SMALL_ICONS, OPAQUE, DISABLE_MASK, CUSTOM_TEXT_SIZE, BLACK_TEXT, BLACK_FRAMES, TRANSPARENT_LESS, TRANSPARENT_MORE +Classic2_options=LIGHT, DARK, AUTO, NO_ICONS, USER_IMAGE, USER_NAME, CENTER_NAME, SMALL_ICONS, OPAQUE, DISABLE_MASK, CUSTOM_TEXT_SIZE, BLACK_TEXT, BLACK_FRAMES, TRANSPARENT_LESS, TRANSPARENT_MORE +AllPrograms_options=CUSTOM_TEXT_SIZE + +[NOT CAPTION] +Main_bitmap_mask=14 +Main_bitmap_slices_X=0,0,0,4,4,4 + + +[SMALL_ICONS] +Main_large_icons=0 + + +[TWO_COLUMNS] +Main_bitmap_mask=14 +Main_bitmap_slices_X=2,2,2,2,2,2 +Main_separatorV=$SystemAccentDark1|$StartBackground +Main_separatorV_tint1=$StartPrimaryText +Main_separatorV_mask=27 +Main_separatorV_slices_Y=12,9,12 + + +[USER_IMAGE] +; User_image_size - the size of the user image to use. Default is 0, which means the user image is not displayed +; The size must be compatible with the size of the frame bitmap User_bitmap. The value is usually 48 +User_image_size=48 +User_mask=12 + +; User_frame_position - horizontal and vertical position of the user image frame in the main menu. +; Positive numbers mean offset from the left and the top. Negative numbers mean offset from the bottom and the right +; The horizontal position can also be "center", "center1" and "center2" to center the image relative to the whole menu or to the first or second column +User_frame_position=10,10,100% + +[USER_NAME] +User_name_position=75,10,-10,50,100% +User_name_align=left +User_text_color=$StartPrimaryText +User_font="Segoe UI Semibold",normal,18,100% +User_glow_size=0 + +[120_DPI] +Main_pager_arrows_mask=30 +Submenu_pager_arrows_mask=30 +Main_arrow=32 +Main2_arrow=32 +Submenu_arrow=32 +Search_arrow=36 +Pin_bitmap=34 +Search_bitmap=33 +Main_arrow_mask=39 +Main2_arrow_mask=39 +Search_arrow_mask=39 +Submenu_arrow_mask=39 + +[120_DPI AND USER_IMAGE] +User_mask=37 +User_image_size=60 + +[HIGH_DPI] +Main_pager_arrows_mask=6 +Submenu_pager_arrows_mask=6 +Main_arrow=22 +Main2_arrow=22 +Submenu_arrow=22 +Search_arrow=25 +Pin_bitmap=26 +Main_separator_mask=28 +Main2_separator_mask=28 +Submenu_separator_mask=28 +Submenu_separatorV_mask=29 +Main_arrow_mask=40 +Main2_arrow_mask=40 +Search_arrow_mask=40 +Submenu_arrow_mask=40 +User_frame_position=10,15,100%,0% + +[HIGH_DPI AND USER_IMAGE] +User_mask=13 +User_image_size=72 + +[USER_NAME AND HIGH_DPI] +User_name_position=75,15,-10,75,100%,0%,100%,0% + + +; NO CAPTION +[USER_IMAGE] +Main_padding=7,73,7,7,100% +User_name_position=70,15,-15,55,100% + +[USER_NAME AND NOT USER_IMAGE] +Main_padding=7,47,7,7,100% +User_name_position=15,5,-15,45,100% + +[USER_IMAGE AND HIGH_DPI] +Main_padding=7,110,7,7,100%,0%,100%,100% +User_name_position=90,23,-15,83,31%,0%,100%,0% + +[USER_NAME AND NOT USER_IMAGE AND HIGH_DPI] +Main_padding=7,71,7,7,100%,0%,100%,100% +User_name_position=15,8,-15,68,100%,0%,100%,0% + + +; CAPTION +[USER_IMAGE AND NOT TWO_COLUMNS AND CAPTION] +User_frame_position=39,10,100% +User_name_position=99,15,-15,55,100% +Main_padding=7,73,7,7,100% + +[USER_NAME AND NOT USER_IMAGE AND NOT TWO_COLUMNS AND CAPTION] +User_name_position=44,5,-15,45,100% +Main_padding=7,47,7,7,100% + +[USER_IMAGE AND NOT TWO_COLUMNS AND CAPTION AND HIGH_DPI] +User_frame_position=39,15,100%,0% +User_name_position=117,23,-15,83,51%,0%,100%,0% +Main_padding=7,110,7,7,100%,0%,100%,100% + +[USER_NAME AND NOT USER_IMAGE AND NOT TWO_COLUMNS AND CAPTION AND HIGH_DPI] +User_name_position=44,8,-15,68,100%,0%,100%,0% +Main_padding=7,71,7,7,100%,0%,100%,100% + + +; TWO COLUMNS +[USER_IMAGE AND TWO_COLUMNS] +Main2_padding=6,73,5,7,84%,100%,100%,100% + +[USER_NAME AND NOT USER_IMAGE AND TWO_COLUMNS] +Main2_padding=6,47,5,7,84%,100%,100%,100% + +[USER_IMAGE AND TWO_COLUMNS AND HIGH_DPI] +Main2_padding=6,110,5,7,84%,0%,100%,100% + +[USER_NAME AND NOT USER_IMAGE AND TWO_COLUMNS AND HIGH_DPI] +Main2_padding=6,71,5,7,84%,0%,100%,100% + + +[CENTER_NAME] +User_name_align=center + +[NOT USER_NAME] +User_name_position=0,0,0,0 + +[USER_NAME AND 240_DPI] +User_font="Segoe UI Semibold",normal,45 + +[NO_ICONS] +Main_no_icons2=1 +Main2_text_padding=1,8,8,9,100% +Main2_icon_padding=4,4,3,4,100% + +[NO_ICONS AND SMALL_ICONS] +Main2_text_padding=1,4,8,5,100% + +[TOUCH_ENABLED AND NOT SMALL_ICONS] +Submenu_separator_icon_padding=10,8,2,8,100% +Main_arrow_padding=7,10,100% +Main_split_arrow_padding=9,10,100% +Main2_arrow_padding=9,10,100% + +[NOT OPAQUE] +Main_opacity=fullglass +Main2_opacity=fullglass + +Main_bitmap_mask=15 + +[NOT OPAQUE AND NOT CAPTION] +Main_bitmap_mask=16 + +[NOT OPAQUE AND TWO_COLUMNS] +Main_bitmap_mask=16 + +[DISABLE_MASK] +Main_bitmap_tint1=#545454 + +[CUSTOM_TEXT_SIZE] +Main_font="Segoe UI",normal,@CUSTOM_TEXT_SIZE@ +Search_hint_font="Segoe UI",normal,@CUSTOM_TEXT_SIZE@ +Submenu_font="Segoe UI",normal,@CUSTOM_TEXT_SIZE@ +Submenu_separator_font="Segoe UI Semibold",normal,@CUSTOM_TEXT_SIZE@ +Submenu_separator_split_font="Segoe UI Semibold",normal,@CUSTOM_TEXT_SIZE@ + +[BLACK_TEXT] +Main_text_color=#000000,#000000,#000000,#000000 +Main2_text_color=#000000,#000000,#000000,#000000 +Caption_text_color=#000000 +User_text_color=#000000 +Main_arrow_tint1=#000000 +Main_arrow_tint2=$StartPrimaryText +Main2_arrow_tint1=#000000 +Main2_arrow_tint2=$StartPrimaryText +Search_bitmap_tint1=#000000 +Search_bitmap_tint2=$StartPrimaryText +Main_separator_tint1=#000000 +Main_separatorV_tint1=#000000 +Main_pager_arrows_tint1=#000000 +Main_pager_arrows_tint2=#000000 +Main2_separator_tint1=#000000 + +[BLACK_FRAMES] +Main_bitmap=#000000 +Main_selection=#000000 +Main_split_selection=#000000 +Main2_selection=#000000 +Main2_split_selection=#000000 +Main_pager_tint2=#000000 + + +[TRANSPARENT_LESS] +Main_text_color=$ImmersiveSystemText|#000000,$ImmersiveSystemText|#000000,#7F7F7F,#7F7F7F +Main_separator_tint1=$ImmersiveSystemText|#000000 +Main_arrow_tint1=$ImmersiveSystemText|#000000 +Main_arrow_tint2=$ImmersiveSystemBackground|$StartPrimaryText +Main_pager_arrows_tint1=$ImmersiveSystemText|#000000 +Main_pager_arrows_tint2=$ImmersiveSystemText|#000000 +Main_bitmap=$StartPrimaryText +Search_bitmap_tint1=$ImmersiveSystemText|#000000 +Search_bitmap_tint2=$ImmersiveSystemBackground|$StartPrimaryText +Main_separatorV=none +Main_separatorV_mask=none +User_text_color=$ImmersiveSystemText|#000000 +Main_selection=$ImmersiveSystemBackground|$StartPrimaryText +Main_split_selection=$ImmersiveSystemBackground|$StartPrimaryText +Main_selection_mask=55 +Main_split_selection_mask=56 +Main_bitmap_mask=57 +Main_pager_mask=10 +Main_pager=$ImmersiveSystemBackground|$StartPrimaryText +Main_pager_tint1=$StartPrimaryText + +[TRANSPARENT_LESS AND NOT OPAQUE] +Main_opacity=glass +Main2_opacity=fullglass +Main_bitmap_mask=58 + +[TRANSPARENT_LESS AND NOT CAPTION] +Main_bitmap_mask=71 + +[TRANSPARENT_LESS AND TWO_COLUMNS] +Main_bitmap_mask=41 +Main2_padding=5,7,5,7,100% + +[TRANSPARENT_LESS AND TWO_COLUMNS AND NOT OPAQUE] +Main_bitmap_mask=42 + + + + + + +[TRANSPARENT_LESS AND USER_NAME AND NOT USER_IMAGE] +Main_bitmap_slices_Y=49,8,2 +Main_bitmap_mask=59 +Main_padding=7,54,7,7,100% + +[TRANSPARENT_LESS AND USER_NAME AND NOT USER_IMAGE AND NOT OPAQUE] +Main_bitmap_mask=60 + +[TRANSPARENT_LESS AND USER_IMAGE] +Main_bitmap_slices_Y=75,8,2 +Main_padding=7,80,7,7,100% +Main_bitmap_mask=61 + +[TRANSPARENT_LESS AND USER_IMAGE AND NOT OPAQUE] +Main_bitmap_mask=62 + + + + + + +[TRANSPARENT_LESS AND USER_NAME AND NOT USER_IMAGE AND 120_DPI] +Main_bitmap_slices_Y=61,8,2 +Main_bitmap_mask=63 + +[TRANSPARENT_LESS AND USER_NAME AND NOT USER_IMAGE AND NOT OPAQUE AND 120_DPI] +Main_bitmap_mask=64 + +[TRANSPARENT_LESS AND USER_IMAGE AND 120_DPI] +Main_bitmap_slices_Y=93,8,2 +Main_bitmap_mask=65 + +[TRANSPARENT_LESS AND USER_IMAGE AND NOT OPAQUE AND 120_DPI] +Main_bitmap_mask=66 + + + + + + +[TRANSPARENT_LESS AND USER_NAME AND NOT USER_IMAGE AND HIGH_DPI] +Main_bitmap_slices_Y=73,8,2 +Main_padding=7,78,7,7,100%,9%,100%,100% +Main_bitmap_mask=67 + +[TRANSPARENT_LESS AND USER_NAME AND NOT USER_IMAGE AND NOT OPAQUE AND HIGH_DPI] +Main_bitmap_mask=68 + +[TRANSPARENT_LESS AND USER_IMAGE AND HIGH_DPI] +Main_bitmap_slices_Y=112,8,2 +Main_padding=7,117,7,7,100%,6%,100%,100% +Main_bitmap_mask=69 + +[TRANSPARENT_LESS AND USER_IMAGE AND NOT OPAQUE AND HIGH_DPI] +Main_bitmap_mask=70 + + + + + + +[TRANSPARENT_LESS AND USER_NAME AND NOT USER_IMAGE AND NOT CAPTION] +Main_bitmap_mask=72 + +[TRANSPARENT_LESS AND USER_IMAGE AND NOT CAPTION] +Main_bitmap_mask=73 + + + + + + +[TRANSPARENT_LESS AND USER_NAME AND NOT USER_IMAGE AND 120_DPI AND NOT CAPTION] +Main_bitmap_mask=74 + +[TRANSPARENT_LESS AND USER_IMAGE AND 120_DPI AND NOT CAPTION] +Main_bitmap_mask=75 + + + + + + +[TRANSPARENT_LESS AND USER_NAME AND NOT USER_IMAGE AND HIGH_DPI AND NOT CAPTION] +Main_bitmap_mask=76 + +[TRANSPARENT_LESS AND USER_IMAGE AND HIGH_DPI AND NOT CAPTION] +Main_bitmap_mask=77 + + + + + + + + + + + + + + + + + + +[TRANSPARENT_LESS AND TWO_COLUMNS AND USER_NAME AND NOT USER_IMAGE] +Main2_padding=5,54,5,7,100% +Main_bitmap_mask=43 + +[TRANSPARENT_LESS AND TWO_COLUMNS AND USER_NAME AND NOT USER_IMAGE AND NOT OPAQUE] +Main_bitmap_mask=44 + +[TRANSPARENT_LESS AND TWO_COLUMNS AND USER_IMAGE] +Main2_padding=5,80,5,7,100% +Main_bitmap_mask=45 + +[TRANSPARENT_LESS AND TWO_COLUMNS AND USER_IMAGE AND NOT OPAQUE] +Main_bitmap_mask=46 + + +[TRANSPARENT_LESS AND TWO_COLUMNS AND USER_NAME AND NOT USER_IMAGE AND 120_DPI] +Main_bitmap_mask=47 + +[TRANSPARENT_LESS AND TWO_COLUMNS AND USER_NAME AND NOT USER_IMAGE AND NOT OPAQUE AND 120_DPI] +Main_bitmap_mask=48 + +[TRANSPARENT_LESS AND TWO_COLUMNS AND USER_IMAGE AND 120_DPI] +Main_bitmap_mask=49 + +[TRANSPARENT_LESS AND TWO_COLUMNS AND USER_IMAGE AND NOT OPAQUE AND 120_DPI] +Main_bitmap_mask=50 + + +[TRANSPARENT_LESS AND TWO_COLUMNS AND USER_NAME AND NOT USER_IMAGE AND HIGH_DPI] +Main2_padding=5,78,5,7,100%,9%,100%,100% +Main_bitmap_mask=51 + +[TRANSPARENT_LESS AND TWO_COLUMNS AND USER_NAME AND NOT USER_IMAGE AND NOT OPAQUE AND HIGH_DPI] +Main_bitmap_mask=52 + +[TRANSPARENT_LESS AND TWO_COLUMNS AND USER_IMAGE AND HIGH_DPI] +Main2_padding=5,117,5,7,100%,6%,100%,100% +Main_bitmap_mask=53 + +[TRANSPARENT_LESS AND TWO_COLUMNS AND USER_IMAGE AND NOT OPAQUE AND HIGH_DPI] +Main_bitmap_mask=54 + + +[HIGH_DPI AND NOT 144_DPI AND NOT 168_DPI] +Pin_bitmap=78 +Main_arrow=79 +Main2_arrow=79 +Submenu_arrow=79 +Main_arrow_mask=80 +Main2_arrow_mask=80 +Submenu_arrow_mask=80 +Main_pager_arrows_mask=81 +Submenu_pager_arrows_mask=81 +Search_arrow=82 +Search_arrow_mask=80 +Search_bitmap=83 + + +[LIGHT] +Main_bitmap_tint2=#FFFFFF +Search_text_background_tint1=#FFFFFF +Search_arrow_tint2=#FFFFFF +Submenu_bitmap=#FFFFFF +Submenu_selection=#FFFFFF +Submenu_split_selection=#FFFFFF +Submenu_pager=#FFFFFF +Submenu_arrow_tint2=#FFFFFF +Pin_bitmap_tint1=#000000 +Search_text_color=#000000,#808080 +Search_arrow_tint1=#000000 +Submenu_text_color=#000000,#000000,#7F7F7F,#7F7F7F +Submenu_selection_tint2=#000000 +Submenu_pager_tint2=#000000 +Submenu_pager_arrows_tint1=#000000 +Submenu_pager_arrows_tint2=#000000 +Submenu_arrow_tint1=#000000 +Submenu_separator_tint1=#000000 +Submenu_separator_text_color=#000000,#000000 +Submenu_separatorV_tint1=#000000 + +[LIGHT AND TRANSPARENT_LESS] +Main_arrow_tint2=#FFFFFF +Search_bitmap_tint2=#FFFFFF +Main_selection=#FFFFFF +Main_split_selection=#FFFFFF +Main_pager=#FFFFFF +Main_text_color=#000000,#000000,#7F7F7F,#7F7F7F +Main_separator_tint1=#000000 +Main_arrow_tint1=#000000 +Main_pager_arrows_tint1=#000000 +Main_pager_arrows_tint2=#000000 +Search_bitmap_tint1=#000000 +User_text_color=#000000 + +[DARK] +Main_bitmap_tint2=#000000 +Search_text_background_tint1=#000000 +Search_arrow_tint2=#000000 +Submenu_bitmap=#000000 +Submenu_selection=#000000 +Submenu_split_selection=#000000 +Submenu_pager=#000000 +Submenu_arrow_tint2=#000000 +Pin_bitmap_tint1=#FFFFFF +Search_text_color=#FFFFFF,#808080 +Search_arrow_tint1=#FFFFFF +Submenu_text_color=#FFFFFF,#FFFFFF,#7F7F7F,#7F7F7F +Submenu_selection_tint2=#FFFFFF +Submenu_pager_tint2=#FFFFFF +Submenu_pager_arrows_tint1=#FFFFFF +Submenu_pager_arrows_tint2=#FFFFFF +Submenu_arrow_tint1=#FFFFFF +Submenu_separator_tint1=#FFFFFF +Submenu_separator_text_color=#FFFFFF,#FFFFFF +Submenu_separatorV_tint1=#FFFFFF + +[DARK AND TRANSPARENT_LESS] +Main_arrow_tint2=#000000 +Search_bitmap_tint2=#000000 +Main_selection=#000000 +Main_split_selection=#000000 +Main_pager=#000000 +Main_text_color=#FFFFFF,#FFFFFF,#7F7F7F,#7F7F7F +Main_separator_tint1=#FFFFFF +Main_arrow_tint1=#FFFFFF +Main_pager_arrows_tint1=#FFFFFF +Main_pager_arrows_tint2=#FFFFFF +Search_bitmap_tint1=#FFFFFF +User_text_color=#FFFFFF diff --git a/Src/Skins/Immersive/arrow.png b/Src/Skins/Immersive/arrow.png new file mode 100644 index 000000000..f02ec4fc7 Binary files /dev/null and b/Src/Skins/Immersive/arrow.png differ diff --git a/Src/Skins/Immersive/arrow120.png b/Src/Skins/Immersive/arrow120.png new file mode 100644 index 000000000..b3f0709b5 Binary files /dev/null and b/Src/Skins/Immersive/arrow120.png differ diff --git a/Src/Skins/Immersive/arrow144.png b/Src/Skins/Immersive/arrow144.png new file mode 100644 index 000000000..20b2d58d1 Binary files /dev/null and b/Src/Skins/Immersive/arrow144.png differ diff --git a/Src/Skins/Immersive/arrow192.png b/Src/Skins/Immersive/arrow192.png new file mode 100644 index 000000000..4b478dabe Binary files /dev/null and b/Src/Skins/Immersive/arrow192.png differ diff --git a/Src/Skins/Immersive/arrow_mask.png b/Src/Skins/Immersive/arrow_mask.png new file mode 100644 index 000000000..91cff4ee2 Binary files /dev/null and b/Src/Skins/Immersive/arrow_mask.png differ diff --git a/Src/Skins/Immersive/arrow_mask120.png b/Src/Skins/Immersive/arrow_mask120.png new file mode 100644 index 000000000..5edd39fec Binary files /dev/null and b/Src/Skins/Immersive/arrow_mask120.png differ diff --git a/Src/Skins/Immersive/arrow_mask144.png b/Src/Skins/Immersive/arrow_mask144.png new file mode 100644 index 000000000..d62906459 Binary files /dev/null and b/Src/Skins/Immersive/arrow_mask144.png differ diff --git a/Src/Skins/Immersive/arrow_mask192.png b/Src/Skins/Immersive/arrow_mask192.png new file mode 100644 index 000000000..93fc0742d Binary files /dev/null and b/Src/Skins/Immersive/arrow_mask192.png differ diff --git a/Src/Skins/Immersive/fullglass1.png b/Src/Skins/Immersive/fullglass1.png new file mode 100644 index 000000000..f6ac7f240 Binary files /dev/null and b/Src/Skins/Immersive/fullglass1.png differ diff --git a/Src/Skins/Immersive/fullglass2.png b/Src/Skins/Immersive/fullglass2.png new file mode 100644 index 000000000..2aed9da07 Binary files /dev/null and b/Src/Skins/Immersive/fullglass2.png differ diff --git a/Src/Skins/Immersive/fullglass3.png b/Src/Skins/Immersive/fullglass3.png new file mode 100644 index 000000000..ecbe535d7 Binary files /dev/null and b/Src/Skins/Immersive/fullglass3.png differ diff --git a/Src/Skins/Immersive/fullglass4.png b/Src/Skins/Immersive/fullglass4.png new file mode 100644 index 000000000..4f0ec729e Binary files /dev/null and b/Src/Skins/Immersive/fullglass4.png differ diff --git a/Src/Skins/Immersive/fullglass_pager.png b/Src/Skins/Immersive/fullglass_pager.png new file mode 100644 index 000000000..bad0b5645 Binary files /dev/null and b/Src/Skins/Immersive/fullglass_pager.png differ diff --git a/Src/Skins/Immersive/fullglass_selector.png b/Src/Skins/Immersive/fullglass_selector.png new file mode 100644 index 000000000..ba3dafc8f Binary files /dev/null and b/Src/Skins/Immersive/fullglass_selector.png differ diff --git a/Src/Skins/Immersive/fullglass_splitsel.png b/Src/Skins/Immersive/fullglass_splitsel.png new file mode 100644 index 000000000..7b889a86b Binary files /dev/null and b/Src/Skins/Immersive/fullglass_splitsel.png differ diff --git a/Src/Skins/Immersive/fullglass_vertsep.png b/Src/Skins/Immersive/fullglass_vertsep.png new file mode 100644 index 000000000..f39f1c2da Binary files /dev/null and b/Src/Skins/Immersive/fullglass_vertsep.png differ diff --git a/Src/Skins/Immersive/newsel.png b/Src/Skins/Immersive/newsel.png new file mode 100644 index 000000000..f98a29aaa Binary files /dev/null and b/Src/Skins/Immersive/newsel.png differ diff --git a/Src/Skins/Immersive/pager_arrows.png b/Src/Skins/Immersive/pager_arrows.png new file mode 100644 index 000000000..ccb3dbdf9 Binary files /dev/null and b/Src/Skins/Immersive/pager_arrows.png differ diff --git a/Src/Skins/Immersive/pager_arrows120.png b/Src/Skins/Immersive/pager_arrows120.png new file mode 100644 index 000000000..6f54f327f Binary files /dev/null and b/Src/Skins/Immersive/pager_arrows120.png differ diff --git a/Src/Skins/Immersive/pager_arrows144.png b/Src/Skins/Immersive/pager_arrows144.png new file mode 100644 index 000000000..903aa28cc Binary files /dev/null and b/Src/Skins/Immersive/pager_arrows144.png differ diff --git a/Src/Skins/Immersive/pager_arrows192.png b/Src/Skins/Immersive/pager_arrows192.png new file mode 100644 index 000000000..569b978c1 Binary files /dev/null and b/Src/Skins/Immersive/pager_arrows192.png differ diff --git a/Src/Skins/Immersive/pin.png b/Src/Skins/Immersive/pin.png new file mode 100644 index 000000000..a42ccfd32 Binary files /dev/null and b/Src/Skins/Immersive/pin.png differ diff --git a/Src/Skins/Immersive/pin120.png b/Src/Skins/Immersive/pin120.png new file mode 100644 index 000000000..f3c547629 Binary files /dev/null and b/Src/Skins/Immersive/pin120.png differ diff --git a/Src/Skins/Immersive/pin144.png b/Src/Skins/Immersive/pin144.png new file mode 100644 index 000000000..92175d9fe Binary files /dev/null and b/Src/Skins/Immersive/pin144.png differ diff --git a/Src/Skins/Immersive/pin192.png b/Src/Skins/Immersive/pin192.png new file mode 100644 index 000000000..0c267ee93 Binary files /dev/null and b/Src/Skins/Immersive/pin192.png differ diff --git a/Src/Skins/Immersive/search.png b/Src/Skins/Immersive/search.png new file mode 100644 index 000000000..27e7e7293 Binary files /dev/null and b/Src/Skins/Immersive/search.png differ diff --git a/Src/Skins/Immersive/search120.png b/Src/Skins/Immersive/search120.png new file mode 100644 index 000000000..c82740135 Binary files /dev/null and b/Src/Skins/Immersive/search120.png differ diff --git a/Src/Skins/Immersive/search192.png b/Src/Skins/Immersive/search192.png new file mode 100644 index 000000000..e4218af81 Binary files /dev/null and b/Src/Skins/Immersive/search192.png differ diff --git a/Src/Skins/Immersive/search_arrow.png b/Src/Skins/Immersive/search_arrow.png new file mode 100644 index 000000000..2d17e5df5 Binary files /dev/null and b/Src/Skins/Immersive/search_arrow.png differ diff --git a/Src/Skins/Immersive/search_arrow120.png b/Src/Skins/Immersive/search_arrow120.png new file mode 100644 index 000000000..838589c54 Binary files /dev/null and b/Src/Skins/Immersive/search_arrow120.png differ diff --git a/Src/Skins/Immersive/search_arrow144.png b/Src/Skins/Immersive/search_arrow144.png new file mode 100644 index 000000000..dc6db43d9 Binary files /dev/null and b/Src/Skins/Immersive/search_arrow144.png differ diff --git a/Src/Skins/Immersive/search_arrow192.png b/Src/Skins/Immersive/search_arrow192.png new file mode 100644 index 000000000..f0b59b716 Binary files /dev/null and b/Src/Skins/Immersive/search_arrow192.png differ diff --git a/Src/Skins/Immersive/separator.png b/Src/Skins/Immersive/separator.png new file mode 100644 index 000000000..834d5d657 Binary files /dev/null and b/Src/Skins/Immersive/separator.png differ diff --git a/Src/Skins/Immersive/separator144.png b/Src/Skins/Immersive/separator144.png new file mode 100644 index 000000000..14c565562 Binary files /dev/null and b/Src/Skins/Immersive/separator144.png differ diff --git a/Src/Skins/Immersive/submenu.png b/Src/Skins/Immersive/submenu.png new file mode 100644 index 000000000..b35a6dcb7 Binary files /dev/null and b/Src/Skins/Immersive/submenu.png differ diff --git a/Src/Skins/Immersive/submenu_pager.png b/Src/Skins/Immersive/submenu_pager.png new file mode 100644 index 000000000..78f4d01a4 Binary files /dev/null and b/Src/Skins/Immersive/submenu_pager.png differ diff --git a/Src/Skins/Immersive/submenu_selector.png b/Src/Skins/Immersive/submenu_selector.png new file mode 100644 index 000000000..0352d006d Binary files /dev/null and b/Src/Skins/Immersive/submenu_selector.png differ diff --git a/Src/Skins/Immersive/submenu_splitsel.png b/Src/Skins/Immersive/submenu_splitsel.png new file mode 100644 index 000000000..22c73f9cb Binary files /dev/null and b/Src/Skins/Immersive/submenu_splitsel.png differ diff --git a/Src/Skins/Immersive/submenu_vertsep.png b/Src/Skins/Immersive/submenu_vertsep.png new file mode 100644 index 000000000..e962d779d Binary files /dev/null and b/Src/Skins/Immersive/submenu_vertsep.png differ diff --git a/Src/Skins/Immersive/submenu_vertsep144.png b/Src/Skins/Immersive/submenu_vertsep144.png new file mode 100644 index 000000000..664343bbf Binary files /dev/null and b/Src/Skins/Immersive/submenu_vertsep144.png differ diff --git a/Src/Skins/Immersive/twotone1.png b/Src/Skins/Immersive/twotone1.png new file mode 100644 index 000000000..061dfd0a4 Binary files /dev/null and b/Src/Skins/Immersive/twotone1.png differ diff --git a/Src/Skins/Immersive/twotone10.png b/Src/Skins/Immersive/twotone10.png new file mode 100644 index 000000000..5b7ae621a Binary files /dev/null and b/Src/Skins/Immersive/twotone10.png differ diff --git a/Src/Skins/Immersive/twotone11.png b/Src/Skins/Immersive/twotone11.png new file mode 100644 index 000000000..416fc6895 Binary files /dev/null and b/Src/Skins/Immersive/twotone11.png differ diff --git a/Src/Skins/Immersive/twotone12.png b/Src/Skins/Immersive/twotone12.png new file mode 100644 index 000000000..82a54baa9 Binary files /dev/null and b/Src/Skins/Immersive/twotone12.png differ diff --git a/Src/Skins/Immersive/twotone13.png b/Src/Skins/Immersive/twotone13.png new file mode 100644 index 000000000..684729d88 Binary files /dev/null and b/Src/Skins/Immersive/twotone13.png differ diff --git a/Src/Skins/Immersive/twotone14.png b/Src/Skins/Immersive/twotone14.png new file mode 100644 index 000000000..c71845ebe Binary files /dev/null and b/Src/Skins/Immersive/twotone14.png differ diff --git a/Src/Skins/Immersive/twotone15.png b/Src/Skins/Immersive/twotone15.png new file mode 100644 index 000000000..726f60087 Binary files /dev/null and b/Src/Skins/Immersive/twotone15.png differ diff --git a/Src/Skins/Immersive/twotone16.png b/Src/Skins/Immersive/twotone16.png new file mode 100644 index 000000000..6cd632444 Binary files /dev/null and b/Src/Skins/Immersive/twotone16.png differ diff --git a/Src/Skins/Immersive/twotone17.png b/Src/Skins/Immersive/twotone17.png new file mode 100644 index 000000000..ec6cbd386 Binary files /dev/null and b/Src/Skins/Immersive/twotone17.png differ diff --git a/Src/Skins/Immersive/twotone18.png b/Src/Skins/Immersive/twotone18.png new file mode 100644 index 000000000..5d51b9293 Binary files /dev/null and b/Src/Skins/Immersive/twotone18.png differ diff --git a/Src/Skins/Immersive/twotone19.png b/Src/Skins/Immersive/twotone19.png new file mode 100644 index 000000000..cf278c8ed Binary files /dev/null and b/Src/Skins/Immersive/twotone19.png differ diff --git a/Src/Skins/Immersive/twotone2.png b/Src/Skins/Immersive/twotone2.png new file mode 100644 index 000000000..b93c73725 Binary files /dev/null and b/Src/Skins/Immersive/twotone2.png differ diff --git a/Src/Skins/Immersive/twotone20.png b/Src/Skins/Immersive/twotone20.png new file mode 100644 index 000000000..f3ac169da Binary files /dev/null and b/Src/Skins/Immersive/twotone20.png differ diff --git a/Src/Skins/Immersive/twotone21.png b/Src/Skins/Immersive/twotone21.png new file mode 100644 index 000000000..c481d3617 Binary files /dev/null and b/Src/Skins/Immersive/twotone21.png differ diff --git a/Src/Skins/Immersive/twotone22.png b/Src/Skins/Immersive/twotone22.png new file mode 100644 index 000000000..49dca7ddf Binary files /dev/null and b/Src/Skins/Immersive/twotone22.png differ diff --git a/Src/Skins/Immersive/twotone23.png b/Src/Skins/Immersive/twotone23.png new file mode 100644 index 000000000..d80b9798b Binary files /dev/null and b/Src/Skins/Immersive/twotone23.png differ diff --git a/Src/Skins/Immersive/twotone24.png b/Src/Skins/Immersive/twotone24.png new file mode 100644 index 000000000..b68f5a4d8 Binary files /dev/null and b/Src/Skins/Immersive/twotone24.png differ diff --git a/Src/Skins/Immersive/twotone25.png b/Src/Skins/Immersive/twotone25.png new file mode 100644 index 000000000..619f3f2e0 Binary files /dev/null and b/Src/Skins/Immersive/twotone25.png differ diff --git a/Src/Skins/Immersive/twotone26.png b/Src/Skins/Immersive/twotone26.png new file mode 100644 index 000000000..50547d3b5 Binary files /dev/null and b/Src/Skins/Immersive/twotone26.png differ diff --git a/Src/Skins/Immersive/twotone27.png b/Src/Skins/Immersive/twotone27.png new file mode 100644 index 000000000..99c2f4445 Binary files /dev/null and b/Src/Skins/Immersive/twotone27.png differ diff --git a/Src/Skins/Immersive/twotone28.png b/Src/Skins/Immersive/twotone28.png new file mode 100644 index 000000000..859c5adc0 Binary files /dev/null and b/Src/Skins/Immersive/twotone28.png differ diff --git a/Src/Skins/Immersive/twotone29.png b/Src/Skins/Immersive/twotone29.png new file mode 100644 index 000000000..5b7468ac0 Binary files /dev/null and b/Src/Skins/Immersive/twotone29.png differ diff --git a/Src/Skins/Immersive/twotone3.png b/Src/Skins/Immersive/twotone3.png new file mode 100644 index 000000000..a953d80db Binary files /dev/null and b/Src/Skins/Immersive/twotone3.png differ diff --git a/Src/Skins/Immersive/twotone30.png b/Src/Skins/Immersive/twotone30.png new file mode 100644 index 000000000..b3b71d533 Binary files /dev/null and b/Src/Skins/Immersive/twotone30.png differ diff --git a/Src/Skins/Immersive/twotone31.png b/Src/Skins/Immersive/twotone31.png new file mode 100644 index 000000000..608aad8ae Binary files /dev/null and b/Src/Skins/Immersive/twotone31.png differ diff --git a/Src/Skins/Immersive/twotone32.png b/Src/Skins/Immersive/twotone32.png new file mode 100644 index 000000000..82fb06f12 Binary files /dev/null and b/Src/Skins/Immersive/twotone32.png differ diff --git a/Src/Skins/Immersive/twotone33.png b/Src/Skins/Immersive/twotone33.png new file mode 100644 index 000000000..788b5ccb8 Binary files /dev/null and b/Src/Skins/Immersive/twotone33.png differ diff --git a/Src/Skins/Immersive/twotone34.png b/Src/Skins/Immersive/twotone34.png new file mode 100644 index 000000000..371a06c8b Binary files /dev/null and b/Src/Skins/Immersive/twotone34.png differ diff --git a/Src/Skins/Immersive/twotone35.png b/Src/Skins/Immersive/twotone35.png new file mode 100644 index 000000000..70741ecde Binary files /dev/null and b/Src/Skins/Immersive/twotone35.png differ diff --git a/Src/Skins/Immersive/twotone4.png b/Src/Skins/Immersive/twotone4.png new file mode 100644 index 000000000..071126578 Binary files /dev/null and b/Src/Skins/Immersive/twotone4.png differ diff --git a/Src/Skins/Immersive/twotone5.png b/Src/Skins/Immersive/twotone5.png new file mode 100644 index 000000000..a52999e07 Binary files /dev/null and b/Src/Skins/Immersive/twotone5.png differ diff --git a/Src/Skins/Immersive/twotone6.png b/Src/Skins/Immersive/twotone6.png new file mode 100644 index 000000000..bdd664d65 Binary files /dev/null and b/Src/Skins/Immersive/twotone6.png differ diff --git a/Src/Skins/Immersive/twotone7.png b/Src/Skins/Immersive/twotone7.png new file mode 100644 index 000000000..f322c2b37 Binary files /dev/null and b/Src/Skins/Immersive/twotone7.png differ diff --git a/Src/Skins/Immersive/twotone8.png b/Src/Skins/Immersive/twotone8.png new file mode 100644 index 000000000..ad13e67dd Binary files /dev/null and b/Src/Skins/Immersive/twotone8.png differ diff --git a/Src/Skins/Immersive/twotone9.png b/Src/Skins/Immersive/twotone9.png new file mode 100644 index 000000000..fff9499b2 Binary files /dev/null and b/Src/Skins/Immersive/twotone9.png differ diff --git a/Src/Skins/Immersive/twotone_pager.png b/Src/Skins/Immersive/twotone_pager.png new file mode 100644 index 000000000..4febd186c Binary files /dev/null and b/Src/Skins/Immersive/twotone_pager.png differ diff --git a/Src/Skins/Immersive/twotone_selector.png b/Src/Skins/Immersive/twotone_selector.png new file mode 100644 index 000000000..fbfa1be57 Binary files /dev/null and b/Src/Skins/Immersive/twotone_selector.png differ diff --git a/Src/Skins/Immersive/twotone_splitsel.png b/Src/Skins/Immersive/twotone_splitsel.png new file mode 100644 index 000000000..81e742d32 Binary files /dev/null and b/Src/Skins/Immersive/twotone_splitsel.png differ diff --git a/Src/Skins/Immersive/user.png b/Src/Skins/Immersive/user.png new file mode 100644 index 000000000..e6c9debb6 Binary files /dev/null and b/Src/Skins/Immersive/user.png differ diff --git a/Src/Skins/Immersive/user120.png b/Src/Skins/Immersive/user120.png new file mode 100644 index 000000000..7af328221 Binary files /dev/null and b/Src/Skins/Immersive/user120.png differ diff --git a/Src/Skins/Immersive/user144.png b/Src/Skins/Immersive/user144.png new file mode 100644 index 000000000..1320316b9 Binary files /dev/null and b/Src/Skins/Immersive/user144.png differ diff --git a/Src/Skins/Immersive7/Immersive7.rc b/Src/Skins/Immersive7/Immersive7.rc new file mode 100644 index 000000000..d818aa27d --- /dev/null +++ b/Src/Skins/Immersive7/Immersive7.rc @@ -0,0 +1,93 @@ +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +1 ICON "..\\..\\Setup\\OpenShell.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// SKIN +// + +1 SKIN "SkinDescription.txt" + +///////////////////////////////////////////////////////////////////////////// +// +// Image +// + +1 IMAGE "fullglass1.png" +2 IMAGE "fullglasssearch1.png" +3 IMAGE "scrollbkg1.png" +4 IMAGE "fullglass_pager.png" +5 IMAGE "pager_arrows.png" +6 IMAGE "scrollbkg2.png" +7 IMAGE "programs.png" +8 IMAGE "arrow.png" +9 IMAGE "search.png" +10 IMAGE "twotone_pager.png" +11 IMAGE "separator.png" +12 IMAGE "user.png" +13 IMAGE "submenu_selector.png" +14 IMAGE "submenu_splitsel.png" +15 IMAGE "pin.png" +16 IMAGE "scrollbtn1.png" +17 IMAGE "scroll_arrows.png" +18 IMAGE "user144.png" +19 IMAGE "arrow144.png" +20 IMAGE "submenu_pager.png" +21 IMAGE "pager_arrows144.png" +22 IMAGE "programs144.png" +23 IMAGE "submenu.png" +24 IMAGE "submenu_vertsep.png" +25 IMAGE "fullglass2.png" +26 IMAGE "fullglasssearch2.png" +27 IMAGE "search_arrow.png" +28 IMAGE "fullglass_selector.png" +29 IMAGE "fullglass_splitsel.png" +30 IMAGE "searchbkg.png" +31 IMAGE "shutdown_selector.png" +32 IMAGE "scrollbtn2.png" +33 IMAGE "newsel.png" +34 IMAGE "search_arrow144.png" +35 IMAGE "scroll_arrows144.png" +36 IMAGE "pin144.png" +37 IMAGE "separator144.png" +38 IMAGE "submenu_vertsep144.png" +39 IMAGE "scrollthumb1.png" +40 IMAGE "scrollthumb2.png" +41 IMAGE "pager_arrows120.png" +42 IMAGE "programs120.png" +43 IMAGE "arrow120.png" +44 IMAGE "search120.png" +45 IMAGE "pin120.png" +46 IMAGE "scroll_arrows120.png" +47 IMAGE "search_arrow120.png" +48 IMAGE "user120.png" +49 IMAGE "fullglass3.png" +50 IMAGE "fullglass4.png" +51 IMAGE "arrow_mask.png" +52 IMAGE "arrow_mask120.png" +53 IMAGE "arrow_mask144.png" +54 IMAGE "twotone1.png" +55 IMAGE "twotone2.png" +56 IMAGE "twotonesearch.png" +57 IMAGE "twotonejump.png" +58 IMAGE "scrollbtn3.png" +59 IMAGE "scrollthumb3.png" +60 IMAGE "scrollbkg3.png" +61 IMAGE "twotone_selector.png" +62 IMAGE "twotone_splitsel.png" +63 IMAGE "twotone_listsel.png" +64 IMAGE "twotone_listsplitsel.png" +65 IMAGE "programs192.png" +66 IMAGE "pin192.png" +67 IMAGE "arrow192.png" +68 IMAGE "arrow_mask192.png" +69 IMAGE "pager_arrows192.png" +70 IMAGE "scroll_arrows192.png" +71 IMAGE "search_arrow192.png" +72 IMAGE "search192.png" diff --git a/Src/Skins/Immersive7/Immersive7.vcxproj b/Src/Skins/Immersive7/Immersive7.vcxproj new file mode 100644 index 000000000..d2241fabd --- /dev/null +++ b/Src/Skins/Immersive7/Immersive7.vcxproj @@ -0,0 +1,44 @@ + + + + + Resource + Win32 + + + + {75809D15-8403-420A-BBE6-05F478D88D8E} + Immersive7 + Win32Proj + 10.0 + + + + DynamicLibrary + $(DefaultPlatformToolset) + Unicode + + + + + + + + + + .skin7 + Immersive + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Src/Skins/Immersive7/Immersive7.vcxproj.filters b/Src/Skins/Immersive7/Immersive7.vcxproj.filters new file mode 100644 index 000000000..3304916c5 --- /dev/null +++ b/Src/Skins/Immersive7/Immersive7.vcxproj.filters @@ -0,0 +1,28 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + + + Resource Files + + + + + Resource Files + + + \ No newline at end of file diff --git a/Src/Skins/Immersive7/SkinDescription.txt b/Src/Skins/Immersive7/SkinDescription.txt new file mode 100644 index 000000000..0e7b51dca --- /dev/null +++ b/Src/Skins/Immersive7/SkinDescription.txt @@ -0,0 +1,748 @@ +; Immersive skin + +; About - text to use in the About box for this skin. use \n for new line +About=#7111 + +; AboutIcon - the ID of an icon resource to use in the About box +AboutIcon=1 + +; Version - version of the required skin engine. Set to 2 if the skin uses any of the new features introduced in Open-Shell 1.9.0: +; * full glass +; * skinnable sub-menus +; * skinnable pager buttons +; * skinnable arrows +; Set to 3 if the skin uses any of the new features introduced in Open-Shell 4.2.1: +; * skinnable scrollbars +; * tint colors +; * start screen colors +Version=3 + +Main_opacity=region +Main2_opacity=region +Main_large_icons=1 + +Main_bitmap=$StartPrimaryText +Main_bitmap_tint2=$ImmersiveSystemBackground|$StartPrimaryText +Main_bitmap_tint3=#808080 +Main_bitmap_mask=1 +Main_bitmap_slices_X=12,1,6,3,1,3 +Main_bitmap_slices_Y=12,10,11 +Main_padding=7,7,8,7,100%,100%,88%,100% + +Main_text_padding=5,2,8,2,100% +Main_icon_padding=4,4,4,4,100% + +Main_bitmap_search=$StartPrimaryText +Main_bitmap_search_tint2=$ImmersiveSystemBackground|$StartPrimaryText +Main_bitmap_search_tint3=#808080 +Main_bitmap_search_mask=2 +Main_bitmap_search_slices_X=13,1,12 +Main_bitmap_search_slices_Y=12,10,11 +Main_search_padding=7,7,7,7,100% + +Main_bitmap_jump=$StartPrimaryText +Main_bitmap_jump_tint2=$ImmersiveSystemBackground|$StartPrimaryText +Main_bitmap_jump_tint3=#808080 +Main_bitmap_jump_mask=1 +Main_bitmap_jump_slices_X=12,1,6,3,1,3 +Main_bitmap_jump_slices_Y=12,10,11 +Main_jump_padding=5,7,7,7,100% + +Main_font="Segoe UI",normal,-9 + +Main_text_color=$StartPrimaryText,$StartSelectionPrimaryText,$StartPrimaryText,$StartSelectionPrimaryText + +Main_selection=$StartPrimaryText +Main_selection_mask=28 +Main_selection_tint1=$StartPrimaryText +Main_selection_slices_X=2,2,2 +Main_selection_slices_Y=2,2,2 + +Main_split_selection=$StartPrimaryText +Main_split_selection_mask=29 +Main_split_selection_tint1=$StartPrimaryText +Main_split_selection_slices_X=2,2,2,2,2,2 +Main_split_selection_slices_Y=2,2,2 + +; Main_pager - a bitmap that contains the background for the pager buttons (the ones that scroll menus up and down) +Main_pager=$SystemAccentDark1|$StartBackground +Main_pager_tint1=$StartPrimaryText +Main_pager_tint2=$StartPrimaryText +Main_pager_mask=4 +Main_pager_slices_X=3,10,3 +Main_pager_slices_Y=3,9,3 +Main_pager_arrows=$SystemAccentDark1|$StartBackground +Main_pager_arrows_tint1=$StartPrimaryText +Main_pager_arrows_tint2=$StartPrimaryText +Main_pager_arrows_mask=5 + +; Main_arrows - bitmap for the sub-menu arrows. The top half of the image is the normal arrow and the bottom half is the selected arrow +Main_arrow=8 +Main_arrow_mask=51 +Main_arrow_tint1=$StartPrimaryText +Main_arrow_tint2=#000000 +Main_arrow_padding=6,9,100% +Main_split_arrow_padding=8,9,100% + +; Main_separator - ID of a bitmap resource to use for the main menu separator. If no value is set the system separator is used +Main_separator=$SystemAccentDark1|$StartBackground +Main_separator_tint1=$StartPrimaryText +Main_separator_mask=11 +Main_separator_slices_X=12,9,12 +Main_search_indent=0 +Main_new_selection=$SystemAccentDark1|$StartBackground +Main_new_selection_tint1=$LightInlineErrorText +Main_new_selection_mask=33 +Main_new_selection_slices_X=2,2,2 +Main_new_selection_slices_Y=2,2,2 + +; Second column + +Main2_text_color=$StartPrimaryText,$StartSelectionPrimaryText,$StartPrimaryText,$StartSelectionPrimaryText +Main2_text_padding=1,8,8,9,100% +Main2_padding=5,7,5,7,100% +Main2_icon_padding=4,4,3,4,100% +Main2_arrow=8 +Main2_arrow_mask=51 +Main2_arrow_tint1=$StartPrimaryText +Main2_arrow_tint2=#000000 +Main2_arrow_padding=6,7,100% +Main2_selection=$StartPrimaryText +Main2_selection_mask=28 +Main2_selection_tint1=$StartPrimaryText +Main2_selection_slices_X=2,2,2 +Main2_selection_slices_Y=2,2,2 +Main2_split_selection=$StartPrimaryText +Main2_split_selection_mask=29 +Main2_split_selection_tint1=$StartPrimaryText +Main2_split_selection_slices_X=2,2,2,2,2,2 +Main2_split_selection_slices_Y=2,2,2 +Main2_new_selection=$SystemAccentDark1|$StartBackground +Main2_new_selection_tint1=$LightInlineErrorText +Main2_new_selection_mask=33 +Main2_new_selection_slices_X=2,2,2 +Main2_new_selection_slices_Y=2,2,2 +Main2_separator_mask=11 +Main2_separator_slices_X=12,9,12 +Main2_separator=$SystemAccentDark1|$StartBackground +Main2_separator_tint1=$StartPrimaryText + +; Shutdown button + +Shutdown_selection=$StartPrimaryText +Shutdown_selection_mask=31 +Shutdown_selection_tint2=$StartPrimaryText +Shutdown_selection_slices_X=1,4,8,1,4,5 +Shutdown_selection_slices_Y=4,4,4 +Shutdown_search_selection=$StartPrimaryText +Shutdown_search_selection_mask=31 +Shutdown_search_selection_tint2=$StartPrimaryText +Shutdown_search_selection_slices_X=1,4,8,1,4,5 +Shutdown_search_selection_slices_Y=4,4,4 +Shutdown_jump_selection=$StartPrimaryText +Shutdown_jump_selection_mask=31 +Shutdown_jump_selection_tint2=$StartPrimaryText +Shutdown_jump_selection_slices_X=1,4,8,1,4,5 +Shutdown_jump_selection_slices_Y=4,4,4 +Shutdown_padding=0,7,0,4,100% +Shutdown_text_padding=8,5,10,6,100%,91%,90%,91% +Shutdown_icon_padding=5,3,-5,3,100% +Shutdown_text_color=$StartPrimaryText,$StartSelectionPrimaryText +Shutdown_search_text_color=$StartPrimaryText,$StartSelectionPrimaryText +Shutdown_jump_text_color=$StartPrimaryText,$StartSelectionPrimaryText +Shutdown_arrow=8 +Shutdown_arrow_mask=51 +Shutdown_arrow_tint1=$StartPrimaryText +Shutdown_arrow_tint2=#000000 +Shutdown_search_arrow=8 +Shutdown_search_arrow_mask=51 +Shutdown_search_arrow_tint1=$StartPrimaryText +Shutdown_search_arrow_tint2=#000000 +Shutdown_jump_arrow=8 +Shutdown_jump_arrow_mask=51 +Shutdown_jump_arrow_tint1=$StartPrimaryText +Shutdown_jump_arrow_tint2=#000000 +Shutdown_arrow_padding=6,7,100% + +; Programs tree + +Programs_background=$SystemAccentDark1|$StartBackground +Programs_background_tint3=#808080 +Programs_background_mask=#FF0000 +Programs_text_padding=5,2,0,2,100% +Programs_icon_padding=-6,4,6,4,100% +Programs_indent=-11,80% + +Programs_icon=7 +Programs_icon_mask=#FF0000 +Programs_icon_tint1=$StartPrimaryText +Programs_new_selection=$SystemAccentDark1|$StartBackground +Programs_new_selection_tint1=$LightInlineErrorText +Programs_new_selection_mask=33 +Programs_new_selection_slices_X=2,2,2 +Programs_new_selection_slices_Y=2,2,2 + +Programs_button_text_padding=3,2,8,2,100% +Programs_button_new_text_padding=3,2,8,2,100% +Programs_button_icon_padding=4,6,4,6,100% +Programs_button_new_icon_padding=4,6,4,6,100% + +; Scrollbar +Scrollbar_button=$StartPrimaryText +Scrollbar_button_tint2=$StartPrimaryText +Scrollbar_button_tint3=#808080 +Scrollbar_button_mask=16 +Scrollbar_button_slices_X=3,3,3 +Scrollbar_button_slices_Y=3,3,3 +Scrollbar_thumb=$StartPrimaryText +Scrollbar_thumb_tint2=$StartPrimaryText +Scrollbar_thumb_tint3=#808080 +Scrollbar_thumb_mask=39 +Scrollbar_thumb_slices_X=3,3,3 +Scrollbar_thumb_slices_Y=3,3,3 +Scrollbar_background=$StartPrimaryText +Scrollbar_background_tint2=$StartPrimaryText +Scrollbar_background_tint3=#808080 +Scrollbar_background_mask=3 +Scrollbar_background_slices_X=2,2,2 +Scrollbar_background_slices_Y=2,2,2 +Scrollbar_arrows=#StartBackground +Scrollbar_arrows_tint1=$StartPrimaryText +Scrollbar_arrows_tint2=$StartPrimaryText +Scrollbar_arrows_tint3=#000000 +Scrollbar_arrows_mask=17 + + +; LIST SECTION +List_text_padding=0,2,8,2,100% +List_icon_padding=8,3,8,3,100% +List_separator_font="Segoe UI Semibold",normal,-9 +List_separator_text_padding=8,3,0,5,100% +List_separator_icon_padding=10,0,2,0,100% +List_arrow_padding=3,6,100% +List_split_arrow_padding=5,6,100% +List_separator_split_font="Segoe UI Semibold",normal,-9 +List_separator_text_color=$StartPrimaryText,$StartSelectionPrimaryText + +List_selection=$StartPrimaryText +List_selection_mask=28 +List_selection_tint1=$StartPrimaryText +List_selection_slices_X=2,2,2 +List_selection_slices_Y=2,2,2 + +List_split_selection=$StartPrimaryText +List_split_selection_mask=29 +List_split_selection_tint1=$StartPrimaryText +List_split_selection_slices_X=2,2,2,2,2,2 +List_split_selection_slices_Y=2,2,2 + +Search_padding=3,9,3,6,100%,78%,33%,67% +Search_frame=0 +Search_background=$SystemAccentDark1|$StartBackground +Search_background_tint1=$StartPrimaryText +Search_background_tint2=$ImmersiveSystemBackground|$StartPrimaryText +Search_background_tint3=$StartPrimaryText +Search_background_mask=30 +Search_background_slices_X=3,2,3, 0,5,13, 0,1,3 +Search_background_slices_Y=3,1,4, 0,2,0, 3,2,3 +Search_background_padding=2,-3,2,2 +Search_background_search_padding=2,-3,2,2 +Search_background_jump_padding=2,-3,2,2 +Search_hint_font="Segoe UI",normal,-9 +Search_text_color=$ImmersiveSystemText|#000000,#808080 +Search_text_background=$SystemAccentDark1|$StartBackground +Search_text_background_tint1=$ImmersiveSystemBackground|$StartPrimaryText +Search_text_background_tint2=$StartPrimaryText +Search_text_background_mask=#FF1700 +Search_bitmap=9 +Search_bitmap_tint1=#808080 +Search_bitmap_mask=#FF0000 + +Search_arrow=27 +Search_arrow_mask=51 +Search_arrow_tint1=$StartPrimaryText +Search_arrow_tint2=#000000 + +; More_bitmap - a bitmap for the "more" button in search categories. set to 0 to use the default icon. set to "none" to hide the button +More_bitmap=0 +Pin_bitmap=15 +Pin_bitmap_tint1=$StartPrimaryText +Pin_bitmap_mask=#FF0000 + + +;SUB-MENU SECTION - describes the look of the sub-menus + +; The width of the standard window border is subtracted from all sides +Submenu_padding=3,5,3,5,100% +Submenu_text_padding=0,2,8,2,100% +Submenu_icon_padding=8,3,8,3,100% + +; These have the same meaning as the Main_... properties +Submenu_opacity=region +Submenu_bitmap=$ImmersiveSystemBackground|$StartPrimaryText +Submenu_bitmap_tint1=#A0A0A0 +Submenu_bitmap_tint2=#808080 +Submenu_bitmap_tint3=$StartPrimaryText +Submenu_bitmap_mask=23 +Submenu_bitmap_slices_X=4,4,4 +Submenu_bitmap_slices_Y=4,4,4 + +Submenu_font="Segoe UI",normal,-9 +Submenu_text_color=$ImmersiveSystemText|#000000,$ImmersiveSystemText|#000000,#7F7F7F,#7F7F7F +Submenu_selection=$ImmersiveSystemBackground|$StartPrimaryText +Submenu_selection_mask=13 +Submenu_selection_slices_X=2,2,2 +Submenu_selection_slices_Y=2,2,2 +Submenu_selection_tint1=$StartPrimaryText +Submenu_selection_tint2=$ImmersiveSystemText|#000000 +Submenu_split_selection=$ImmersiveSystemBackground|$StartPrimaryText +Submenu_split_selection_mask=14 +Submenu_split_selection_slices_X=2,2,2,2,2,2 +Submenu_split_selection_slices_Y=2,2,2 +Submenu_split_selection_tint1=$StartPrimaryText + +Submenu_pager=$ImmersiveSystemBackground|$StartPrimaryText +Submenu_pager_tint1=$StartPrimaryText +Submenu_pager_tint2=$ImmersiveSystemText|#000000 +Submenu_pager_mask=20 +Submenu_pager_slices_X=3,10,3 +Submenu_pager_slices_Y=3,9,3 +Submenu_pager_arrows=$SystemAccentDark1|$StartBackground +Submenu_pager_arrows_tint1=$ImmersiveSystemText|#000000 +Submenu_pager_arrows_tint2=$ImmersiveSystemText|#000000 +Submenu_pager_arrows_mask=5 + +Submenu_arrow=8 +Submenu_arrow_mask=51 +Submenu_arrow_tint1=$ImmersiveSystemText|#000000 +Submenu_arrow_tint2=$ImmersiveSystemBackground|$StartPrimaryText +Submenu_arrow_padding=3,6,100% +Submenu_split_arrow_padding=5,6,100% +Submenu_separator=$SystemAccentDark1|$StartBackground +Submenu_separator_tint1=$ImmersiveSystemText|#000000 +Submenu_separator_mask=11 +Submenu_separator_slices_X=12,9,12 +Submenu_separator_text_padding=8,3,0,5,100% +Submenu_separator_font="Segoe UI Semibold",normal,-9 +Submenu_separator_text_color=$ImmersiveSystemText|#000000,$ImmersiveSystemText|#000000 +Submenu_new_selection=$SystemAccentDark1|$StartBackground +Submenu_new_selection_tint1=$LightInlineErrorText +Submenu_new_selection_mask=33 +Submenu_new_selection_slices_X=2,2,2 +Submenu_new_selection_slices_Y=2,2,2 + +Submenu_separatorV=$SystemAccentDark1|$StartBackground +Submenu_separatorV_tint1=$ImmersiveSystemText|#000000 +Submenu_separatorV_mask=24 +Submenu_separatorV_slices_Y=12,9,12 + + +; OPTIONS + +OPTION RADIOGROUP=#7039,0,LIGHT|DARK|AUTO +OPTION LIGHT=#7040,0 +OPTION DARK=#7041,0 +OPTION AUTO=#7042,1 +OPTION USER_IMAGE=#7014,1 +OPTION USER_NAME=#7015,0 +OPTION CENTER_NAME=#7004,0, USER_NAME, 0 +OPTION SMALL_ICONS=#7011,0 +OPTION OPAQUE=#7009,0 +OPTION DISABLE_MASK=#7005,0 +OPTION_NUMBER CUSTOM_TEXT_SIZE=#7038,0,TRUE,12 +OPTION BLACK_TEXT=#7002,0 +OPTION BLACK_FRAMES=#7001,0 +OPTION RADIOGROUP=#7043,0,TRANSPARENT_LESS|TRANSPARENT_MORE +OPTION TRANSPARENT_LESS=#7044,1 +OPTION TRANSPARENT_MORE=#7045,0 + +[SMALL_ICONS] +Main_large_icons=0 +Main2_text_padding=1,4,8,5,100% + + +[USER_IMAGE] +; User_bitmap - the frame around the user picture +User_mask=12 +User_image_size=48 +User_image_padding=0,7,100% +User_bitmap_outside=0 + +[USER_NAME] +Main_padding=7,47,8,7,100%,100%,88%,100% +Main_search_padding=7,47,7,7,100% +User_name_position=15,5,-15,45,100% +User_name_align=left1 +User_text_color=$StartPrimaryText +User_font="Segoe UI Semibold",normal,18,100% +User_glow_size=0 + +[CENTER_NAME] +User_name_align=center1 + +[120_DPI] +Programs_icon=42 +Main_pager_arrows_mask=41 +Submenu_pager_arrows_mask=41 +Main_arrow=43 +Main2_arrow=43 +Shutdown_arrow=43 +Shutdown_search_arrow=43 +Shutdown_jump_arrow=43 +Submenu_arrow=43 +Search_arrow=47 +Scrollbar_arrows_mask=46 +Pin_bitmap=45 +Search_bitmap=44 +Main_arrow_mask=52 +Main2_arrow_mask=52 +Shutdown_arrow_mask=52 +Shutdown_search_arrow_mask=52 +Shutdown_jump_arrow_mask=52 +Search_arrow_mask=52 +Submenu_arrow_mask=52 + + +[120_DPI AND USER_IMAGE] +User_mask=48 +User_image_size=60 + + +[HIGH_DPI] +Main_bitmap_mask=49 +Main_bitmap_jump_mask=49 +Programs_icon=22 +Main_pager_arrows_mask=21 +Submenu_pager_arrows_mask=21 +Main_arrow=19 +Main2_arrow=19 +Shutdown_arrow=19 +Shutdown_search_arrow=19 +Shutdown_jump_arrow=19 +Submenu_arrow=19 +Search_arrow=34 +Scrollbar_arrows_mask=35 +Pin_bitmap=36 +Main_separator_mask=37 +Main2_separator_mask=37 +Submenu_separator_mask=37 +Submenu_separatorV_mask=38 +Main_arrow_mask=53 +Main2_arrow_mask=53 +Shutdown_arrow_mask=53 +Shutdown_search_arrow_mask=53 +Shutdown_jump_arrow_mask=53 +Search_arrow_mask=53 +Submenu_arrow_mask=53 + +[HIGH_DPI AND USER_IMAGE] +User_mask=18 +User_image_size=72 + +[TOUCH_ENABLED AND NOT SMALL_ICONS] +List_separator_icon_padding=10,8,2,8,100% +Main_arrow_padding=7,10,100% +Main_split_arrow_padding=9,10,100% +Main2_arrow_padding=9,10,100% + +[NOT OPAQUE] +Main_opacity=fullglass +Main2_opacity=fullglass + +Main_bitmap_mask=25 +Main_bitmap_search_mask=26 +Main_bitmap_jump_mask=25 +Programs_background=#C0000000 + +Scrollbar_button_mask=32 +Scrollbar_thumb_mask=40 +Scrollbar_background_mask=6 + +[NOT OPAQUE AND HIGH_DPI] +Main_bitmap_mask=50 +Main_bitmap_jump_mask=50 + +[DISABLE_MASK] +Main_bitmap_tint1=#545454 +Main_bitmap_search_tint1=#545454 +Main_bitmap_jump_tint1=#545454 +Programs_background_tint1=#545454 +Scrollbar_button_tint1=#545454 +Scrollbar_thumb_tint1=#545454 +Scrollbar_background_tint1=#545454 + +[CUSTOM_TEXT_SIZE] +Main_font="Segoe UI",normal,@CUSTOM_TEXT_SIZE@ +Search_hint_font="Segoe UI",normal,@CUSTOM_TEXT_SIZE@ +Submenu_font="Segoe UI",normal,@CUSTOM_TEXT_SIZE@ +List_separator_font="Segoe UI Semibold",normal,@CUSTOM_TEXT_SIZE@ +List_separator_split_font="Segoe UI Semibold",normal,@CUSTOM_TEXT_SIZE@ +Submenu_separator_font="Segoe UI Semibold",normal,@CUSTOM_TEXT_SIZE@ + +[BLACK_TEXT] +Main_text_color=#000000,#000000,#000000,#000000 +Main2_text_color=#000000,#000000,#000000,#000000 +Shutdown_text_color=#000000,#000000 +Shutdown_search_text_color=#000000,#000000 +Shutdown_jump_text_color=#000000,#000000 +List_separator_text_color=#000000,#000000 +Main_arrow_tint1=#000000 +Main_arrow_tint2=$StartPrimaryText +Main2_arrow_tint1=#000000 +Main2_arrow_tint2=$StartPrimaryText +Search_arrow_tint1=#000000 +Search_arrow_tint2=$StartPrimaryText +Programs_icon_tint1=#000000 +Pin_bitmap_tint1=#000000 +Main_bitmap=#000000 +Main_bitmap_search=#000000 +Main_bitmap_jump=#000000 +Main_separator_tint1=#000000 +Search_background_tint1=#000000 +Scrollbar_arrows_tint1=#000000 +Scrollbar_arrows_tint2=#000000 +Scrollbar_arrows_tint3=$StartPrimaryText +Main_pager_arrows_tint1=#000000 +Main_pager_arrows_tint2=#000000 +Main2_separator_tint1=#000000 +Shutdown_arrow_tint1=#000000 +Shutdown_arrow_tint2=$StartPrimaryText +Shutdown_search_arrow_tint1=#000000 +Shutdown_search_arrow_tint2=$StartPrimaryText +Shutdown_jump_arrow_tint1=#000000 +Shutdown_jump_arrow_tint2=$StartPrimaryText +User_text_color=#000000 + +[BLACK_FRAMES] +Main_selection=#000000 +Main_split_selection=#000000 +Main2_selection=#000000 +Main2_split_selection=#000000 +Shutdown_selection=#000000 +Shutdown_search_selection=#000000 +Shutdown_jump_selection=#000000 +List_selection=#000000 +List_split_selection=#000000 +Scrollbar_button=#000000 +Scrollbar_thumb=#000000 +Scrollbar_background=#000000 +Main_pager_tint2=#000000 + +[TRANSPARENT_LESS] +Main_padding=7,7,7,7,100% +Main_text_color=$ImmersiveSystemText|#000000,$ImmersiveSystemText|#000000,#7F7F7F,#7F7F7F +Shutdown_search_text_color=$ImmersiveSystemText|#000000,$ImmersiveSystemText|#000000 +Shutdown_jump_text_color=$ImmersiveSystemText|#000000,$ImmersiveSystemText|#000000 +Main_bitmap_mask=54 +Main_bitmap_search_mask=56 +Main_bitmap_jump_mask=57 +Programs_background_mask=#C50036 +Programs_background=$StartPrimaryText +Programs_background_tint1=$ImmersiveSystemBackground|$StartPrimaryText +Scrollbar_button_mask=58 +Scrollbar_thumb_mask=59 +Scrollbar_background_mask=60 +Scrollbar_button_tint1=$ImmersiveSystemBackground|$StartPrimaryText +Scrollbar_thumb_tint1=$ImmersiveSystemBackground|$StartPrimaryText +Scrollbar_background_tint1=$ImmersiveSystemBackground|$StartPrimaryText +Scrollbar_button=$ImmersiveSystemText|#000000 +Scrollbar_thumb=$ImmersiveSystemText|#000000 +Scrollbar_background=$ImmersiveSystemText|#000000 +Scrollbar_arrows_tint1=$ImmersiveSystemText|#000000 +Scrollbar_arrows_tint2=$ImmersiveSystemText|#000000 +Scrollbar_arrows_tint3=$ImmersiveSystemBackground|$StartPrimaryText +Search_background_tint1=$ImmersiveSystemText|#000000 +Programs_icon_tint1=$ImmersiveSystemText|#000000 +List_separator_text_color=$ImmersiveSystemText|#000000,$ImmersiveSystemText|#000000 +Search_arrow_tint1=$ImmersiveSystemText|#000000 +Search_arrow_tint2=$ImmersiveSystemBackground|$StartPrimaryText +Main_separator_tint1=$ImmersiveSystemText|#000000 +Main_arrow_tint1=$ImmersiveSystemText|#000000 +Main_arrow_tint2=$ImmersiveSystemBackground|$StartPrimaryText +Shutdown_search_arrow_tint1=$ImmersiveSystemText|#000000 +Shutdown_search_arrow_tint2=$ImmersiveSystemBackground|$StartPrimaryText +Shutdown_jump_arrow_tint1=$ImmersiveSystemText|#000000 +Shutdown_jump_arrow_tint2=$ImmersiveSystemBackground|$StartPrimaryText +Main_pager_arrows_tint1=$ImmersiveSystemText|#000000 +Main_pager_arrows_tint2=$ImmersiveSystemText|#000000 +Pin_bitmap_tint1=$ImmersiveSystemText|#000000 +User_text_color=$ImmersiveSystemText|#000000 +Main_bitmap=$StartPrimaryText +Main_bitmap_search=$StartPrimaryText +Main_bitmap_jump=$StartPrimaryText +Shutdown_search_selection=$ImmersiveSystemText|#000000 +Shutdown_jump_selection=$ImmersiveSystemText|#000000 +List_selection=$ImmersiveSystemBackground|$StartPrimaryText +List_split_selection=$ImmersiveSystemBackground|$StartPrimaryText +Main_selection=$ImmersiveSystemBackground|$StartPrimaryText +Main_split_selection=$ImmersiveSystemBackground|$StartPrimaryText +Main_selection_mask=61 +Main_split_selection_mask=62 +List_selection_mask=63 +List_split_selection_mask=64 +Main_pager_mask=10 +Main_pager=$ImmersiveSystemBackground|$StartPrimaryText +Main_pager_tint1=$StartPrimaryText + +[TRANSPARENT_LESS AND NOT OPAQUE] +Main_bitmap_mask=55 +Programs_background=$StartPrimaryText +Main_opacity=glass +Main2_opacity=fullglass + +[USER_NAME AND TRANSPARENT_LESS] +Main_padding=7,47,7,7,100% + +[SEARCHBOX] +Main_bitmap_jump_slices_Y=12,6,2,0,2,11 + + +[HIGH_DPI AND NOT 144_DPI AND NOT 168_DPI] +Programs_icon=65 +Pin_bitmap=66 +Main_arrow=67 +Main2_arrow=67 +Shutdown_arrow=67 +Shutdown_search_arrow=67 +Shutdown_jump_arrow=67 +Submenu_arrow=67 +Main_arrow_mask=68 +Main2_arrow_mask=68 +Shutdown_arrow_mask=68 +Shutdown_search_arrow_mask=68 +Shutdown_jump_arrow_mask=68 +Submenu_arrow_mask=68 +Main_pager_arrows_mask=69 +Submenu_pager_arrows_mask=69 +Scrollbar_arrows_mask=70 +Search_arrow=71 +Search_arrow_mask=68 +Search_bitmap=72 + + +[LIGHT] +Main_bitmap_tint2=#FFFFFF +Main_bitmap_search_tint2=#FFFFFF +Main_bitmap_jump_tint2=#FFFFFF +Search_background_tint2=#FFFFFF +Search_text_background_tint1=#FFFFFF +Submenu_bitmap=#FFFFFF +Submenu_selection=#FFFFFF +Submenu_split_selection=#FFFFFF +Submenu_pager=#FFFFFF +Submenu_arrow_tint2=#FFFFFF +Search_text_color=#000000,#808080 +Submenu_text_color=#000000,#000000,#7F7F7F,#7F7F7F +Submenu_selection_tint2=#000000 +Submenu_pager_tint2=#000000 +Submenu_pager_arrows_tint1=#000000 +Submenu_pager_arrows_tint2=#000000 +Submenu_arrow_tint1=#000000 +Submenu_separator_tint1=#000000 +Submenu_separator_text_color=#000000,#000000 +Submenu_separatorV_tint1=#000000 + +[LIGHT AND TRANSPARENT_LESS] +Programs_background_tint1=#FFFFFF +Scrollbar_button_tint1=#FFFFFF +Scrollbar_thumb_tint1=#FFFFFF +Scrollbar_background_tint1=#FFFFFF +Scrollbar_arrows_tint3=#FFFFFF +Search_arrow_tint2=#FFFFFF +Main_arrow_tint2=#FFFFFF +Shutdown_search_arrow_tint2=#FFFFFF +Shutdown_jump_arrow_tint2=#FFFFFF +List_selection=#FFFFFF +List_split_selection=#FFFFFF +Main_selection=#FFFFFF +Main_split_selection=#FFFFFF +Main_pager=#FFFFFF +Main_text_color=#000000,#000000,#7F7F7F,#7F7F7F +Shutdown_search_text_color=#000000,#000000 +Shutdown_jump_text_color=#000000,#000000 +Scrollbar_button=#000000 +Scrollbar_thumb=#000000 +Scrollbar_background=#000000 +Scrollbar_arrows_tint1=#000000 +Scrollbar_arrows_tint2=#000000 +Search_background_tint1=#000000 +Programs_icon_tint1=#000000 +List_separator_text_color=#000000,#000000 +Search_arrow_tint1=#000000 +Main_separator_tint1=#000000 +Main_arrow_tint1=#000000 +Shutdown_search_arrow_tint1=#000000 +Shutdown_jump_arrow_tint1=#000000 +Main_pager_arrows_tint1=#000000 +Main_pager_arrows_tint2=#000000 +Pin_bitmap_tint1=#000000 +User_text_color=#000000 +Shutdown_search_selection=#000000 +Shutdown_jump_selection=#000000 + +[DARK] +Main_bitmap_tint2=#000000 +Main_bitmap_search_tint2=#000000 +Main_bitmap_jump_tint2=#000000 +Search_background_tint2=#000000 +Search_text_background_tint1=#000000 +Submenu_bitmap=#000000 +Submenu_selection=#000000 +Submenu_split_selection=#000000 +Submenu_pager=#000000 +Submenu_arrow_tint2=#000000 +Search_text_color=#FFFFFF,#808080 +Submenu_text_color=#FFFFFF,#FFFFFF,#7F7F7F,#7F7F7F +Submenu_selection_tint2=#FFFFFF +Submenu_pager_tint2=#FFFFFF +Submenu_pager_arrows_tint1=#FFFFFF +Submenu_pager_arrows_tint2=#FFFFFF +Submenu_arrow_tint1=#FFFFFF +Submenu_separator_tint1=#FFFFFF +Submenu_separator_text_color=#FFFFFF,#FFFFFF +Submenu_separatorV_tint1=#FFFFFF + +[DARK AND TRANSPARENT_LESS] +Programs_background_tint1=#000000 +Scrollbar_button_tint1=#000000 +Scrollbar_thumb_tint1=#000000 +Scrollbar_background_tint1=#000000 +Scrollbar_arrows_tint3=#000000 +Search_arrow_tint2=#000000 +Main_arrow_tint2=#000000 +Shutdown_search_arrow_tint2=#000000 +Shutdown_jump_arrow_tint2=#000000 +List_selection=#000000 +List_split_selection=#000000 +Main_selection=#000000 +Main_split_selection=#000000 +Main_pager=#000000 +Main_text_color=#FFFFFF,#FFFFFF,#7F7F7F,#7F7F7F +Shutdown_search_text_color=#FFFFFF,#FFFFFF +Shutdown_jump_text_color=#FFFFFF,#FFFFFF +Scrollbar_button=#FFFFFF +Scrollbar_thumb=#FFFFFF +Scrollbar_background=#FFFFFF +Scrollbar_arrows_tint1=#FFFFFF +Scrollbar_arrows_tint2=#FFFFFF +Search_background_tint1=#FFFFFF +Programs_icon_tint1=#FFFFFF +List_separator_text_color=#FFFFFF,#FFFFFF +Search_arrow_tint1=#FFFFFF +Main_separator_tint1=#FFFFFF +Main_arrow_tint1=#FFFFFF +Shutdown_search_arrow_tint1=#FFFFFF +Shutdown_jump_arrow_tint1=#FFFFFF +Main_pager_arrows_tint1=#FFFFFF +Main_pager_arrows_tint2=#FFFFFF +Pin_bitmap_tint1=#FFFFFF +User_text_color=#FFFFFF +Shutdown_search_selection=#FFFFFF +Shutdown_jump_selection=#FFFFFF + + +[BLACK_TEXT AND NOT BLACK_FRAMES AND NOT TRANSPARENT_LESS] +Scrollbar_arrows_tint3=#000000 + +[BLACK_FRAMES AND NOT BLACK_TEXT AND NOT TRANSPARENT_LESS] +Scrollbar_arrows_tint3=#FFFFFF \ No newline at end of file diff --git a/Src/Skins/Immersive7/arrow.png b/Src/Skins/Immersive7/arrow.png new file mode 100644 index 000000000..3c4334ada Binary files /dev/null and b/Src/Skins/Immersive7/arrow.png differ diff --git a/Src/Skins/Immersive7/arrow120.png b/Src/Skins/Immersive7/arrow120.png new file mode 100644 index 000000000..3742f929f Binary files /dev/null and b/Src/Skins/Immersive7/arrow120.png differ diff --git a/Src/Skins/Immersive7/arrow144.png b/Src/Skins/Immersive7/arrow144.png new file mode 100644 index 000000000..8daf62abd Binary files /dev/null and b/Src/Skins/Immersive7/arrow144.png differ diff --git a/Src/Skins/Immersive7/arrow192.png b/Src/Skins/Immersive7/arrow192.png new file mode 100644 index 000000000..85930a057 Binary files /dev/null and b/Src/Skins/Immersive7/arrow192.png differ diff --git a/Src/Skins/Immersive7/arrow_mask.png b/Src/Skins/Immersive7/arrow_mask.png new file mode 100644 index 000000000..f55c557bd Binary files /dev/null and b/Src/Skins/Immersive7/arrow_mask.png differ diff --git a/Src/Skins/Immersive7/arrow_mask120.png b/Src/Skins/Immersive7/arrow_mask120.png new file mode 100644 index 000000000..b501c8f8d Binary files /dev/null and b/Src/Skins/Immersive7/arrow_mask120.png differ diff --git a/Src/Skins/Immersive7/arrow_mask144.png b/Src/Skins/Immersive7/arrow_mask144.png new file mode 100644 index 000000000..2cfb8f3e3 Binary files /dev/null and b/Src/Skins/Immersive7/arrow_mask144.png differ diff --git a/Src/Skins/Immersive7/arrow_mask192.png b/Src/Skins/Immersive7/arrow_mask192.png new file mode 100644 index 000000000..68eca03bb Binary files /dev/null and b/Src/Skins/Immersive7/arrow_mask192.png differ diff --git a/Src/Skins/Immersive7/fullglass1.png b/Src/Skins/Immersive7/fullglass1.png new file mode 100644 index 000000000..f0b166944 Binary files /dev/null and b/Src/Skins/Immersive7/fullglass1.png differ diff --git a/Src/Skins/Immersive7/fullglass2.png b/Src/Skins/Immersive7/fullglass2.png new file mode 100644 index 000000000..baa512f6c Binary files /dev/null and b/Src/Skins/Immersive7/fullglass2.png differ diff --git a/Src/Skins/Immersive7/fullglass3.png b/Src/Skins/Immersive7/fullglass3.png new file mode 100644 index 000000000..f8719aa1f Binary files /dev/null and b/Src/Skins/Immersive7/fullglass3.png differ diff --git a/Src/Skins/Immersive7/fullglass4.png b/Src/Skins/Immersive7/fullglass4.png new file mode 100644 index 000000000..1ea417fb6 Binary files /dev/null and b/Src/Skins/Immersive7/fullglass4.png differ diff --git a/Src/Skins/Immersive7/fullglass_pager.png b/Src/Skins/Immersive7/fullglass_pager.png new file mode 100644 index 000000000..a6f33251b Binary files /dev/null and b/Src/Skins/Immersive7/fullglass_pager.png differ diff --git a/Src/Skins/Immersive7/fullglass_selector.png b/Src/Skins/Immersive7/fullglass_selector.png new file mode 100644 index 000000000..c336982e6 Binary files /dev/null and b/Src/Skins/Immersive7/fullglass_selector.png differ diff --git a/Src/Skins/Immersive7/fullglass_splitsel.png b/Src/Skins/Immersive7/fullglass_splitsel.png new file mode 100644 index 000000000..deab8e7cb Binary files /dev/null and b/Src/Skins/Immersive7/fullglass_splitsel.png differ diff --git a/Src/Skins/Immersive7/fullglasssearch1.png b/Src/Skins/Immersive7/fullglasssearch1.png new file mode 100644 index 000000000..ad7e480e9 Binary files /dev/null and b/Src/Skins/Immersive7/fullglasssearch1.png differ diff --git a/Src/Skins/Immersive7/fullglasssearch2.png b/Src/Skins/Immersive7/fullglasssearch2.png new file mode 100644 index 000000000..1124fa7bb Binary files /dev/null and b/Src/Skins/Immersive7/fullglasssearch2.png differ diff --git a/Src/Skins/Immersive7/newsel.png b/Src/Skins/Immersive7/newsel.png new file mode 100644 index 000000000..3afd0b498 Binary files /dev/null and b/Src/Skins/Immersive7/newsel.png differ diff --git a/Src/Skins/Immersive7/pager_arrows.png b/Src/Skins/Immersive7/pager_arrows.png new file mode 100644 index 000000000..0c737e7ad Binary files /dev/null and b/Src/Skins/Immersive7/pager_arrows.png differ diff --git a/Src/Skins/Immersive7/pager_arrows120.png b/Src/Skins/Immersive7/pager_arrows120.png new file mode 100644 index 000000000..19df5412e Binary files /dev/null and b/Src/Skins/Immersive7/pager_arrows120.png differ diff --git a/Src/Skins/Immersive7/pager_arrows144.png b/Src/Skins/Immersive7/pager_arrows144.png new file mode 100644 index 000000000..7d992202b Binary files /dev/null and b/Src/Skins/Immersive7/pager_arrows144.png differ diff --git a/Src/Skins/Immersive7/pager_arrows192.png b/Src/Skins/Immersive7/pager_arrows192.png new file mode 100644 index 000000000..db3868b39 Binary files /dev/null and b/Src/Skins/Immersive7/pager_arrows192.png differ diff --git a/Src/Skins/Immersive7/pin.png b/Src/Skins/Immersive7/pin.png new file mode 100644 index 000000000..a4c5b67ec Binary files /dev/null and b/Src/Skins/Immersive7/pin.png differ diff --git a/Src/Skins/Immersive7/pin120.png b/Src/Skins/Immersive7/pin120.png new file mode 100644 index 000000000..d51b18b6f Binary files /dev/null and b/Src/Skins/Immersive7/pin120.png differ diff --git a/Src/Skins/Immersive7/pin144.png b/Src/Skins/Immersive7/pin144.png new file mode 100644 index 000000000..cc460a151 Binary files /dev/null and b/Src/Skins/Immersive7/pin144.png differ diff --git a/Src/Skins/Immersive7/pin192.png b/Src/Skins/Immersive7/pin192.png new file mode 100644 index 000000000..d8007dee3 Binary files /dev/null and b/Src/Skins/Immersive7/pin192.png differ diff --git a/Src/Skins/Immersive7/programs.png b/Src/Skins/Immersive7/programs.png new file mode 100644 index 000000000..c42d97dab Binary files /dev/null and b/Src/Skins/Immersive7/programs.png differ diff --git a/Src/Skins/Immersive7/programs120.png b/Src/Skins/Immersive7/programs120.png new file mode 100644 index 000000000..58f400399 Binary files /dev/null and b/Src/Skins/Immersive7/programs120.png differ diff --git a/Src/Skins/Immersive7/programs144.png b/Src/Skins/Immersive7/programs144.png new file mode 100644 index 000000000..18f548d57 Binary files /dev/null and b/Src/Skins/Immersive7/programs144.png differ diff --git a/Src/Skins/Immersive7/programs192.png b/Src/Skins/Immersive7/programs192.png new file mode 100644 index 000000000..0434fbc2c Binary files /dev/null and b/Src/Skins/Immersive7/programs192.png differ diff --git a/Src/Skins/Immersive7/scroll_arrows.png b/Src/Skins/Immersive7/scroll_arrows.png new file mode 100644 index 000000000..ddfb79800 Binary files /dev/null and b/Src/Skins/Immersive7/scroll_arrows.png differ diff --git a/Src/Skins/Immersive7/scroll_arrows120.png b/Src/Skins/Immersive7/scroll_arrows120.png new file mode 100644 index 000000000..673eef4d1 Binary files /dev/null and b/Src/Skins/Immersive7/scroll_arrows120.png differ diff --git a/Src/Skins/Immersive7/scroll_arrows144.png b/Src/Skins/Immersive7/scroll_arrows144.png new file mode 100644 index 000000000..e27aa0fb4 Binary files /dev/null and b/Src/Skins/Immersive7/scroll_arrows144.png differ diff --git a/Src/Skins/Immersive7/scroll_arrows192.png b/Src/Skins/Immersive7/scroll_arrows192.png new file mode 100644 index 000000000..408dad80a Binary files /dev/null and b/Src/Skins/Immersive7/scroll_arrows192.png differ diff --git a/Src/Skins/Immersive7/scrollbkg1.png b/Src/Skins/Immersive7/scrollbkg1.png new file mode 100644 index 000000000..764a63919 Binary files /dev/null and b/Src/Skins/Immersive7/scrollbkg1.png differ diff --git a/Src/Skins/Immersive7/scrollbkg2.png b/Src/Skins/Immersive7/scrollbkg2.png new file mode 100644 index 000000000..822f2355c Binary files /dev/null and b/Src/Skins/Immersive7/scrollbkg2.png differ diff --git a/Src/Skins/Immersive7/scrollbkg3.png b/Src/Skins/Immersive7/scrollbkg3.png new file mode 100644 index 000000000..49b955051 Binary files /dev/null and b/Src/Skins/Immersive7/scrollbkg3.png differ diff --git a/Src/Skins/Immersive7/scrollbtn1.png b/Src/Skins/Immersive7/scrollbtn1.png new file mode 100644 index 000000000..a0e9cb28b Binary files /dev/null and b/Src/Skins/Immersive7/scrollbtn1.png differ diff --git a/Src/Skins/Immersive7/scrollbtn2.png b/Src/Skins/Immersive7/scrollbtn2.png new file mode 100644 index 000000000..11f8bacf9 Binary files /dev/null and b/Src/Skins/Immersive7/scrollbtn2.png differ diff --git a/Src/Skins/Immersive7/scrollbtn3.png b/Src/Skins/Immersive7/scrollbtn3.png new file mode 100644 index 000000000..530c4ca10 Binary files /dev/null and b/Src/Skins/Immersive7/scrollbtn3.png differ diff --git a/Src/Skins/Immersive7/scrollthumb1.png b/Src/Skins/Immersive7/scrollthumb1.png new file mode 100644 index 000000000..ea9ec8536 Binary files /dev/null and b/Src/Skins/Immersive7/scrollthumb1.png differ diff --git a/Src/Skins/Immersive7/scrollthumb2.png b/Src/Skins/Immersive7/scrollthumb2.png new file mode 100644 index 000000000..2df9d7689 Binary files /dev/null and b/Src/Skins/Immersive7/scrollthumb2.png differ diff --git a/Src/Skins/Immersive7/scrollthumb3.png b/Src/Skins/Immersive7/scrollthumb3.png new file mode 100644 index 000000000..951bb96e0 Binary files /dev/null and b/Src/Skins/Immersive7/scrollthumb3.png differ diff --git a/Src/Skins/Immersive7/search.png b/Src/Skins/Immersive7/search.png new file mode 100644 index 000000000..3bb2abac4 Binary files /dev/null and b/Src/Skins/Immersive7/search.png differ diff --git a/Src/Skins/Immersive7/search120.png b/Src/Skins/Immersive7/search120.png new file mode 100644 index 000000000..a58afae4d Binary files /dev/null and b/Src/Skins/Immersive7/search120.png differ diff --git a/Src/Skins/Immersive7/search192.png b/Src/Skins/Immersive7/search192.png new file mode 100644 index 000000000..c8856bb0e Binary files /dev/null and b/Src/Skins/Immersive7/search192.png differ diff --git a/Src/Skins/Immersive7/search_arrow.png b/Src/Skins/Immersive7/search_arrow.png new file mode 100644 index 000000000..943a1157e Binary files /dev/null and b/Src/Skins/Immersive7/search_arrow.png differ diff --git a/Src/Skins/Immersive7/search_arrow120.png b/Src/Skins/Immersive7/search_arrow120.png new file mode 100644 index 000000000..48f23f417 Binary files /dev/null and b/Src/Skins/Immersive7/search_arrow120.png differ diff --git a/Src/Skins/Immersive7/search_arrow144.png b/Src/Skins/Immersive7/search_arrow144.png new file mode 100644 index 000000000..4a5654b6b Binary files /dev/null and b/Src/Skins/Immersive7/search_arrow144.png differ diff --git a/Src/Skins/Immersive7/search_arrow192.png b/Src/Skins/Immersive7/search_arrow192.png new file mode 100644 index 000000000..ebf8f2bcc Binary files /dev/null and b/Src/Skins/Immersive7/search_arrow192.png differ diff --git a/Src/Skins/Immersive7/searchbkg.png b/Src/Skins/Immersive7/searchbkg.png new file mode 100644 index 000000000..2104c6bd8 Binary files /dev/null and b/Src/Skins/Immersive7/searchbkg.png differ diff --git a/Src/Skins/Immersive7/separator.png b/Src/Skins/Immersive7/separator.png new file mode 100644 index 000000000..2fd278caf Binary files /dev/null and b/Src/Skins/Immersive7/separator.png differ diff --git a/Src/Skins/Immersive7/separator144.png b/Src/Skins/Immersive7/separator144.png new file mode 100644 index 000000000..31a1878f3 Binary files /dev/null and b/Src/Skins/Immersive7/separator144.png differ diff --git a/Src/Skins/Immersive7/shutdown_selector.png b/Src/Skins/Immersive7/shutdown_selector.png new file mode 100644 index 000000000..f3f6a1933 Binary files /dev/null and b/Src/Skins/Immersive7/shutdown_selector.png differ diff --git a/Src/Skins/Immersive7/submenu.png b/Src/Skins/Immersive7/submenu.png new file mode 100644 index 000000000..3e06cbff1 Binary files /dev/null and b/Src/Skins/Immersive7/submenu.png differ diff --git a/Src/Skins/Immersive7/submenu_pager.png b/Src/Skins/Immersive7/submenu_pager.png new file mode 100644 index 000000000..1af75fadd Binary files /dev/null and b/Src/Skins/Immersive7/submenu_pager.png differ diff --git a/Src/Skins/Immersive7/submenu_selector.png b/Src/Skins/Immersive7/submenu_selector.png new file mode 100644 index 000000000..0d33d1f1f Binary files /dev/null and b/Src/Skins/Immersive7/submenu_selector.png differ diff --git a/Src/Skins/Immersive7/submenu_splitsel.png b/Src/Skins/Immersive7/submenu_splitsel.png new file mode 100644 index 000000000..24296e902 Binary files /dev/null and b/Src/Skins/Immersive7/submenu_splitsel.png differ diff --git a/Src/Skins/Immersive7/submenu_vertsep.png b/Src/Skins/Immersive7/submenu_vertsep.png new file mode 100644 index 000000000..0a7deb6d1 Binary files /dev/null and b/Src/Skins/Immersive7/submenu_vertsep.png differ diff --git a/Src/Skins/Immersive7/submenu_vertsep144.png b/Src/Skins/Immersive7/submenu_vertsep144.png new file mode 100644 index 000000000..326aec993 Binary files /dev/null and b/Src/Skins/Immersive7/submenu_vertsep144.png differ diff --git a/Src/Skins/Immersive7/twotone1.png b/Src/Skins/Immersive7/twotone1.png new file mode 100644 index 000000000..a1f59f810 Binary files /dev/null and b/Src/Skins/Immersive7/twotone1.png differ diff --git a/Src/Skins/Immersive7/twotone2.png b/Src/Skins/Immersive7/twotone2.png new file mode 100644 index 000000000..c68303b19 Binary files /dev/null and b/Src/Skins/Immersive7/twotone2.png differ diff --git a/Src/Skins/Immersive7/twotone_listsel.png b/Src/Skins/Immersive7/twotone_listsel.png new file mode 100644 index 000000000..63a33b05c Binary files /dev/null and b/Src/Skins/Immersive7/twotone_listsel.png differ diff --git a/Src/Skins/Immersive7/twotone_listsplitsel.png b/Src/Skins/Immersive7/twotone_listsplitsel.png new file mode 100644 index 000000000..e4f9534ad Binary files /dev/null and b/Src/Skins/Immersive7/twotone_listsplitsel.png differ diff --git a/Src/Skins/Immersive7/twotone_pager.png b/Src/Skins/Immersive7/twotone_pager.png new file mode 100644 index 000000000..a03b5b659 Binary files /dev/null and b/Src/Skins/Immersive7/twotone_pager.png differ diff --git a/Src/Skins/Immersive7/twotone_selector.png b/Src/Skins/Immersive7/twotone_selector.png new file mode 100644 index 000000000..faf698f8e Binary files /dev/null and b/Src/Skins/Immersive7/twotone_selector.png differ diff --git a/Src/Skins/Immersive7/twotone_splitsel.png b/Src/Skins/Immersive7/twotone_splitsel.png new file mode 100644 index 000000000..f7e01a469 Binary files /dev/null and b/Src/Skins/Immersive7/twotone_splitsel.png differ diff --git a/Src/Skins/Immersive7/twotonejump.png b/Src/Skins/Immersive7/twotonejump.png new file mode 100644 index 000000000..4b6ac24fb Binary files /dev/null and b/Src/Skins/Immersive7/twotonejump.png differ diff --git a/Src/Skins/Immersive7/twotonesearch.png b/Src/Skins/Immersive7/twotonesearch.png new file mode 100644 index 000000000..5ecc1419f Binary files /dev/null and b/Src/Skins/Immersive7/twotonesearch.png differ diff --git a/Src/Skins/Immersive7/user.png b/Src/Skins/Immersive7/user.png new file mode 100644 index 000000000..c11a15ea0 Binary files /dev/null and b/Src/Skins/Immersive7/user.png differ diff --git a/Src/Skins/Immersive7/user120.png b/Src/Skins/Immersive7/user120.png new file mode 100644 index 000000000..30b06ae10 Binary files /dev/null and b/Src/Skins/Immersive7/user120.png differ diff --git a/Src/Skins/Immersive7/user144.png b/Src/Skins/Immersive7/user144.png new file mode 100644 index 000000000..6bcc7623f Binary files /dev/null and b/Src/Skins/Immersive7/user144.png differ diff --git a/Src/Skins/Metallic7/Metallic7.vcxproj b/Src/Skins/Metallic7/Metallic7.vcxproj index 76dce8c7e..056b04cc8 100644 --- a/Src/Skins/Metallic7/Metallic7.vcxproj +++ b/Src/Skins/Metallic7/Metallic7.vcxproj @@ -10,38 +10,25 @@ {CA5BFC96-428D-42F5-9F7D-CDDE048A357C} Metallic7 Win32Proj - 10.0.17134.0 + 10.0 - + DynamicLibrary - v141 + $(DefaultPlatformToolset) Unicode - - + + - - $(SolutionDir)StartMenu\Skins\ - $(Configuration)\ - false - true + Metallic .skin7 - - - false - Windows - true - true - true - - @@ -85,4 +72,4 @@ - + \ No newline at end of file diff --git a/Src/Skins/Metro/Metro.vcxproj b/Src/Skins/Metro/Metro.vcxproj index faad553e1..566760539 100644 --- a/Src/Skins/Metro/Metro.vcxproj +++ b/Src/Skins/Metro/Metro.vcxproj @@ -10,38 +10,25 @@ {63BAF573-170B-4FA0-AEE3-16E04F3E9DF5} Metro Win32Proj - 10.0.17134.0 + 10.0 - + DynamicLibrary - v141 + $(DefaultPlatformToolset) Unicode - - + + - - $(SolutionDir)StartMenu\Skins\ - $(Configuration)\ - true - false + .skin Metro - - - false - Windows - true - true - true - - @@ -74,4 +61,4 @@ - + \ No newline at end of file diff --git a/Src/Skins/Metro/SkinDescription.txt b/Src/Skins/Metro/SkinDescription.txt index 6dc7337e4..93dbde7d3 100644 --- a/Src/Skins/Metro/SkinDescription.txt +++ b/Src/Skins/Metro/SkinDescription.txt @@ -105,7 +105,6 @@ Submenu_padding=2,2,2,2 ; These have the same meaning as the Main_... properties Submenu_opacity=region -Submenu_opacity=region Submenu_bitmap=$SystemAccentDark1|$StartBackground Submenu_bitmap_tint1=$StartHighlight Submenu_bitmap_mask=2 @@ -179,9 +178,11 @@ Main_icon_frame_tint1=$SystemAccentDark2|$StartSelectionBackground Main_icon_frame_mask=10 Main_icon_frame_slices_X=4,4,4 Main_icon_frame_slices_Y=4,4,4 -Main_icon_frame_offset=3,3 +Main_icon_frame_offset=3,3,100% Main_icon_padding=6,6,6,6,100% Main_text_padding=5,2,8,2,100% + +[ICON_FRAMES AND NOT SMALL_ICONS AND NOT NO_ICONS] Main2_icon_padding=6,6,6,6,100% Main2_text_padding=5,2,8,2,100% diff --git a/Src/Skins/Metro7/Metro7.vcxproj b/Src/Skins/Metro7/Metro7.vcxproj index 27b78b756..ef367e9f2 100644 --- a/Src/Skins/Metro7/Metro7.vcxproj +++ b/Src/Skins/Metro7/Metro7.vcxproj @@ -10,38 +10,25 @@ {598AB4AC-008E-4501-90B3-C5213834C1DA} Metro7 Win32Proj - 10.0.17134.0 + 10.0 - + DynamicLibrary - v141 + $(DefaultPlatformToolset) Unicode - - + + - - $(SolutionDir)StartMenu\Skins\ - $(Configuration)\ - true - false + Metro .skin7 - - - false - Windows - true - true - true - - @@ -82,4 +69,4 @@ - + \ No newline at end of file diff --git a/Src/Skins/Metro7/SkinDescription.txt b/Src/Skins/Metro7/SkinDescription.txt index 2f9c25595..c579dc89e 100644 --- a/Src/Skins/Metro7/SkinDescription.txt +++ b/Src/Skins/Metro7/SkinDescription.txt @@ -143,6 +143,7 @@ Scrollbar_arrows_mask=17 ; LIST SECTION +List_icon_padding=3,3,3,3,100% List_text_padding=0,0,4,0,100% List_separator_font="Segoe UI",bold,-9 List_separator_text_padding=3,0,0,0,100% @@ -249,7 +250,7 @@ Main_icon_frame_tint1=$SystemAccentDark2|$StartSelectionBackground Main_icon_frame_mask=10 Main_icon_frame_slices_X=4,4,4 Main_icon_frame_slices_Y=4,4,4 -Main_icon_frame_offset=3,3 +Main_icon_frame_offset=3,3,100% List_icon_frame=0 Main_icon_padding=6,6,6,6,100% Main_text_padding=5,2,8,2,100% diff --git a/Src/Skins/Metro7/programs.bmp b/Src/Skins/Metro7/programs.bmp index 2601aea96..ab6c114e6 100644 Binary files a/Src/Skins/Metro7/programs.bmp and b/Src/Skins/Metro7/programs.bmp differ diff --git a/Src/Skins/Metro7/programs150.bmp b/Src/Skins/Metro7/programs150.bmp index d63190b14..3f99ccd32 100644 Binary files a/Src/Skins/Metro7/programs150.bmp and b/Src/Skins/Metro7/programs150.bmp differ diff --git a/Src/Skins/Midnight7/Midnight7.vcxproj b/Src/Skins/Midnight7/Midnight7.vcxproj index ecff850a6..de13b5b0d 100644 --- a/Src/Skins/Midnight7/Midnight7.vcxproj +++ b/Src/Skins/Midnight7/Midnight7.vcxproj @@ -10,38 +10,25 @@ {7BD26CB3-5280-48FD-9A86-C13E321018D5} Midnight7 Win32Proj - 10.0.17134.0 + 10.0 - + DynamicLibrary - v141 + $(DefaultPlatformToolset) Unicode - - + + - - $(SolutionDir)StartMenu\Skins\ - $(Configuration)\ - true - false + Midnight .skin7 - - - false - Windows - true - true - true - - @@ -95,4 +82,4 @@ - + \ No newline at end of file diff --git a/Src/Skins/Skin.props b/Src/Skins/Skin.props new file mode 100644 index 000000000..baece5e02 --- /dev/null +++ b/Src/Skins/Skin.props @@ -0,0 +1,19 @@ + + + + $(MSBuildThisFileDirectory)..\..\build\bin\Skins\ + $(MSBuildThisFileDirectory)..\..\build\obj\Skins\$(ProjectName)\ + true + false + true + + + + false + Windows + true + true + true + + + diff --git a/Src/Skins/SmokedGlass/SmokedGlass.vcxproj b/Src/Skins/SmokedGlass/SmokedGlass.vcxproj index 2440c25f5..13b8806a5 100644 --- a/Src/Skins/SmokedGlass/SmokedGlass.vcxproj +++ b/Src/Skins/SmokedGlass/SmokedGlass.vcxproj @@ -10,38 +10,25 @@ {66D1EAA4-65D1-45CC-9989-E616FC0575EB} SmokedGlass Win32Proj - 10.0.17134.0 + 10.0 - + DynamicLibrary - v141 + $(DefaultPlatformToolset) Unicode - - + + - - $(SolutionDir)StartMenu\Skins\ - $(Configuration)\ - true - false + .skin Smoked Glass - - - false - Windows - true - true - true - - @@ -69,4 +56,4 @@ - + \ No newline at end of file diff --git a/Src/Skins/Win7Aero/Win7Aero.vcxproj b/Src/Skins/Win7Aero/Win7Aero.vcxproj index 14c3c0c77..26c74a44a 100644 --- a/Src/Skins/Win7Aero/Win7Aero.vcxproj +++ b/Src/Skins/Win7Aero/Win7Aero.vcxproj @@ -10,38 +10,25 @@ {EA65FDDD-CB77-417F-8BB4-2F3ECB5B3E75} Win7Aero Win32Proj - 10.0.17134.0 + 10.0 - + DynamicLibrary - v141 + $(DefaultPlatformToolset) Unicode - - + + - - $(SolutionDir)StartMenu\Skins\ - $(Configuration)\ - true - false + .skin Windows Aero - - - false - Windows - true - true - true - - @@ -78,4 +65,4 @@ - + \ No newline at end of file diff --git a/Src/Skins/Win7Aero7/Win7Aero7.vcxproj b/Src/Skins/Win7Aero7/Win7Aero7.vcxproj index 6b52c3bf1..095805b4f 100644 --- a/Src/Skins/Win7Aero7/Win7Aero7.vcxproj +++ b/Src/Skins/Win7Aero7/Win7Aero7.vcxproj @@ -10,38 +10,25 @@ {A2CCDE9F-17CE-461E-8BD9-00261B8855A6} Win7Aero7 Win32Proj - 10.0.17134.0 + 10.0 - + DynamicLibrary - v141 + $(DefaultPlatformToolset) Unicode - - + + - - $(SolutionDir)StartMenu\Skins\ - $(Configuration)\ - false - true + Windows Aero .skin7 - - - false - Windows - true - true - true - - @@ -87,4 +74,4 @@ - + \ No newline at end of file diff --git a/Src/Skins/Win7Basic/Win7Basic.vcxproj b/Src/Skins/Win7Basic/Win7Basic.vcxproj index 4417bd5e8..5ee2fc598 100644 --- a/Src/Skins/Win7Basic/Win7Basic.vcxproj +++ b/Src/Skins/Win7Basic/Win7Basic.vcxproj @@ -10,38 +10,25 @@ {404821C5-4EE4-4908-A759-5EF6DAC14AB6} Win7Basic Win32Proj - 10.0.17134.0 + 10.0 - + DynamicLibrary - v141 + $(DefaultPlatformToolset) Unicode - - + + - - $(SolutionDir)StartMenu\Skins\ - $(Configuration)\ - true - false + .skin Windows Basic - - - false - Windows - true - true - true - - @@ -78,4 +65,4 @@ - + \ No newline at end of file diff --git a/Src/Skins/Win8/Win8.vcxproj b/Src/Skins/Win8/Win8.vcxproj index f1d1a34f8..7928d8651 100644 --- a/Src/Skins/Win8/Win8.vcxproj +++ b/Src/Skins/Win8/Win8.vcxproj @@ -10,38 +10,25 @@ {ED74EBA9-1BCB-4B8F-9AE1-DC63B3C24A94} Win8 Win32Proj - 10.0.17134.0 + 10.0 - + DynamicLibrary - v141 + $(DefaultPlatformToolset) Unicode - - + + - - $(SolutionDir)StartMenu\Skins\ - $(Configuration)\ - true - false + .skin Windows 8 - - - false - Windows - true - true - true - - @@ -84,4 +71,4 @@ - + \ No newline at end of file diff --git a/Src/Skins/Win87/Win87.vcxproj b/Src/Skins/Win87/Win87.vcxproj index fca11c345..1becc0f77 100644 --- a/Src/Skins/Win87/Win87.vcxproj +++ b/Src/Skins/Win87/Win87.vcxproj @@ -10,38 +10,25 @@ {5C875214-0E3A-4CF0-BC0C-BFF6FAA4C089} Win87 Win32Proj - 10.0.17134.0 + 10.0 - + DynamicLibrary - v141 + $(DefaultPlatformToolset) Unicode - - + + - - $(SolutionDir)StartMenu\Skins\ - $(Configuration)\ - true - false + Windows 8 .skin7 - - - false - Windows - true - true - true - - @@ -85,4 +72,4 @@ - + \ No newline at end of file diff --git a/Src/Skins/WinXP/WinXP.vcxproj b/Src/Skins/WinXP/WinXP.vcxproj index 57b03bc03..e790f9629 100644 --- a/Src/Skins/WinXP/WinXP.vcxproj +++ b/Src/Skins/WinXP/WinXP.vcxproj @@ -10,38 +10,25 @@ {81EB6336-366C-47DD-82CF-FF6C36CCD2B5} WinXP Win32Proj - 10.0.17134.0 + 10.0 - + DynamicLibrary - v141 + $(DefaultPlatformToolset) Unicode - - + + - - $(SolutionDir)StartMenu\Skins\ - $(Configuration)\ - true - false + .skin Windows XP Luna - - - false - Windows - true - true - true - - @@ -83,4 +70,4 @@ - + \ No newline at end of file diff --git a/Src/StartMenu/StartMenu.cpp b/Src/StartMenu/StartMenu.cpp index b9dc3416c..a1abea443 100644 --- a/Src/StartMenu/StartMenu.cpp +++ b/Src/StartMenu/StartMenu.cpp @@ -274,6 +274,97 @@ IWpnPlatform : public IUnknown //const wchar_t *g_AppId=L"Microsoft.BingWeather_8wekyb3d8bbwe!App"; const wchar_t *g_AppId=L"microsoft.windowscommunicationsapps_8wekyb3d8bbwe!microsoft.windowslive.calendar"; +static DWORD g_winVer = GetVersionEx(GetModuleHandle(L"user32.dll")); + +bool WasOsUpgrade() +{ + CRegKey regKey; + if (regKey.Open(HKEY_LOCAL_MACHINE, L"Software\\OpenShell\\OpenShell", KEY_READ | KEY_WOW64_64KEY) == ERROR_SUCCESS) + { + DWORD ver; + if (regKey.QueryDWORDValue(L"WinVersion", ver) == ERROR_SUCCESS) + { + if (ver < g_winVer) + return true; + } + } + + return false; +} + +// starts new instance of StartMenu.exe with "-upgrade" command line parameter +// UAC dialog is shown to ensure it will run with administrator privileges +void RunOsUpgradeTaskAsAdmin() +{ +#ifdef _WIN64 + wchar_t path[_MAX_PATH] = L"%windir%\\System32\\StartMenuHelper64.dll"; +#else + wchar_t path[_MAX_PATH] = L"%windir%\\System32\\StartMenuHelper32.dll"; +#endif + DoEnvironmentSubst(path, _countof(path)); + if (GetFileAttributes(path) != INVALID_FILE_ATTRIBUTES) + { + GetModuleFileName(NULL, path, _countof(path)); + CoInitialize(NULL); + ShellExecute(NULL, L"runas", path, L"-upgrade", NULL, SW_SHOWNORMAL); + CoUninitialize(); + } +} + +DWORD PerformOsUpgradeTask(bool silent) +{ + CRegKey regKey; + DWORD error = regKey.Open(HKEY_LOCAL_MACHINE, L"Software\\OpenShell\\OpenShell", KEY_WRITE | KEY_WOW64_64KEY); + const wchar_t *nl = error == ERROR_SUCCESS ? L"\r\n\r\n" : L"\r\n"; + if (error == ERROR_SUCCESS) + { + regKey.SetDWORDValue(L"WinVersion", g_winVer); + + // run regsvr32 StartMenuHelper +#ifdef _WIN64 + wchar_t cmdLine[_MAX_PATH] = L"regsvr32 /s \"%windir%\\System32\\StartMenuHelper64.dll\""; +#else + wchar_t cmdLine[_MAX_PATH] = L"regsvr32 /s \"%windir%\\System32\\StartMenuHelper32.dll\""; +#endif + DoEnvironmentSubst(cmdLine, _countof(cmdLine)); + + wchar_t exe[_MAX_PATH] = L"%windir%\\System32\\regsvr32.exe"; + DoEnvironmentSubst(exe, _countof(exe)); + + STARTUPINFO startupInfo = { sizeof(startupInfo) }; + PROCESS_INFORMATION processInfo; + memset(&processInfo, 0, sizeof(processInfo)); + if (CreateProcess(exe, cmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &startupInfo, &processInfo)) + { + CloseHandle(processInfo.hThread); + WaitForSingleObject(processInfo.hProcess, INFINITE); + GetExitCodeProcess(processInfo.hProcess, &error); + CloseHandle(processInfo.hProcess); + } + else + { + error = GetLastError(); + } + } + + if (!silent) + { + if (error) + { + wchar_t msg[1024]; + int len = Sprintf(msg, _countof(msg), L"%s%s", DllLoadStringEx(IDS_UPGRADE_ERROR), nl); + FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, error, 0, msg + len, _countof(msg) - len, NULL); + MessageBox(NULL, msg, DllLoadStringEx(IDS_APP_TITLE), MB_OK | MB_ICONERROR); + } + else + { + MessageBox(NULL, DllLoadStringEx(IDS_UPGRADE_SUCCESS), DllLoadStringEx(IDS_APP_TITLE), MB_OK | MB_ICONINFORMATION); + } + } + + return error; +} + int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrCmdLine, int nCmdShow ) { /* CoInitialize(NULL); @@ -340,8 +431,8 @@ int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrC ImportLegacyData(); DllLogToFile(STARTUP_LOG,L"StartMenu: start '%s'",lpstrCmdLine); - DWORD winVer=GetVersionEx(GetModuleHandle(L"user32.dll")); - if (wcsstr(lpstrCmdLine,L"-startup") || (wcsstr(lpstrCmdLine,L"-autorun") && HIWORD(winVer) + + Debug + ARM64 + Debug Win32 @@ -9,6 +13,10 @@ Debug x64 + + Release + ARM64 + Release Win32 @@ -17,6 +25,10 @@ Release x64 + + Setup + ARM64 + Setup Win32 @@ -30,251 +42,23 @@ {87D5FE20-AF86-458A-9AA3-3131EB06179B} StartMenu Win32Proj - 10.0.17134.0 + 10.0 - - Application - v141 - Static - Unicode - true - - - Application - v141 - Static - Unicode - true - - - Application - v141 - Static - Unicode - - + Application - v141 - Static - Unicode - true - - - Application - v141 - Static - Unicode - true - - - Application - v141 + $(DefaultPlatformToolset) Static Unicode + true - - - - - - - - - - - - - - - - - - - - - - - + + - - $(Configuration)\ - $(Configuration)\ - true - - - $(Configuration)64\ - $(Configuration)64\ - true - - - $(Configuration)\ - $(Configuration)\ - false - - - $(Configuration)64\ - $(Configuration)64\ - false - - - $(Configuration)\ - $(Configuration)\ - false - - - $(Configuration)64\ - $(Configuration)64\ - false - - - - Disabled - ..\Lib;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) - false - EnableFastChecks - MultiThreadedDebug - Use - Level3 - EditAndContinue - true - true - stdcpp17 - - - _DEBUG;%(PreprocessorDefinitions) - - - true - Windows - - - - - Disabled - ..\Lib;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) - false - EnableFastChecks - MultiThreadedDebug - Use - Level3 - ProgramDatabase - true - true - stdcpp17 - - - _DEBUG;%(PreprocessorDefinitions) - - - true - Windows - - - - - MaxSpeed - ..\Lib;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - MultiThreaded - true - Use - Level3 - ProgramDatabase - true - true - stdcpp17 - - - NDEBUG;%(PreprocessorDefinitions) - - - true - Windows - true - true - - - - - MaxSpeed - ..\Lib;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - MultiThreaded - true - Use - Level3 - ProgramDatabase - true - true - stdcpp17 - - - NDEBUG;%(PreprocessorDefinitions) - - - true - Windows - true - true - - - - - MaxSpeed - ..\Lib;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;BUILD_SETUP;%(PreprocessorDefinitions) - MultiThreaded - true - Use - Level3 - true - ProgramDatabase - true - true - stdcpp17 - - - NDEBUG;%(PreprocessorDefinitions) - - - true - Windows - true - true - - - - - MaxSpeed - ..\Lib;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;BUILD_SETUP;%(PreprocessorDefinitions) - MultiThreaded - true - Use - Level3 - true - ProgramDatabase - true - true - stdcpp17 - - - NDEBUG;%(PreprocessorDefinitions) - - - true - Windows - true - true - - @@ -302,7 +86,9 @@ - + + PreserveNewest + @@ -321,6 +107,14 @@ {066c9721-26d5-4c4d-868e-50c2ba0a8196} false + + {75809d15-8403-420a-bbe6-05f478d88d8e} + false + + + {bd28b058-230e-42df-9fb1-ffbb0153f498} + false + {ca5bfc96-428d-42f5-9f7d-cdde048a357c} false diff --git a/Src/StartMenu/StartMenuDLL/Accessibility.cpp b/Src/StartMenu/StartMenuDLL/Accessibility.cpp index fe6b0e859..aa8529543 100644 --- a/Src/StartMenu/StartMenuDLL/Accessibility.cpp +++ b/Src/StartMenu/StartMenuDLL/Accessibility.cpp @@ -16,9 +16,7 @@ CMenuAccessible::CMenuAccessible( CMenuContainer *pOwner ) CreateStdAccessibleObject(pOwner->m_hWnd,OBJID_CLIENT,IID_IAccessible,(void**)&m_pStdAccessible); } -CMenuAccessible::~CMenuAccessible( void ) -{ -} +CMenuAccessible::~CMenuAccessible( void ) = default; void CMenuAccessible::Reset( void ) { @@ -182,7 +180,7 @@ HRESULT STDMETHODCALLTYPE CMenuAccessible::accSelect( long flagsSelect, VARIANT int index=varChild.lVal-1; if (index<0 || index>=(int)m_pOwner->m_Items.size()) return S_FALSE; - m_pOwner->ActivateItem(index,CMenuContainer::ACTIVATE_SELECT,NULL,false); + m_pOwner->ActivateItem(index,CMenuContainer::ACTIVATE_SELECT,NULL); } return S_OK; } diff --git a/Src/StartMenu/StartMenuDLL/CustomMenu.cpp b/Src/StartMenu/StartMenuDLL/CustomMenu.cpp index 8d8785e38..8e7875c74 100644 --- a/Src/StartMenu/StartMenuDLL/CustomMenu.cpp +++ b/Src/StartMenu/StartMenuDLL/CustomMenu.cpp @@ -94,14 +94,14 @@ CStdCommand7 g_StdCommands7[]={ {L"user_music",0,NULL,L"$Menu.UserMusicTip",NULL,&FOLDERID_Music}, {L"user_videos",0,NULL,L"$Menu.UserVideosTip",NULL,&FOLDERID_Videos}, {L"control_panel",0,L"$Menu.ControlPanel",L"$Menu.ControlPanelTip",NULL,&FOLDERID_ControlPanelFolder,NULL,StdMenuItem::MENU_TRACK}, - {L"pc_settings",IDS_PCSETTINGS,L"$Menu.PCSettings",L"",L"%windir%\\ImmersiveControlPanel\\SystemSettings.exe,10",NULL,NULL,StdMenuItem::MENU_TRACK,CStdCommand7::ITEM_SINGLE}, - {L"network_connections",0,NULL,L"$Menu.NetworkTip",NULL,&FOLDERID_ConnectionsFolder}, + {L"pc_settings",IDS_PCSETTINGS,L"$Menu.PCSettings",L"",NULL,NULL,L"shell:appsfolder\\windows.immersivecontrolpanel_cw5n1h2txyewy!microsoft.windows.immersivecontrolpanel",StdMenuItem::MENU_TRACK,CStdCommand7::ITEM_SINGLE}, + {L"network_connections",0,NULL,L"$Menu.NetworkTip",NULL,&FOLDERID_ConnectionsFolder,NULL,0,CStdCommand7::ITEM_NODRIVES}, {L"network",0,NULL,NULL,NULL,&FOLDERID_NetworkFolder,NULL,0,CStdCommand7::ITEM_SINGLE}, - {L"printers",0,NULL,L"$Menu.PrintersTip",NULL,&FOLDERID_PrintersFolder}, + {L"printers",0,NULL,L"$Menu.PrintersTip",NULL,&FOLDERID_PrintersFolder,NULL,0,CStdCommand7::ITEM_NODRIVES}, {L"fonts",0,NULL,NULL,NULL,&FOLDERID_Fonts}, {L"desktop",0,NULL,NULL,NULL,&FOLDERID_Desktop}, - {L"admin",0,NULL,L"$Menu.AdminToolsTip",L"imageres.dll,114",&FOLDERID_CommonAdminTools,NULL,StdMenuItem::MENU_TRACK}, - {L"startup",0,NULL,NULL,NULL,&FOLDERID_Startup,NULL,StdMenuItem::MENU_TRACK}, + {L"admin",0,NULL,L"$Menu.AdminToolsTip",L"imageres.dll,114",&FOLDERID_CommonAdminTools,NULL,StdMenuItem::MENU_TRACK,CStdCommand7::ITEM_NODRIVES}, + {L"startup",0,NULL,NULL,NULL,&FOLDERID_Startup,NULL,StdMenuItem::MENU_TRACK,CStdCommand7::ITEM_NODRIVES}, {L"downloads",0,NULL,L"$Menu.DownloadTip",NULL,&FOLDERID_Downloads}, {L"games",0,NULL,L"$Menu.GamesTip",NULL,&FOLDERID_Games,NULL,StdMenuItem::MENU_TRACK}, {L"links",0,NULL,NULL,NULL,&FOLDERID_Links}, @@ -112,7 +112,7 @@ CStdCommand7 g_StdCommands7[]={ {L"lib_videos",IDS_LIB_VIDEOS_ITEM,NULL,L"$Menu.VideosLibTip",NULL,&FOLDERID_VideosLibrary}, {L"lib_tv",IDS_LIB_TV_ITEM,NULL,L"$Menu.RecordingsLibTip",NULL,&FOLDERID_RecordedTVLibrary}, {L"homegroup",0,NULL,L"$Menu.HomegroupTip",NULL,&FOLDERID_HomeGroup,NULL,0,CStdCommand7::ITEM_SINGLE}, - {L"devices",0,NULL,NULL,NULL,NULL,L"::{26EE0668-A00A-44D7-9371-BEB064C98683}\\0\\::{A8A91A66-3A7D-4424-8D24-04E180695C7A}"}, + {L"devices",0,NULL,NULL,NULL,NULL,L"::{26EE0668-A00A-44D7-9371-BEB064C98683}\\0\\::{A8A91A66-3A7D-4424-8D24-04E180695C7A}",0,CStdCommand7::ITEM_NODRIVES}, {L"defaults",0,NULL,NULL,NULL,NULL,L"::{26EE0668-A00A-44D7-9371-BEB064C98683}\\0\\::{17CD9488-1228-4B2F-88CE-4298E93E0966}",0,CStdCommand7::ITEM_SINGLE}, {L"apps",IDS_METRO_APPS,L"$Menu.Apps",NULL,L",2",NULL,NULL,StdMenuItem::MENU_TRACK,CStdCommand7::ITEM_FOLDER}, diff --git a/Src/StartMenu/StartMenuDLL/CustomMenu.h b/Src/StartMenu/StartMenuDLL/CustomMenu.h index f2cec3f44..8ecc02df4 100644 --- a/Src/StartMenu/StartMenuDLL/CustomMenu.h +++ b/Src/StartMenu/StartMenuDLL/CustomMenu.h @@ -15,6 +15,7 @@ struct CStdCommand7 ITEM_SINGLE=1, // this item never has sub-menu ITEM_FOLDER=2, // this item always has sub-menu ITEM_COMPUTER=4, // this item can be expanded only one level + ITEM_NODRIVES=8, // this item can never be expanded only one level }; const wchar_t *command; int nameID; diff --git a/Src/StartMenu/StartMenuDLL/DragDrop.cpp b/Src/StartMenu/StartMenuDLL/DragDrop.cpp index 5e3f6880e..7b3262db8 100644 --- a/Src/StartMenu/StartMenuDLL/DragDrop.cpp +++ b/Src/StartMenu/StartMenuDLL/DragDrop.cpp @@ -248,7 +248,6 @@ bool CMenuContainer::DragOutApps( const CItemManager::ItemInfo *pInfo ) s_bDragFromTree=false; if (!m_bDestroyed) KillTimer(TIMER_DRAG); - HideTemp(false); s_bPreventClosing=false; if (s_bDragClosed) @@ -343,7 +342,6 @@ bool CMenuContainer::DragOut( int index, bool bApp ) if (!m_bDestroyed) KillTimer(TIMER_DRAG); s_bDragMovable=false; - HideTemp(false); s_bPreventClosing=false; if (s_bDragClosed) @@ -854,21 +852,29 @@ HRESULT STDMETHODCALLTYPE CMenuContainer::Drop( IDataObject *pDataObj, DWORD grf CComQIPtr pAsync=pDataObj; if (pAsync) pAsync->SetAsyncMode(FALSE); - for (std::vector::iterator it=s_Menus.begin();it!=s_Menus.end();++it) - if (!(*it)->m_bDestroyed) - (*it)->EnableWindow(FALSE); // disable all menus + for (auto& it : s_Menus) + { + if (!it->m_bDestroyed) + { + it->EnableWindow(FALSE); // disable all menus + it->SetWindowPos(HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); + } + } bool bAllPrograms=s_bAllPrograms; if (bAllPrograms) ::EnableWindow(g_TopWin7Menu,FALSE); bool bOld=s_bPreventClosing; s_bPreventClosing=true; AddRef(); pTarget->Drop(pDataObj,grfKeyState,pt,pdwEffect); - if (!bOld) - HideTemp(false); s_bPreventClosing=bOld; - for (std::vector::iterator it=s_Menus.begin();it!=s_Menus.end();++it) - if (!(*it)->m_bDestroyed) - (*it)->EnableWindow(TRUE); // enable all menus + for (auto& it : s_Menus) + { + if (!it->m_bDestroyed) + { + it->EnableWindow(TRUE); // enable all menus + it->SetWindowPos(HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); + } + } if (bAllPrograms) ::EnableWindow(g_TopWin7Menu,TRUE); } else diff --git a/Src/StartMenu/StartMenuDLL/DragDrop.h b/Src/StartMenu/StartMenuDLL/DragDrop.h index 9b2e58476..bd27deca4 100644 --- a/Src/StartMenu/StartMenuDLL/DragDrop.h +++ b/Src/StartMenu/StartMenuDLL/DragDrop.h @@ -15,9 +15,7 @@ class CDropTargetProxy: public IDropTarget m_RefCount=0; } - ~CDropTargetProxy( void ) - { - } + ~CDropTargetProxy( void ) = default; void Reset( void ) { diff --git a/Src/StartMenu/StartMenuDLL/ItemManager.cpp b/Src/StartMenu/StartMenuDLL/ItemManager.cpp index 456ab751f..a2d403bbf 100644 --- a/Src/StartMenu/StartMenuDLL/ItemManager.cpp +++ b/Src/StartMenu/StartMenuDLL/ItemManager.cpp @@ -55,8 +55,8 @@ GUID IID_IApplicationResolver8={0xde25675a,0x72de,0x44b4,{0x93,0x73,0x05,0x17,0x interface IResourceContext; -const GUID IID_IResourceMap={0x6e21e72b, 0xb9b0, 0x42ae, {0xa6, 0x86, 0x98, 0x3c, 0xf7, 0x84, 0xed, 0xcd}}; -interface IResourceMap : public IUnknown +MIDL_INTERFACE("6e21e72b-b9b0-42ae-a686-983cf784edcd") +IResourceMap : public IUnknown { virtual HRESULT STDMETHODCALLTYPE GetUri(const wchar_t **pUri ) = 0; virtual HRESULT STDMETHODCALLTYPE GetSubtree(const wchar_t *propName, IResourceMap **pSubTree ) = 0; @@ -76,8 +76,8 @@ enum RESOURCE_SCALE RES_SCALE_80 =3, }; -const GUID IID_ResourceContext={0xe3c22b30, 0x8502, 0x4b2f, {0x91, 0x33, 0x55, 0x96, 0x74, 0x58, 0x7e, 0x51}}; -interface IResourceContext : public IUnknown +MIDL_INTERFACE("e3c22b30-8502-4b2f-9133-559674587e51") +IResourceContext : public IUnknown { virtual HRESULT STDMETHODCALLTYPE GetLanguage( void ) = 0; virtual HRESULT STDMETHODCALLTYPE GetHomeRegion( wchar_t *pRegion ) = 0; @@ -136,16 +136,19 @@ static void CreateAppResolver( void ) static bool DetectGrayscaleImage( const unsigned int *bits, int stride, int width, int height ) { + if (width==0 || height==0) + return false; int transparent=0; for (int y=0;y>24)&255; int r=(pixel>>16)&255; int g=(pixel>>8)&255; int b=(pixel)&255; - if (abs(r-g)>2 || abs(r-b)>2 || abs(g-b)>2) + if (abs(a-r)>2 || abs(r-g)>2 || abs(r-b)>2 || abs(g-b)>2) return false; // found colored pixel if (!(pixel&0xFF000000)) transparent++; @@ -175,6 +178,27 @@ static void CreateMonochromeImage( unsigned int *bits, int stride, int width, in } } +HBITMAP ColorizeMonochromeImage(HBITMAP bitmap, DWORD color) +{ + { + BITMAP info{}; + GetObject(bitmap, sizeof(info), &info); + if (!DetectGrayscaleImage((const unsigned int*)info.bmBits, info.bmWidth, info.bmWidth, info.bmHeight)) + return nullptr; + } + + HBITMAP bmp = (HBITMAP)CopyImage(bitmap, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION); + if (bmp) + { + BITMAP info{}; + GetObject(bmp, sizeof(info), &info); + + CreateMonochromeImage((unsigned int*)info.bmBits, info.bmWidth, info.bmWidth, info.bmHeight, color); + } + + return bmp; +} + static HBITMAP BitmapFromMetroIcon( HICON hIcon, int bitmapSize, int iconSize, DWORD metroColor, bool bDestroyIcon=true ) { ICONINFO info; @@ -258,7 +282,6 @@ static HBITMAP BitmapFromMetroBitmap( HBITMAP hBitmap, int bitmapSize, DWORD met HGDIOBJ bmp0=SelectObject(hdc,bmp); HGDIOBJ bmp02=SelectObject(hsrc,hBitmap); int offset=(bitmapSize-info.bmWidth)/2; - bool bInvert=g_bInvertMetroIcons; if (g_bInvertMetroIcons && bGrayscale) { FillRect(hdc,&rc,(HBRUSH)GetStockObject(BLACK_BRUSH)); @@ -299,10 +322,9 @@ static HBITMAP BitmapFromMetroBitmap( HBITMAP hBitmap, int bitmapSize, DWORD met /////////////////////////////////////////////////////////////////////////////// -static HBITMAP LoadMetroBitmap0( const wchar_t *path, int bitmapSize, DWORD metroColor ) +static HBITMAP LoadMetroBitmap0(const wchar_t *path, int bitmapSize, DWORD metroColor = 0xFFFFFFFF) { - int iconSize=g_bInvertMetroIcons?bitmapSize:(bitmapSize-2); - SIZE size={-iconSize,iconSize}; + SIZE size={-bitmapSize,bitmapSize}; HBITMAP hBitmap=LoadImageFile(path,&size,true,true,NULL); if (hBitmap) { @@ -439,16 +461,8 @@ static HBITMAP LoadMetroBitmap2( const wchar_t *location, int bitmapSize, DWORD } if (iconSize) { - if (g_bInvertMetroIcons) - { - if (iconSize>bitmapSize) - iconSize=bitmapSize; - } - else - { - if (iconSize>bitmapSize-2) - iconSize=bitmapSize-2; - } + if (iconSize>bitmapSize) + iconSize=bitmapSize; SIZE size={iconSize,iconSize}; HBITMAP hBitmap=LoadImageFile(path,&size,true,true,NULL); if (hBitmap) @@ -477,7 +491,8 @@ void CItemManager::LoadIconData::Init( void ) HIMAGELIST_QueryInterface(m_TempLists[i],IID_IImageList2,(void**)&m_pTempLists[i]); } } - m_pFactory.CoCreateInstance(CLSID_WICImagingFactory); + if (FAILED(m_pFactory.CoCreateInstance(CLSID_WICImagingFactory))) + m_pFactory.CoCreateInstance(CLSID_WICImagingFactory1); } void CItemManager::LoadIconData::Close( void ) @@ -577,7 +592,7 @@ void CItemManager::Init( void ) m_RootGames=L"::{ED228FDF-9EA8-4870-83B1-96B02CFE0D52}\\"; wchar_t text[_MAX_PATH]; - Strcpy(text,_countof(text),START_MENU_PINNED_ROOT L"\\"); + Sprintf(text,_countof(text),L"%s\\",GetSettingString(L"PinnedItemsPath")); DoEnvironmentSubst(text,_countof(text)); m_RootStartMenu3=text; StringUpper(m_RootStartMenu3); @@ -597,7 +612,7 @@ void CItemManager::Init( void ) { int width, height; pList->GetIconSize(&width,&height); - m_ListSizes.push_back(std::pair(width,i)); + m_ListSizes.emplace_back(width,i); } } std::sort(m_ListSizes.begin(),m_ListSizes.end()); @@ -605,7 +620,7 @@ void CItemManager::Init( void ) CreateDefaultIcons(); LoadCacheFile(); - ItemInfo &item=m_ItemInfos.insert(std::pair(0,ItemInfo()))->second; + ItemInfo &item=m_ItemInfos.emplace(0,ItemInfo())->second; item.bIconOnly=true; item.smallIcon=m_DefaultSmallIcon; item.largeIcon=m_DefaultLargeIcon; @@ -692,21 +707,21 @@ void CItemManager::CreateDefaultIcons( void ) icon.bitmap=BitmapFromIcon(LoadShellIcon(index,SMALL_ICON_SIZE),SMALL_ICON_SIZE); else icon.bitmap=NULL; - m_DefaultSmallIcon=&m_IconInfos.insert(std::pair(0,icon))->second; + m_DefaultSmallIcon=&m_IconInfos.emplace(0,icon)->second; icon.sizeType=ICON_SIZE_TYPE_LARGE; if (index>=0) icon.bitmap=BitmapFromIcon(LoadShellIcon(index,LARGE_ICON_SIZE),LARGE_ICON_SIZE); else icon.bitmap=NULL; - m_DefaultLargeIcon=&m_IconInfos.insert(std::pair(0,icon))->second; + m_DefaultLargeIcon=&m_IconInfos.emplace(0,icon)->second; icon.sizeType=ICON_SIZE_TYPE_EXTRA_LARGE; if (index>=0) icon.bitmap=BitmapFromIcon(LoadShellIcon(index,EXTRA_LARGE_ICON_SIZE),EXTRA_LARGE_ICON_SIZE); else icon.bitmap=NULL; - m_DefaultExtraLargeIcon=&m_IconInfos.insert(std::pair(0,icon))->second; + m_DefaultExtraLargeIcon=&m_IconInfos.emplace(0,icon)->second; } CItemManager::LoadIconData &CItemManager::GetLoadIconData( void ) @@ -884,7 +899,7 @@ const CItemManager::ItemInfo *CItemManager::GetItemInfo( IShellItem *pItem, PIDL } if (!pInfo) { - pInfo=&m_ItemInfos.insert(std::pair(hash,ItemInfo()))->second; + pInfo=&m_ItemInfos.emplace(hash,ItemInfo())->second; pInfo->pidl.Clone(pidl); pInfo->path=path; pInfo->PATH=PATH; @@ -966,7 +981,7 @@ const CItemManager::ItemInfo *CItemManager::GetItemInfo( CString path, int refre } if (!pInfo) { - pInfo=&m_ItemInfos.insert(std::pair(hash,ItemInfo()))->second; + pInfo=&m_ItemInfos.emplace(hash,ItemInfo())->second; if (!PATH.IsEmpty()) MenuParseDisplayName(path,&pInfo->pidl,NULL,NULL); if (pInfo->pidl) @@ -1064,7 +1079,7 @@ const CItemManager::ItemInfo *CItemManager::GetCustomIcon( const wchar_t *locati } if (!pInfo) { - pInfo=&m_ItemInfos.insert(std::pair(hash,ItemInfo()))->second; + pInfo=&m_ItemInfos.emplace(hash,ItemInfo())->second; pInfo->bIconOnly=true; pInfo->bTemp=bTemp; pInfo->iconPath=location; @@ -1110,9 +1125,64 @@ const CItemManager::ItemInfo *CItemManager::GetCustomIcon( const wchar_t *path, *c=0; index=-_wtol(c+1); } + // special handling for Apps icon + if (!text[0] && index==-IDI_APPSICON) + { + if (IsWin11()) + index=-IDI_APPSICON11; + else if (GetWinVersion()==WIN_VER_WIN10) + index=-IDI_APPSICON10; + } return GetCustomIcon(text,index,iconSizeType,false); } +const CItemManager::ItemInfo* CItemManager::GetLinkIcon(IShellLink* link, TIconSizeType iconSizeType) +{ + wchar_t location[_MAX_PATH]; + int index; + + if (link->GetIconLocation(location, _countof(location), &index) == S_OK && location[0]) + return GetCustomIcon(location, index, iconSizeType, (index == 0)); // assuming that if index!=0 the icon comes from a permanent location like a dll or exe + + CComQIPtr store(link); + if (store) + { + // Name: System.AppUserModel.DestListLogoUri -- PKEY_AppUserModel_DestListLogoUri + // Type: String -- VT_LPWSTR + // FormatID: {9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 29 + static const PROPERTYKEY PKEY_AppUserModel_DestListLogoUri = { {0x9F4C2855, 0x9F79, 0x4B39, {0xA8, 0xD0, 0xE1, 0xD4, 0x2D, 0xE1, 0xD5, 0xF3}}, 29 }; + + auto logoUri = GetPropertyStoreString(store, PKEY_AppUserModel_DestListLogoUri); + if (!logoUri.IsEmpty()) + { + auto appId = GetPropertyStoreString(store, PKEY_AppUserModel_ID); + if (!appId.IsEmpty()) + { + CComPtr resManager; + if (SUCCEEDED(resManager.CoCreateInstance(CLSID_ResourceManager))) + { + if (SUCCEEDED(resManager->InitializeForPackage(GetPackageFullName(appId)))) + { + CComPtr resMap; + if (SUCCEEDED(resManager->GetMainResourceMap(IID_PPV_ARGS(&resMap)))) + { + CComPtr resContext; + if (SUCCEEDED(resManager->GetDefaultContext(IID_PPV_ARGS(&resContext)))) + resContext->SetTargetSize(GetIconSize(iconSizeType)); + + CComString location; + if (SUCCEEDED(resMap->GetFilePath(logoUri, &location))) + return GetCustomIcon(location, -65536, iconSizeType, true); + } + } + } + } + } + } + + return nullptr; +} + const CItemManager::ItemInfo *CItemManager::GetMetroAppInfo10( const wchar_t *appid ) { wchar_t APPID[256]; @@ -1823,7 +1893,11 @@ void CItemManager::RefreshItemInfo( ItemInfo *pInfo, int refreshFlags, IShellIte { newInfo.bLink=true; pStore=pLink; - +#ifdef _DEBUG + LOG_MENU(LOG_OPEN, L"Link: %s", newInfo.path); + LOG_MENU(LOG_OPEN, L"Link property store:"); + LogPropertyStore(LOG_OPEN, pStore); +#endif if (SUCCEEDED(pLink->GetIDList(&newInfo.targetPidl))) { wchar_t path[_MAX_PATH]; @@ -1832,6 +1906,28 @@ void CItemManager::RefreshItemInfo( ItemInfo *pInfo, int refreshFlags, IShellIte CharUpper(path); newInfo.targetPATH=path; } + + CComPtr target; + if (SUCCEEDED(SHCreateItemFromIDList(newInfo.targetPidl, IID_PPV_ARGS(&target)))) + { + CComPtr store; + if (SUCCEEDED(target->BindToHandler(nullptr, BHID_PropertyStore, IID_PPV_ARGS(&store)))) + { +#ifdef _DEBUG + LOG_MENU(LOG_OPEN, L"Target property store:"); + LogPropertyStore(LOG_OPEN, store); +#endif + PROPVARIANT val; + PropVariantInit(&val); + if (SUCCEEDED(store->GetValue(PKEY_MetroAppLauncher, &val)) && (val.vt == VT_I4 || val.vt == VT_UI4) && val.intVal) + { + newInfo.bLink = false; + pItem = std::move(target); + pStore = store; + } + PropVariantClear(&val); + } + } } } } @@ -1923,7 +2019,6 @@ void CItemManager::RefreshItemInfo( ItemInfo *pInfo, int refreshFlags, IShellIte { newInfo.targetPidl.Clear(); newInfo.targetPATH.Empty(); - newInfo.metroName.Empty(); newInfo.iconPath.Empty(); newInfo.bNoPin=newInfo.bNoNew=false; if (!newInfo.bMetroApp) @@ -2296,12 +2391,6 @@ void CItemManager::LoadShellIcon( IShellItem *pItem, int refreshFlags, const Ico int smallIconSize=SMALL_ICON_SIZE; int largeIconSize=LARGE_ICON_SIZE; int extraLargeIconSize=EXTRA_LARGE_ICON_SIZE; - if (pMetroColor) - { - smallIconSize-=2; - largeIconSize-=2; - extraLargeIconSize-=2; - } HICON hSmallIcon=NULL, hLargeIcon=NULL, hExtraLargeIcon=NULL; if (bNotFileName) { @@ -2414,14 +2503,13 @@ void CItemManager::LoadMetroIcon( IShellItem *pItem, int &refreshFlags, const Ic if (FAILED(pResManager->InitializeForPackage(packageName))) return; CComPtr pResMap; - if (FAILED(pResManager->GetMainResourceMap(IID_IResourceMap,(void**)&pResMap))) + if (FAILED(pResManager->GetMainResourceMap(IID_PPV_ARGS(&pResMap)))) return; CComPtr pResContext; - if (FAILED(pResManager->GetDefaultContext(IID_ResourceContext,(void**)&pResContext))) + if (FAILED(pResManager->GetDefaultContext(IID_PPV_ARGS(&pResContext)))) return; int iconFlags=0; - int delta=g_bInvertMetroIcons?0:2; - if ((refreshFlags&INFO_SMALL_ICON) && SetResContextTargetSize(pResContext,SMALL_ICON_SIZE-delta)) + if ((refreshFlags&INFO_SMALL_ICON) && SetResContextTargetSize(pResContext,SMALL_ICON_SIZE)) { CComString pLocation; if (SUCCEEDED(pResMap->GetFilePath(iconName,&pLocation))) @@ -2431,7 +2519,7 @@ void CItemManager::LoadMetroIcon( IShellItem *pItem, int &refreshFlags, const Ic StoreInCache(hash,L"",hSmallBitmap,NULL,NULL,INFO_SMALL_ICON,smallIcon,largeIcon,extraLargeIcon,false,true); } } - if ((refreshFlags&INFO_LARGE_ICON) && SetResContextTargetSize(pResContext,LARGE_ICON_SIZE-delta)) + if ((refreshFlags&INFO_LARGE_ICON) && SetResContextTargetSize(pResContext,LARGE_ICON_SIZE)) { CComString pLocation; if (SUCCEEDED(pResMap->GetFilePath(iconName,&pLocation))) @@ -2441,7 +2529,7 @@ void CItemManager::LoadMetroIcon( IShellItem *pItem, int &refreshFlags, const Ic StoreInCache(hash,L"",NULL,hLargeBitmap,NULL,INFO_LARGE_ICON,smallIcon,largeIcon,extraLargeIcon,false,true); } } - if ((refreshFlags&INFO_SMALL_ICON) && SetResContextTargetSize(pResContext,EXTRA_LARGE_ICON_SIZE-delta)) + if ((refreshFlags&INFO_EXTRA_LARGE_ICON) && SetResContextTargetSize(pResContext,EXTRA_LARGE_ICON_SIZE)) { CComString pLocation; if (SUCCEEDED(pResMap->GetFilePath(iconName,&pLocation))) @@ -2524,7 +2612,7 @@ void CItemManager::StoreInCache( unsigned int hash, const wchar_t *path, HBITMAP if ((refreshFlags&INFO_SMALL_ICON) && hSmallBitmap) { - IconInfo *pInfo=&m_IconInfos.insert(std::pair(hash,IconInfo()))->second; + IconInfo *pInfo=&m_IconInfos.emplace(hash,IconInfo())->second; pInfo->sizeType=ICON_SIZE_TYPE_SMALL; pInfo->bTemp=bTemp; pInfo->bMetro=bMetro; @@ -2534,7 +2622,7 @@ void CItemManager::StoreInCache( unsigned int hash, const wchar_t *path, HBITMAP } if ((refreshFlags&INFO_LARGE_ICON) && hLargeBitmap) { - IconInfo *pInfo=&m_IconInfos.insert(std::pair(hash,IconInfo()))->second; + IconInfo *pInfo=&m_IconInfos.emplace(hash,IconInfo())->second; pInfo->sizeType=ICON_SIZE_TYPE_LARGE; pInfo->bTemp=bTemp; pInfo->bMetro=bMetro; @@ -2544,7 +2632,7 @@ void CItemManager::StoreInCache( unsigned int hash, const wchar_t *path, HBITMAP } if ((refreshFlags&INFO_EXTRA_LARGE_ICON) && hExtraLargeBitmap) { - IconInfo *pInfo=&m_IconInfos.insert(std::pair(hash,IconInfo()))->second; + IconInfo *pInfo=&m_IconInfos.emplace(hash,IconInfo())->second; pInfo->sizeType=ICON_SIZE_TYPE_EXTRA_LARGE; pInfo->bTemp=bTemp; pInfo->bMetro=bMetro; @@ -2586,49 +2674,45 @@ void CItemManager::IconInfo::SetPath( const wchar_t *path ) timestamp.dwHighDateTime=timestamp.dwLowDateTime=0; } -void CItemManager::LoadCustomIcon( const wchar_t *iconPath, int iconIndex, int refreshFlags, const IconInfo *&smallIcon, const IconInfo *&largeIcon, const IconInfo *&extraLargeIcon, bool bTemp ) +void CItemManager::LoadCustomIcon(const wchar_t *iconPath, int iconIndex, int refreshFlags, const IconInfo *&smallIcon, const IconInfo *&largeIcon, const IconInfo *&extraLargeIcon, bool bTemp) { - unsigned int hash=CalcFNVHash(iconPath,CalcFNVHash(&iconIndex,4)); + unsigned int hash = CalcFNVHash(iconPath, CalcFNVHash(&iconIndex, 4)); - FindInCache(hash,refreshFlags,smallIcon,largeIcon,extraLargeIcon); - if (!refreshFlags) return; + FindInCache(hash, refreshFlags, smallIcon, largeIcon, extraLargeIcon); + if (!refreshFlags) + return; - // extract icon - HBITMAP hSmallBitmap=NULL, hLargeBitmap=NULL, hExtraLargeBitmap=NULL; - if (refreshFlags&INFO_SMALL_ICON) - { - HICON hIcon; - if (!*iconPath) - hIcon=(HICON)LoadImage(g_Instance,MAKEINTRESOURCE(-iconIndex),IMAGE_ICON,SMALL_ICON_SIZE,SMALL_ICON_SIZE,LR_DEFAULTCOLOR); - else - hIcon=ShExtractIcon(iconPath,iconIndex==-1?0:iconIndex,SMALL_ICON_SIZE); - if (hIcon) - hSmallBitmap=BitmapFromIcon(hIcon,SMALL_ICON_SIZE); - } + auto ExtractIconAsBitmap = [&](int iconSize) -> HBITMAP { - if (refreshFlags&INFO_LARGE_ICON) - { - HICON hIcon; - if (!*iconPath) - hIcon=(HICON)LoadImage(g_Instance,MAKEINTRESOURCE(-iconIndex),IMAGE_ICON,LARGE_ICON_SIZE,LARGE_ICON_SIZE,LR_DEFAULTCOLOR); - else - hIcon=ShExtractIcon(iconPath,iconIndex==-1?0:iconIndex,LARGE_ICON_SIZE); - if (hIcon) - hLargeBitmap=BitmapFromIcon(hIcon,LARGE_ICON_SIZE); - } + if (iconIndex == -65536) + return LoadMetroBitmap0(iconPath, iconSize); - if (refreshFlags&INFO_EXTRA_LARGE_ICON) - { HICON hIcon; + if (!*iconPath) - hIcon=(HICON)LoadImage(g_Instance,MAKEINTRESOURCE(-iconIndex),IMAGE_ICON,EXTRA_LARGE_ICON_SIZE,EXTRA_LARGE_ICON_SIZE,LR_DEFAULTCOLOR); + hIcon = (HICON)LoadImage(g_Instance, MAKEINTRESOURCE(-iconIndex), IMAGE_ICON, iconSize, iconSize, LR_DEFAULTCOLOR); else - hIcon=ShExtractIcon(iconPath,iconIndex==-1?0:iconIndex,EXTRA_LARGE_ICON_SIZE); + hIcon = ShExtractIcon(iconPath, iconIndex == -1 ? 0 : iconIndex, iconSize); + if (hIcon) - hExtraLargeBitmap=BitmapFromIcon(hIcon,EXTRA_LARGE_ICON_SIZE); - } + return BitmapFromIcon(hIcon, iconSize); + + return nullptr; + }; + + // extract icon + HBITMAP hSmallBitmap = nullptr, hLargeBitmap = nullptr, hExtraLargeBitmap = nullptr; - StoreInCache(hash,bTemp?NULL:iconPath,hSmallBitmap,hLargeBitmap,hExtraLargeBitmap,refreshFlags,smallIcon,largeIcon,extraLargeIcon,bTemp,false); + if (refreshFlags & INFO_SMALL_ICON) + hSmallBitmap = ExtractIconAsBitmap(SMALL_ICON_SIZE); + + if (refreshFlags & INFO_LARGE_ICON) + hLargeBitmap = ExtractIconAsBitmap(LARGE_ICON_SIZE); + + if (refreshFlags & INFO_EXTRA_LARGE_ICON) + hExtraLargeBitmap = ExtractIconAsBitmap(EXTRA_LARGE_ICON_SIZE); + + StoreInCache(hash, bTemp ? nullptr : iconPath, hSmallBitmap, hLargeBitmap, hExtraLargeBitmap, refreshFlags, smallIcon, largeIcon, extraLargeIcon, bTemp, false); } // Recursive function to preload the items for a folder @@ -2798,7 +2882,8 @@ void CItemManager::PreloadItemsThread( void ) else if (g_CacheFolders[i].folder==FOLDERID_ClassicPinned) { if (GetSettingInt(L"PinnedPrograms")!=PINNED_PROGRAMS_PINNED) continue; - wchar_t path[_MAX_PATH]=START_MENU_PINNED_ROOT; + wchar_t path[_MAX_PATH]; + Strcpy(path,_countof(path),GetSettingString(L"PinnedItemsPath")); DoEnvironmentSubst(path,_countof(path)); if (FAILED(SHParseDisplayName(path,NULL,&pidl,0,NULL)) || !pidl) continue; if (FAILED(SHCreateItemFromIDList(pidl,IID_IShellItem,(void**)&pFolder)) || !pFolder) continue; @@ -3204,7 +3289,7 @@ void CItemManager::LoadCacheFile( void ) bError=true; break; } - remapIcons.push_back(&m_IconInfos.insert(std::pair(data.key,info))->second); + remapIcons.push_back(&m_IconInfos.emplace(data.key,info)->second); } else { @@ -3235,7 +3320,7 @@ void CItemManager::LoadCacheFile( void ) bError=true; break; } - ItemInfo &info=m_ItemInfos.insert(std::pair(data.key,ItemInfo()))->second; + ItemInfo &info=m_ItemInfos.emplace(data.key,ItemInfo())->second; info.writestamp=data.writestamp; info.createstamp=data.createstamp; @@ -3499,13 +3584,33 @@ void CItemManager::ClearCache( void ) m_IconInfos.clear(); m_MetroItemInfos10.clear(); CreateDefaultIcons(); - ItemInfo &item=m_ItemInfos.insert(std::pair(0,ItemInfo()))->second; + ItemInfo &item=m_ItemInfos.emplace(0,ItemInfo())->second; item.bIconOnly=true; item.smallIcon=m_DefaultSmallIcon; item.largeIcon=m_DefaultLargeIcon; item.extraLargeIcon=m_DefaultExtraLargeIcon; } +int CItemManager::GetIconSize(TIconSizeType iconSizeType) const +{ + switch (iconSizeType) + { + case ICON_SIZE_TYPE_SMALL: + case ICON_SIZE_TYPE_SMALL_METRO: + return SMALL_ICON_SIZE; + + case ICON_SIZE_TYPE_LARGE: + case ICON_SIZE_TYPE_LARGE_METRO: + return LARGE_ICON_SIZE; + + case ICON_SIZE_TYPE_EXTRA_LARGE: + case ICON_SIZE_TYPE_EXTRA_LARGE_METRO: + return EXTRA_LARGE_ICON_SIZE; + } + + return 0; +} + // retrieves the pidl and the SFGAO_FOLDER, SFGAO_STREAM, SFGAO_LINK flags for the path // for paths starting with \\ tries to guess if it is a folder or a link based on the extension HRESULT MenuParseDisplayName( const wchar_t *path, PIDLIST_ABSOLUTE *pPidl, SFGAOF *pFlags, TNetworkType *pNetworkType ) diff --git a/Src/StartMenu/StartMenuDLL/ItemManager.h b/Src/StartMenu/StartMenuDLL/ItemManager.h index 42c625015..e10775bdf 100644 --- a/Src/StartMenu/StartMenuDLL/ItemManager.h +++ b/Src/StartMenu/StartMenuDLL/ItemManager.h @@ -51,6 +51,8 @@ class CItemManager ICON_SIZE_COUNT }; + int GetIconSize(TIconSizeType iconSizeType) const; + struct IconInfo { TIconSizeType sizeType; @@ -173,6 +175,7 @@ class CItemManager const ItemInfo *GetItemInfo( CString path, int refreshFlags, TLocation location=LOCATION_UNKNOWN ); const ItemInfo *GetCustomIcon( const wchar_t *location, int index, TIconSizeType iconSizeType, bool bTemp ); const ItemInfo *GetCustomIcon( const wchar_t *path, TIconSizeType iconSizeType ); + const ItemInfo* GetLinkIcon(IShellLink* link, TIconSizeType iconSizeType); const ItemInfo *GetMetroAppInfo10( const wchar_t *appid ); void UpdateItemInfo( const ItemInfo *pInfo, int refreshFlags, bool bHasWriteLock=false ); void WaitForShortcuts( const POINT &balloonPos ); @@ -380,7 +383,7 @@ class CItemManager static DWORD CALLBACK StaticRefreshInfoThread( void *param ); static DWORD CALLBACK SaveCacheFileThread( void *param ); - // all paths are in caps and end with \ + // all paths are in caps and end with backslash CString m_RootStartMenu1; CString m_RootStartMenu2; CString m_RootStartMenu3; @@ -466,9 +469,9 @@ bool MenuGetFileTimestamp( const wchar_t *path, FILETIME *pWriteTime, FILETIME * STDAPI ShGetKnownFolderPath( REFKNOWNFOLDERID rfid, PWSTR *pPath ); STDAPI ShGetKnownFolderIDList(REFKNOWNFOLDERID rfid, PIDLIST_ABSOLUTE *pPidl ); STDAPI ShGetKnownFolderItem(REFKNOWNFOLDERID rfid, IShellItem **ppItem ); +HBITMAP ColorizeMonochromeImage(HBITMAP bitmap, DWORD color); #define TASKBAR_PINNED_ROOT L"%APPDATA%\\Microsoft\\Internet Explorer\\Quick Launch\\User Pinned\\TaskBar" -#define START_MENU_PINNED_ROOT L"%APPDATA%\\OpenShell\\Pinned" #define STARTSCREEN_COMMAND L"startscreen.lnk" #define USERASSIST_LINKS_KEY L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\UserAssist\\{F4E57C4B-2036-45F0-A9AB-443BCFE33D9F}\\Count" #define USERASSIST_APPIDS_KEY L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\UserAssist\\{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\\Count" diff --git a/Src/StartMenu/StartMenuDLL/JumpLists.cpp b/Src/StartMenu/StartMenuDLL/JumpLists.cpp index e03a0ca13..4da6e5a60 100644 --- a/Src/StartMenu/StartMenuDLL/JumpLists.cpp +++ b/Src/StartMenu/StartMenuDLL/JumpLists.cpp @@ -198,7 +198,13 @@ bool HasJumplist( const wchar_t *appid ) { UINT count; if (SUCCEEDED(pCustomList->GetCategoryCount(&count)) && count>0) + { + // skip Settings app (it reports one category with unsupported type, thus jump-list will be empty) + if (wcscmp(appid, L"windows.immersivecontrolpanel_cw5n1h2txyewy!microsoft.windows.immersivecontrolpanel") == 0) + return false; + return true; + } } if (CAutomaticList(appid).HasList()) @@ -322,6 +328,9 @@ static void AddJumpItem( CJumpGroup &group, IUnknown *pUnknown, std::vector=WIN_VER_WIN7); - if (!item.pItem) return false; + if (!item.pItem) + return false; + if (item.type==CJumpItem::TYPE_ITEM) { -/* CString appid; - { - CItemManager::RWLock lock(&g_ItemManager,false,CItemManager::RWLOCK_ITEMS); - appid=pAppInfo->GetAppid(); - } - LOG_MENU(LOG_OPEN,L"Execute Item: name=%s, appid=%s",item.name,appid);*/ CComQIPtr pItem(item.pItem); if (!pItem) return false; -/* CComString pName; - if (FAILED(pItem->GetDisplayName(SIGDN_DESKTOPABSOLUTEPARSING,&pName))) - return false; - wchar_t ext[_MAX_EXT]; - Strcpy(ext,_countof(ext),PathFindExtension(pName)); - // find the correct association handler by appid and invoke it on the item - CComPtr pEnumHandlers; - if (ext[0] && SUCCEEDED(SHAssocEnumHandlers(ext,ASSOC_FILTER_RECOMMENDED,&pEnumHandlers))) - { - CComPtr pHandler; - ULONG count; - while (SUCCEEDED(pEnumHandlers->Next(1,&pHandler,&count)) && count==1) - { - CComQIPtr pObject=pHandler; - if (pObject) - { - CComString pID; - if (SUCCEEDED(pObject->GetAppID(&pID))) - { - // found explicit appid - if (_wcsicmp(appid,pID)==0) - { - LOG_MENU(LOG_OPEN,L"Found handler appid"); - CComPtr pDataObject; - if (SUCCEEDED(pItem->BindToHandler(NULL,BHID_DataObject,IID_IDataObject,(void**)&pDataObject)) && SUCCEEDED(pHandler->Invoke(pDataObject))) - return true; - break; - } - } - } - pHandler=NULL; - } - pEnumHandlers=NULL; - - // find the correct association handler by exe name and invoke it on the item - wchar_t targetPath[_MAX_PATH]; - targetPath[0]=0; - { - CComPtr pItem; - SHCreateItemFromIDList(pAppInfo->GetPidl(),IID_IShellItem,(void**)&pItem); - CComPtr pLink; - if (pItem) - pItem->BindToHandler(NULL,BHID_SFUIObject,IID_IShellLink,(void**)&pLink); - CAbsolutePidl target; - if (pLink && SUCCEEDED(pLink->Resolve(NULL,SLR_INVOKE_MSI|SLR_NO_UI|SLR_NOUPDATE)) && SUCCEEDED(pLink->GetIDList(&target))) - { - if (FAILED(SHGetPathFromIDList(target,targetPath))) - targetPath[0]=0; - } - } - if (targetPath[0] && SUCCEEDED(SHAssocEnumHandlers(ext,ASSOC_FILTER_RECOMMENDED,&pEnumHandlers))) - { - while (SUCCEEDED(pEnumHandlers->Next(1,&pHandler,&count)) && count==1) - { - CComString pExe; - if (SUCCEEDED(pHandler->GetName(&pExe))) - { - if (_wcsicmp(targetPath,pExe)==0) - { - LOG_MENU(LOG_OPEN,L"Found handler appexe %s",targetPath); - CComPtr pDataObject; - if (SUCCEEDED(pItem->BindToHandler(NULL,BHID_DataObject,IID_IDataObject,(void**)&pDataObject)) && SUCCEEDED(pHandler->Invoke(pDataObject))) - return true; - break; - } - } - pHandler=NULL; - } - } - } -*/ - // couldn't find a handler, execute the old way SHELLEXECUTEINFO execute={sizeof(execute),SEE_MASK_IDLIST|SEE_MASK_FLAG_LOG_USAGE}; execute.nShow=SW_SHOWNORMAL; CAbsolutePidl pidl; @@ -617,9 +550,50 @@ bool ExecuteJumpItem( const CItemManager::ItemInfo *pAppInfo, const CJumpItem &i if (item.type==CJumpItem::TYPE_LINK) { - // invoke the link through its context menu + // Name: System.AppUserModel.HostEnvironment -- PKEY_AppUserModel_HostEnvironment + // Type: UInt32 -- VT_UI4 + // FormatID: {9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 14 + static const PROPERTYKEY PKEY_AppUserModel_HostEnvironment = { {0x9F4C2855, 0x9F79, 0x4B39, {0xA8, 0xD0, 0xE1, 0xD4, 0x2D, 0xE1, 0xD5, 0xF3}}, 14 }; + + // Name: System.AppUserModel.ActivationContext -- PKEY_AppUserModel_ActivationContext + // Type: String -- VT_LPWSTR + // FormatID: {9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 20 + static const PROPERTYKEY PKEY_AppUserModel_ActivationContext = { {0x9F4C2855, 0x9F79, 0x4B39, {0xA8, 0xD0, 0xE1, 0xD4, 0x2D, 0xE1, 0xD5, 0xF3}}, 20 }; + CComQIPtr pMenu(item.pItem); - if (!pMenu) return false; + CStringA params; + + CComQIPtr pLink(item.pItem); + if (pLink) + { + CComQIPtr store(pLink); + if (store) + { + auto appId = GetPropertyStoreString(store, PKEY_AppUserModel_ID); + if (!appId.IsEmpty()) + { + CComPtr target; + if (SUCCEEDED(SHCreateItemInKnownFolder(FOLDERID_AppsFolder, 0, appId, IID_PPV_ARGS(&target)))) + { + ULONG modern = 0; + if (SUCCEEDED(target->GetUInt32(PKEY_AppUserModel_HostEnvironment, &modern)) && modern) + { + CComQIPtr targetMenu; + if (SUCCEEDED(target->BindToHandler(nullptr, BHID_SFUIObject, IID_PPV_ARGS(&targetMenu)))) + { + pMenu = targetMenu; + params = CT2CA(GetPropertyStoreString(store, PKEY_AppUserModel_ActivationContext)); + } + } + } + } + } + } + + // invoke the link through its context menu + if (!pMenu) + return false; + HRESULT hr; HMENU menu=CreatePopupMenu(); hr=pMenu->QueryContextMenu(menu,0,1,1000,CMF_DEFAULTONLY); @@ -633,6 +607,8 @@ bool ExecuteJumpItem( const CItemManager::ItemInfo *pAppInfo, const CJumpItem &i { CMINVOKECOMMANDINFO command={sizeof(command),CMIC_MASK_FLAG_LOG_USAGE}; command.lpVerb=MAKEINTRESOURCEA(id-1); + if (!params.IsEmpty()) + command.lpParameters = params; wchar_t path[_MAX_PATH]; GetModuleFileName(NULL,path,_countof(path)); if (_wcsicmp(PathFindFileName(path),L"explorer.exe")==0) diff --git a/Src/StartMenu/StartMenuDLL/LogManager.cpp b/Src/StartMenu/StartMenuDLL/LogManager.cpp index 84d9e142a..fa6994d86 100644 --- a/Src/StartMenu/StartMenuDLL/LogManager.cpp +++ b/Src/StartMenu/StartMenuDLL/LogManager.cpp @@ -7,10 +7,13 @@ #include "stdafx.h" #include "LogManager.h" #include "ResourceHelper.h" +#include "ComHelper.h" +#include +#include int g_LogCategories; static FILE *g_LogFile; -static int g_LogTime; +static std::chrono::time_point g_LogTime; void InitLog( int categories, const wchar_t *fname ) { @@ -21,7 +24,7 @@ void InitLog( int categories, const wchar_t *fname ) wchar_t bom=0xFEFF; fwrite(&bom,2,1,g_LogFile); g_LogCategories=categories; - g_LogTime=GetTickCount(); + g_LogTime=std::chrono::steady_clock::now(); LogMessage(L"version=%x, PID=%d, TID=%d, Categories=%08x\r\n",GetWinVersion(),GetCurrentProcessId(),GetCurrentThreadId(),categories); } } @@ -38,7 +41,7 @@ void LogMessage( const wchar_t *text, ... ) if (!g_LogFile) return; wchar_t buf[2048]; - int len=Sprintf(buf,_countof(buf),L"%8d: ",GetTickCount()-g_LogTime); + int len=Sprintf(buf,_countof(buf),L"%8d: ",std::chrono::duration_cast(std::chrono::steady_clock::now()-g_LogTime).count()); fwrite(buf,2,len,g_LogFile); va_list args; @@ -51,3 +54,31 @@ void LogMessage( const wchar_t *text, ... ) fflush(g_LogFile); } + +void LogPropertyStore(TLogCategory category, IPropertyStore* store) +{ + if (!store) + return; + + DWORD count = 0; + store->GetCount(&count); + for (DWORD i = 0; i < count; i++) + { + PROPERTYKEY key{}; + store->GetAt(i, &key); + + PROPVARIANT val; + PropVariantInit(&val); + + store->GetValue(key, &val); + + CComString valueStr; + PropVariantToStringAlloc(val, &valueStr); + PropVariantClear(&val); + + wchar_t guidStr[100]{}; + StringFromGUID2(key.fmtid, guidStr, _countof(guidStr)); + + LOG_MENU(category, L"Property: {%s, %u} = %s", guidStr, key.pid, valueStr ? valueStr : L"???"); + } +} diff --git a/Src/StartMenu/StartMenuDLL/LogManager.h b/Src/StartMenu/StartMenuDLL/LogManager.h index a6e488534..6509889c5 100644 --- a/Src/StartMenu/StartMenuDLL/LogManager.h +++ b/Src/StartMenu/StartMenuDLL/LogManager.h @@ -4,6 +4,8 @@ #pragma once +#include + // LogManager.h - logging functionality (for debugging) // Logs different events in the start menu // Turn it on by setting the LogLevel setting in the registry @@ -33,3 +35,5 @@ void CloseLog( void ); void LogMessage( const wchar_t *text, ... ); #define STARTUP_LOG L"Software\\OpenShell\\StartMenu\\Settings|LogStartup|%LOCALAPPDATA%\\OpenShell\\StartupLog.txt" + +void LogPropertyStore(TLogCategory category, IPropertyStore* store); diff --git a/Src/StartMenu/StartMenuDLL/MenuCommands.cpp b/Src/StartMenu/StartMenuDLL/MenuCommands.cpp index b3f542a7a..613bd95a0 100644 --- a/Src/StartMenu/StartMenuDLL/MenuCommands.cpp +++ b/Src/StartMenu/StartMenuDLL/MenuCommands.cpp @@ -11,6 +11,7 @@ #include "Settings.h" #include "SettingsUI.h" #include "SettingsUIHelper.h" +#include "FileHelper.h" #include "Translations.h" #include "LogManager.h" #include "FNVHash.h" @@ -60,17 +61,24 @@ static INT_PTR CALLBACK RenameDlgProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, L return FALSE; } -static void SetShutdownPrivileges( void ) +static bool SetShutdownPrivileges() { + bool retval = false; + HANDLE hToken; - if (OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken)) + if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &hToken)) { TOKEN_PRIVILEGES tp={1}; - if (LookupPrivilegeValue(NULL,L"SeShutdownPrivilege",&tp.Privileges[0].Luid)) - tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED; - AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(TOKEN_PRIVILEGES),NULL,NULL); + if (LookupPrivilegeValue(NULL, L"SeShutdownPrivilege", &tp.Privileges[0].Luid)) + { + tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; + if (AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), NULL, NULL) && GetLastError() == ERROR_SUCCESS) + retval = true; + } CloseHandle(hToken); } + + return retval; } static void DoSearchSubst( wchar_t *buf, int size, const wchar_t *search ) @@ -402,7 +410,7 @@ void CMenuContainer::OpenSubMenu( int index, TActivateType type, bool bShift ) if (m_Options&CONTAINER_NOEXTENSIONS) options|=CONTAINER_NOEXTENSIONS; - if (item.id==MENU_PROGRAMS || item.id==MENU_APPS || (m_Options&CONTAINER_MULTICOL_REC)) + if (item.id==MENU_PROGRAMS || item.id==MENU_APPS || item.bFolder || (m_Options&CONTAINER_MULTICOL_REC)) options|=CONTAINER_MULTICOL_REC; if ((options&CONTAINER_MULTICOL_REC) && !bShift) options|=CONTAINER_MULTICOLUMN; @@ -657,10 +665,337 @@ class ExitGuard bool m_bArmed; }; -#ifndef EWX_HYBRID_SHUTDOWN -#define EWX_HYBRID_SHUTDOWN 0x00400000 -#endif -#define EWX_INSTALL_UPDATES 0x00100000 // undocumented switch to install updates on shutdown +// Win10 +MIDL_INTERFACE("833EE9A0-2999-432C-8EF2-87A8EC2D748D") +IUxUpdateManager_Win10 : public IUnknown +{ + STDMETHOD(GetUxStateVariableBOOL)(enum UxUpdateStateVariable, int*, int*); + STDMETHOD(GetUxStateVariableDWORD)(UxUpdateStateVariable, DWORD*, int*); + STDMETHOD(GetUxStateVariableSYSTEMTIME)(UxUpdateStateVariable, SYSTEMTIME*, int*); + STDMETHOD(SetUxStateVariableBOOL)(UxUpdateStateVariable, int); + STDMETHOD(SetUxStateVariableDWORD)(UxUpdateStateVariable, DWORD); + STDMETHOD(SetUxStateVariableSYSTEMTIME)(UxUpdateStateVariable, SYSTEMTIME); + STDMETHOD(DeleteUxStateVariable)(UxUpdateStateVariable); + STDMETHOD(GetNextRebootTaskRunTime)(int*, SYSTEMTIME*); + STDMETHOD(CreateRebootTasks)(const wchar_t*, SYSTEMTIME); + STDMETHOD(CreateUpdateResultsTaskSchedule)(void); + STDMETHOD(CreateMigrationResultsTaskSchedule)(void); + STDMETHOD(CreateUpdateLogonNotificationTaskSchedule)(void); + STDMETHOD(CreateUpdateNotificationTaskSchedule)(SYSTEMTIME); + STDMETHOD(CreateLogonRebootTaskSchedule)(void); + STDMETHOD(DidUXRebootTaskWakeUpDevice)(int*); + STDMETHOD(RemoveUpdateResultsTaskSchedule)(void); + STDMETHOD(RemoveLogonRebootTaskSchedule)(void); + STDMETHOD(RemoveMigrationResultsTaskSchedule)(void); + STDMETHOD(EnableRebootTasks)(void); + STDMETHOD(DisableRebootTasks)(void); + STDMETHOD(ValidateAndRecoverRebootTasks)(void); + STDMETHOD(RebootToCompleteInstall)(DWORD, int, DWORD*, short, short, DWORD); + STDMETHOD(IsRestartAllowed)(DWORD, int, DWORD, int*); + STDMETHOD(GetIsWaaSOutOfDate)(DWORD, int, int, int*, DWORD*); + STDMETHOD(GetWaaSHoursOutOfDate)(int, int, DWORD*); + STDMETHOD(GetCachedPolicy)(DWORD, VARIANT*, DWORD*, DWORD*); + STDMETHOD(GetEnterpriseCachedPolicy)(DWORD, VARIANT*, DWORD*, DWORD*); + STDMETHOD(GetCachedSettingValue)(DWORD, short, VARIANT*); + STDMETHOD(GetOptInToMU)(int*); + STDMETHOD(SetOptInToMU)(int); + STDMETHOD(SetAndModifyShutdownFlags)(DWORD, DWORD*); + STDMETHOD(GetIsFlightingEnabled)(int*); + STDMETHOD(GetIsCTA)(int*); + STDMETHOD(NotifyStateVariableChange)(void); + STDMETHOD(GetAlwaysAllowMeteredNetwork)(int*); +}; + +// Win11 +MIDL_INTERFACE("B96BA95F-9479-4656-B7A1-6F3A69091910") +IUxUpdateManager_Win11 : public IUnknown +{ + STDMETHOD(GetUxStateVariableBOOL)(enum UxUpdateStateVariable, int*, int*); + STDMETHOD(GetUxStateVariableDWORD)(UxUpdateStateVariable, DWORD*, int*); + STDMETHOD(GetUxStateVariableSYSTEMTIME)(UxUpdateStateVariable, SYSTEMTIME*, int*); + STDMETHOD(SetUxStateVariableBOOL)(UxUpdateStateVariable, int); + STDMETHOD(SetUxStateVariableDWORD)(UxUpdateStateVariable, DWORD); + STDMETHOD(SetUxStateVariableSYSTEMTIME)(UxUpdateStateVariable, SYSTEMTIME); + STDMETHOD(DeleteUxStateVariable)(UxUpdateStateVariable); + STDMETHOD(GetNextScheduledRebootTaskRunTime)(SYSTEMTIME*); + STDMETHOD(GetIsRebootTaskScheduledToRun)(int*); + STDMETHOD(CreateRebootTasks)(const wchar_t*, SYSTEMTIME); + STDMETHOD(CreateUpdateResultsTaskSchedule)(void); + STDMETHOD(CreateMigrationResultsTaskSchedule)(void); + STDMETHOD(CreateUpdateLogonNotificationTaskSchedule)(void); + STDMETHOD(CreateUpdateNotificationTaskSchedule)(SYSTEMTIME); + STDMETHOD(CreateLogonRebootTaskSchedule)(void); + STDMETHOD(DidUXRebootTaskWakeUpDevice)(int*); + STDMETHOD(RemoveUpdateResultsTaskSchedule)(void); + STDMETHOD(RemoveLogonRebootTaskSchedule)(void); + STDMETHOD(RemoveMigrationResultsTaskSchedule)(void); + STDMETHOD(EnableRebootTasks)(void); + STDMETHOD(DisableRebootTasks)(void); + STDMETHOD(ValidateAndRecoverRebootTasks)(void); + STDMETHOD(RebootToCompleteInstall)(DWORD, int, DWORD*, int, int, double); + STDMETHOD(IsRestartAllowed)(DWORD, int, double, int*); + STDMETHOD(GetIsWaaSOutOfDate)(DWORD, int, int, int*, DWORD*); + STDMETHOD(GetWaaSHoursOutOfDate)(int, int, DWORD*); + STDMETHOD(GetDeviceEndOfServiceDate)(int, int*, FILETIME*); + STDMETHOD(GetCachedPolicy)(DWORD, VARIANT*, DWORD*, DWORD*); + STDMETHOD(GetEnterpriseCachedPolicy)(DWORD, VARIANT*, DWORD*, DWORD*); + STDMETHOD(GetOptInToMU)(int*); + STDMETHOD(SetOptInToMU)(int); + STDMETHOD(SetAndModifyShutdownFlags)(DWORD, DWORD*); + STDMETHOD(GetIsFlightingEnabled)(int*); + STDMETHOD(GetIsCTA)(int*); + STDMETHOD(NotifyStateVariableChange)(void); + STDMETHOD(GetAlwaysAllowMeteredNetwork)(int*); + STDMETHOD(SetInstallAtShutdown)(int); + STDMETHOD(GetUxStateVariableValueOrDefaultBOOL)(UxUpdateStateVariable, int, int*); + STDMETHOD(GetUxStateVariableValueOrDefaultDWORD)(UxUpdateStateVariable, DWORD, DWORD*); + STDMETHOD(GetUxStateVariableValueOrDefaultSYSTEMTIME)(UxUpdateStateVariable, SYSTEMTIME, SYSTEMTIME*); + STDMETHOD(GetSuggestedRebootTime)(int, SYSTEMTIME, SYSTEMTIME*, int*); + STDMETHOD(GetSuggestedActiveHours)(DWORD, DWORD*, DWORD*, int*); + STDMETHOD(GetIsIntervalAcceptableForActiveHours)(SYSTEMTIME, SYSTEMTIME, int*); + STDMETHOD(GetSmartScheduledPredictionsAccurate)(int*); + STDMETHOD(EvaluateAndStoreRebootDowntimePrediction)(void); + STDMETHOD(GetCachedRebootDowntimePrediction)(DWORD*); + STDMETHOD(GetAlwaysAllowCTADownload)(int*); +}; + +MIDL_INTERFACE("07F3AFAC-7C8A-4CE7-A5E0-3D24EE8A77E0") +IUpdateSessionOrchestrator : public IUnknown +{ + STDMETHOD(CreateUpdateSession)(enum UpdateSessionType, const GUID&, void**); + STDMETHOD(GetCurrentActiveUpdateSessions)(class IUsoSessionCollection**); + STDMETHOD(LogTaskRunning)(const wchar_t*); + STDMETHOD(CreateUxUpdateManager)(IUnknown**); +}; + +DWORD WindowsUpdateAdjustShutdownFlags(DWORD flags) +{ + DWORD retval = flags; + + { + // "EnhancedShutdownEnabled" value must exist if Windows updates are prepared + // otherwise there is no need to do anything + + CRegKey key; + if (key.Open(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\WindowsUpdate\\Orchestrator", KEY_READ) != ERROR_SUCCESS) + return retval; + + DWORD value; + if (key.QueryDWORDValue(L"EnhancedShutdownEnabled", value) != ERROR_SUCCESS) + return retval; + } + + // this is what standard Windows shutdown handling does inside shutdownux!UsoCommitHelper::SetAndModifyShutdownFlags + + static const GUID CLSID_UpdateSessionOrchestrator = { 0xb91d5831,0xb1bd,0x4608,{0x81,0x98,0xd7,0x2e,0x15,0x50,0x20,0xf7} }; + + CComPtr updateSessionOrchestrator; + if (SUCCEEDED(updateSessionOrchestrator.CoCreateInstance(CLSID_UpdateSessionOrchestrator, nullptr, CLSCTX_LOCAL_SERVER))) + { + CComPtr mgr; + if (SUCCEEDED(updateSessionOrchestrator->CreateUxUpdateManager(&mgr))) + { + // call to IUxUpdateManager::SetAndModifyShutdownFlags will ensure that Windows updates will be dismissed if there is no `SHUTDOWN_INSTALL_UPDATES` flag provided + // it also provides recommended shutdown flags in some cases (so we will use them as advised) + // + // the method is implemented by `UxUpdateManager::SetAndModifyShutdownFlags` in `usosvc.dll` (Win10) / `usosvcimpl.dll` (Win11) + + if (CComPtr updateManager; SUCCEEDED(mgr.QueryInterface(&updateManager))) + { + DWORD newFlags; + if (SUCCEEDED(updateManager->SetAndModifyShutdownFlags(flags, &newFlags))) + retval = newFlags; + } + else if (CComPtr updateManager; SUCCEEDED(mgr.QueryInterface(&updateManager))) + { + DWORD newFlags; + if (SUCCEEDED(updateManager->SetAndModifyShutdownFlags(flags, &newFlags))) + retval = newFlags; + } + } + } + + return retval; +} + +static TOKEN_ELEVATION_TYPE GetCurrentTokenElevationType() +{ + TOKEN_ELEVATION_TYPE retval = TokenElevationTypeDefault; + + HANDLE token; + if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &token)) + { + TOKEN_ELEVATION_TYPE elevationType; + DWORD returnLength; + if (GetTokenInformation(token, TokenElevationType, &elevationType, sizeof(elevationType), &returnLength) && returnLength == sizeof(elevationType)) + retval = elevationType; + + CloseHandle(token); + } + + return retval; +} + +static BOOL WINAPI WinStationGetLoggedOnCount(ULONG* pUserSessions, ULONG* pDeviceSessions) +{ + static auto p = static_cast((void*)GetProcAddress(GetModuleHandle(L"winsta.dll"), "WinStationGetLoggedOnCount")); + if (p) + return p(pUserSessions, pDeviceSessions); + + // fall-back + return FALSE; +} + +static bool ProceedWithShutdown(DWORD flags) +{ + // this logic is inspired by user32!DisplayExitWindowsWarnings function (called from ExitWindowsEx) + + ULONG userSessions = 0; + ULONG deviceSessions = 0; + + WinStationGetLoggedOnCount(&userSessions, &deviceSessions); + + // we can proceed if there is at most one user session and no device sessions + if (userSessions <= 1 && deviceSessions == 0) + return true; + + // otherwise inform user that somebody else is using the machine and ask for confirmation + + UINT msgId = 0; + + if (flags & SHUTDOWN_RESTART) + { + if (userSessions <= 1) + msgId = 755; // One or more devices on your network are using the computer resources. Restarting Windows might cause them to lose data. + else if (deviceSessions != 0) + msgId = 756; // Other people and devices are using the computer resources. Restarting Windows might cause them to lose data. + else + msgId = 714; // Other people are logged on to this computer. Restarting Windows might cause them to lose data. + } + else + { + if (userSessions <= 1) + msgId = 753; // One or more devices on your network are using the computer resources.Shutting down Windows might cause them to lose data. + else if (deviceSessions != 0) + msgId = 754; // Other people and devices are are using the computer resources. Shutting down Windows might cause them to lose data. + else + msgId = 713; // Other people are logged on to this computer. Shutting down Windows might cause them to lose data. + } + + WCHAR message[MAX_PATH]{}; + LoadString(GetModuleHandle(L"user32.dll"), msgId, message, _countof(message)); + + return MessageBox(NULL, message, L"Open-Shell", MB_YESNO | MB_ICONEXCLAMATION | MB_DEFBUTTON1 | MB_SYSTEMMODAL | MB_SETFOREGROUND | MB_SERVICE_NOTIFICATION) != IDNO; +} + +static bool ExecuteShutdownCommand(TMenuID menuCommand) +{ + DWORD flags = 0; + + switch (menuCommand) + { + case MENU_RESTART: // restart + case MENU_RESTART_NOUPDATE: + case MENU_RESTART_UPDATE: // update and restart + case MENU_RESTART_ADVANCED: // advanced restart + flags = SHUTDOWN_RESTART; + + if (menuCommand == MENU_RESTART_UPDATE) + flags |= SHUTDOWN_INSTALL_UPDATES; + + if (menuCommand == MENU_RESTART_ADVANCED) + flags |= SHUTDOWN_RESTART_BOOTOPTIONS; + + break; + + case MENU_SHUTDOWN: // shutdown + case MENU_SHUTDOWN_NOUPDATE: + case MENU_SHUTDOWN_UPDATE: // update and shutdown + case MENU_SHUTDOWN_HYBRID: // hybrid shutdown + flags = SHUTDOWN_POWEROFF; + + if (menuCommand == MENU_SHUTDOWN_UPDATE) + flags |= SHUTDOWN_INSTALL_UPDATES; + + if (menuCommand == MENU_SHUTDOWN_HYBRID) + { + CRegKey regPower; + if (regPower.Open(HKEY_LOCAL_MACHINE, L"SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Power", KEY_READ) == ERROR_SUCCESS) + { + DWORD val = 0; + if (regPower.QueryDWORDValue(L"HiberbootEnabled", val) == ERROR_SUCCESS && val == 1) + flags |= SHUTDOWN_HYBRID; + } + } + break; + } + + if (flags) + { + if (!ProceedWithShutdown(flags)) + return true; + + flags |= SHUTDOWN_FORCE_OTHERS; + + if (SetShutdownPrivileges()) + { + flags = WindowsUpdateAdjustShutdownFlags(flags); + InitiateShutdown(NULL, NULL, 0, flags, SHTDN_REASON_FLAG_PLANNED); + } + else + { + // we don't have shutdown rights + // lets try silent elevate via SystemSettingsAdminFlows (for limited admin users only) + if (GetCurrentTokenElevationType() == TokenElevationTypeLimited) + { + flags = WindowsUpdateAdjustShutdownFlags(flags); + + wchar_t cmdLine[32]{}; + Sprintf(cmdLine, _countof(cmdLine), L"Shutdown %d %d", flags, SHTDN_REASON_FLAG_PLANNED); + + SHELLEXECUTEINFO sei{}; + sei.cbSize = sizeof(sei); + sei.lpFile = L"%systemroot%\\system32\\SystemSettingsAdminFlows.exe"; + sei.lpParameters = cmdLine; + sei.lpVerb = L"runas"; + sei.fMask = SEE_MASK_DOENVSUBST | SEE_MASK_FLAG_NO_UI; + + ShellExecuteEx(&sei); + } + } + + return true; + } + + return false; +} + +NTSTATUS +NTAPI +NtPowerInformation( + _In_ POWER_INFORMATION_LEVEL InformationLevel, + _In_reads_bytes_opt_(InputBufferLength) PVOID InputBuffer, + _In_ ULONG InputBufferLength, + _Out_writes_bytes_opt_(OutputBufferLength) PVOID OutputBuffer, + _In_ ULONG OutputBufferLength +); + +static bool ConnectedStandby() +{ + SYSTEM_POWER_CAPABILITIES powerCaps{}; + GetPwrCapabilities(&powerCaps); + + if (powerCaps.AoAc) + { + static auto pNtPowerInformation = static_cast((void*)GetProcAddress(GetModuleHandle(L"ntdll.dll"), "NtPowerInformation")); + if (pNtPowerInformation) + pNtPowerInformation(ScreenOff, NULL, 0, NULL, 0); + + return true; + } + + return false; +} static bool ExecuteSysCommand( TMenuID menuCommand ) { @@ -800,40 +1135,6 @@ static bool ExecuteSysCommand( TMenuID menuCommand ) } return true; - case MENU_RESTART: // restart - case MENU_RESTART_NOUPDATE: - SetShutdownPrivileges(); - ExitWindowsEx(EWX_REBOOT,SHTDN_REASON_FLAG_PLANNED); - return true; - - case MENU_RESTART_ADVANCED: // advanced restart - if (GetWinVersion()>=WIN_VER_WIN8) - { - STARTUPINFO startupInfo={sizeof(startupInfo)}; - PROCESS_INFORMATION processInfo; - memset(&processInfo,0,sizeof(processInfo)); - wchar_t exe[_MAX_PATH]=L"%windir%\\system32\\shutdown.exe"; - DoEnvironmentSubst(exe,_countof(exe)); - if (CreateProcess(exe,(LPWSTR)L"shutdown.exe /r /o /t 0",NULL,NULL,FALSE,CREATE_NO_WINDOW,NULL,NULL,&startupInfo,&processInfo)) - { - CloseHandle(processInfo.hThread); - CloseHandle(processInfo.hProcess); - } - } - else - ExitWindowsEx(EWX_REBOOT,SHTDN_REASON_FLAG_PLANNED); - return true; - - case MENU_RESTART_UPDATE: // update and restart - { - UINT flags=EWX_REBOOT; - if (GetWinVersion()>=WIN_VER_WIN8) - flags|=EWX_INSTALL_UPDATES; - SetShutdownPrivileges(); - ExitWindowsEx(flags,SHTDN_REASON_FLAG_PLANNED); - } - return true; - case MENU_SWITCHUSER: // switch_user if (GetWinVersion()>=WIN_VER_WIN10) { @@ -849,42 +1150,14 @@ static bool ExecuteSysCommand( TMenuID menuCommand ) LockWorkStation(); return true; - case MENU_SHUTDOWN: // shutdown - case MENU_SHUTDOWN_NOUPDATE: - SetShutdownPrivileges(); - ExitWindowsEx(EWX_SHUTDOWN,SHTDN_REASON_FLAG_PLANNED); - return true; - - case MENU_SHUTDOWN_UPDATE: // update and shutdown - SetShutdownPrivileges(); - ExitWindowsEx(EWX_SHUTDOWN|EWX_INSTALL_UPDATES,SHTDN_REASON_FLAG_PLANNED); - return true; - - case MENU_SHUTDOWN_HYBRID: // hybrid shutdown - SetShutdownPrivileges(); - { - UINT flags=EWX_SHUTDOWN; - if (GetWinVersion()>=WIN_VER_WIN8) - { - CRegKey regPower; - if (regPower.Open(HKEY_LOCAL_MACHINE,L"SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Power",KEY_READ)==ERROR_SUCCESS) - { - DWORD val; - if (regPower.QueryDWORDValue(L"HiberbootEnabled",val)==ERROR_SUCCESS && val==1) - flags|=EWX_HYBRID_SHUTDOWN; - } - } - ExitWindowsEx(flags,SHTDN_REASON_FLAG_PLANNED); - } - return true; - case MENU_SLEEP: if (GetSystemMetrics(SM_REMOTESESSION)) { WTSDisconnectSession(WTS_CURRENT_SERVER_HANDLE,WTS_CURRENT_SESSION,FALSE); Sleep(250); } - CreateThread(NULL,0,SleepThread,(void*)FALSE,0,NULL); + if (!ConnectedStandby()) + CreateThread(NULL,0,SleepThread,(void*)FALSE,0,NULL); return true; case MENU_HIBERNATE: @@ -936,6 +1209,8 @@ static bool ExecuteSysCommand( TMenuID menuCommand ) return true; default: + if (ExecuteShutdownCommand(menuCommand)) + return true; return false; } } @@ -2192,11 +2467,15 @@ void CMenuContainer::ActivateItem( int index, TActivateType type, const POINT *p if (res==CMD_PINSETTING) { - CSearchManager::TItemCategory cat=(CSearchManager::TItemCategory)(item.categoryHash&CSearchManager::CATEGORY_MASK); - if (cat==CSearchManager::CATEGORY_SETTING) - CreatePinLink(pItemPidl1,item.name,NULL,0); - else if (cat==CSearchManager::CATEGORY_METROSETTING) - CreatePinLink(pItemPidl1,item.name,L"%windir%\\ImmersiveControlPanel\\systemsettings.exe",0); + CString iconPath; + if (item.pItemInfo) + { + CItemManager::RWLock lock(&g_ItemManager, false, CItemManager::RWLOCK_ITEMS); + if (_wcsicmp(PathFindExtension(item.pItemInfo->GetPath()), L".settingcontent-ms") == 0) + iconPath = L"%windir%\\ImmersiveControlPanel\\systemsettings.exe"; + } + + CreatePinLink(pItemPidl1, item.name, iconPath.IsEmpty() ? nullptr : iconPath.GetString(), 0); m_bRefreshItems=true; } @@ -2396,7 +2675,6 @@ void CMenuContainer::ActivateItem( int index, TActivateType type, const POINT *p } } DestroyMenu(menu2); - HideTemp(false); s_bPreventClosing=false; PITEMID_CHILD newPidl=NULL; @@ -2485,7 +2763,6 @@ void CMenuContainer::ActivateItem( int index, TActivateType type, const POINT *p Invalidate(); if (m_HotItem<0) SetHotItem(index); } - HideTemp(false); s_bPreventClosing=false; } SetContextItem(-1); @@ -2742,7 +3019,6 @@ void CMenuContainer::ActivateItem( int index, TActivateType type, const POINT *p else SetFocus(); } - HideTemp(false); s_bPreventClosing=false; s_HotPos=GetMessagePos(); res=CMD_RENAME; @@ -2781,12 +3057,19 @@ void CMenuContainer::ActivateItem( int index, TActivateType type, const POINT *p info.lpVerb=MAKEINTRESOURCEA(res-verbOffset); info.lpVerbW=MAKEINTRESOURCEW(res-verbOffset); info.nShow=SW_SHOWNORMAL; + bool bOpenTruePath=false; + wchar_t targetlnkPath[_MAX_PATH]; // path to target.lnk in a fake folder wchar_t dir[_MAX_PATH]; if (SHGetPathFromIDList(pItemPidl1,dir)) { - PathRemoveFileSpec(dir); - if (GetFileAttributes(dir)!=INVALID_FILE_ATTRIBUTES) - info.lpDirectoryW=dir; + if (_stricmp(command,"open")==0 && GetSettingBool(L"OpenTruePath") && GetFakeFolder(targetlnkPath,_countof(targetlnkPath),dir)) + bOpenTruePath=true; + else + { + PathRemoveFileSpec(dir); + if (GetFileAttributes(dir)!=INVALID_FILE_ATTRIBUTES) + info.lpDirectoryW=dir; + } } if (pPt) { @@ -2802,10 +3085,16 @@ void CMenuContainer::ActivateItem( int index, TActivateType type, const POINT *p if (bRefresh || bRefreshMain) info.fMask|=CMIC_MASK_NOASYNC; // wait for delete/link commands to finish so we can refresh the menu - if ((type!=ACTIVATE_MENU && type!=ACTIVATE_DELETE) || GetWinVersion()::iterator it=s_Menus.begin();it!=s_Menus.end();++it) - (*it)->EnableWindow(FALSE); // disable all menus + // we don't want our virtual folder to appear in Explorer's frequent list + if (item.pItemInfo && wcsncmp(item.pItemInfo->PATH, L"::{82E749ED-B971-4550-BAF7-06AA2BF7E836}", 40) == 0) + info.fMask &= ~CMIC_MASK_FLAG_LOG_USAGE; + + s_bPreventClosing=true; + for (auto& it : s_Menus) + { + it->EnableWindow(FALSE); // disable all menus + it->SetWindowPos(HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); + } bool bAllPrograms=s_bAllPrograms; if (bAllPrograms) ::EnableWindow(g_TopWin7Menu,FALSE); info.hwnd=g_OwnerWindow; @@ -2815,9 +3104,20 @@ void CMenuContainer::ActivateItem( int index, TActivateType type, const POINT *p ::SetForegroundWindow(g_OwnerWindow); ::SetWindowPos(g_OwnerWindow,HWND_TOPMOST,rc.left,rc.top,rc.right-rc.left,rc.bottom-rc.top,0); LOG_MENU(LOG_EXECUTE,L"Invoke command, ptr=%p, command='%S'",this,command); - HRESULT hr=pInvokeMenu->InvokeCommand((LPCMINVOKECOMMANDINFO)&info); - LOG_MENU(LOG_EXECUTE,L"Invoke command, ptr=%p, res=%d",this,hr); - if (type==ACTIVATE_EXECUTE && SUCCEEDED(hr)) + bool executeSuccess; + if (bOpenTruePath) // we are trying to open a fake folder, directly open target.lnk instead + { + HINSTANCE hinst=ShellExecute(NULL,NULL,targetlnkPath,NULL,NULL,SW_SHOWNORMAL); + LOG_MENU(LOG_EXECUTE,L"Invoke command, ptr=%p, res=%d",this,hinst); + executeSuccess=static_cast(reinterpret_cast(hinst))>=32; + } + else + { + HRESULT hr=pInvokeMenu->InvokeCommand((LPCMINVOKECOMMANDINFO)&info); + LOG_MENU(LOG_EXECUTE,L"Invoke command, ptr=%p, res=%d",this,hr); + executeSuccess=SUCCEEDED(hr); + } + if (type==ACTIVATE_EXECUTE && executeSuccess) { if (bTrackRecent) { @@ -2850,9 +3150,14 @@ void CMenuContainer::ActivateItem( int index, TActivateType type, const POINT *p } } } - for (std::vector::iterator it=s_Menus.begin();it!=s_Menus.end();++it) - if (!(*it)->m_bDestroyed) - (*it)->EnableWindow(TRUE); // enable all menus + for (auto& it : s_Menus) + { + if (!it->m_bDestroyed) + { + it->EnableWindow(TRUE); // enable all menus + it->SetWindowPos(HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); + } + } if (bAllPrograms) ::EnableWindow(g_TopWin7Menu,TRUE); if (bRefreshMain && m_bSubMenu) { @@ -2880,7 +3185,6 @@ void CMenuContainer::ActivateItem( int index, TActivateType type, const POINT *p else SetFocus(); } - HideTemp(false); s_bPreventClosing=false; if (!bKeepOpen && !bRefresh && !bRefreshMain) diff --git a/Src/StartMenu/StartMenuDLL/MenuContainer.cpp b/Src/StartMenu/StartMenuDLL/MenuContainer.cpp index 61a9dbb1b..856ead1e4 100644 --- a/Src/StartMenu/StartMenuDLL/MenuContainer.cpp +++ b/Src/StartMenu/StartMenuDLL/MenuContainer.cpp @@ -83,6 +83,7 @@ static StdMenuOption g_StdOptions[]= {MENU_USERPICTURES,MENU_ENABLED}, // check policy {MENU_SLEEP,MENU_ENABLED}, // check power caps {MENU_HIBERNATE,MENU_ENABLED}, // check power caps + {MENU_LOCK,MENU_ENABLED}, // check power settings {MENU_SWITCHUSER,MENU_ENABLED}, // check group policy {MENU_APPS,MENU_ENABLED}, // enable on Win8+ {MENU_PCSETTINGS,MENU_ENABLED}, // enable on Win8+ @@ -314,6 +315,7 @@ bool CMenuContainer::s_bShowTopEmpty=false; bool CMenuContainer::s_bNoDragDrop=false; bool CMenuContainer::s_bNoContextMenu=false; bool CMenuContainer::s_bExpandLinks=false; +bool CMenuContainer::s_bSingleClickFolders=false; bool CMenuContainer::s_bLogicalSort=false; bool CMenuContainer::s_bExtensionSort=false; bool CMenuContainer::s_bAllPrograms=false; @@ -342,7 +344,8 @@ bool CMenuContainer::s_bMRULoaded=false; const CItemManager::ItemInfo *CMenuContainer::s_JumpAppInfo; CJumpList CMenuContainer::s_JumpList; int CMenuContainer::s_TaskBarId; -HWND CMenuContainer::s_TaskBar, CMenuContainer::s_StartButton; +HWND CMenuContainer::s_TaskBar; +HWND CMenuContainer::s_StartButton; // custom start button (if any) UINT CMenuContainer::s_TaskBarEdge; RECT CMenuContainer::s_StartRect; HWND CMenuContainer::s_LastFGWindow; @@ -442,7 +445,10 @@ LRESULT CALLBACK CMenuContainer::SubclassSearchBox( HWND hWnd, UINT uMsg, WPARAM SetBkColor(hdc,GetSysColor(COLOR_WINDOW)); SetBkMode(hdc,TRANSPARENT); SetTextColor(hdc,s_Skin.Search_text_colors[1]); - DrawText(hdc,pParent->m_Items[pParent->m_SearchIndex].name,-1,&rc,DT_SINGLELINE|DT_EDITCONTROL|(s_bRTL?DT_RIGHT:DT_LEFT)); + if (GetSettingBool(L"SearchHint")) + DrawText(hdc,GetSettingString(L"SearchHintText"),-1,&rc,DT_SINGLELINE|DT_EDITCONTROL|(s_bRTL?DT_RIGHT:DT_LEFT)); + else + DrawText(hdc,pParent->m_Items[pParent->m_SearchIndex].name,-1,&rc,DT_SINGLELINE|DT_EDITCONTROL|(s_bRTL?DT_RIGHT:DT_LEFT)); SelectObject(hdc,font0); } return res; @@ -562,7 +568,7 @@ LRESULT CALLBACK CMenuContainer::SubclassSearchBox( HWND hWnd, UINT uMsg, WPARAM { pParent->SendMessage(WM_SYSKEYDOWN,wParam,lParam); if (wParam==VK_MENU) - pParent->ShowKeyboardCues(); + pParent->ShowKeyboardCues(true); } else { @@ -1065,7 +1071,7 @@ void CMenuContainer::AddStandardItems( void ) const StdMenuItem *pInlineParent=NULL; int searchProviderIndex=-1; m_SearchProvidersCount=0; - MenuSkin::TIconSize mainIconSize=s_Skin.Main_icon_size; + bool bSecondColumn=false; for (const StdMenuItem *pStdItem=m_pStdItem;;pStdItem++) { if (pStdItem->id==MENU_LAST) @@ -1083,8 +1089,8 @@ void CMenuContainer::AddStandardItems( void ) if (m_bSubMenu && pStdItem->id==s_ShutdownCommand) continue; - if (pStdItem->id==MENU_COLUMN_BREAK && m_bTwoColumns) - mainIconSize=s_Skin.Main2_icon_size; + if (pStdItem->id==MENU_COLUMN_BREAK && !m_bSubMenu && s_Skin.TwoColumns) + bSecondColumn=true; int stdOptions=GetStdOptions(pStdItem->id); if (!(stdOptions&MENU_ENABLED)) continue; @@ -1265,6 +1271,10 @@ void CMenuContainer::AddStandardItems( void ) item.bSplit=item.bFolder && (item.pStdItem->settings&StdMenuItem::MENU_SPLIT_BUTTON)!=0; // get icon + MenuSkin::TIconSize mainIconSize=!bSecondColumn ? s_Skin.Main_icon_size : s_Skin.Main2_icon_size; + if (item.bInline && mainIconSize==MenuSkin::ICON_SIZE_NONE) + mainIconSize=s_Skin.Main_icon_size; + CItemManager::TIconSizeType iconSizeType; int refreshFlags; if (bSearchProvider7 || m_bSubMenu) @@ -1578,6 +1588,23 @@ static const wchar_t *g_MfuIgnoreExes[]={ L"WUAPP.EXE", }; +static bool IgnoreUserAssistItem(const UserAssistItem& uaItem) +{ + static constexpr const wchar_t* ignoredNames[] = + { + DESKTOP_APP_ID, + L"Microsoft.Windows.ShellExperienceHost_cw5n1h2txyewy!App", + }; + + for (const auto& name : ignoredNames) + { + if (_wcsicmp(uaItem.name, name) == 0) + return true; + } + + return false; +} + void CMenuContainer::GetRecentPrograms( std::vector &items, int maxCount ) { bool bShowMetro=GetSettingBool(L"RecentMetroApps"); @@ -1930,21 +1957,12 @@ void CMenuContainer::GetRecentPrograms( std::vector &items, int maxCou continue; } - if (_wcsicmp(uaItem.name,DESKTOP_APP_ID)==0) + if (IgnoreUserAssistItem(uaItem)) { - LOG_MENU(LOG_MFU,L"UserAssist: Dropping: Ignore desktop"); + LOG_MENU(LOG_MFU,L"UserAssist: Dropping: Ignore '%s'",uaItem.name); continue; } - { - CComPtr pAppItem; - if (FAILED(SHCreateItemInKnownFolder(FOLDERID_AppsFolder2,0,uaItem.name,IID_IShellItem,(void**)&pAppItem))) - continue; - CComString pName; - if (FAILED(pAppItem->GetDisplayName(SIGDN_NORMALDISPLAY,&pName)) || wcsncmp(pName,L"@{",2)==0) - continue; - } - uaItem.pLinkInfo=g_ItemManager.GetMetroAppInfo10(uaItem.name); if (!uaItem.pLinkInfo) { @@ -1955,6 +1973,11 @@ void CMenuContainer::GetRecentPrograms( std::vector &items, int maxCou LOG_MENU(LOG_MFU,L"UserAssist: '%s', %d, %.3f",uaItem.name,data.count,uaItem.rank); { CItemManager::RWLock lock(&g_ItemManager,false,CItemManager::RWLOCK_ITEMS); + if (uaItem.pLinkInfo->GetMetroName().IsEmpty() || wcsncmp(uaItem.pLinkInfo->GetMetroName(), L"@{",2)==0) + { + LOG_MENU(LOG_MFU, L"UserAssist: Dropping: No metro name"); + continue; + } if (uaItem.pLinkInfo->IsNoPin()) { LOG_MENU(LOG_MFU,L"UserAssist: Dropping: No pin"); @@ -2206,10 +2229,7 @@ void CMenuContainer::AddJumpListItems( std::vector &items ) if (pLink) { pLink->GetIDList(&item.pItem1); - wchar_t location[_MAX_PATH]; - int index; - if (pLink->GetIconLocation(location,_countof(location),&index)==S_OK && location[0]) - item.pItemInfo=g_ItemManager.GetCustomIcon(location,index,CItemManager::ICON_SIZE_TYPE_SMALL,(index==0)); // assuming that if index!=0 the icon comes from a permanent location like a dll or exe + item.pItemInfo = g_ItemManager.GetLinkIcon(pLink, CItemManager::ICON_SIZE_TYPE_SMALL); } } else if (jumpItem.type==CJumpItem::TYPE_ITEM) @@ -2243,7 +2263,7 @@ void CMenuContainer::AddJumpListItems( std::vector &items ) { ILFree(item.pItem1); item.pItem1=pidl2.Detach(); - pItem=pItem2; + pItem=std::move(pItem2); } } } @@ -2505,9 +2525,9 @@ void CMenuContainer::InitItems( void ) m_Items.resize(MAX_MENU_ITEMS); } - if (m_Options&CONTAINER_CONTROLPANEL) + if (m_Options&CONTAINER_CONTROLPANEL && !(m_Options&CONTAINER_NOSUBFOLDERS)) { - // expand Administrative Tools. must be done after the sorting because we don't want the folder to jump to the top + // expand Administrative Tools when displaying as a menu. must be done after the sorting because we don't want the folder to jump to the top unsigned int AdminToolsHash=CalcFNVHash(L"::{D20EA4E1-3957-11D2-A40B-0C5020524153}"); for (std::vector::iterator it=m_Items.begin();it!=m_Items.end();++it) if (it->nameHash==AdminToolsHash) @@ -2655,17 +2675,11 @@ int CMenuContainer::AddSearchItems( const std::vector &items, const if (!categoryName.IsEmpty()) { MenuItem item(MENU_SEARCH_CATEGORY); - if (categoryHash==CSearchManager::CATEGORY_PROGRAM || categoryHash==CSearchManager::CATEGORY_SETTING) - { - item.name.Format(L"%s (%d)",categoryName,originalCount); - } - else - { - item.name=categoryName; - item.bSplit=(s_Skin.More_bitmap_Size.cx>0); - } + item.name.Format(L"%s (%d)",categoryName,originalCount); item.nameHash=CalcFNVHash(categoryName); item.categoryHash=categoryHash; + if (categoryHash!=CSearchManager::CATEGORY_PROGRAM || categoryHash!=CSearchManager::CATEGORY_SETTING) + item.bSplit=(s_Skin.More_bitmap_Size.cx>0); m_Items.push_back(item); } } @@ -2723,7 +2737,7 @@ bool CMenuContainer::InitSearchItems( void ) unsigned int runCategoryHash=0; CString runCommand; CComString runExe; - if (!bAutoComlpete && !s_bNoRun && s_SearchResults.programs.empty() && s_SearchResults.settings.empty()) + if (!bAutoComlpete && !s_bNoRun && s_SearchResults.programs.empty() && s_SearchResults.settings.empty() && s_SearchResults.metrosettings.empty()) { if (s_bWin7Style) m_SearchBox.GetWindowText(runCommand); @@ -2752,7 +2766,7 @@ bool CMenuContainer::InitSearchItems( void ) { sepHeight=s_Skin.ItemSettings[s_Skin.More_bitmap_Size.cx?MenuSkin::LIST_SEPARATOR_SPLIT:MenuSkin::LIST_SEPARATOR].itemHeight; itemHeight=s_Skin.ItemSettings[MenuSkin::LIST_ITEM].itemHeight; - // total height minus the search box and the "more results"/"search internet" + // total height minus the search box and the "more results"/"search internet", if present maxHeight=m_Items[m_SearchIndex].itemRect.top-s_Skin.Main_search_padding.top-s_Skin.Search_padding.top; maxHeight-=itemHeight*(m_SearchItemCount-1); if (!s_SearchResults.bSearching && !HasMoreResults()) @@ -2780,6 +2794,12 @@ bool CMenuContainer::InitSearchItems( void ) if (m_SearchCategoryHash==CSearchManager::CATEGORY_PROGRAM) selectedCount=(int)s_SearchResults.programs.size(); } + if (!s_SearchResults.metrosettings.empty()) + { + counts.push_back((int)s_SearchResults.metrosettings.size()); + if (m_SearchCategoryHash==CSearchManager::CATEGORY_METROSETTING) + selectedCount=(int)s_SearchResults.metrosettings.size(); + } if (!s_SearchResults.settings.empty()) { counts.push_back((int)s_SearchResults.settings.size()); @@ -2828,13 +2848,15 @@ bool CMenuContainer::InitSearchItems( void ) // add categories std::list::const_iterator it=s_SearchResults.indexed.begin(); - for (size_t idx=0;idxcategoryHash; @@ -2853,7 +2875,7 @@ bool CMenuContainer::InitSearchItems( void ) } if (count<=0) { - if (idx>=2) ++it; + if (idx>=3) ++it; continue; } @@ -2870,6 +2892,16 @@ bool CMenuContainer::InitSearchItems( void ) name=FindTranslation(L"Search.CategoryPrograms",L"Programs"); } else if (idx==1) + { + originalCount=(int)s_SearchResults.metrosettings.size(); + if (count>originalCount) + count=originalCount; + items.reserve(count); + for (std::vector::const_iterator it=s_SearchResults.metrosettings.begin();it!=s_SearchResults.metrosettings.end() && (int)items.size()originalCount) @@ -2877,7 +2909,7 @@ bool CMenuContainer::InitSearchItems( void ) items.reserve(count); for (std::vector::const_iterator it=s_SearchResults.settings.begin();it!=s_SearchResults.settings.end() && (int)items.size()=0xD800 && wParam<=0xDBFF) return TRUE; // don't support supplementary characters @@ -6322,7 +6366,10 @@ LRESULT CMenuContainer::OnRefresh( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL } } else if (m_Items[m_OriginalCount].id==MENU_SEARCH_CATEGORY) - hotItem=m_OriginalCount+1; + { + if (!bSearching || !s_SearchResults.programs.empty()) + hotItem=m_OriginalCount+1; + } } else hotItem=-1; @@ -6364,11 +6411,6 @@ LRESULT CMenuContainer::OnRefresh( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL return 0; } -void CMenuContainer::HideTemp( bool bHide ) -{ - ::PostMessage(g_OwnerWindow,WM_CLEAR,bHide,0); -} - LRESULT CMenuContainer::OnActivate( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ) { if (LOWORD(wParam)!=WA_INACTIVE) @@ -6378,6 +6420,9 @@ LRESULT CMenuContainer::OnActivate( UINT uMsg, WPARAM wParam, LPARAM lParam, BOO return 0; } #ifndef PREVENT_CLOSING + if (s_bPreventClosing) + return 0; + if (lParam) { // check if another menu window is being activated @@ -6388,24 +6433,15 @@ LRESULT CMenuContainer::OnActivate( UINT uMsg, WPARAM wParam, LPARAM lParam, BOO if ((HWND)lParam==g_OwnerWindow || (HWND)lParam==g_TopWin7Menu) return 0; - - if (s_bPreventClosing && (::GetWindowLong((HWND)lParam,GWL_EXSTYLE)&WS_EX_TOPMOST)) - return 0; } - // a non-top-most window tries to activate while we are still here - if (s_bPreventClosing && (!g_TopWin7Menu || !s_bAllPrograms)) - HideTemp(true); - else - { - for (std::vector::reverse_iterator it=s_Menus.rbegin();it!=s_Menus.rend();++it) - if ((*it)->m_hWnd && !(*it)->m_bDestroyed) - { - (*it)->PostMessage(WM_CLOSE); - (*it)->m_bClosing=true; - } - if (g_TopWin7Menu && s_bAllPrograms) ::PostMessage(g_TopWin7Menu,WM_CLOSE,0,0); - } + for (std::vector::reverse_iterator it=s_Menus.rbegin();it!=s_Menus.rend();++it) + if ((*it)->m_hWnd && !(*it)->m_bDestroyed) + { + (*it)->PostMessage(WM_CLOSE); + (*it)->m_bClosing=true; + } + if (g_TopWin7Menu && s_bAllPrograms) ::PostMessage(g_TopWin7Menu,WM_CLOSE,0,0); #endif return 0; @@ -6670,8 +6706,7 @@ bool CMenuContainer::GetDescription( int index, wchar_t *text, int size ) { if (SUCCEEDED(pLink->GetDescription(text,size)) && text[0]) return true; - wchar_t args[256]; - if (SUCCEEDED(pLink->GetArguments(args,_countof(args))) && args[0]) + if (jumpItem.bHasArguments) { // don't use default tip for items with arguments Strcpy(text,size,item.name); @@ -6804,7 +6839,7 @@ LRESULT CMenuContainer::OnLButtonDblClick( UINT uMsg, WPARAM wParam, LPARAM lPar ClientToScreen(&pt); if (s_bWin7Style && item.id==MENU_PROGRAMS) // only single clicks for All Programs OnLButtonDown(WM_LBUTTONDOWN,wParam,lParam,bHandled); - else if (!bArrow) // ignore double-click on the split arrow + else if (!bArrow && item.id!=MENU_APPS) // ignore double-click on the split arrow and Apps folder ActivateItem(index,ACTIVATE_EXECUTE,&pt); return 0; } @@ -6828,7 +6863,7 @@ LRESULT CMenuContainer::OnLButtonUp( UINT uMsg, WPARAM wParam, LPARAM lParam, BO const MenuItem &item=m_Items[index]; POINT pt2=pt; ClientToScreen(&pt2); - if (!item.bFolder) + if (!item.bFolder || (s_bSingleClickFolders && item.id!=MENU_PROGRAMS && item.id!=MENU_APPS && !bArrow)) // never open All Programs, Apps folder, or jumplists with single click { if (item.jumpIndex>=0 && m_bHotArrow) { @@ -7329,8 +7364,9 @@ static void NewVersionCallback( VersionData &data ) wchar_t cmdLine[1024]; Sprintf(cmdLine,_countof(cmdLine),L"\"%s\" -popup",path); STARTUPINFO startupInfo={sizeof(startupInfo)}; - PROCESS_INFORMATION processInfo; - memset(&processInfo,0,sizeof(processInfo)); + // don't display busy cursor as we are doing this on background + startupInfo.dwFlags=STARTF_FORCEOFFFEEDBACK; + PROCESS_INFORMATION processInfo{}; if (CreateProcess(path,cmdLine,NULL,NULL,TRUE,0,NULL,NULL,&startupInfo,&processInfo)) { CloseHandle(processInfo.hThread); @@ -7400,41 +7436,52 @@ static void CreateStartScreenFile( const wchar_t *fname ) bool CMenuContainer::HasMoreResults( void ) { if (s_HasMoreResults==-1) - s_HasMoreResults=(GetSettingBool(L"SearchFiles") && HasSearchService())?1:0; + s_HasMoreResults=(GetSettingBool(L"MoreResults") && GetSettingBool(L"SearchFiles") && HasSearchService())?1:0; return s_HasMoreResults!=0; } RECT CMenuContainer::CalculateWorkArea( const RECT &taskbarRect ) { - RECT rc=s_MenuLimits; - if ((s_TaskBarEdge==ABE_LEFT || s_TaskBarEdge==ABE_RIGHT) && GetSettingBool(L"ShowNextToTaskbar")) - { - // when the taskbar is on the side and the menu is not on top of it - // the start button is assumed at the top - if (s_TaskBarEdge==ABE_LEFT) - rc.left=taskbarRect.right; - else - rc.right=taskbarRect.left; - } - else + RECT rc; + if (!GetSettingBool(L"AlignToWorkArea")) { - if (s_TaskBarEdge==ABE_BOTTOM) - { - // taskbar is at the bottom - rc.bottom=taskbarRect.top; - } - else if (s_TaskBarEdge==ABE_TOP) + rc = s_MenuLimits; + if ((s_TaskBarEdge == ABE_LEFT || s_TaskBarEdge == ABE_RIGHT) && GetSettingBool(L"ShowNextToTaskbar")) { - // taskbar is at the top - rc.top=taskbarRect.bottom; + // when the taskbar is on the side and the menu is not on top of it + // the start button is assumed at the top + if (s_TaskBarEdge == ABE_LEFT) + rc.left = taskbarRect.right; + else + rc.right = taskbarRect.left; } else { - // taskbar is on the side, start button must be at the top - rc.top=s_StartRect.bottom; + if (s_TaskBarEdge == ABE_BOTTOM) + { + // taskbar is at the bottom + rc.bottom = taskbarRect.top; + } + else if (s_TaskBarEdge == ABE_TOP) + { + // taskbar is at the top + rc.top = taskbarRect.bottom; + } + else + { + // taskbar is on the side, start button must be at the top + rc.top = s_StartRect.bottom; + } } } - + else + { + // Get working area of the monitor the specified taskbar is on + MONITORINFO info{ sizeof(MONITORINFO) }; + HMONITOR mon = MonitorFromRect(&taskbarRect, 0); + GetMonitorInfo(mon, &info); + rc = info.rcWork; + } if (!s_bLockWorkArea) { // exclude floating keyboard @@ -7460,9 +7507,11 @@ RECT CMenuContainer::CalculateWorkArea( const RECT &taskbarRect ) } } } + return rc; } +// Calculates start menu position POINT CMenuContainer::CalculateCorner( void ) { RECT margin={0,0,0,0}; @@ -7471,20 +7520,23 @@ POINT CMenuContainer::CalculateCorner( void ) POINT corner; if (m_Options&CONTAINER_LEFT) - corner.x=s_MainMenuLimits.left+margin.left; + corner.x=max(s_MainMenuLimits.left,s_StartRect.left)+margin.left; else - corner.x=s_MainMenuLimits.right+margin.right; + corner.x=min(s_MainMenuLimits.right,s_StartRect.right)+margin.right; if (m_Options&CONTAINER_TOP) { if (s_bBehindTaskbar) - corner.y=s_MainMenuLimits.top+margin.top; + corner.y=max(s_MainMenuLimits.top,s_StartRect.top)+margin.top; else - corner.y=s_MainMenuLimits.top; + corner.y=max(s_MainMenuLimits.top,s_StartRect.top); } else corner.y=s_MainMenuLimits.bottom+margin.bottom; + corner.x+=GetSettingInt(L"HorizontalMenuOffset"); + corner.y+=GetSettingInt(L"VerticalMenuOffset"); + return corner; } @@ -7592,6 +7644,9 @@ HWND CMenuContainer::ToggleStartMenu( int taskbarId, bool bKeyboard, bool bAllPr // initialize all settings bool bErr=false; HMONITOR initialMonitor=MonitorFromWindow(s_TaskBar,MONITOR_DEFAULTTONEAREST); + // note: GetTaskbarPosition properly identifies monitor in case of multi-monitor setup and automatic taskbar hiding + GetTaskbarPosition(s_TaskBar,NULL,&initialMonitor,NULL); + int dpi=CItemManager::GetDPI(true); if (!CItemManager::GetDPIOverride() && GetWinVersion()>=WIN_VER_WIN81) { @@ -7639,6 +7694,7 @@ HWND CMenuContainer::ToggleStartMenu( int taskbarId, bool bKeyboard, bool bAllPr g_ItemManager.ResetTempIcons(); s_ScrollMenus=GetSettingInt(L"ScrollType"); s_bExpandLinks=GetSettingBool(L"ExpandFolderLinks"); + s_bSingleClickFolders=GetSettingBool(L"SingleClickFolders"); s_bLogicalSort=GetSettingBool(L"NumericSort"); s_MaxRecentDocuments=GetSettingInt(L"MaxRecentDocuments"); s_ShellFormat=RegisterClipboardFormat(CFSTR_SHELLIDLIST); @@ -7709,27 +7765,57 @@ HWND CMenuContainer::ToggleStartMenu( int taskbarId, bool bKeyboard, bool bAllPr s_bHasUpdates=(!bRemote || GetSettingBool(L"RemoteShutdown")) && GetSettingBool(L"CheckWinUpdates") && CheckForUpdates(); - SYSTEM_POWER_CAPABILITIES powerCaps; - GetPwrCapabilities(&powerCaps); + // Check control panel options for power buttons + bool bHibernate = true, bSleep = true, bLock = true; + { + CRegKey regKeyButtons; + if (regKeyButtons.Open(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FlyoutMenuSettings", KEY_READ) == ERROR_SUCCESS) + { + DWORD dwValue = 1; + if (regKeyButtons.QueryDWORDValue(L"ShowHibernateOption", dwValue) == ERROR_SUCCESS) + if (dwValue == 0) + bHibernate = false; + + if (regKeyButtons.QueryDWORDValue(L"ShowLockOption", dwValue) == ERROR_SUCCESS) + if (dwValue == 0) + bLock = false; + + if (regKeyButtons.QueryDWORDValue(L"ShowSleepOption", dwValue) == ERROR_SUCCESS) + if (dwValue == 0) + bSleep = false; + } + } - bool bHibernate=false; - if (powerCaps.HiberFilePresent) + if (bHibernate || bSleep) { - bHibernate=true; -/* disabled for now, use group policy to hide Hibernate - // disable hibernate if hybrid sleep (fast s4) is enabled - SYSTEM_POWER_STATUS status; - if (GetSystemPowerStatus(&status) && (status.ACLineStatus==0 || status.ACLineStatus==1)) + SYSTEM_POWER_CAPABILITIES powerCaps; + GetPwrCapabilities(&powerCaps); + + // no sleep capabilities, turn off the sleep option + if (!(powerCaps.SystemS1 || powerCaps.SystemS2 || powerCaps.SystemS3 || powerCaps.AoAc)) { - GUID *pScheme; - if (PowerGetActiveScheme(NULL,&pScheme)==ERROR_SUCCESS) - { - DWORD index; - if ((status.ACLineStatus==1?PowerReadACValueIndex:PowerReadDCValueIndex)(NULL,pScheme,&GUID_SLEEP_SUBGROUP,&GUID_HIBERNATE_FASTS4_POLICY,&index)==ERROR_SUCCESS && index) - bHibernate=false; - LocalFree(pScheme); - } - }*/ + bSleep = false; + } + + // no hibernate capabilities, turn off hibernate option + if (!powerCaps.HiberFilePresent) + { + bHibernate = false; + /* disabled for now, use group policy to hide Hibernate + // disable hibernate if hybrid sleep (fast s4) is enabled + SYSTEM_POWER_STATUS status; + if (GetSystemPowerStatus(&status) && (status.ACLineStatus==0 || status.ACLineStatus==1)) + { + GUID *pScheme; + if (PowerGetActiveScheme(NULL,&pScheme)==ERROR_SUCCESS) + { + DWORD index; + if ((status.ACLineStatus==1?PowerReadACValueIndex:PowerReadDCValueIndex)(NULL,pScheme,&GUID_SLEEP_SUBGROUP,&GUID_HIBERNATE_FASTS4_POLICY,&index)==ERROR_SUCCESS && index) + bHibernate=false; + LocalFree(pScheme); + } + }*/ + } } for (int i=0;i<_countof(g_StdOptions);i++) @@ -7939,8 +8025,11 @@ HWND CMenuContainer::ToggleStartMenu( int taskbarId, bool bKeyboard, bool bAllPr g_StdOptions[i].options=MENU_ENABLED|MENU_EXPANDED; } break; + case MENU_LOCK: + g_StdOptions[i].options=(bLock)?MENU_ENABLED|MENU_EXPANDED:0; + break; case MENU_SLEEP: - g_StdOptions[i].options=(!s_bNoClose && (powerCaps.SystemS1 || powerCaps.SystemS2 || powerCaps.SystemS3 || powerCaps.AoAc))?MENU_ENABLED|MENU_EXPANDED:0; + g_StdOptions[i].options=(!s_bNoClose && bSleep)?MENU_ENABLED|MENU_EXPANDED:0; break; case MENU_HIBERNATE: g_StdOptions[i].options=(!s_bNoClose && bHibernate)?MENU_ENABLED|MENU_EXPANDED:0; @@ -7969,7 +8058,7 @@ HWND CMenuContainer::ToggleStartMenu( int taskbarId, bool bKeyboard, bool bAllPr s_bNoDragDrop=!GetSettingBool(L"EnableDragDrop"); s_bNoContextMenu=!GetSettingBool(L"EnableContextMenu"); - s_bKeyboardCues=bKeyboard; + s_bKeyboardCues=bKeyboard&&GetSettingBool(L"EnableAccelerators")&&!GetSettingBool(L"AltAccelerators"); s_RecentPrograms=(TRecentPrograms)GetSettingInt(L"RecentPrograms"); if (s_RecentPrograms!=RECENT_PROGRAMS_NONE) LoadMRUShortcuts(); @@ -7991,7 +8080,8 @@ HWND CMenuContainer::ToggleStartMenu( int taskbarId, bool bKeyboard, bool bAllPr } else { - wchar_t path[_MAX_PATH]=START_MENU_PINNED_ROOT; + wchar_t path[_MAX_PATH]; + Strcpy(path,_countof(path),GetSettingString(L"PinnedItemsPath")); DoEnvironmentSubst(path,_countof(path)); SHCreateDirectory(NULL,path); s_PinFolder=path; @@ -8003,7 +8093,8 @@ HWND CMenuContainer::ToggleStartMenu( int taskbarId, bool bKeyboard, bool bAllPr { bool bPinned=GetSettingInt(L"PinnedPrograms")==PINNED_PROGRAMS_PINNED; bool bShortcut=GetSettingBool(L"StartScreenShortcut"); - wchar_t path[_MAX_PATH]=START_MENU_PINNED_ROOT L"\\" STARTSCREEN_COMMAND; + wchar_t path[_MAX_PATH]; + Sprintf(path,_countof(path),L"%s\\%s",GetSettingString(L"PinnedItemsPath"),STARTSCREEN_COMMAND); DoEnvironmentSubst(path,_countof(path)); if (bPinned) { @@ -8134,7 +8225,7 @@ HWND CMenuContainer::ToggleStartMenu( int taskbarId, bool bKeyboard, bool bAllPr s_UserPicture.Init(pStartMenu); } dummyRc.right++; - pStartMenu->SetWindowPos(NULL,&dummyRc,SWP_NOZORDER); + pStartMenu->SetWindowPos(NULL,&dummyRc,SWP_NOZORDER|SWP_NOACTIVATE); memset(&s_StartRect,0,sizeof(s_StartRect)); @@ -8463,7 +8554,7 @@ HWND CMenuContainer::ToggleStartMenu( int taskbarId, bool bKeyboard, bool bAllPr // reposition start menu if (bTopMost || !s_bBehindTaskbar) animFlags|=AW_TOPMOST; - pStartMenu->SetWindowPos((animFlags&AW_TOPMOST)?HWND_TOPMOST:HWND_TOP,corner.x,corner.y,0,0,(initialMonitor!=s_MenuMonitor && !bAllPrograms)?SWP_NOMOVE|SWP_NOSIZE:0); + pStartMenu->SetWindowPos((animFlags&AW_TOPMOST)?HWND_TOPMOST:HWND_TOP,corner.x,corner.y,0,0,((initialMonitor!=s_MenuMonitor && !bAllPrograms)?SWP_NOMOVE|SWP_NOSIZE:0)|SWP_NOACTIVATE); pStartMenu->InitItems(); pStartMenu->m_MaxWidth=s_MainMenuLimits.right-s_MainMenuLimits.left; diff --git a/Src/StartMenu/StartMenuDLL/MenuContainer.h b/Src/StartMenu/StartMenuDLL/MenuContainer.h index 3fcb04851..057982104 100644 --- a/Src/StartMenu/StartMenuDLL/MenuContainer.h +++ b/Src/StartMenu/StartMenuDLL/MenuContainer.h @@ -808,7 +808,7 @@ class CMenuContainer: public IDropTarget, public IFrameworkInputPaneHandler, pub void ActivateItem( int index, TActivateType type, const POINT *pPt, ActivateData *pData=NULL ); void ActivateTreeItem( const void *treeItem, RECT &itemRect, TActivateType type, const POINT *pPt, ActivateData *pData=NULL ); void DragTreeItem( const void *treeItem, bool bApps ); - void ShowKeyboardCues( void ); + void ShowKeyboardCues( bool alt ); void SetActiveWindow( void ); void CreateBackground( int width1, int width2, int height1, int height2, int &totalWidth, int &totalHeight, bool bCreateRegion ); // width1/2, height1/2 - the first and second content area void BlendPatterns( unsigned int *bits, int width, int height ); @@ -876,6 +876,7 @@ class CMenuContainer: public IDropTarget, public IFrameworkInputPaneHandler, pub static bool s_bNoDragDrop; // disables drag/drop static bool s_bNoContextMenu; // disables the context menu static bool s_bExpandLinks; // expand links to folders + static bool s_bSingleClickFolders; // open links to folders with one click instead of two static bool s_bLogicalSort; // use StrCmpLogical instead of CompareString static bool s_bExtensionSort; // sort file names by extension static bool s_bAllPrograms; // this is the All Programs menu of the Windows start menu @@ -957,7 +958,6 @@ class CMenuContainer: public IDropTarget, public IFrameworkInputPaneHandler, pub friend LRESULT CALLBACK SubclassTopMenuProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData ); friend HRESULT CreatePinLink( PCIDLIST_ABSOLUTE sourcePidl, const wchar_t *name, const wchar_t *iconPath, int iconIndex ); - static void HideTemp( bool bHide ); static void AddMRUShortcut( const wchar_t *path ); static void AddMRUAppId( const wchar_t *appid ); static void DeleteMRUShortcut( const wchar_t *path ); diff --git a/Src/StartMenu/StartMenuDLL/MenuPaint.cpp b/Src/StartMenu/StartMenuDLL/MenuPaint.cpp index 4917dd860..32bccd387 100644 --- a/Src/StartMenu/StartMenuDLL/MenuPaint.cpp +++ b/Src/StartMenu/StartMenuDLL/MenuPaint.cpp @@ -19,6 +19,7 @@ #include #include #include +#include static BLENDFUNCTION g_AlphaFunc={AC_SRC_OVER,0,255,AC_SRC_ALPHA}; @@ -2200,6 +2201,21 @@ void CMenuContainer::DrawBackground( HDC hdc, const RECT &drawRect ) else iconSize.cx=iconSize.cy=0; + COLORREF color, shadowColor; + { + bool bHotColor = (bHot && !bSplit) || stateLeft > 0; + if (item.id == MENU_EMPTY || item.id == MENU_EMPTY_TOP) + { + color = settings.textColors[bHotColor ? 3 : 2]; + shadowColor = settings.textShadowColors[bHotColor ? 3 : 2]; + } + else + { + color = settings.textColors[bHotColor ? 1 : 0]; + shadowColor = settings.textShadowColors[bHotColor ? 1 : 0]; + } + } + // draw icon if (drawType==MenuSkin::PROGRAMS_BUTTON || drawType==MenuSkin::PROGRAMS_BUTTON_NEW) { @@ -2256,15 +2272,21 @@ void CMenuContainer::DrawBackground( HDC hdc, const RECT &drawRect ) const CItemManager::IconInfo *pIcon=(settings.iconSize==MenuSkin::ICON_SIZE_LARGE)?item.pItemInfo->largeIcon:item.pItemInfo->smallIcon; if (pIcon && pIcon->bitmap) { + HBITMAP temp = ColorizeMonochromeImage(pIcon->bitmap, color); + HBITMAP bitmap = temp ? temp : pIcon->bitmap; + BITMAP info; - GetObject(pIcon->bitmap,sizeof(info),&info); - HGDIOBJ bmp0=SelectObject(hdc2,pIcon->bitmap); + GetObject(bitmap,sizeof(info),&info); + HGDIOBJ bmp0=SelectObject(hdc2,bitmap); if (bmp0) { BLENDFUNCTION func={AC_SRC_OVER,0,255,AC_SRC_ALPHA}; AlphaBlend(hdc,iconX,iconY,iconSize.cx,iconSize.cy,hdc2,0,0,info.bmWidth,info.bmHeight,func); SelectObject(hdc2,bmp0); } + + if (temp) + DeleteObject(temp); } } else if (item.id==MENU_SHUTDOWN_BUTTON && s_bHasUpdates && s_Skin.Shutdown_bitmap.GetBitmap()) @@ -2287,18 +2309,6 @@ void CMenuContainer::DrawBackground( HDC hdc, const RECT &drawRect ) // draw text SelectObject(hdc,settings.font); - COLORREF color, shadowColor; - bool bHotColor=(bHot && !bSplit) || stateLeft>0; - if (item.id==MENU_EMPTY || item.id==MENU_EMPTY_TOP) - { - color=settings.textColors[bHotColor?3:2]; - shadowColor=settings.textShadowColors[bHotColor?3:2]; - } - else - { - color=settings.textColors[bHotColor?1:0]; - shadowColor=settings.textShadowColors[bHotColor?1:0]; - } RECT rc={itemRect.left+settings.iconPadding.left+settings.iconPadding.right+settings.textPadding.left,itemRect.top+settings.textPadding.top, itemRect.right-settings.arrPadding.cx-settings.arrPadding.cy-settings.textPadding.right,itemRect.bottom-settings.textPadding.bottom}; if (item.id==MENU_SHUTDOWN_BUTTON) @@ -2997,9 +3007,12 @@ void CProgramsTree::DrawScrollbarBackground( HDC hdc, int iPartId, int iStateId, void CMenuContainer::AnimateMenu( int flags, int speed, const RECT &rect ) { + using namespace std::chrono; + RECT clipRect=m_bSubMenu?s_MenuLimits:s_MainMenuLimits; bool bUserPic=(!m_bSubMenu && s_bWin7Style && s_UserPicture.m_hWnd && s_UserPictureRect.top0) { @@ -3021,10 +3034,10 @@ void CMenuContainer::AnimateMenu( int flags, int speed, const RECT &rect ) } // animate - int time0=GetTickCount(); + auto time0=steady_clock::now(); while (true) { - int dt=GetTickCount()-time0; + auto dt=duration_cast(steady_clock::now()-time0).count(); if (dt>speed) break; float f=dt/(float)speed; int alpha=(int)(f*255); @@ -3032,6 +3045,7 @@ void CMenuContainer::AnimateMenu( int flags, int speed, const RECT &rect ) RedrawWindow(); if (bUserPic) s_UserPicture.Update(alpha); + frames++; } SetWindowLong(GWL_EXSTYLE,GetWindowLong(GWL_EXSTYLE)&~WS_EX_LAYERED); @@ -3076,7 +3090,7 @@ void CMenuContainer::AnimateMenu( int flags, int speed, const RECT &rect ) } // animate - int time0=GetTickCount(); + auto time0=steady_clock::now(); int movex=0, movey=0; if (flags&AW_HOR_POSITIVE) { @@ -3102,7 +3116,7 @@ void CMenuContainer::AnimateMenu( int flags, int speed, const RECT &rect ) HRGN clipRgn=CreateRectRgn(clipRect.left-rect.left,clipRect.top-rect.top,clipRect.right-rect.left,clipRect.bottom-rect.top); // clip region in window space while (true) { - int dt=GetTickCount()-time0; + auto dt=duration_cast(steady_clock::now()-time0).count(); if (dt>speed) break; float f=1-dt/(float)speed; f=powf(f,5); @@ -3130,6 +3144,7 @@ void CMenuContainer::AnimateMenu( int flags, int speed, const RECT &rect ) POINT pos={s_UserPictureRect.left-dx,s_UserPictureRect.top-dy}; s_UserPicture.UpdatePartial(pos,&clipRect); } + frames++; } DeleteObject(clipRgn); @@ -3160,4 +3175,7 @@ void CMenuContainer::AnimateMenu( int flags, int speed, const RECT &rect ) POINT pos={s_UserPictureRect.left,s_UserPictureRect.top}; s_UserPicture.UpdatePartial(pos,NULL); } + + if (frames) + LOG_MENU(LOG_OPEN,L"Menu animation %d frames in %dms (%.0f fps)",frames,speed,1000.0*frames/speed); } diff --git a/Src/StartMenu/StartMenuDLL/MetroLinkManager.cpp b/Src/StartMenu/StartMenuDLL/MetroLinkManager.cpp index 3aac7e2c5..67406b678 100644 --- a/Src/StartMenu/StartMenuDLL/MetroLinkManager.cpp +++ b/Src/StartMenu/StartMenuDLL/MetroLinkManager.cpp @@ -301,21 +301,12 @@ bool CanUninstallMetroApp( const wchar_t *appid ) // Uninstalls the app with the given id void UninstallMetroApp( const wchar_t *appid ) { - CComPtr pAppItem; - if (SUCCEEDED(SHCreateItemInKnownFolder(FOLDERID_AppsFolder2,0,appid,IID_IShellItem,(void**)&pAppItem))) + auto packageName = GetPackageFullName(appid); + if (!packageName.IsEmpty()) { - CComPtr pStore; - pAppItem->BindToHandler(NULL,BHID_PropertyStore,IID_IPropertyStore,(void**)&pStore); - if (pStore) - { - CString packageName=GetPropertyStoreString(pStore,PKEY_MetroPackageName); - if (!packageName.IsEmpty()) - { - wchar_t command[1024]; - Sprintf(command,_countof(command),L"Remove-AppxPackage %s",packageName); - ShellExecute(NULL,L"open",L"powershell.exe",command,NULL,SW_HIDE); - } - } + wchar_t command[1024]; + Sprintf(command, _countof(command), L"Remove-AppxPackage %s", packageName); + ShellExecute(NULL, L"open", L"powershell.exe", command, NULL, SW_HIDE); } } @@ -381,3 +372,16 @@ bool IsEdgeDefaultBrowser( void ) } return false; } + +CString GetPackageFullName(const wchar_t* appId) +{ + CComPtr item; + if (SUCCEEDED(SHCreateItemInKnownFolder(FOLDERID_AppsFolder, 0, appId, IID_PPV_ARGS(&item)))) + { + CComPtr store; + if (SUCCEEDED(item->BindToHandler(nullptr, BHID_PropertyStore, IID_PPV_ARGS(&store)))) + return GetPropertyStoreString(store, PKEY_MetroPackageName); + } + + return {}; +} diff --git a/Src/StartMenu/StartMenuDLL/MetroLinkManager.h b/Src/StartMenu/StartMenuDLL/MetroLinkManager.h index e2b2a2c38..83b41886f 100644 --- a/Src/StartMenu/StartMenuDLL/MetroLinkManager.h +++ b/Src/StartMenu/StartMenuDLL/MetroLinkManager.h @@ -53,3 +53,6 @@ CComPtr GetMetroPinMenu( const wchar_t *appid ); // Determines if Edge is the default browser bool IsEdgeDefaultBrowser( void ); + +// Returns full package name for given App ID +CString GetPackageFullName(const wchar_t* appId); diff --git a/Src/StartMenu/StartMenuDLL/ProgramsTree.cpp b/Src/StartMenu/StartMenuDLL/ProgramsTree.cpp index 9906aae0b..2e55c32b5 100644 --- a/Src/StartMenu/StartMenuDLL/ProgramsTree.cpp +++ b/Src/StartMenu/StartMenuDLL/ProgramsTree.cpp @@ -60,9 +60,9 @@ void CProgramsTree::Create( CMenuContainer *pOwner ) HWND hWnd=CreateWindowEx(0,WC_TREEVIEW,NULL,WS_CHILD|TVS_EDITLABELS|TVS_FULLROWSELECT|(CMenuContainer::s_TipHideTime?TVS_INFOTIP:0)|TVS_NOHSCROLL|TVS_SHOWSELALWAYS|TVS_NONEVENHEIGHT,0,0,0,0,pOwner->m_hWnd,NULL,g_Instance,NULL); TreeView_SetExtendedStyle(hWnd,TVS_EX_AUTOHSCROLL,TVS_EX_AUTOHSCROLL); const MenuSkin &skin=CMenuContainer::s_Skin; - m_TreeTheme=OpenThemeData(m_hWnd,L"treeview"); + m_TreeTheme=OpenThemeData(hWnd,L"treeview"); if (skin.BHasScrollbar) - m_ScrollTheme=OpenThemeData(m_hWnd,L"scrollbar"); + m_ScrollTheme=OpenThemeData(hWnd,L"scrollbar"); const MenuSkin::ItemDrawSettings &settings=skin.ItemSettings[MenuSkin::PROGRAMS_TREE_ITEM]; @@ -1601,8 +1601,6 @@ HRESULT CProgramsTree::Drop( IDataObject *pDataObj, DWORD grfKeyState, POINTL pt CMenuContainer::s_bPreventClosing=true; m_pOwner->AddRef(); pTarget->Drop(pDataObj,grfKeyState,pt,pdwEffect); - if (!bOld) - CMenuContainer::HideTemp(false); CMenuContainer::s_bPreventClosing=bOld; for (std::vector::iterator it=CMenuContainer::s_Menus.begin();it!=CMenuContainer::s_Menus.end();++it) if (!(*it)->m_bDestroyed) diff --git a/Src/StartMenu/StartMenuDLL/SearchManager.cpp b/Src/StartMenu/StartMenuDLL/SearchManager.cpp index a275a4e80..037794941 100644 --- a/Src/StartMenu/StartMenuDLL/SearchManager.cpp +++ b/Src/StartMenu/StartMenuDLL/SearchManager.cpp @@ -139,18 +139,25 @@ void CSearchManager::CloseMenu( void ) Lock lock(this,LOCK_DATA); m_LastRequestId++; m_LastProgramsRequestId=m_LastRequestId; - if (g_LogCategories&LOG_SEARCH) + if (g_LogCategories & LOG_SEARCH) { - for (std::vector::const_iterator it=m_ProgramItems.begin();it!=m_ProgramItems.end();++it) + for (const auto& item : m_ProgramItems) { - if (it->category==CATEGORY_PROGRAM) - LOG_MENU(LOG_SEARCH,L"Program: '%s', %d",it->name,it->rank); + if (item.category == CATEGORY_PROGRAM) + LOG_MENU(LOG_SEARCH, L"Program: '%s', %d", item.name, item.rank); } - std::sort(m_SettingsItems.begin(),m_SettingsItems.end()); - for (std::vector::const_iterator it=m_SettingsItems.begin();it!=m_SettingsItems.end();++it) + + std::sort(m_SettingsItems.begin(), m_SettingsItems.end()); + + for (const auto& item : m_SettingsItems) + { + if (item.category == CATEGORY_SETTING) + LOG_MENU(LOG_SEARCH, L"Setting: '%s', %d", item.name, item.rank); + } + for (const auto& item : m_SettingsItems) { - if (it->category==CATEGORY_SETTING) - LOG_MENU(LOG_SEARCH,L"Setting: '%s', %d",it->name,it->rank); + if (item.category == CATEGORY_METROSETTING) + LOG_MENU(LOG_SEARCH, L"MetroSetting: '%s', %d", item.name, item.rank); } } if (m_bProgramsFound) @@ -170,6 +177,7 @@ void CSearchManager::CloseMenu( void ) m_SettingsItems.clear(); m_SettingsHash=FNV_HASH0; m_bSettingsFound=false; + m_bMetroSettingsFound = false; m_IndexedItems.clear(); m_AutoCompleteItems.clear(); @@ -310,7 +318,9 @@ bool CSearchManager::AddSearchItem( IShellItem *pItem, const wchar_t *name, int PROPVARIANT val; PropVariantInit(&val); pItem2->GetProperty(PKEY_Keywords,&val); - wchar_t keywords[1024]; + if (val.vt==VT_EMPTY) + pItem2->GetProperty(PKEY_HighKeywords,&val); + wchar_t keywords[2048]; int len=0; if (val.vt==VT_BSTR || val.vt==VT_LPWSTR) { @@ -334,7 +344,7 @@ bool CSearchManager::AddSearchItem( IShellItem *pItem, const wchar_t *name, int } Lock lock(this,LOCK_DATA); - if (category==CATEGORY_PROGRAM || category==CATEGORY_SETTING) + if (category==CATEGORY_PROGRAM || category==CATEGORY_SETTING || category==CATEGORY_METROSETTING) { if (searchRequest.requestId &items=(category==CATEGORY_PROGRAM)?m_ProgramItems:m_SettingsItems; - if (category==CATEGORY_SETTING) + if (category==CATEGORY_SETTING || category==CATEGORY_METROSETTING) { // remove duplicate settings for (std::vector::const_iterator it=items.begin();it!=items.end();++it) @@ -381,6 +391,8 @@ bool CSearchManager::AddSearchItem( IShellItem *pItem, const wchar_t *name, int } items.push_back(item); + if (item.category==CATEGORY_METROSETTING) + m_bMetroSettingsFound=true; } else if (category==CATEGORY_AUTOCOMPLETE) { @@ -409,7 +421,7 @@ void CSearchManager::CollectSearchItems( IShellItem *pFolder, int flags, TItemCa CComPtr pChild; while (pChild=NULL,pEnum->Next(1,&pChild,NULL)==S_OK) { - if (category==CATEGORY_PROGRAM || category==CATEGORY_SETTING) + if (category==CATEGORY_PROGRAM || category==CATEGORY_SETTING || category==CATEGORY_METROSETTING) { if (searchRequest.requestId pNext; if (pScopeItem->get_nextSibling(&pNext)!=S_OK) break; - pScopeItem=pNext; + pScopeItem=std::move(pNext); } return true; } @@ -627,7 +639,8 @@ void CSearchManager::SearchThread( void ) // pinned folder if (searchRequest.bPinnedFolder) { - wchar_t path[_MAX_PATH]=START_MENU_PINNED_ROOT; + wchar_t path[_MAX_PATH]; + Strcpy(path,_countof(path),GetSettingString(L"PinnedItemsPath")); DoEnvironmentSubst(path,_MAX_PATH); CComPtr pFolder; if (SUCCEEDED(SHCreateItemFromParsingName(path,NULL,IID_IShellItem,(void**)&pFolder))) @@ -670,7 +683,7 @@ void CSearchManager::SearchThread( void ) if (GetWinVersion()>=WIN_VER_WIN8 && searchRequest.bSearchMetroApps) { std::vector links; - GetMetroLinks(links,false); + GetMetroLinks(links,true); for (std::vector::const_iterator it=links.begin();it!=links.end();++it) { if (GetWinVersion() pFolder; + if (SUCCEEDED(SHCreateItemFromParsingName(L"shell:::{82E749ED-B971-4550-BAF7-06AA2BF7E836}",NULL,IID_IShellItem,(void**)&pFolder))) + CollectSearchItems(pFolder,(searchRequest.bSearchKeywords?COLLECT_KEYWORDS:0)|COLLECT_NOREFRESH,CATEGORY_METROSETTING,searchRequest); + if (searchRequest.requestId scopeList; + std::vector scopeList; - if (searchRequest.bSearchMetroSettings) + if (searchRequest.bSearchMetroSettings && !m_bMetroSettingsFound) { scopeList.push_back(SearchScope()); SearchScope &scope=*scopeList.rbegin(); @@ -1084,7 +1105,7 @@ void CSearchManager::SearchThread( void ) command0.Close(); continue; } - for (std::list::iterator it=scopeList.begin();it!=scopeList.end();++it) + for (auto it=scopeList.begin();it!=scopeList.end();++it) { if (it->roots.empty()) continue; @@ -1102,7 +1123,7 @@ void CSearchManager::SearchThread( void ) else { len+=Strcpy(query+len,_countof(query)-len,L" AND System.Search.Store='FILE' AND System.ItemType!='.settingcontent-ms'"); - for (std::list::iterator it2=scopeList.begin();it2!=it;++it2) + for (auto it2=scopeList.begin();it2!=it;++it2) { if (it2->categoryHash==CATEGORY_METROSETTING) continue; @@ -1240,7 +1261,7 @@ void CSearchManager::SearchThread( void ) Lock lock(this,LOCK_DATA); m_IndexedItems.push_back(SearchCategory()); pCategory=&*m_IndexedItems.rbegin(); - pCategory->name.Format(L"%s (%d)",it->name,it->resultCount); + pCategory->name=it->name; pCategory->categoryHash=it->categoryHash; pCategory->search.Clone(it->search); } @@ -1348,6 +1369,7 @@ void CSearchManager::GetSearchResults( SearchResults &results ) { results.programs.clear(); results.settings.clear(); + results.metrosettings.clear(); results.indexed.clear(); results.autocomplete.clear(); results.autoCompletePath.Empty(); @@ -1397,14 +1419,19 @@ void CSearchManager::GetSearchResults( SearchResults &results ) std::vector &settings=m_bSettingsFound?m_SettingsItems:m_SettingsItemsOld; for (std::vector::iterator it=settings.begin();it!=settings.end();++it) { - int match=(it->category==CATEGORY_SETTING)?it->MatchText(m_SearchText,bSearchSubWord):0; + int match=(it->category==CATEGORY_SETTING || it->category==CATEGORY_METROSETTING)?it->MatchText(m_SearchText,bSearchSubWord):0; it->rank=(it->rank&0xFFFFFFFE)|(match>>1); } std::sort(settings.begin(),settings.end()); for (std::vector::const_iterator it=settings.begin();it!=settings.end();++it) { - if (it->category==CATEGORY_SETTING && it->MatchText(m_SearchText,bSearchSubWord)) - results.settings.push_back(it->pInfo); + if (it->MatchText(m_SearchText, bSearchSubWord)) + { + if (it->category==CATEGORY_SETTING) + results.settings.push_back(it->pInfo); + if (it->category==CATEGORY_METROSETTING) + results.metrosettings.push_back(it->pInfo); + } } } @@ -1423,7 +1450,7 @@ void CSearchManager::GetSearchResults( SearchResults &results ) results.autocomplete.push_back(it->pInfo); } } - results.bResults=(!results.programs.empty() || !results.settings.empty() || !results.indexed.empty() || !results.autocomplete.empty()); + results.bResults=(!results.programs.empty() || !results.settings.empty() || !results.metrosettings.empty() || !results.indexed.empty() || !results.autocomplete.empty()); results.bSearching=(m_LastCompletedId!=m_LastRequestId); } diff --git a/Src/StartMenu/StartMenuDLL/SearchManager.h b/Src/StartMenu/StartMenuDLL/SearchManager.h index 32341278e..6328b430a 100644 --- a/Src/StartMenu/StartMenuDLL/SearchManager.h +++ b/Src/StartMenu/StartMenuDLL/SearchManager.h @@ -36,7 +36,7 @@ class CSearchManager struct SearchCategory { - SearchCategory( void ) {} + SearchCategory( void ) = default; SearchCategory( const SearchCategory &cat ) { search.Clone(cat.search); @@ -63,6 +63,7 @@ class CSearchManager CString autoCompletePath; std::vector programs; std::vector settings; + std::vector metrosettings; std::vector autocomplete; std::list indexed; }; @@ -149,6 +150,7 @@ class CSearchManager unsigned int m_SettingsHashOld; bool m_bProgramsFound; bool m_bSettingsFound; + bool m_bMetroSettingsFound = false; std::vector m_AutoCompleteItems; std::list m_IndexedItems; std::vector m_ItemRanks; diff --git a/Src/StartMenu/StartMenuDLL/SettingsUI.cpp b/Src/StartMenu/StartMenuDLL/SettingsUI.cpp index 2b334b301..49383601b 100644 --- a/Src/StartMenu/StartMenuDLL/SettingsUI.cpp +++ b/Src/StartMenu/StartMenuDLL/SettingsUI.cpp @@ -30,6 +30,19 @@ const int DEFAULT_TASK_OPACITY10=85; // 85% /////////////////////////////////////////////////////////////////////////////// +CString RgbToBgr(const wchar_t* str) +{ + CString retval; + retval.Format(L"%06X", RgbToBgr(ParseColor(str))); + + return retval; +} + +CString BgrToRgb(const wchar_t* str) +{ + return RgbToBgr(str); +} + class CSkinSettingsDlg: public CResizeableDlg { public: @@ -422,7 +435,7 @@ void CSkinSettingsDlg::UpdateSkinSettings( void ) if (!option.bEnabled || bLocked) image|=SETTING_STATE_DISABLED; if (option.bValue && option.type>SKIN_OPTION_BOOL) - Sprintf(text,_countof(text),L"%s: %s",option.label,option.sValue); + Sprintf(text,_countof(text),L"%s: %s",option.label,(option.type==SKIN_OPTION_COLOR)?BgrToRgb(option.sValue):option.sValue); else Sprintf(text,_countof(text),L"%s",option.label); @@ -482,9 +495,7 @@ LRESULT CSkinSettingsDlg::OnCustomDraw( int idCtrl, LPNMHDR pnmh, BOOL& bHandled if (TreeView_GetItemRect(m_Tree,(HTREEITEM)pDraw->nmcd.dwItemSpec,&rc,TRUE)) { const wchar_t *str=m_CurrentSkin.Options[pDraw->nmcd.lItemlParam].sValue; - wchar_t *end; - COLORREF color=wcstoul(str,&end,16); - SetDCBrushColor(pDraw->nmcd.hdc,color&0xFFFFFF); + SetDCBrushColor(pDraw->nmcd.hdc,ParseColor(str)); SelectObject(pDraw->nmcd.hdc,GetStockObject(DC_BRUSH)); SelectObject(pDraw->nmcd.hdc,GetStockObject(BLACK_PEN)); Rectangle(pDraw->nmcd.hdc,rc.right,rc.top,rc.right+rc.bottom-rc.top,rc.bottom-1); @@ -690,15 +701,14 @@ LRESULT CSkinSettingsDlg::OnBrowse( WORD wNotifyCode, WORD wID, HWND hWndCtl, BO CString str; m_EditBox.GetWindowText(str); str.TrimLeft(); str.TrimRight(); - wchar_t *end; - COLORREF val=wcstol(str,&end,16)&0xFFFFFF; + COLORREF val=RgbToBgr(ParseColor(str)); static COLORREF customColors[16]; CHOOSECOLOR choose={sizeof(choose),m_hWnd,NULL,val,customColors}; choose.Flags=CC_ANYCOLOR|CC_FULLOPEN|CC_RGBINIT; if (ChooseColor(&choose)) { wchar_t text[100]; - Sprintf(text,_countof(text),L"%06X",choose.rgbResult); + Sprintf(text,_countof(text),L"%06X",BgrToRgb(choose.rgbResult)); m_EditBox.SetWindowText(text); ApplyEditBox(); m_Tree.Invalidate(); @@ -717,7 +727,11 @@ void CSkinSettingsDlg::ApplyEditBox( void ) CString str; m_EditBox.GetWindowText(str); str.TrimLeft(); str.TrimRight(); - m_CurrentSkin.Options[m_EditItemIndex].sValue=str; + auto& option=m_CurrentSkin.Options[m_EditItemIndex]; + if (option.type==SKIN_OPTION_COLOR) + option.sValue=RgbToBgr(str); + else + option.sValue=str; StoreSkinOptions(); } } @@ -730,7 +744,7 @@ void CSkinSettingsDlg::ItemSelected( HTREEITEM hItem, int index, bool bEnabled ) const MenuSkin::Option &option=m_CurrentSkin.Options[m_EditItemIndex]; wchar_t text[256]; if (option.bValue && option.type>SKIN_OPTION_BOOL) - Sprintf(text,_countof(text),L"%s: %s",option.label,option.sValue); + Sprintf(text,_countof(text),L"%s: %s",option.label,(option.type==SKIN_OPTION_COLOR)?BgrToRgb(option.sValue):option.sValue); else Sprintf(text,_countof(text),L"%s",option.label); TVITEM item={TVIF_TEXT,m_EditItem,0,0,text}; @@ -745,7 +759,10 @@ void CSkinSettingsDlg::ItemSelected( HTREEITEM hItem, int index, bool bEnabled ) const MenuSkin::Option &option=m_CurrentSkin.Options[index]; if (option.type>SKIN_OPTION_BOOL) mode=option.type; - text=option.sValue; + if (option.type==SKIN_OPTION_COLOR) + text=BgrToRgb(option.sValue); + else + text=option.sValue; } RECT rc; @@ -1001,7 +1018,7 @@ static const CStdCommand g_StdCommands[]={ {L"settings",IDS_SETTINGS_ITEM,IDS_SETTINGS_MENU_TIP,L"SettingsMenu",L"$Menu.Settings",L"",L"shell32.dll,330"}, {L"search",IDS_SEARCH_MENU_ITEM,IDS_SEARCH_TIP,L"SearchMenu",L"$Menu.Search",L"",L"shell32.dll,323"}, {L"search_box",IDS_SEARCH_BOX_ITEM,IDS_SEARCH_BOX_TIP,L"SearchBoxItem",L"$Menu.SearchBox",NULL,L"none",NULL,StdMenuItem::MENU_TRACK|StdMenuItem::MENU_OPENUP}, - {L"help",IDS_HELP_ITEM,IDS_HELP_TIP,L"HelpItem",L"$Menu.Help",L"$Menu.HelpTip",L"shell32.dll,324"}, + {L"help",IDS_HELP_ITEM,IDS_HELP_TIP,L"HelpItem",L"$Menu.Help",L"$Menu.HelpTip",L"imageres.dll,99"}, {L"run",IDS_RUN_ITEM,IDS_RUN_TIP,L"RunItem",L"$Menu.Run",L"$Menu.RunTip",L"shell32.dll,328"}, {L"logoff",IDS_SHUTDOWN_LOGOFF,IDS_LOGOFF_TIP,L"LogOffItem",L"$Menu.Logoff",L"$Menu.LogOffTip",L"shell32.dll,325",NULL,StdMenuItem::MENU_STYLE_CLASSIC1}, {L"logoff",IDS_SHUTDOWN_LOGOFF,IDS_LOGOFF_TIP,L"LogOffItem",L"$Menu.Logoff",L"$Menu.LogOffTip",L"none",NULL,StdMenuItem::MENU_STYLE_CLASSIC2}, @@ -1057,7 +1074,7 @@ L"RecentDocumentsItem.Label=$Menu.Documents\n" L"RecentDocumentsItem.Icon=shell32.dll,327\n" L"RecentDocumentsItem.Settings=ITEMS_FIRST\n" L"SettingsMenu.Command=settings\n" -L"SettingsMenu.Items=ControlPanelItem, PCSettingsItem, SEPARATOR, SecurityItem, NetworkItem, PrintersItem, TaskbarSettingsItem, ProgramsFeaturesItem, SEPARATOR, MenuSettingsItem\n" +L"SettingsMenu.Items=PCSettingsItem, ControlPanelItem, SEPARATOR, SecurityItem, NetworkItem, PrintersItem, TaskbarSettingsItem, ProgramsFeaturesItem, SEPARATOR, MenuSettingsItem\n" L"SettingsMenu.Label=$Menu.Settings\n" L"SettingsMenu.Icon=shell32.dll,330\n" L"SearchMenu.Command=search\n" @@ -1068,7 +1085,7 @@ L"ComputerItem.Command=computer\n" L"HelpItem.Command=help\n" L"HelpItem.Label=$Menu.Help\n" L"HelpItem.Tip=$Menu.HelpTip\n" -L"HelpItem.Icon=shell32.dll,324\n" +L"HelpItem.Icon=imageres.dll,99\n" L"RunItem.Command=run\n" L"RunItem.Label=$Menu.Run\n" L"RunItem.Tip=$Menu.RunTip\n" @@ -1106,7 +1123,7 @@ L"ControlPanelItem.Label=$Menu.ControlPanel\n" L"ControlPanelItem.Tip=$Menu.ControlPanelTip\n" L"ControlPanelItem.Settings=TRACK_RECENT\n" L"PCSettingsItem.Command=pc_settings\n" -L"PCSettingsItem.Icon=%windir%\\ImmersiveControlPanel\\SystemSettings.exe,10\n" +L"PCSettingsItem.Link=shell:appsfolder\\windows.immersivecontrolpanel_cw5n1h2txyewy!microsoft.windows.immersivecontrolpanel\n" L"PCSettingsItem.Label=$Menu.PCSettings\n" L"PCSettingsItem.Settings=TRACK_RECENT\n" L"SecurityItem.Command=windows_security\n" @@ -1183,7 +1200,7 @@ L"ShutdownItem.Icon=none\n" ; const wchar_t *g_DefaultStartMenu2= -L"Items=COLUMN_PADDING, ProgramsMenu, AppsMenu, SearchBoxItem, COLUMN_BREAK, FavoritesItem, UserFilesItem, UserDocumentsItem, UserPicturesItem, ComputerItem, RecentDocumentsItem, SEPARATOR, ControlPanelItem, PCSettingsItem, SecurityItem, NetworkItem, PrintersItem, SEPARATOR, SearchMenu, HelpItem, RunItem, COLUMN_PADDING, SEPARATOR, ShutdownBoxItem\n" +L"Items=COLUMN_PADDING, ProgramsMenu, AppsMenu, SearchBoxItem, COLUMN_BREAK, FavoritesItem, UserFilesItem, UserDocumentsItem, UserPicturesItem, ComputerItem, RecentDocumentsItem, SEPARATOR, PCSettingsItem, ControlPanelItem, SecurityItem, NetworkItem, PrintersItem, SEPARATOR, SearchMenu, HelpItem, RunItem, COLUMN_PADDING, SEPARATOR, ShutdownBoxItem\n" L"ProgramsMenu.Command=programs\n" L"ProgramsMenu.Label=$Menu.Programs\n" L"ProgramsMenu.Icon=shell32.dll,326\n" @@ -1203,7 +1220,7 @@ L"SearchMenu.Icon=shell32.dll,323\n" L"HelpItem.Command=help\n" L"HelpItem.Label=$Menu.Help\n" L"HelpItem.Tip=$Menu.HelpTip\n" -L"HelpItem.Icon=shell32.dll,324\n" +L"HelpItem.Icon=imageres.dll,99\n" L"RunItem.Command=run\n" L"RunItem.Label=$Menu.Run\n" L"RunItem.Tip=$Menu.RunTip\n" @@ -1229,7 +1246,7 @@ L"ControlPanelItem.Label=$Menu.ControlPanel\n" L"ControlPanelItem.Tip=$Menu.ControlPanelTip\n" L"ControlPanelItem.Settings=TRACK_RECENT\n" L"PCSettingsItem.Command=pc_settings\n" -L"PCSettingsItem.Icon=%windir%\\ImmersiveControlPanel\\SystemSettings.exe,10\n" +L"PCSettingsItem.Link=shell:appsfolder\\windows.immersivecontrolpanel_cw5n1h2txyewy!microsoft.windows.immersivecontrolpanel\n" L"PCSettingsItem.Label=$Menu.PCSettings\n" L"PCSettingsItem.Settings=TRACK_RECENT\n" L"SecurityItem.Command=windows_security\n" @@ -1379,9 +1396,9 @@ L"Item13.Settings=ITEM_DISABLED\n" L"Item14.Command=network_connections\n" L"Item14.Settings=ITEM_DISABLED\n" L"Item15.Command=separator\n" -L"Item16.Command=control_panel\n" +L"Item16.Command=pc_settings\n" L"Item16.Settings=TRACK_RECENT\n" -L"Item17.Command=pc_settings\n" +L"Item17.Command=control_panel\n" L"Item17.Settings=TRACK_RECENT\n" L"Item18.Command=admin\n" L"Item18.Settings=TRACK_RECENT|ITEM_DISABLED\n" @@ -1742,7 +1759,7 @@ LRESULT CEditMenuDlg::OnBrowseLink( WORD wNotifyCode, WORD wID, HWND hWndCtl, BO { wchar_t text[_MAX_PATH]; GetDlgItemText(IDC_COMBOLINK,text,_countof(text)); - if (BrowseLinkHelper(m_hWnd,text)) + if (BrowseLinkHelper(m_hWnd,text,false)) { SetDlgItemText(IDC_COMBOLINK,text); SendMessage(WM_COMMAND,MAKEWPARAM(IDC_COMBOLINK,CBN_KILLFOCUS)); @@ -2437,7 +2454,7 @@ LRESULT CEditMenuDlg7::OnBrowseLink( WORD wNotifyCode, WORD wID, HWND hWndCtl, B { wchar_t text[_MAX_PATH]; GetDlgItemText(IDC_EDITLINK2,text,_countof(text)); - if (BrowseLinkHelper(m_hWnd,text)) + if (BrowseLinkHelper(m_hWnd,text,false)) { SetDlgItemText(IDC_EDITLINK2,text); SendMessage(WM_COMMAND,MAKEWPARAM(IDC_EDITLINK2,EN_KILLFOCUS)); @@ -2725,8 +2742,11 @@ void CCustomMenuDlg7::CItemList::UpdateItem( int index ) str=LoadStringEx(IDS_ITEM_SHOW2); else if ((menuItem.settings&StdMenuItem::MENU_NOEXPAND) && !(g_StdCommands7[menuItem.stdItemIndex].flags&CStdCommand7::ITEM_FOLDER)) str=LoadStringEx(IDS_ITEM_SHOW); - else if ((menuItem.settings&StdMenuItem::MENU_SINGLE_EXPAND) && (g_StdCommands7[menuItem.stdItemIndex].flags&CStdCommand7::ITEM_COMPUTER)) - str=LoadStringEx(IDS_ITEM_DRIVES); + else if ((menuItem.settings&StdMenuItem::MENU_SINGLE_EXPAND) && !(g_StdCommands7[menuItem.stdItemIndex].flags&CStdCommand7::ITEM_NODRIVES)) + if (g_StdCommands7[menuItem.stdItemIndex].flags&CStdCommand7::ITEM_COMPUTER) + str=LoadStringEx(IDS_ITEM_DRIVES); + else + str=LoadStringEx(IDS_ITEM_LINKS); else str=LoadStringEx(IDS_ITEM_MENU); ListView_SetItemText(m_hWnd,index,2,(wchar_t*)(const wchar_t*)str); @@ -3155,13 +3175,12 @@ LRESULT CCustomMenuDlg7::CItemList::OnSelEndOk( WORD wNotifyCode, WORD wID, HWND if (m_Column==2) { // state - CString str; menuItem.settings&=~CEditMenuDlg7::SETTINGS_MASK; if (sel==0) menuItem.settings|=StdMenuItem::MENU_ITEM_DISABLED; else if (sel==1 && !(g_StdCommands7[menuItem.stdItemIndex].flags&(CStdCommand7::ITEM_SINGLE|CStdCommand7::ITEM_FOLDER))) menuItem.settings|=StdMenuItem::MENU_NOEXPAND; - else if (sel==3 && (g_StdCommands7[menuItem.stdItemIndex].flags&CStdCommand7::ITEM_COMPUTER)) + else if (sel==3 && !(g_StdCommands7[menuItem.stdItemIndex].flags&CStdCommand7::ITEM_NODRIVES)) menuItem.settings|=StdMenuItem::MENU_SINGLE_EXPAND; } UpdateItem(m_Line); @@ -3308,12 +3327,17 @@ void CCustomMenuDlg7::CItemList::CreateCombo( int line, int column ) str=LoadStringEx(IDS_ITEM_DRIVES); m_Combo.SendMessage(CB_ADDSTRING,0,(LPARAM)(const wchar_t*)str); } + else if (!(g_StdCommands7[menuItem.stdItemIndex].flags&CStdCommand7::ITEM_NODRIVES)) + { + str=LoadStringEx(IDS_ITEM_LINKS); + m_Combo.SendMessage(CB_ADDSTRING,0,(LPARAM)(const wchar_t*)str); + } } if (menuItem.settings&StdMenuItem::MENU_ITEM_DISABLED) m_Combo.SendMessage(CB_SETCURSEL,0); else if ((g_StdCommands7[menuItem.stdItemIndex].flags&(CStdCommand7::ITEM_SINGLE|CStdCommand7::ITEM_FOLDER)) || (menuItem.settings&StdMenuItem::MENU_NOEXPAND)) m_Combo.SendMessage(CB_SETCURSEL,1); - else if ((g_StdCommands7[menuItem.stdItemIndex].flags&CStdCommand7::ITEM_COMPUTER) && (menuItem.settings&StdMenuItem::MENU_SINGLE_EXPAND)) + else if (!(g_StdCommands7[menuItem.stdItemIndex].flags&CStdCommand7::ITEM_NODRIVES) && (menuItem.settings&StdMenuItem::MENU_SINGLE_EXPAND)) m_Combo.SendMessage(CB_SETCURSEL,3); else m_Combo.SendMessage(CB_SETCURSEL,2); @@ -3718,7 +3742,6 @@ class CMenuStyleDlg: public CResizeableDlg CWindow m_ImageClassic1, m_ImageClassic2, m_ImageWin7; CWindow m_Tooltip; CWindow m_ButtonAero, m_ButtonClassic, m_ButtonCustom; - bool m_bLargeBitmaps; HICON m_hIcon; CString m_IconPath; @@ -3737,14 +3760,13 @@ LRESULT CMenuStyleDlg::OnInitDialog( UINT uMsg, WPARAM wParam, LPARAM lParam, BO HDC hdc=::GetDC(NULL); int dpi=GetDeviceCaps(hdc,LOGPIXELSY); ::ReleaseDC(NULL,hdc); - m_bLargeBitmaps=dpi>=144; - if (m_bLargeBitmaps) + bool bLargeBitmaps=dpi>=144; { - HBITMAP bmp=(HBITMAP)LoadImage(g_Instance,MAKEINTRESOURCE(IDB_STYLE_CLASSIC1150),IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION); + HBITMAP bmp=LoadImageResource(g_Instance,MAKEINTRESOURCE(bLargeBitmaps?IDB_STYLE_CLASSIC1150:IDB_STYLE_CLASSIC1),true,true); m_ImageClassic1.SendMessage(STM_SETIMAGE,IMAGE_BITMAP,(LPARAM)bmp); - bmp=(HBITMAP)LoadImage(g_Instance,MAKEINTRESOURCE(IDB_STYLE_CLASSIC2150),IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION); + bmp=LoadImageResource(g_Instance,MAKEINTRESOURCE(bLargeBitmaps?IDB_STYLE_CLASSIC2150:IDB_STYLE_CLASSIC2),true,true); m_ImageClassic2.SendMessage(STM_SETIMAGE,IMAGE_BITMAP,(LPARAM)bmp); - bmp=(HBITMAP)LoadImage(g_Instance,MAKEINTRESOURCE(IDB_STYLE_WIN7150),IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION); + bmp=LoadImageResource(g_Instance,MAKEINTRESOURCE(bLargeBitmaps?IDB_STYLE_WIN7150:IDB_STYLE_WIN7),true,true); m_ImageWin7.SendMessage(STM_SETIMAGE,IMAGE_BITMAP,(LPARAM)bmp); } @@ -3779,7 +3801,6 @@ LRESULT CMenuStyleDlg::OnDestroy( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& { if (m_hIcon) DestroyIcon(m_hIcon); m_hIcon=NULL; - if (m_bLargeBitmaps) { HBITMAP bmp=(HBITMAP)m_ImageClassic1.SendMessage(STM_GETIMAGE,IMAGE_BITMAP); if (bmp) DeleteObject(bmp); @@ -4143,38 +4164,50 @@ CSetting g_Settings[]={ {L"Nothing",CSetting::TYPE_RADIO,IDS_OPEN_NOTHING,IDS_OPEN_NOTHING_TIP}, {L"ClassicMenu",CSetting::TYPE_RADIO,IDS_OPEN_CSM,IDS_OPEN_CSM_TIP}, {L"WindowsMenu",CSetting::TYPE_RADIO,IDS_OPEN_WSM,IDS_OPEN_WSM_TIP}, + {L"Command",CSetting::TYPE_RADIO,IDS_OPEN_CMD,IDS_OPEN_CMD_TIP}, {L"Both",CSetting::TYPE_RADIO,IDS_OPEN_BOTH,IDS_OPEN_BOTH_TIP,0,CSetting::FLAG_HIDDEN}, + {L"MouseClickCommand",CSetting::TYPE_STRING,IDS_OPEN_CMD_TEXT,IDS_OPEN_CMD_TEXT_TIP,"%userprofile%",0,L"MouseClick=3",L"Command"}, {L"ShiftClick",CSetting::TYPE_INT,IDS_SHIFT_LCLICK,IDS_SHIFT_LCLICK_TIP,2,CSetting::FLAG_BASIC}, {L"Nothing",CSetting::TYPE_RADIO,IDS_OPEN_NOTHING,IDS_OPEN_NOTHING_TIP}, {L"ClassicMenu",CSetting::TYPE_RADIO,IDS_OPEN_CSM,IDS_OPEN_CSM_TIP}, {L"WindowsMenu",CSetting::TYPE_RADIO,IDS_OPEN_WSM,IDS_OPEN_WSM_TIP}, + {L"Command",CSetting::TYPE_RADIO,IDS_OPEN_CMD,IDS_OPEN_CMD_TIP}, {L"Both",CSetting::TYPE_RADIO,IDS_OPEN_BOTH,IDS_OPEN_BOTH_TIP,0,CSetting::FLAG_HIDDEN}, /* {L"Desktop",CSetting::TYPE_RADIO,IDS_OPEN_DESKTOP,IDS_OPEN_DESKTOP_TIP,0,CSetting::FLAG_HIDDEN}, {L"Cortana",CSetting::TYPE_RADIO,IDS_OPEN_CORTANA,IDS_OPEN_CORTANA_TIP},*/ + {L"ShiftClickCommand",CSetting::TYPE_STRING,IDS_OPEN_CMD_TEXT,IDS_OPEN_CMD_TEXT_TIP,"%systemdrive%",0,L"ShiftClick=3",L"Command"}, {L"WinKey",CSetting::TYPE_INT,IDS_WIN_KEY,IDS_WIN_KEY_TIP,1,CSetting::FLAG_BASIC}, {L"Nothing",CSetting::TYPE_RADIO,IDS_OPEN_NOTHING,IDS_OPEN_NOTHING_TIP}, {L"ClassicMenu",CSetting::TYPE_RADIO,IDS_OPEN_CSM,IDS_OPEN_CSM_TIP}, {L"WindowsMenu",CSetting::TYPE_RADIO,IDS_OPEN_WSM,IDS_OPEN_WSM_TIP}, + {L"Command",CSetting::TYPE_RADIO,IDS_OPEN_CMD,IDS_OPEN_CMD_TIP}, {L"Both",CSetting::TYPE_RADIO,IDS_OPEN_BOTH,IDS_OPEN_BOTH_TIP}, {L"Desktop",CSetting::TYPE_RADIO,IDS_OPEN_DESKTOP,IDS_OPEN_DESKTOP_TIP}, + {L"WinKeyCommand",CSetting::TYPE_STRING,IDS_OPEN_CMD_TEXT,IDS_OPEN_CMD_TEXT_TIP,"cmd",0,L"WinKey=3",L"Command"}, {L"ShiftWin",CSetting::TYPE_INT,IDS_SHIFT_WIN,IDS_SHIFT_WIN_TIP,2,CSetting::FLAG_BASIC}, {L"Nothing",CSetting::TYPE_RADIO,IDS_OPEN_NOTHING,IDS_OPEN_NOTHING_TIP}, {L"ClassicMenu",CSetting::TYPE_RADIO,IDS_OPEN_CSM,IDS_OPEN_CSM_TIP}, {L"WindowsMenu",CSetting::TYPE_RADIO,IDS_OPEN_WSM,IDS_OPEN_WSM_TIP}, + {L"Command",CSetting::TYPE_RADIO,IDS_OPEN_CMD,IDS_OPEN_CMD_TIP}, {L"Both",CSetting::TYPE_RADIO,IDS_OPEN_BOTH,IDS_OPEN_BOTH_TIP}, /* {L"Desktop",CSetting::TYPE_RADIO,IDS_OPEN_DESKTOP,IDS_OPEN_DESKTOP_TIP,0,CSetting::FLAG_HIDDEN}, {L"Cortana",CSetting::TYPE_RADIO,IDS_OPEN_CORTANA,IDS_OPEN_CORTANA_TIP},*/ + {L"ShiftWinCommand",CSetting::TYPE_STRING,IDS_OPEN_CMD_TEXT,IDS_OPEN_CMD_TEXT_TIP,"powershell",0,L"ShiftWin=3",L"Command"}, {L"MiddleClick",CSetting::TYPE_INT,IDS_MCLICK,IDS_MCLICK_TIP,0}, {L"Nothing",CSetting::TYPE_RADIO,IDS_OPEN_NOTHING,IDS_OPEN_NOTHING_TIP}, {L"ClassicMenu",CSetting::TYPE_RADIO,IDS_OPEN_CSM,IDS_OPEN_CSM_TIP}, {L"WindowsMenu",CSetting::TYPE_RADIO,IDS_OPEN_WSM,IDS_OPEN_WSM_TIP}, + {L"Command",CSetting::TYPE_RADIO,IDS_OPEN_CMD,IDS_OPEN_CMD_TIP}, /* {L"Both",CSetting::TYPE_RADIO,IDS_OPEN_BOTH,IDS_OPEN_BOTH_TIP,0,CSetting::FLAG_HIDDEN}, {L"Desktop",CSetting::TYPE_RADIO,IDS_OPEN_DESKTOP,IDS_OPEN_DESKTOP_TIP,0,CSetting::FLAG_HIDDEN}, {L"Cortana",CSetting::TYPE_RADIO,IDS_OPEN_CORTANA,IDS_OPEN_CORTANA_TIP},*/ + {L"MiddleClickCommand",CSetting::TYPE_STRING,IDS_OPEN_CMD_TEXT,IDS_OPEN_CMD_TEXT_TIP,"taskmgr",0,L"MiddleClick=3",L"Command"}, {L"Hover",CSetting::TYPE_INT,IDS_HOVER,IDS_HOVER_TIP,0}, {L"Nothing",CSetting::TYPE_RADIO,IDS_OPEN_NOTHING,IDS_OPEN_NOTHING_TIP}, {L"ClassicMenu",CSetting::TYPE_RADIO,IDS_OPEN_CSM,IDS_OPEN_CSM_TIP}, {L"WindowsMenu",CSetting::TYPE_RADIO,IDS_OPEN_WSM,IDS_OPEN_WSM_TIP}, + {L"Command",CSetting::TYPE_RADIO,IDS_OPEN_CMD,IDS_OPEN_CMD_TIP}, + {L"HoverCommand",CSetting::TYPE_STRING,IDS_OPEN_CMD_TEXT,IDS_OPEN_CMD_TEXT_TIP,"",0,L"Hover=3",L"Command"}, {L"StartHoverDelay",CSetting::TYPE_INT,IDS_HOVER_DELAY,IDS_HOVER_DELAY_TIP,1000,0,L"Hover",L"Hover"}, {L"ShiftRight",CSetting::TYPE_BOOL,IDS_RIGHT_SHIFT,IDS_RIGHT_SHIFT_TIP,0}, {L"CSMHotkey",CSetting::TYPE_HOTKEY,IDS_CSM_HOTKEY,IDS_CSM_HOTKEY_TIP,0}, @@ -4249,6 +4282,7 @@ CSetting g_Settings[]={ {L"PinnedPrograms",CSetting::TYPE_INT,IDS_PINNED_PROGRAMS,IDS_PINNED_PROGRAMS_TIP,PINNED_PROGRAMS_PINNED}, {L"FastItems",CSetting::TYPE_RADIO,IDS_FAST_ITEMS,IDS_FAST_ITEMS_TIP}, {L"PinnedItems",CSetting::TYPE_RADIO,IDS_PINNED_ITEMS,IDS_PINNED_ITEMS_TIP}, + {L"PinnedItemsPath",CSetting::TYPE_DIRECTORY,IDS_PINNED_PATH,IDS_PINNED_PATH_TIP,L"%APPDATA%\\OpenShell\\Pinned",0,L"PinnedPrograms=1",L"PinnedItems"}, {L"RecentPrograms",CSetting::TYPE_INT,IDS_RECENT_PROGRAMS,IDS_RECENT_PROGRAMS_TIP,RECENT_PROGRAMS_RECENT,CSetting::FLAG_BASIC}, {L"None",CSetting::TYPE_RADIO,IDS_NO_RECENT,IDS_NO_RECENT_TIP}, {L"Recent",CSetting::TYPE_RADIO,IDS_SHOW_RECENT,IDS_SHOW_RECENT_TIP}, @@ -4317,12 +4351,17 @@ CSetting g_Settings[]={ {L"UserNameCommand",CSetting::TYPE_STRING,IDS_NAME_COMMAND,IDS_NAME_COMMAND_TIP,L"control nusrmgr.cpl"}, {L"SearchFilesCommand",CSetting::TYPE_STRING,IDS_SEARCH_COMMAND,IDS_SEARCH_COMMAND_TIP,L"search-ms:",CSetting::FLAG_MENU_CLASSIC_BOTH}, {L"ExpandFolderLinks",CSetting::TYPE_BOOL,IDS_EXPAND_LINKS,IDS_EXPAND_LINKS_TIP,1}, + {L"SingleClickFolders",CSetting::TYPE_BOOL,IDS_NO_DBLCLICK,IDS_NO_DBLCLICK_TIP,0}, + {L"OpenTruePath",CSetting::TYPE_BOOL,IDS_OPEN_TRUE_PATH,IDS_OPEN_TRUE_PATH_TIP,1}, {L"EnableTouch",CSetting::TYPE_BOOL,IDS_ENABLE_TOUCH,IDS_ENABLE_TOUCH_TIP,1}, {L"EnableAccessibility",CSetting::TYPE_BOOL,IDS_ACCESSIBILITY,IDS_ACCESSIBILITY_TIP,1}, - {L"ShowNextToTaskbar",CSetting::TYPE_BOOL,IDS_NEXTTASKBAR,IDS_NEXTTASKBAR_TIP,0}, + {L"ShowNextToTaskbar",CSetting::TYPE_BOOL,IDS_NEXTTASKBAR,IDS_NEXTTASKBAR_TIP,1}, {L"PreCacheIcons",CSetting::TYPE_BOOL,IDS_CACHE_ICONS,IDS_CACHE_ICONS_TIP,1,CSetting::FLAG_COLD}, {L"DelayIcons",CSetting::TYPE_BOOL,IDS_DELAY_ICONS,IDS_DELAY_ICONS_TIP,1,CSetting::FLAG_COLD}, + {L"BoldSettings",CSetting::TYPE_BOOL,IDS_BOLD_SETTINGS,IDS_BOLD_SETTINGS_TIP,1}, {L"ReportSkinErrors",CSetting::TYPE_BOOL,IDS_SKIN_ERRORS,IDS_SKIN_ERRORS_TIP,0}, + {L"EnableAccelerators",CSetting::TYPE_BOOL,IDS_ENABLE_ACCELERATORS,IDS_ENABLE_ACCELERATORS_TIP,1}, + {L"AltAccelerators",CSetting::TYPE_BOOL,IDS_ALT_ACCELERATORS,IDS_ALT_ACCELERATORS_TIP,0,0,L"EnableAccelerators",L"EnableAccelerators"}, {L"SearchBoxSettings",CSetting::TYPE_GROUP,IDS_SEARCH_BOX}, {L"SearchBox",CSetting::TYPE_INT,IDS_SHOW_SEARCH_BOX,IDS_SHOW_SEARCH_BOX_TIP,SEARCHBOX_TAB,CSetting::FLAG_BASIC}, @@ -4330,6 +4369,8 @@ CSetting g_Settings[]={ {L"Normal",CSetting::TYPE_RADIO,IDS_SEARCH_BOX_SHOW,IDS_SEARCH_BOX_SHOW_TIP}, {L"Tab",CSetting::TYPE_RADIO,IDS_SEARCH_BOX_TAB,IDS_SEARCH_BOX_TAB_TIP}, {L"SearchSelect",CSetting::TYPE_BOOL,IDS_SEARCH_BOX_SEL,IDS_SEARCH_BOX_SEL_TIP,1,0,L"SearchBox=1",L"Normal"}, + {L"SearchHint",CSetting::TYPE_BOOL,IDS_SEARCH_HINT,IDS_SEARCH_HINT_TIP,0,0,L"SearchBox"}, + {L"SearchHintText",CSetting::TYPE_STRING,IDS_NEW_SEARCH_HINT,IDS_NEW_SEARCH_HINT_TIP,L"",0,L"#SearchHint",L"SearchHint"}, {L"SearchTrack",CSetting::TYPE_BOOL,IDS_SEARCH_TRACK,IDS_SEARCH_TRACK_TIP,1,0,L"SearchBox"}, {L"SearchResults",CSetting::TYPE_INT,IDS_SEARCH_MAX2,IDS_SEARCH_MAX_TIP2,5,CSetting::FLAG_MENU_CLASSIC_BOTH,L"SearchBox"}, {L"SearchResultsMax",CSetting::TYPE_INT,IDS_SEARCH_MAX3,IDS_SEARCH_MAX_TIP3,20,CSetting::FLAG_MENU_CLASSIC_BOTH,L"SearchBox"}, @@ -4344,6 +4385,7 @@ CSetting g_Settings[]={ {L"SearchContents",CSetting::TYPE_BOOL,IDS_SEARCH_CONTENTS,IDS_SEARCH_CONTENTS_TIP,1,0,L"#SearchFiles",L"SearchFiles"}, {L"SearchCategories",CSetting::TYPE_BOOL,IDS_SEARCH_CATEGORIES,IDS_SEARCH_CATEGORIES_TIP,1,0,L"#SearchFiles",L"SearchFiles"}, {L"SearchInternet",CSetting::TYPE_BOOL,IDS_SEARCH_INTERNET,IDS_SEARCH_INTERNET_TIP,1,0,L"SearchBox"}, + {L"MoreResults",CSetting::TYPE_BOOL,IDS_MORE_RESULTS,IDS_MORE_RESULTS_TIP,1,0,L"SearchBox"}, {L"Look",CSetting::TYPE_GROUP,IDS_LOOK_SETTINGS}, {L"SmallIconSize",CSetting::TYPE_INT,IDS_SMALL_SIZE_SM,IDS_SMALL_SIZE_SM_TIP,-1,CSetting::FLAG_COLD}, // 16 for DPI<=96, 20 for DPI<=120, 24 otherwise @@ -4351,6 +4393,9 @@ CSetting g_Settings[]={ {L"InvertMetroIcons",CSetting::TYPE_BOOL,IDS_INVERT_ICONS,IDS_INVERT_ICONS_TIP,0}, {L"MaxMainMenuWidth",CSetting::TYPE_INT,IDS_MENU_WIDTH,IDS_MENU_WIDTH_TIP,60,CSetting::FLAG_MENU_CLASSIC_BOTH}, {L"MaxMenuWidth",CSetting::TYPE_INT,IDS_SUBMENU_WIDTH,IDS_SUBMENU_WIDTH_TIP,60}, + {L"AlignToWorkArea",CSetting::TYPE_BOOL,IDS_ALIGN_WORK_AREA,IDS_ALIGN_WORK_AREA_TIP,0}, + {L"HorizontalMenuOffset",CSetting::TYPE_INT,IDS_HOR_OFFSET,IDS_HOR_OFFSET_TIP,0}, + {L"VerticalMenuOffset",CSetting::TYPE_INT,IDS_VERT_OFFSET,IDS_VERT_OFFSET_TIP,0 }, {L"OverrideDPI",CSetting::TYPE_INT,IDS_DPI_OVERRIDE,IDS_DPI_OVERRIDE_TIP,0,CSetting::FLAG_COLD}, {L"MainMenuAnimate",CSetting::TYPE_BOOL,IDS_ANIMATION7,IDS_ANIMATION7_TIP,1,CSetting::FLAG_MENU_WIN7}, {L"MainMenuAnimation",CSetting::TYPE_INT,IDS_ANIMATION,IDS_ANIMATION_TIP,-1}, // system animation type @@ -4416,7 +4461,7 @@ CSetting g_Settings[]={ {L"StartButtonIconSize",CSetting::TYPE_INT,IDS_BUTTON_ICON_SIZE,IDS_BUTTON_ICON_SIZE_TIP,0,0,L"#StartButtonType=1",L"ClasicButton"}, {L"StartButtonText",CSetting::TYPE_STRING,IDS_BUTTON_TEXT,IDS_BUTTON_TEXT_TIP,L"$Menu.Start",0,L"#StartButtonType=1",L"ClasicButton"}, -{L"Taskbar",CSetting::TYPE_GROUP,IDS_TASKBAR_SETTINGS}, +{L"Taskbar",CSetting::TYPE_GROUP,IDS_TASKBAR_SETTINGS,0,0,CSetting::FLAG_BASIC}, {L"CustomTaskbar",CSetting::TYPE_BOOL,IDS_TASK_CUSTOM,IDS_TASK_CUSTOM_TIP,0,CSetting::FLAG_CALLBACK}, {L"TaskbarLook",CSetting::TYPE_INT,IDS_TASK_LOOK,IDS_TASK_LOOK_TIP,1,CSetting::FLAG_CALLBACK,L"CustomTaskbar",L"CustomTaskbar"}, {L"Opaque",CSetting::TYPE_RADIO,IDS_TASK_OPAQUE,IDS_TASK_OPAQUE_TIP}, @@ -4425,8 +4470,8 @@ CSetting g_Settings[]={ {L"AeroGlass",CSetting::TYPE_RADIO,IDS_TASK_AEROGLASS,IDS_TASK_AEROGLASS_TIP,0,CSetting::FLAG_HIDDEN}, {L"TaskbarOpacity",CSetting::TYPE_INT,IDS_TASK_OPACITY,IDS_TASK_OPACITY_TIP,DEFAULT_TASK_OPACITY10,CSetting::FLAG_CALLBACK,L"TaskbarLook",L"CustomTaskbar"}, {L"TaskbarColor",CSetting::TYPE_COLOR,IDS_TASK_COLOR,IDS_TASK_COLOR_TIP,0,CSetting::FLAG_CALLBACK,L"CustomTaskbar",L"CustomTaskbar"}, - {L"TaskbarTextColor",CSetting::TYPE_COLOR,IDS_TASK_TEXTCOLOR,IDS_TASK_TEXTCOLOR_TIP,0xFFFFFF,CSetting::FLAG_CALLBACK|(1<<24),L"CustomTaskbar",L"CustomTaskbar"}, - {L"TaskbarTexture",CSetting::TYPE_BITMAP_JPG,IDS_TASK_TEXTURE,IDS_TASK_TEXTURE_TIP,L"",CSetting::FLAG_CALLBACK,L"CustomTaskbar",L"CustomTaskbar"}, + {L"TaskbarTextColor",CSetting::TYPE_COLOR,IDS_TASK_TEXTCOLOR,IDS_TASK_TEXTCOLOR_TIP,0xFFFFFF,CSetting::FLAG_COLD|(1<<24),L"CustomTaskbar",L"CustomTaskbar"}, + {L"TaskbarTexture",CSetting::TYPE_BITMAP_JPG,IDS_TASK_TEXTURE,IDS_TASK_TEXTURE_TIP,L"",CSetting::FLAG_COLD,L"CustomTaskbar",L"CustomTaskbar"}, {L"TaskbarTileH",CSetting::TYPE_INT,IDS_TASK_STRETCHH,IDS_TASK_STRETCHH_TIP,1,CSetting::FLAG_CALLBACK,L"#TaskbarTexture",L"TaskbarTexture"}, {L"Tile",CSetting::TYPE_RADIO,IDS_TASK_TILE,IDS_TASK_TILE_TIP}, {L"Stretch",CSetting::TYPE_RADIO,IDS_TASK_STRETCH,IDS_TASK_STRETCH_TIP}, @@ -4622,6 +4667,48 @@ void UpgradeSettings( bool bShared ) } } +static CString GetWindowsBrandingString() +{ + CString retval; + + if (GetWinVersion() >= WIN_VER_WIN10) + { + auto winbrand = LoadLibraryEx(L"winbrand.dll", nullptr, LOAD_LIBRARY_SEARCH_SYSTEM32); + if (winbrand) + { + PWSTR (WINAPI * BrandingFormatString)(PCWSTR pstrFormat); + BrandingFormatString = (decltype(BrandingFormatString))GetProcAddress(winbrand, "BrandingFormatString"); + if (BrandingFormatString) + { + auto osName = BrandingFormatString(L"%WINDOWS_LONG%"); + if (osName) + { + retval = osName; + GlobalFree(osName); + } + } + + FreeLibrary(winbrand); + } + } + + if (retval.IsEmpty()) + { + // fallback for older Windows + wchar_t title[256] = L"Windows"; + + if (CRegKey reg; reg.Open(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows NT\\CurrentVersion", KEY_READ) == ERROR_SUCCESS) + { + ULONG size = _countof(title); + reg.QueryStringValue(L"ProductName", title, &size); + } + + retval = title; + } + + return retval; +} + void UpdateSettings( void ) { { @@ -4659,11 +4746,19 @@ void UpdateSettings( void ) else if (dpi<96) dpi=96; else if (dpi>480) dpi=480; - int iconSize=24; - if (dpi<=96) - iconSize=16; - else if (dpi<=120) - iconSize=20; + int iconSize=16; + if (dpi>=240) + iconSize=40; // for 250% scaling + else if (dpi>=216) + iconSize=36; // for 225% scaling + else if (dpi>=192) + iconSize=32; // for 200% scaling + else if (dpi>=168) + iconSize=28; // for 175% scaling + else if (dpi>=144) + iconSize=24; // for 150% scaling + else if (dpi>=120) + iconSize=20; // for 125% scaling UpdateSetting(L"SmallIconSize",CComVariant(iconSize),false); UpdateSetting(L"LargeIconSize",CComVariant(iconSize*2),false); @@ -4736,16 +4831,10 @@ void UpdateSettings( void ) UpdateSetting(L"NumericSort",CComVariant(SHRestricted(REST_NOSTRCMPLOGICAL)?0:1),false); - wchar_t title[256]=L"Windows"; - ULONG size=_countof(title); - { - CRegKey regTitle; - if (regTitle.Open(HKEY_LOCAL_MACHINE,L"Software\\Microsoft\\Windows NT\\CurrentVersion",KEY_READ)==ERROR_SUCCESS) - regTitle.QueryStringValue(L"ProductName",title,&size); - } - UpdateSetting(L"MenuCaption",CComVariant(title),false); + UpdateSetting(L"MenuCaption",CComVariant(GetWindowsBrandingString()),false); - size=_countof(title); + wchar_t title[256]{}; + ULONG size=_countof(title); if (!GetUserNameEx(NameDisplay,title,&size)) { // GetUserNameEx may fail (for example on Home editions). use the login name @@ -4876,7 +4965,7 @@ void UpdateSettings( void ) if (GetWinVersion()>WIN_VER_WIN7) { int color=GetSystemGlassColor8(); - UpdateSetting(L"TaskbarColor",CComVariant(((color&0xFF)<<16)|(color&0xFF00)|((color>>16)&0xFF)),false); + UpdateSetting(L"TaskbarColor",CComVariant(RgbToBgr(color)),false); } if (GetWinVersion()<=WIN_VER_WIN7) @@ -4976,15 +5065,15 @@ void UpdateSettings( void ) HIGHCONTRAST contrast={sizeof(contrast)}; if (SystemParametersInfo(SPI_GETHIGHCONTRAST,sizeof(contrast),&contrast,0) && (contrast.dwFlags&HCF_HIGHCONTRASTON)) { - options1=L"CAPTION=1\nUSER_IMAGE=0\nUSER_NAME=0\nCENTER_NAME=0\nSMALL_ICONS=0\nTHICK_BORDER=0\nSOLID_SELECTION=1"; - options2=L"NO_ICONS=1\nUSER_IMAGE=1\nUSER_NAME=0\nCENTER_NAME=0\nSMALL_ICONS=0\nTHICK_BORDER=0\nSOLID_SELECTION=1"; - options3=L"USER_IMAGE=1\nSMALL_ICONS=0\nTHICK_BORDER=0\nSOLID_SELECTION=1"; + options1=L"CAPTION=1\nUSER_IMAGE=0\nUSER_NAME=0\nCENTER_NAME=0\nSMALL_ICONS=0\nTHICK_BORDER=0\nSOLID_SELECTION=1\n"; + options2=L"NO_ICONS=1\nUSER_IMAGE=1\nUSER_NAME=0\nCENTER_NAME=0\nSMALL_ICONS=0\nTHICK_BORDER=0\nSOLID_SELECTION=1\n"; + options3=L"USER_IMAGE=1\nSMALL_ICONS=0\nTHICK_BORDER=0\nSOLID_SELECTION=1\n"; } else { - options1=L"CAPTION=1\nUSER_IMAGE=0\nUSER_NAME=0\nCENTER_NAME=0\nSMALL_ICONS=0\nTHICK_BORDER=0\nSOLID_SELECTION=0"; - options2=L"NO_ICONS=1\nUSER_IMAGE=1\nUSER_NAME=0\nCENTER_NAME=0\nSMALL_ICONS=0\nTHICK_BORDER=0\nSOLID_SELECTION=0"; - options3=L"USER_IMAGE=1\nSMALL_ICONS=0\nTHICK_BORDER=0\nSOLID_SELECTION=0"; + options1=L"CAPTION=1\nUSER_IMAGE=0\nUSER_NAME=0\nCENTER_NAME=0\nSMALL_ICONS=0\nTHICK_BORDER=0\nSOLID_SELECTION=0\n"; + options2=L"NO_ICONS=1\nUSER_IMAGE=1\nUSER_NAME=0\nCENTER_NAME=0\nSMALL_ICONS=0\nTHICK_BORDER=0\nSOLID_SELECTION=0\n"; + options3=L"USER_IMAGE=1\nSMALL_ICONS=0\nTHICK_BORDER=0\nSOLID_SELECTION=0\n"; } } else if (GetWinVersion()>24,(ver>>16)&0xFF,ver&0xFFFF); else Sprintf(title,_countof(title),LoadStringEx(IDS_SETTINGS_TITLE)); - EditSettings(title,bModal,tab); + EditSettings(title,bModal,tab,L"OpenShell.StartMenu.Settings"); } bool DllImportSettingsXml( const wchar_t *fname ) diff --git a/Src/StartMenu/StartMenuDLL/SkinManager.cpp b/Src/StartMenu/StartMenuDLL/SkinManager.cpp index b3b1786d8..5bf2d301a 100644 --- a/Src/StartMenu/StartMenuDLL/SkinManager.cpp +++ b/Src/StartMenu/StartMenuDLL/SkinManager.cpp @@ -375,7 +375,10 @@ COLORREF MenuSkin::GetMetroColor( const wchar_t *names ) const if (GetImmersiveUserColorSetPreference!=NULL) { wchar_t text[256]; - Sprintf(text,_countof(text),L"Immersive%s",name); + if (wcsncmp(name,L"Immersive",9)==0) + wcscpy_s(text,name); + else + Sprintf(text,_countof(text),L"Immersive%s",name); int type=GetImmersiveColorTypeFromName(text); data.colorType=type<0?-1:type; if (type>=0) @@ -500,6 +503,17 @@ SIZE MenuSkin::ScaleSkinElement( const SIZE &size ) const return res; } +_Success_(return != FALSE) +BOOL WINAPI SystemParametersInfoForDpi(_In_ UINT uiAction, _In_ UINT uiParam, _Pre_maybenull_ _Post_valid_ PVOID pvParam, _In_ UINT fWinIni, _In_ UINT dpi) +{ + static auto p = static_cast((void*)GetProcAddress(GetModuleHandle(L"user32.dll"), "SystemParametersInfoForDpi")); + if (p) + return p(uiAction, uiParam, pvParam, fWinIni, dpi); + + // fall-back for older systems + return SystemParametersInfo(uiAction, uiParam, pvParam, fWinIni); +} + HFONT MenuSkin::LoadSkinFont( const wchar_t *str, const wchar_t *name, int weight, float size, bool bScale ) const { DWORD quality=DEFAULT_QUALITY; @@ -542,7 +556,7 @@ HFONT MenuSkin::LoadSkinFont( const wchar_t *str, const wchar_t *name, int weigh { // get the default menu font NONCLIENTMETRICS metrics={sizeof(metrics)}; - SystemParametersInfo(SPI_GETNONCLIENTMETRICS,NULL,&metrics,0); + SystemParametersInfoForDpi(SPI_GETNONCLIENTMETRICS,sizeof(metrics),&metrics,0,Dpi); metrics.lfMenuFont.lfQuality=(BYTE)quality; return CreateFontIndirect(&metrics.lfMenuFont); } @@ -1495,8 +1509,21 @@ bool MenuSkin::ComputeOptionStates( const std::map &options, st values.push_back(L"ALL_PROGRAMS"); if (SkinType==SKIN_TYPE_CLASSIC2) values.push_back(L"TWO_COLUMNS"); + // for compatibility with existing skins if (Dpi>=144) values.push_back(L"HIGH_DPI"); + if (Dpi>=240) + values.push_back(L"240_DPI"); // 250% scaling + else if (Dpi>=216) + values.push_back(L"216_DPI"); // 225% scaling + else if (Dpi>=192) + values.push_back(L"192_DPI"); // 200% scaling + else if (Dpi>=168) + values.push_back(L"168_DPI"); // 175% scaling + else if (Dpi>=144) + values.push_back(L"144_DPI"); // 150% scaling + else if (Dpi>=120) + values.push_back(L"120_DPI"); // 125% scaling if (ForceTouch || (GetWinVersion()>=WIN_VER_WIN8 && GetSettingBool(L"EnableTouch") && (GetSystemMetrics(SM_DIGITIZER)&NID_INTEGRATED_TOUCH)!=0)) values.push_back(L"TOUCH_ENABLED"); if (GetSettingInt(L"SearchBox")!=SEARCHBOX_HIDDEN) @@ -1762,7 +1789,7 @@ bool MenuSkin::LoadSkin( HMODULE hMod, const wchar_t *variation, const wchar_t * var.label=token; if (var.labelEn.IsEmpty()) var.labelEn=var.label; - Variations.push_back(std::pair(res,var)); + Variations.emplace_back(res,var); LOG_MENU(LOG_OPEN,L"Variation found: name=%s, id=%d",token,res); } else @@ -3219,10 +3246,14 @@ void GetSkinsPath( wchar_t *path ) { GetModuleFileName(g_Instance,path,_MAX_PATH); *PathFindFileName(path)=0; -#ifdef BUILD_SETUP Strcat(path,_MAX_PATH,L"Skins\\"); -#else - Strcat(path,_MAX_PATH,L"..\\Skins\\"); + +#ifndef BUILD_SETUP + if (!PathIsDirectory(path)) + { + *PathFindFileName(path) = 0; + Strcat(path,_MAX_PATH,L"..\\Skins\\"); + } #endif } diff --git a/Src/StartMenu/StartMenuDLL/StartButton.cpp b/Src/StartMenu/StartMenuDLL/StartButton.cpp index 074827410..f279fa10f 100644 --- a/Src/StartMenu/StartMenuDLL/StartButton.cpp +++ b/Src/StartMenu/StartMenuDLL/StartButton.cpp @@ -144,7 +144,7 @@ LRESULT CStartButton::OnCreate( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& b m_Icon=(HICON)LoadImage(g_Instance,MAKEINTRESOURCE(IDI_APPICON),IMAGE_ICON,START_ICON_SIZE,START_ICON_SIZE,LR_DEFAULTCOLOR); } int dpi=CItemManager::GetDPI(false); - m_Font=CreateFont(10*dpi/72,0,0,0,FW_BOLD,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,L"Tahoma"); + m_Font=CreateFont(MulDiv(10,dpi,72),0,0,0,FW_BOLD,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,L"Tahoma"); int val=1; DwmSetWindowAttribute(m_hWnd,DWMWA_EXCLUDED_FROM_PEEK,&val,sizeof(val)); val=DWMFLIP3D_EXCLUDEABOVE; @@ -154,6 +154,7 @@ LRESULT CStartButton::OnCreate( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& b OnThemeChanged(WM_THEMECHANGED,0,0,bHandled); m_bPressed=true; SetPressed(false); + ResizeClient(m_Size.cx,m_Size.cy); bHandled=FALSE; return 0; } @@ -525,21 +526,21 @@ void CStartButton::LoadBitmap( void ) } else { + int dpi=GetDpi(GetParent()); bool bResource=false; std::vector buttonAnim; if (*path) { - m_Bitmap=LoadImageFile(path,&size,true,true,&buttonAnim); + m_Bitmap=LoadImageFile(path,&size,true,true,&buttonAnim,dpi); } if (!m_Bitmap) { int id; - int dpi=CItemManager::GetDPI(false); if (dpi<120) id=IDB_BUTTON96; else if (dpi<144) id=IDB_BUTTON120; - else if (dpi<180) + else if (dpi<168) id=IDB_BUTTON144; else id=IDB_BUTTON180; @@ -604,55 +605,12 @@ void CStartButton::LoadBitmap( void ) static std::map g_StartButtons; -HWND CreateStartButton( int taskbarId, HWND taskBar, HWND rebar, const RECT &rcTask ) +HWND CreateStartButton( int taskbarId, HWND taskBar, HWND rebar ) { bool bRTL=(GetWindowLongPtr(rebar,GWL_EXSTYLE)&WS_EX_LAYOUTRTL)!=0; DWORD styleTopmost=GetWindowLongPtr(taskBar,GWL_EXSTYLE)&WS_EX_TOPMOST; CStartButton &button=g_StartButtons[taskbarId]; button.Create(taskBar,NULL,NULL,WS_POPUP,styleTopmost|WS_EX_TOOLWINDOW|WS_EX_LAYERED,0U,(void*)(intptr_t)(taskbarId*2+(bRTL?1:0))); - SIZE size=button.GetSize(); - RECT rcButton; - MONITORINFO info; - UINT uEdge=GetTaskbarPosition(taskBar,&info,NULL,NULL); - if (uEdge==ABE_LEFT || uEdge==ABE_RIGHT) - { - if (GetSettingInt(L"StartButtonType")!=START_BUTTON_CUSTOM || !GetSettingBool(L"StartButtonAlign")) - rcButton.left=(rcTask.left+rcTask.right-size.cx)/2; - else if (uEdge==ABE_LEFT) - rcButton.left=rcTask.left; - else - rcButton.left=rcTask.right-size.cx; - rcButton.top=rcTask.top; - } - else - { - if (bRTL) - rcButton.left=rcTask.right-size.cx; - else - rcButton.left=rcTask.left; - if (GetSettingInt(L"StartButtonType")!=START_BUTTON_CUSTOM || !GetSettingBool(L"StartButtonAlign")) - rcButton.top=(rcTask.top+rcTask.bottom-size.cy)/2; - else if (uEdge==ABE_TOP) - rcButton.top=rcTask.top; - else - rcButton.top=rcTask.bottom-size.cy; - } - rcButton.right=rcButton.left+size.cx; - rcButton.bottom=rcButton.top+size.cy; - g_bAllowMoveButton=true; - button.SetWindowPos(HWND_TOP,&rcButton,SWP_SHOWWINDOW|SWP_NOOWNERZORDER|SWP_NOACTIVATE); - g_bAllowMoveButton=false; - - RECT rc; - IntersectRect(&rc,&rcButton,&info.rcMonitor); - HRGN rgn=CreateRectRgn(rc.left-rcButton.left,rc.top-rcButton.top,rc.right-rcButton.left,rc.bottom-rcButton.top); - if (!SetWindowRgn(button,rgn,FALSE)) - { - AddTrackedObject(rgn); - DeleteObject(rgn); - } - - button.UpdateButton(); return button.m_hWnd; } diff --git a/Src/StartMenu/StartMenuDLL/StartButton.h b/Src/StartMenu/StartMenuDLL/StartButton.h index 13b8686d4..7ff7ffb43 100644 --- a/Src/StartMenu/StartMenuDLL/StartButton.h +++ b/Src/StartMenu/StartMenuDLL/StartButton.h @@ -12,7 +12,7 @@ enum TStartButtonType // START_BUTTON_METRO, }; -HWND CreateStartButton( int taskbarId, HWND taskBar, HWND rebar, const RECT &rcTask ); +HWND CreateStartButton( int taskbarId, HWND taskBar, HWND rebar ); void DestroyStartButton( int taskbarId ); void UpdateStartButton( int taskbarId ); void PressStartButton( int taskbarId, bool bPressed ); diff --git a/Src/StartMenu/StartMenuDLL/StartMenuDLL.cpp b/Src/StartMenu/StartMenuDLL/StartMenuDLL.cpp index b10caba99..9111cb40c 100644 --- a/Src/StartMenu/StartMenuDLL/StartMenuDLL.cpp +++ b/Src/StartMenu/StartMenuDLL/StartMenuDLL.cpp @@ -47,7 +47,7 @@ static HWND g_Tooltip; static TOOLINFO g_StartButtonTool; static bool g_bHotkeyShift; static int g_HotkeyCSM, g_HotkeyWSM, g_HotkeyShiftID, g_HotkeyCSMID, g_HotkeyWSMID; -static HHOOK g_ProgHook, g_StartHook, g_AppManagerHook, g_NewWindowHook, g_StartMenuHook; +static HHOOK g_ProgHook, g_StartHook, g_StartMouseHook, g_AppManagerHook, g_NewWindowHook, g_StartMenuHook; static bool g_bAllProgramsTimer; static bool g_bInMenu; static DWORD g_LastClickTime; @@ -67,6 +67,8 @@ static SIZE g_TaskbarTextureSize; static TTaskbarTile g_TaskbarTileH, g_TaskbarTileV; static RECT g_TaskbarMargins; int g_CurrentCSMTaskbar=-1, g_CurrentWSMTaskbar=-1; +// ExplorerPatcher taskbar +static bool g_epTaskbar = false; static void FindWindowsMenu( void ); static void RecreateStartButton( size_t taskbarId ); @@ -79,6 +81,7 @@ enum OPEN_NOTHING, OPEN_CLASSIC, OPEN_WINDOWS, + OPEN_CUSTOM, OPEN_BOTH, OPEN_DESKTOP, OPEN_CORTANA, @@ -292,7 +295,6 @@ class COwnerWindow: public CWindowImpl // message handlers BEGIN_MSG_MAP( COwnerWindow ) MESSAGE_HANDLER( WM_ACTIVATE, OnActivate ) - MESSAGE_HANDLER( WM_CLEAR, OnClear ) MESSAGE_HANDLER( WM_SYSCOLORCHANGE, OnColorChange ) MESSAGE_HANDLER( WM_SETTINGCHANGE, OnSettingChange ) MESSAGE_HANDLER( WM_DISPLAYCHANGE, OnDisplayChange ) @@ -304,7 +306,7 @@ class COwnerWindow: public CWindowImpl if (LOWORD(wParam)!=WA_INACTIVE) return 0; - if (CMenuContainer::s_bPreventClosing && lParam && (::GetWindowLongPtr((HWND)lParam,GWL_EXSTYLE)&WS_EX_TOPMOST)) + if (CMenuContainer::s_bPreventClosing) return 0; // check if another menu window is being activated @@ -313,42 +315,14 @@ class COwnerWindow: public CWindowImpl if ((*it)->m_hWnd==(HWND)lParam) return 0; - if (CMenuContainer::s_bPreventClosing) - { - CMenuContainer::HideTemp(true); - } - else - { - for (std::vector::reverse_iterator it=CMenuContainer::s_Menus.rbegin();it!=CMenuContainer::s_Menus.rend();++it) - if (!(*it)->m_bDestroyed) - (*it)->PostMessage(WM_CLOSE); - } - return 0; - } + for (std::vector::reverse_iterator it=CMenuContainer::s_Menus.rbegin();it!=CMenuContainer::s_Menus.rend();++it) + if (!(*it)->m_bDestroyed) + (*it)->PostMessage(WM_CLOSE); - LRESULT OnClear( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ) - { - bool bHide=(wParam!=0); // hide or destroy - if (CMenuContainer::s_bTempHidden!=bHide) - { - CMenuContainer::s_bTempHidden=bHide; - if (bHide && CMenuContainer::s_UserPicture.m_hWnd) - CMenuContainer::s_UserPicture.ShowWindow(SW_HIDE); - for (std::vector::iterator it=CMenuContainer::s_Menus.begin();it!=CMenuContainer::s_Menus.end();++it) - { - if ((*it)->m_hWnd && !(*it)->m_bDestroyed) - { - (*it)->m_bClosing=true; - if (!bHide) - (*it)->PostMessage(WM_CLOSE); - else - (*it)->ShowWindow(SW_HIDE); - } - } - } return 0; } + LRESULT OnColorChange( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ) { CMenuContainer::s_Skin.Hash=0; @@ -430,6 +404,7 @@ static TaskbarInfo *FindTaskBarInfoBar( HWND bar ) static LRESULT CALLBACK HookProgManThread( int code, WPARAM wParam, LPARAM lParam ); static LRESULT CALLBACK HookDesktopThread( int code, WPARAM wParam, LPARAM lParam ); +static LRESULT CALLBACK HookDesktopThreadMouse(int code, WPARAM wParam, LPARAM lParam); static BOOL CALLBACK FindTooltipEnum( HWND hwnd, LPARAM lParam ) { @@ -630,6 +605,11 @@ UINT GetTaskbarPosition( HWND taskBar, MONITORINFO *pInfo, HMONITOR *pMonitor, R SHAppBarMessage(ABM_GETTASKBARPOS,&appbar); if (pRc) { + if (RECT rc; GetWindowRgnBox(taskBar,&rc)!=ERROR) + { + MapWindowPoints(taskBar,NULL,(POINT*)&rc,2); + appbar.rc=rc; + } *pRc=appbar.rc; RECT rc; GetWindowRect(taskBar,&rc); @@ -644,12 +624,12 @@ UINT GetTaskbarPosition( HWND taskBar, MONITORINFO *pInfo, HMONITOR *pMonitor, R if (pRc->right>rc.right) pRc->right=rc.right; } } + HMONITOR monitor=MonitorFromRect(&appbar.rc,MONITOR_DEFAULTTONEAREST); + if (pMonitor) *pMonitor=monitor; if (pInfo) { pInfo->cbSize=sizeof(MONITORINFO); - HMONITOR monitor=MonitorFromRect(&appbar.rc,MONITOR_DEFAULTTONEAREST); GetMonitorInfo(monitor,pInfo); - if (pMonitor) *pMonitor=monitor; } return appbar.uEdge; } @@ -699,21 +679,45 @@ UINT GetTaskbarPosition( HWND taskBar, MONITORINFO *pInfo, HMONITOR *pMonitor, R bool PointAroundStartButton( size_t taskbarId, const CPoint &pt ) { const TaskbarInfo *taskBar=GetTaskbarInfo(taskbarId); - if (!taskBar || !taskBar->startButton) return false; - RECT rc; + if (!taskBar || !(taskBar->startButton || taskBar->oldButton)) return false; + CRect rc; GetWindowRect(taskBar->taskBar,&rc); if (!PtInRect(&rc,pt)) return false; - UINT uEdge=GetTaskbarPosition(taskBar->taskBar,NULL,NULL,NULL); + bool rtl=GetWindowLongPtr(taskBar->taskBar,GWL_EXSTYLE)&WS_EX_LAYOUTRTL; + + CRect rcStart; + if (taskBar->startButton) + GetWindowRect(taskBar->startButton,&rcStart); + + CRect rcOld; + if (taskBar->oldButton) + { + GetWindowRect(taskBar->oldButton,&rcOld); + + if (IsWin11()) + { + // on Win11 the Start button rectangle is a bit smaller that actual XAML active area + // lets make it a bit wider to avoid accidental original Start menu triggers + const int adjust=ScaleForDpi(taskBar->taskBar,1); + if (rtl) + rcOld.left-=adjust; + else + rcOld.right+=adjust; + } + } + + rc.UnionRect(&rcStart,&rcOld); + // check if the point is inside the start button rect - GetWindowRect(taskBar->startButton,&rc); + UINT uEdge=GetTaskbarPosition(taskBar->taskBar,NULL,NULL,NULL); if (uEdge==ABE_LEFT || uEdge==ABE_RIGHT) - return pt.ytaskBar,GWL_EXSTYLE)&WS_EX_LAYOUTRTL) - return pt.x>rc.left; + return pt.y>=rc.top && pt.yrc.left && pt.x<=rc.right; else - return pt.x=rc.left && pt.xtaskbarId) != IsTaskbarSmallIcons()) + RecreateStartButton(taskBar->taskbarId); + + RECT rcTask; + GetWindowRect(taskBar->taskBar, &rcTask); + if (IsTouchTaskbar()) + { + if (RECT rc; GetWindowRgnBox(taskBar->taskBar, &rc) != ERROR) + { + MapWindowPoints(taskBar->taskBar, NULL, (POINT*)&rc, 2); + rcTask = rc; + } + } + MONITORINFO info; + UINT uEdge = GetTaskbarPosition(taskBar->taskBar, &info, NULL, NULL); + DWORD buttonFlags = SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE; + if (IsWindowVisible(taskBar->taskBar)) + buttonFlags |= SWP_SHOWWINDOW; + else + buttonFlags |= SWP_HIDEWINDOW; + + APPBARDATA appbar = { sizeof(appbar) }; + if (SHAppBarMessage(ABM_GETSTATE, &appbar) & ABS_AUTOHIDE) + { + bool bHide = false; + if (uEdge == ABE_LEFT) + bHide = (rcTask.right < info.rcMonitor.left + 5); + else if (uEdge == ABE_RIGHT) + bHide = (rcTask.left > info.rcMonitor.right - 5); + else if (uEdge == ABE_TOP) + bHide = (rcTask.bottom < info.rcMonitor.top + 5); + else + bHide = (rcTask.top > info.rcMonitor.bottom - 5); + if (bHide) + buttonFlags = (buttonFlags & ~SWP_SHOWWINDOW) | SWP_HIDEWINDOW; + } + if (uEdge == ABE_TOP || uEdge == ABE_BOTTOM) + { + if (rcTask.left < info.rcMonitor.left) rcTask.left = info.rcMonitor.left; + if (rcTask.right > info.rcMonitor.right) rcTask.right = info.rcMonitor.right; + } + else + { + if (rcTask.top < info.rcMonitor.top) rcTask.top = info.rcMonitor.top; + } + + HWND zPos = NULL; + if (pPos->flags & SWP_NOZORDER) + buttonFlags |= SWP_NOZORDER; + else + { + zPos = pPos->hwndInsertAfter; + if (zPos == HWND_TOP && !(GetWindowLongPtr(taskBar->startButton, GWL_EXSTYLE) & WS_EX_TOPMOST)) + zPos = HWND_TOPMOST; + if (zPos == HWND_TOPMOST && !(GetWindowLongPtr(taskBar->taskBar, GWL_EXSTYLE) & WS_EX_TOPMOST)) + zPos = HWND_TOP; + if (zPos == HWND_BOTTOM) + buttonFlags |= SWP_NOZORDER; + if (zPos == taskBar->startButton) + buttonFlags |= SWP_NOZORDER; + } + + if (!IsStartButtonSmallIcons(taskBar->taskbarId)) + { + bool bClassic; + if (GetWinVersion() < WIN_VER_WIN8) + bClassic = !IsAppThemed(); + else + { + HIGHCONTRAST contrast = { sizeof(contrast) }; + bClassic = (SystemParametersInfo(SPI_GETHIGHCONTRAST, sizeof(contrast), &contrast, 0) && (contrast.dwFlags & HCF_HIGHCONTRASTON)); + } + if (!bClassic) + { + if (uEdge == ABE_TOP) + OffsetRect(&rcTask, 0, -1); + else if (uEdge == ABE_BOTTOM) + OffsetRect(&rcTask, 0, 1); + } + } + + RECT rcOldButton; + if (taskBar->oldButton) + GetWindowRect(taskBar->oldButton, &rcOldButton); + + int x, y; + if (uEdge == ABE_LEFT || uEdge == ABE_RIGHT) + { + if (GetSettingInt(L"StartButtonType") != START_BUTTON_CUSTOM || !GetSettingBool(L"StartButtonAlign")) + x = (rcTask.left + rcTask.right - taskBar->startButtonSize.cx) / 2; + else if (uEdge == ABE_LEFT) + x = rcTask.left; + else + x = rcTask.right - taskBar->startButtonSize.cx; + y = taskBar->oldButton ? rcOldButton.top : rcTask.top; + } + else + { + if (GetWindowLongPtr(taskBar->rebar, GWL_EXSTYLE) & WS_EX_LAYOUTRTL) + x = (taskBar->oldButton ? rcOldButton.right : rcTask.right) - taskBar->startButtonSize.cx; + else + x = taskBar->oldButton ? rcOldButton.left : rcTask.left; + if (GetSettingInt(L"StartButtonType") != START_BUTTON_CUSTOM || !GetSettingBool(L"StartButtonAlign")) + y = (rcTask.top + rcTask.bottom - taskBar->startButtonSize.cy) / 2; + else if (uEdge == ABE_TOP) + y = rcTask.top; + else + y = rcTask.bottom - taskBar->startButtonSize.cy; + + // Start button on Win11 is a bit shifted to the right + // We will shift our Aero button to cover original button + if (IsWin11() && (x == info.rcMonitor.left) && (GetStartButtonType() == START_BUTTON_AERO) && !g_epTaskbar) + x += ScaleForDpi(taskBar->taskBar, 6); + } + + RECT rcButton = { x, y, x + taskBar->startButtonSize.cx, y + taskBar->startButtonSize.cy }; + RECT rc; + IntersectRect(&rc, &rcButton, &info.rcMonitor); + HRGN rgn = CreateRectRgn(rc.left - x, rc.top - y, rc.right - x, rc.bottom - y); + if (!SetWindowRgn(taskBar->startButton, rgn, FALSE)) + { + AddTrackedObject(rgn); + DeleteObject(rgn); + } + + SetWindowPos(taskBar->startButton, zPos, x, y, 0, 0, buttonFlags); + + if (buttonFlags & SWP_SHOWWINDOW) + UpdateStartButton(taskBar->taskbarId); +} + static LRESULT CALLBACK SubclassWin81StartButton( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData ) { + TaskbarInfo* taskBar = GetTaskbarInfo((int)dwRefData); + if (uMsg==WM_WINDOWPOSCHANGING) { // keep the original start button hidden at all times - const TaskbarInfo *taskBar=GetTaskbarInfo((int)dwRefData); if (taskBar && taskBar->bHideButton) { ((WINDOWPOS*)lParam)->flags&=~SWP_SHOWWINDOW; } } + if (uMsg==WM_WINDOWPOSCHANGED) + { + if (taskBar && taskBar->bReplaceButton) + { + UpdateStartButtonPosition(taskBar,(WINDOWPOS*)lParam); + } + } if (uMsg==WM_SIZE) { RECT rc; GetWindowRect(hWnd,&rc); rc.right-=rc.left; rc.bottom-=rc.top; - TaskbarInfo *taskBar=GetTaskbarInfo((int)dwRefData); if (taskBar && (taskBar->oldButtonSize.cx!=rc.right || taskBar->oldButtonSize.cy!=rc.bottom)) { taskBar->oldButtonSize.cx=rc.right; @@ -1467,7 +1624,7 @@ static void ComputeTaskbarColors( int *data ) { bool bDefLook; int look=GetSettingInt(L"TaskbarLook",bDefLook); - if (GetWinVersion()=WIN_VER_WIN10) { CComPtr pImmersiveShell; @@ -1679,116 +1845,7 @@ static LRESULT CALLBACK SubclassTaskBarProc( HWND hWnd, UINT uMsg, WPARAM wParam { if (taskBar->bReplaceButton) { - if (IsStartButtonSmallIcons(taskBar->taskbarId)!=IsTaskbarSmallIcons()) - RecreateStartButton((int)dwRefData); - - WINDOWPOS *pPos=(WINDOWPOS*)lParam; - RECT rcTask; - GetWindowRect(hWnd,&rcTask); - MONITORINFO info; - UINT uEdge=GetTaskbarPosition(hWnd,&info,NULL,NULL); - DWORD buttonFlags=SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOSIZE; - if (IsWindowVisible(taskBar->taskBar)) - buttonFlags|=SWP_SHOWWINDOW; - else - buttonFlags|=SWP_HIDEWINDOW; - - APPBARDATA appbar={sizeof(appbar)}; - if (SHAppBarMessage(ABM_GETSTATE,&appbar)&ABS_AUTOHIDE) - { - bool bHide=false; - if (uEdge==ABE_LEFT) - bHide=(rcTask.rightinfo.rcMonitor.right-5); - else if (uEdge==ABE_TOP) - bHide=(rcTask.bottominfo.rcMonitor.bottom-5); - if (bHide) - buttonFlags=(buttonFlags&~SWP_SHOWWINDOW)|SWP_HIDEWINDOW; - } - if (uEdge==ABE_TOP || uEdge==ABE_BOTTOM) - { - if (rcTask.leftinfo.rcMonitor.right) rcTask.right=info.rcMonitor.right; - } - else - { - if (rcTask.toptaskbarId)) - { - bool bClassic; - if (GetWinVersion()flags&SWP_NOZORDER) - buttonFlags|=SWP_NOZORDER; - else - { - zPos=pPos->hwndInsertAfter; - if (zPos==HWND_TOP && !(GetWindowLongPtr(taskBar->startButton,GWL_EXSTYLE)&WS_EX_TOPMOST)) - zPos=HWND_TOPMOST; - if (zPos==HWND_TOPMOST && !(GetWindowLongPtr(hWnd,GWL_EXSTYLE)&WS_EX_TOPMOST)) - zPos=HWND_TOP; - if (zPos==HWND_BOTTOM) - buttonFlags|=SWP_NOZORDER; - if (zPos==taskBar->startButton) - buttonFlags|=SWP_NOZORDER; - } - - int x, y; - if (uEdge==ABE_LEFT || uEdge==ABE_RIGHT) - { - if (GetSettingInt(L"StartButtonType")!=START_BUTTON_CUSTOM || !GetSettingBool(L"StartButtonAlign")) - x=(rcTask.left+rcTask.right-taskBar->startButtonSize.cx)/2; - else if (uEdge==ABE_LEFT) - x=rcTask.left; - else - x=rcTask.right-taskBar->startButtonSize.cx; - y=rcTask.top; - } - else - { - if (GetWindowLongPtr(taskBar->rebar,GWL_EXSTYLE)&WS_EX_LAYOUTRTL) - x=rcTask.right-taskBar->startButtonSize.cx; - else - x=rcTask.left; - if (GetSettingInt(L"StartButtonType")!=START_BUTTON_CUSTOM || !GetSettingBool(L"StartButtonAlign")) - y=(rcTask.top+rcTask.bottom-taskBar->startButtonSize.cy)/2; - else if (uEdge==ABE_TOP) - y=rcTask.top; - else - y=rcTask.bottom-taskBar->startButtonSize.cy; - } - RECT rcButton={x,y,x+taskBar->startButtonSize.cx,y+taskBar->startButtonSize.cy}; - RECT rc; - IntersectRect(&rc,&rcButton,&info.rcMonitor); - HRGN rgn=CreateRectRgn(rc.left-x,rc.top-y,rc.right-x,rc.bottom-y); - if (!SetWindowRgn(taskBar->startButton,rgn,FALSE)) - { - AddTrackedObject(rgn); - DeleteObject(rgn); - } - g_bAllowMoveButton=true; - SetWindowPos(taskBar->startButton,zPos,x,y,0,0,buttonFlags); - g_bAllowMoveButton=false; - if (buttonFlags&SWP_SHOWWINDOW) - UpdateStartButton(taskBar->taskbarId); + UpdateStartButtonPosition(taskBar,(WINDOWPOS*)lParam); } if (taskBar->oldButton && GetWinVersion()bCustomLook && SetWindowCompositionAttribute && GetWinVersion()WIN_VER_WIN7) { - color=GetSystemGlassColor8(); - color=((color&0xFF)<<16)|(color&0xFF00)|((color>>16)&0xFF); + if (IsAppThemed()) + { + color=GetSystemGlassColor8(); + color=((color&0xFF)<<16)|(color&0xFF00)|((color>>16)&0xFF); + } + else + { + color=GetSysColor(COLOR_BTNFACE); + } } BITMAPINFO bi={0}; bi.bmiHeader.biSize=sizeof(BITMAPINFOHEADER); @@ -2702,6 +2782,17 @@ static void WINAPI SHFillRectClr2( HDC hdc, const RECT *pRect, COLORREF color ) g_SHFillRectClr(hdc,pRect,color); } +static IatHookData* g_ExtTextOutWHook = nullptr; + +// used by ExplorerPatcher's custom implementation of `SHFillRectClr` +static BOOL WINAPI ExtTextOutW2(HDC hdc, int X, int Y, UINT fuOptions, const RECT* lprc, LPCWSTR lpString, UINT cbCount, const INT* lpDx) +{ + if (fuOptions != ETO_OPAQUE || lpString || cbCount || lpDx || !g_CurrentTaskList || !g_TaskbarTexture || GetCurrentThreadId() != g_TaskbarThreadId) + return ExtTextOutW(hdc, X, Y, fuOptions, lprc, lpString, cbCount, lpDx); + + return FALSE; +} + static HRESULT STDAPICALLTYPE DrawThemeBackground2( HTHEME hTheme, HDC hdc, int iPartId, int iStateId, LPCRECT pRect, LPCRECT pClipRect ) { if (g_CurrentTaskList && g_TaskbarTexture && iPartId==1 && iStateId==0 && GetCurrentThreadId()==g_TaskbarThreadId) @@ -2809,6 +2900,34 @@ static BOOL WINAPI SetWindowCompositionAttribute2( HWND hwnd, WINCOMPATTRDATA *p return SetWindowCompositionAttribute(hwnd,pAttrData); } +/////////////////////////////////////////////////////////////////////////////// +// hooks for preventing shell hotkeys registration on Win11 + +using ShellRegisterHotKey_t = BOOL(WINAPI*)(HWND, int, UINT, UINT, HWND); + +static IatHookData* g_ShellRegisterHotKeyHook; +static ShellRegisterHotKey_t g_ShellRegisterHotKey; + +static BOOL WINAPI ShellRegisterHotKeyHook(HWND hWnd, int id, UINT fsModifiers, UINT vk, HWND hWndTarget) +{ + // Win key + if (fsModifiers == MOD_WIN && vk == 0) + return FALSE; + + // Ctrl+Esc + if (fsModifiers == MOD_CONTROL && vk == VK_ESCAPE) + return FALSE; + + return g_ShellRegisterHotKey(hWnd, id, fsModifiers, vk, hWndTarget); +} + +// one-time APC function to unregister shell hotkeys +void NTAPI DisableShellHotkeysFunc(ULONG_PTR Parameter) +{ + UnregisterHotKey(NULL, 1); + UnregisterHotKey(NULL, 2); +} + /////////////////////////////////////////////////////////////////////////////// static void OpenCortana( void ) @@ -2819,6 +2938,15 @@ static void OpenCortana( void ) static void InitStartMenuDLL( void ) { + static bool initCalled = false; + if (initCalled) + return; + + initCalled = true; + + LogToFile(STARTUP_LOG, L"StartMenu DLL: InitStartMenuDLL"); + WaitDllInitThread(); + InitializeIatHooks(); if (IsWin81Update1()) { @@ -2846,39 +2974,62 @@ static void InitStartMenuDLL( void ) } } - if (GetWinVersion()>=WIN_VER_WIN10) + if (GetSettingBool(L"CustomTaskbar")) { - HMODULE shlwapi=GetModuleHandle(L"shlwapi.dll"); - if (shlwapi) + auto module=GetModuleHandle(L"taskbar.dll"); + if (!module) { - g_SHFillRectClr=(tSHFillRectClr)GetProcAddress(shlwapi,MAKEINTRESOURCEA(197)); - if (g_SHFillRectClr) + module = GetModuleHandle(L"ep_taskbar.5.dll"); + if (!module) + module = GetModuleHandle(L"ep_taskbar.2.dll"); + + if (module) + g_epTaskbar = true; + } + if (!module) + module=GetModuleHandle(NULL); + + if (GetWinVersion()>=WIN_VER_WIN10) + { + HMODULE shlwapi=GetModuleHandle(L"shlwapi.dll"); + if (shlwapi) { - g_SHFillRectClrHook=SetIatHook(GetModuleHandle(NULL),"shlwapi.dll",MAKEINTRESOURCEA(197),SHFillRectClr2); - if (!g_SHFillRectClrHook) - g_SHFillRectClrHook=SetIatHook(GetModuleHandle(NULL),"api-ms-win-shlwapi-winrt-storage-l1-1-1.dll",MAKEINTRESOURCEA(197),SHFillRectClr2); + g_SHFillRectClr=(tSHFillRectClr)GetProcAddress(shlwapi,MAKEINTRESOURCEA(197)); + if (g_SHFillRectClr) + { + g_SHFillRectClrHook=SetIatHook(module,"shlwapi.dll",MAKEINTRESOURCEA(197),SHFillRectClr2); + if (!g_SHFillRectClrHook) + g_SHFillRectClrHook=SetIatHook(module,"api-ms-win-shlwapi-winrt-storage-l1-1-1.dll",MAKEINTRESOURCEA(197),SHFillRectClr2); + } } + g_StretchDIBitsHook=SetIatHook(module,"gdi32.dll","StretchDIBits",StretchDIBits2); + if (!g_StretchDIBitsHook) + g_StretchDIBitsHook=SetIatHook(module,"ext-ms-win-gdi-draw-l1-1-0.dll","StretchDIBits",StretchDIBits2); + + // ExplorerPatcher compatibility + if (g_epTaskbar) + g_ExtTextOutWHook = SetIatHook(module, "gdi32.dll", "ExtTextOutW", ExtTextOutW2); } - g_StretchDIBitsHook=SetIatHook(GetModuleHandle(NULL),"gdi32.dll","StretchDIBits",StretchDIBits2); - } - { - HWND dlg=CreateWindow(L"#32770",L"",WS_POPUP,0,0,0,0,NULL,0,0,0); - HWND toolbar=CreateWindow(TOOLBARCLASSNAME,L"",WS_CHILD|TBS_TOOLTIPS,0,0,0,0,dlg,0,0,0); - DestroyWindow(dlg); - } + { + HWND dlg=CreateWindow(L"#32770",L"",WS_POPUP,0,0,0,0,NULL,0,0,0); + HWND toolbar=CreateWindow(TOOLBARCLASSNAME,L"",WS_CHILD|TBS_TOOLTIPS,0,0,0,0,dlg,0,0,0); + DestroyWindow(dlg); + } - if (GetWinVersion()<=WIN_VER_WIN81) - g_DrawThemeBackgroundHook=SetIatHook(GetModuleHandle(NULL),"uxtheme.dll","DrawThemeBackground",DrawThemeBackground2); - g_DrawThemeTextHook=SetIatHook(GetModuleHandle(NULL),"uxtheme.dll","DrawThemeText",DrawThemeText2); - g_DrawThemeTextExHook=SetIatHook(GetModuleHandle(NULL),"uxtheme.dll","DrawThemeTextEx",DrawThemeTextEx2); - g_DrawThemeTextCtlHook=SetIatHook(GetModuleHandle(L"comctl32.dll"),"uxtheme.dll","DrawThemeText",DrawThemeText2); - if (GetWinVersion()>=WIN_VER_WIN10) - g_SetWindowCompositionAttributeHook=SetIatHook(GetModuleHandle(NULL),"user32.dll","SetWindowCompositionAttribute",SetWindowCompositionAttribute2); + if (GetWinVersion()<=WIN_VER_WIN81) + g_DrawThemeBackgroundHook=SetIatHook(module,"uxtheme.dll","DrawThemeBackground",DrawThemeBackground2); + g_DrawThemeTextHook=SetIatHook(module,"uxtheme.dll","DrawThemeText",DrawThemeText2); + if (IsAppThemed()) + { + g_DrawThemeTextExHook=SetIatHook(module,"uxtheme.dll","DrawThemeTextEx",DrawThemeTextEx2); + } + g_DrawThemeTextCtlHook=SetIatHook(GetModuleHandle(L"comctl32.dll"),"uxtheme.dll","DrawThemeText",DrawThemeText2); + if (GetWinVersion()>=WIN_VER_WIN10) + g_SetWindowCompositionAttributeHook=SetIatHook(module,"user32.dll","SetWindowCompositionAttribute",SetWindowCompositionAttribute2); + } g_TaskbarThreadId=GetCurrentThreadId(); - LogToFile(STARTUP_LOG,L"StartMenu DLL: InitStartMenuDLL"); - WaitDllInitThread(); g_bTrimHooks=GetWinVersion()==WIN_VER_WIN7 && (GetSettingInt(L"CompatibilityFixes")&COMPATIBILITY_TRIM_HOOKS); InitManagers(false); int level=GetSettingInt(L"CrashDump"); @@ -2896,6 +3047,34 @@ static void InitStartMenuDLL( void ) DWORD progThread=GetWindowThreadProcessId(g_ProgWin,NULL); g_ProgHook=SetWindowsHookEx(WH_GETMESSAGE,HookProgManThread,NULL,progThread); g_StartHook=SetWindowsHookEx(WH_GETMESSAGE,HookDesktopThread,NULL,GetCurrentThreadId()); + if (IsWin11()) + { + g_StartMouseHook=SetWindowsHookEx(WH_MOUSE,HookDesktopThreadMouse,NULL,GetCurrentThreadId()); + + // hook ShellRegisterHotKey to prevent twinui.dll to install shell hotkeys (Win, Ctrl+Esc) + // without these hotkeys there is standard WM_SYSCOMMAND+SC_TASKLIST sent when start menu is invoked by keyboard shortcut + g_ShellRegisterHotKey = (ShellRegisterHotKey_t)GetProcAddress(GetModuleHandle(L"user32.dll"), MAKEINTRESOURCEA(2671)); + auto twinui = GetModuleHandle(L"twinui.dll"); + + if (g_ShellRegisterHotKey && twinui) + { + g_ShellRegisterHotKeyHook = SetIatHook(twinui, "user32.dll" ,MAKEINTRESOURCEA(2671), ShellRegisterHotKeyHook); + + // unregister shell hotkeys as they may be registered already + // this has to be done from context of thread that registered them + auto hwnd = FindWindow(L"ApplicationManager_ImmersiveShellWindow", NULL); + if (hwnd) + { + auto thread = OpenThread(THREAD_SET_CONTEXT, FALSE, GetWindowThreadProcessId(hwnd, NULL)); + if (thread) + { + QueueUserAPC(DisableShellHotkeysFunc, thread, 0); + CloseHandle(thread); + } + } + } + } + HWND hwnd=FindWindow(L"OpenShellMenu.CStartHookWindow",L"StartHookWindow"); LoadLibrary(L"StartMenuDLL.dll"); // keep the DLL from unloading if (hwnd) PostMessage(hwnd,WM_CLEAR,0,0); // tell the exe to unhook this hook @@ -2911,9 +3090,18 @@ static void InitStartMenuDLL( void ) if (taskBar.rebar) { SetWindowSubclass(taskBar.rebar,SubclassRebarProc,'CLSH',taskbarId); + // TaskBand window HWND hwnd=FindWindowEx(taskBar.rebar,NULL,L"MSTaskSwWClass",NULL); if (hwnd) - taskBar.taskList=FindWindowEx(hwnd,NULL,L"MSTaskListWClass",NULL); + { + taskBar.taskList=hwnd; + // TaskList window + // it has to be visible, otherwise it won't receive WM_PAINT that we need to intercept + // in such case we will intercept parent instead + hwnd=FindWindowEx(hwnd,NULL,L"MSTaskListWClass",NULL); + if (hwnd&&IsWindowVisible(hwnd)) + taskBar.taskList=hwnd; + } if (taskBar.taskList) SetWindowSubclass(taskBar.taskList,SubclassTaskListProc,'CLSH',taskbarId); } @@ -2955,6 +3143,9 @@ static void InitStartMenuDLL( void ) taskBar.chevron=FindWindowEx(tray,NULL,L"Button",NULL); if (taskBar.chevron) SetWindowSubclass(taskBar.chevron,SubclassTrayChevronProc,'CLSH',taskBar.taskbarId); + taskBar.news=FindWindowEx(g_TaskBar,NULL,L"DynamicContent2",NULL); + if (taskBar.news) + SetWindowSubclass(taskBar.news,SubclassTrayChevronProc,'CLSH',taskBar.taskbarId); } HandleTaskbarParts(taskBar,true); @@ -3017,39 +3208,6 @@ static void RecreateStartButton( size_t taskbarId ) continue; if (taskBar.bRecreatingButton) continue; - RECT rcTask; - GetWindowRect(taskBar.taskBar,&rcTask); - RECT rcTask2=rcTask; - MONITORINFO info; - UINT uEdge=GetTaskbarPosition(taskBar.taskBar,&info,NULL,NULL); - if (uEdge==ABE_TOP || uEdge==ABE_BOTTOM) - { - if (rcTask2.leftinfo.rcMonitor.right) rcTask2.right=info.rcMonitor.right; - } - else - { - if (rcTask2.topRelease(); @@ -3074,7 +3232,19 @@ static void RecreateStartButton( size_t taskbarId ) taskBar.oldButtonSize.cy=rc.bottom-rc.top; } + RECT rcTask; + GetWindowRect(taskBar.taskBar,&rcTask); PostMessage(taskBar.taskBar,WM_SIZE,SIZE_RESTORED,MAKELONG(rcTask.right-rcTask.left,rcTask.bottom-rcTask.top)); + if (taskBar.taskBar==g_TaskBar) + { + for (auto btn : taskBar.trayButtons) + { + RECT rc; + GetWindowRect(btn,&rc); + MapWindowPoints(NULL,taskBar.taskBar,(POINT*)&rc,2); // convert to taskbar coordinates + SetWindowPos(btn,HWND_TOP,rc.left,rc.top,0,0,SWP_NOSIZE|SWP_NOACTIVATE|SWP_NOZORDER); + } + } } } @@ -3098,6 +3268,8 @@ static void CleanStartMenuDLL( void ) g_SHFillRectClrHook=NULL; ClearIatHook(g_StretchDIBitsHook); g_StretchDIBitsHook=NULL; + ClearIatHook(g_ExtTextOutWHook); + g_ExtTextOutWHook = NULL; ClearIatHook(g_DrawThemeBackgroundHook); g_DrawThemeBackgroundHook=NULL; @@ -3109,6 +3281,8 @@ static void CleanStartMenuDLL( void ) g_DrawThemeTextCtlHook=NULL; ClearIatHook(g_SetWindowCompositionAttributeHook); g_SetWindowCompositionAttributeHook=NULL; + ClearIatHook(g_ShellRegisterHotKeyHook); + g_ShellRegisterHotKeyHook=NULL; CloseManagers(false); ClearIatHooks(); @@ -3123,6 +3297,8 @@ static void CleanStartMenuDLL( void ) HWND hwnd=FindWindow(L"OpenShellMenu.CStartHookWindow",L"StartHookWindow"); UnhookWindowsHookEx(g_ProgHook); UnhookWindowsHookEx(g_StartHook); + if (g_StartMouseHook) UnhookWindowsHookEx(g_StartMouseHook); + g_StartMouseHook=NULL; if (g_AppManagerHook) UnhookWindowsHookEx(g_AppManagerHook); g_AppManagerHook=NULL; if (g_NewWindowHook) UnhookWindowsHookEx(g_NewWindowHook); @@ -3144,7 +3320,8 @@ static void CleanStartMenuDLL( void ) if (it->second.oldButton) { RemoveWindowSubclass(it->second.oldButton,SubclassWin81StartButton,'CLSH'); - SetWindowPos(it->second.oldButton,NULL,0,0,0,0,SWP_NOSIZE|SWP_NOZORDER); + if (GetWinVersion()second.taskBar,NULL,NULL,NULL)==ABE_BOTTOM) + SetWindowPos(it->second.oldButton,NULL,0,0,0,0,SWP_NOSIZE|SWP_NOZORDER); RevokeDragDrop(it->second.oldButton); if (it->second.pOriginalTarget) RegisterDragDrop(it->second.oldButton,it->second.pOriginalTarget); @@ -3161,6 +3338,8 @@ if (!g_bTrimHooks) } if (it->second.chevron) RemoveWindowSubclass(it->second.chevron,SubclassTrayChevronProc,'CLSH'); + if (it->second.news) + RemoveWindowSubclass(it->second.news,SubclassTrayChevronProc,'CLSH'); if (it->second.desktop) RemoveWindowSubclass(it->second.desktop,SubclassDesktopButtonProc,'CLSH'); if (it->second.bTimer) @@ -3373,6 +3552,16 @@ static LRESULT CALLBACK HookProgManThread( int code, WPARAM wParam, LPARAM lPara msg->message=WM_NULL; if (control==OPEN_CLASSIC) PostMessage(g_TaskBar,g_StartMenuMsg,MSG_TOGGLE,0); + else if (control==OPEN_CUSTOM) + { + CString commandText=GetSettingString(L"WinKeyCommand"); + if (!commandText.IsEmpty()) + { + wchar_t expandedCommand[_MAX_PATH]{}; + ::ExpandEnvironmentStrings(commandText, expandedCommand, _countof(expandedCommand)); + ShellExecute(NULL,NULL,expandedCommand,NULL,NULL,SW_SHOWNORMAL); + } + } } } } @@ -3397,6 +3586,35 @@ static LRESULT CALLBACK HookProgManThread( int code, WPARAM wParam, LPARAM lPara return CallNextHookEx(NULL,code,wParam,lParam); } +// WH_MOUSE hook for taskbar thread (Win11+) +static LRESULT CALLBACK HookDesktopThreadMouse(int code, WPARAM wParam, LPARAM lParam) +{ + if (code == HC_ACTION) + { + // we need to steal mouse messages that are issues in start button area + // so that they won't get to XAML framework that is handling original start button + auto info = (const MOUSEHOOKSTRUCT*)lParam; + { + auto taskBar = FindTaskBarInfoButton(info->hwnd); // click on start button + if (!taskBar) + { + taskBar = FindTaskBarInfoBar(GetAncestor(info->hwnd, GA_ROOT)); // click on taskbar + if (taskBar && !PointAroundStartButton(taskBar->taskbarId)) + taskBar = NULL; + } + + if (taskBar && (info->hwnd != taskBar->startButton) && taskBar->oldButton) + { + // steal messages from other than our custom button window + PostMessage(taskBar->oldButton, (UINT)wParam, 0, MAKELPARAM(info->pt.x, info->pt.y)); + return 1; + } + } + } + + return CallNextHookEx(NULL, code, wParam, lParam); +} + // WH_GETMESSAGE hook for the taskbar thread static LRESULT CALLBACK HookDesktopThread( int code, WPARAM wParam, LPARAM lParam ) { @@ -3456,6 +3674,16 @@ if (!g_bTrimHooks) PostMessage(g_ProgWin,WM_SYSCOMMAND,SC_TASKLIST,'WSMK'); else if (control==OPEN_CORTANA) OpenCortana(); + else if (control==OPEN_CUSTOM) + { + CString commandText=GetSettingString(L"ShiftWinCommand"); + if (!commandText.IsEmpty()) + { + wchar_t expandedCommand[_MAX_PATH]{}; + ::ExpandEnvironmentStrings(commandText, expandedCommand, _countof(expandedCommand)); + ShellExecute(NULL,NULL,expandedCommand,NULL,NULL,SW_SHOWNORMAL); + } + } } else if (msg->wParam==MSG_DRAG || msg->wParam==MSG_SHIFTDRAG) { @@ -3615,12 +3843,22 @@ if (!g_bTrimHooks) // left or middle click on start button FindWindowsMenu(); const wchar_t *name; + const wchar_t *command; if (bMiddle) + { name=L"MiddleClick"; + command=L"MiddleClickCommand"; + } else if (GetKeyState(VK_SHIFT)<0) + { name=L"ShiftClick"; + command=L"ShiftClickCommand"; + } else + { name=L"MouseClick"; + command=L"MouseClickCommand"; + } int control=GetSettingInt(name); if (control==OPEN_BOTH && GetWinVersion()>=WIN_VER_WIN10) @@ -3636,6 +3874,16 @@ if (!g_bTrimHooks) PostMessage(g_ProgWin,WM_SYSCOMMAND,SC_TASKLIST,'WSMM'); else if (control==OPEN_CORTANA) OpenCortana(); + else if (control==OPEN_CUSTOM) + { + CString commandText=GetSettingString(command); + if (!commandText.IsEmpty()) + { + wchar_t expandedCommand[_MAX_PATH]{}; + ::ExpandEnvironmentStrings(commandText, expandedCommand, _countof(expandedCommand)); + ShellExecute(NULL,NULL,expandedCommand,NULL,NULL,SW_SHOWNORMAL); + } + } msg->message=WM_NULL; } } @@ -3776,6 +4024,16 @@ if (!g_bTrimHooks) FindWindowsMenu(); PostMessage(g_ProgWin,WM_SYSCOMMAND,SC_TASKLIST,'WSMM'); } + else if (control==OPEN_CUSTOM) + { + CString commandText=GetSettingString(L"HoverCommand"); + if (!commandText.IsEmpty()) + { + wchar_t expandedCommand[_MAX_PATH]{}; + ::ExpandEnvironmentStrings(commandText, expandedCommand, _countof(expandedCommand)); + ShellExecute(NULL,NULL,expandedCommand,NULL,NULL,SW_SHOWNORMAL); + } + } } } taskBar->bTimer=false; @@ -3785,7 +4043,6 @@ if (!g_bTrimHooks) // context menu if (msg->message==WM_NCRBUTTONUP || msg->message==WM_RBUTTONUP) { - CPoint pt0(GetMessagePos()); TaskbarInfo *taskBar=FindTaskBarInfoButton(msg->hwnd); DWORD winVer=GetWinVersion(); if (!taskBar && winVer>=WIN_VER_WIN8) @@ -3796,6 +4053,7 @@ if (!g_bTrimHooks) } if (taskBar) { + CPoint pt0(GetMessagePos()); if (msg->message==WM_RBUTTONUP && msg->hwnd==taskBar->startButton && msg->lParam==MAKELPARAM(-1,-1)) { RECT rc; @@ -3830,13 +4088,18 @@ if (!g_bTrimHooks) CMD_OPEN, CMD_OPEN_ALL, CMD_EXPLORER, + CMD_OPEN_PINNED, }; // right-click on the start button - open the context menu (Settings, Help, Exit) HMENU menu=CreatePopupMenu(); - CString title=LoadStringEx(IDS_MENU_TITLE); - if (!title.IsEmpty()) + CString titleFmt=LoadStringEx(IDS_MENU_TITLE); + if (!titleFmt.IsEmpty()) { + CString title; + DWORD ver=GetVersionEx(g_Instance); + title.Format(titleFmt,ver>>24,(ver>>16)&0xFF,ver&0xFFFF); + AppendMenu(menu,MF_STRING,0,title); EnableMenuItem(menu,0,MF_BYPOSITION|MF_DISABLED); SetMenuDefaultItem(menu,0,TRUE); @@ -3850,6 +4113,8 @@ if (!g_bTrimHooks) AppendMenu(menu,MF_STRING,CMD_OPEN,FindTranslation(L"Menu.Open",L"&Open")); if (!SHRestricted(REST_NOCOMMONGROUPS)) AppendMenu(menu,MF_STRING,CMD_OPEN_ALL,FindTranslation(L"Menu.OpenAll",L"O&pen All Users")); + if (GetSettingInt(L"PinnedPrograms")==PINNED_PROGRAMS_PINNED) + AppendMenu(menu,MF_STRING,CMD_OPEN_PINNED,FindTranslation(L"Menu.OpenPinned",L"O&pen Pinned")); AppendMenu(menu,MF_SEPARATOR,0,0); } if (GetSettingBool(L"EnableSettings")) @@ -3896,6 +4161,16 @@ if (!g_bTrimHooks) if (SUCCEEDED(ShGetKnownFolderPath((res==CMD_OPEN)?FOLDERID_StartMenu:FOLDERID_CommonStartMenu,&pPath))) ShellExecute(NULL,L"open",pPath,NULL,NULL,SW_SHOWNORMAL); } + if (res==CMD_OPEN_PINNED) // open pinned folder + { + SHELLEXECUTEINFO execute={sizeof(execute)}; + CString path=GetSettingString(L"PinnedItemsPath"); + execute.lpVerb=L"open"; + execute.lpFile=path; + execute.nShow=SW_SHOWNORMAL; + execute.fMask=SEE_MASK_DOENVSUBST; + ShellExecuteEx(&execute); + } if (res==CMD_EXPLORER) { CString path=GetSettingString(L"ExplorerPath"); diff --git a/Src/StartMenu/StartMenuDLL/StartMenuDLL.h b/Src/StartMenu/StartMenuDLL/StartMenuDLL.h index 2601727e9..456a88475 100644 --- a/Src/StartMenu/StartMenuDLL/StartMenuDLL.h +++ b/Src/StartMenu/StartMenuDLL/StartMenuDLL.h @@ -47,22 +47,23 @@ void EnableStartTooltip( bool bEnable ); struct TaskbarInfo { - TaskbarInfo( void ) { taskbarId=pointerId=0; taskBar=startButton=oldButton=rebar=taskList=chevron=desktop=NULL; startButtonSize.cx=startButtonSize.cy=0; oldButtonSize.cx=oldButtonSize.cy=0; bTimer=bCustomLook=bReplaceButton=bHideButton=bRecreatingButton=bThemeChanging=false; } + TaskbarInfo( void ) { taskbarId=pointerId=0; taskBar=startButton=oldButton=rebar=taskList=chevron=news=desktop=NULL; startButtonSize.cx=startButtonSize.cy=0; oldButtonSize.cx=oldButtonSize.cy=0; bTimer=bCustomLook=bReplaceButton=bHideButton=bRecreatingButton=bThemeChanging=false; } int taskbarId; HWND taskBar; HWND startButton; // either own start button or the win7 start button (depending on bReplaceButton) - HWND oldButton; // win81 start button (child of taskBar) + HWND oldButton; // win8.1+ start button (child of taskBar) HWND rebar; HWND taskList; HWND chevron; + HWND news; HWND desktop; SIZE startButtonSize; SIZE oldButtonSize; int pointerId; bool bTimer; bool bCustomLook; - bool bReplaceButton; - bool bHideButton; + bool bReplaceButton; // replace start button with own one + bool bHideButton; // hide old start button (if we have own button) bool bRecreatingButton; bool bThemeChanging; std::vector trayButtons; // ordered by Z order (for win10) diff --git a/Src/StartMenu/StartMenuDLL/StartMenuDLL.rc b/Src/StartMenu/StartMenuDLL/StartMenuDLL.rc index 34c7744b4..fbaf3e9a2 100644 --- a/Src/StartMenu/StartMenuDLL/StartMenuDLL.rc +++ b/Src/StartMenu/StartMenuDLL/StartMenuDLL.rc @@ -349,6 +349,8 @@ END // remains consistent on all systems. IDI_APPICON ICON "..\\..\\Setup\\OpenShell.ico" IDI_APPSICON ICON "apps.ico" +IDI_APPSICON10 ICON "apps10.ico" +IDI_APPSICON11 ICON "apps11.ico" IDI_BTN_CLASSIC ICON "btn_aero.ico" IDI_START ICON "start.ico" IDI_START10 ICON "start10.ico" @@ -369,19 +371,20 @@ IDI_START10 ICON "start10.ico" IDB_ARROWS BITMAP "menu_arrows.bmp" IDB_ARROWS150 BITMAP "menu_arrows150.bmp" IDB_SEARCH_ICONS BITMAP "search_icons.bmp" -IDB_STYLE_CLASSIC1 BITMAP "style_classic.bmp" -IDB_STYLE_CLASSIC2 BITMAP "style_vista.bmp" -IDB_STYLE_WIN7 BITMAP "style_7.bmp" IDB_BTN_CLASSIC BITMAP "btn_classic.bmp" -IDB_STYLE_CLASSIC1150 BITMAP "style_classic150.bmp" -IDB_STYLE_CLASSIC2150 BITMAP "style_vista150.bmp" -IDB_STYLE_WIN7150 BITMAP "style_7150.bmp" ///////////////////////////////////////////////////////////////////////////// // // IMAGE // +IDB_STYLE_CLASSIC1 IMAGE "style_classic.png" +IDB_STYLE_CLASSIC2 IMAGE "style_vista.png" +IDB_STYLE_WIN7 IMAGE "style_7.png" +IDB_STYLE_CLASSIC1150 IMAGE "style_classic150.png" +IDB_STYLE_CLASSIC2150 IMAGE "style_vista150.png" +IDB_STYLE_WIN7150 IMAGE "style_7150.png" + IDB_BUTTON96 IMAGE "button96.png" IDB_BUTTON120 IMAGE "button120.png" IDB_BUTTON144 IMAGE "button144.png" @@ -426,7 +429,7 @@ BEGIN IDS_SKIN_ERR_LOAD_FILE "Failed to load the variation skin file %s.\r\n" IDS_SKIN_ERR_LOAD "Error loading %s\n%s" IDS_SKIN_ERR_VERSION "The selected skin is not compatible with this version of the start menu.\r\n" - IDS_MENU_TITLE "== Open-Shell Menu ==" + IDS_MENU_TITLE "Open-Shell Menu %d.%d.%d" IDS_DEFAULT_SKIN "" IDS_CONTROLS_SETTINGS "Controls" IDS_OPEN_NOTHING "Nothing" @@ -636,6 +639,10 @@ BEGIN IDS_MENU_USERNAME "User name text" IDS_MENU_USERNAME_TIP "Enter the text you want to see in the user-name portion of the menu (for skins that show the user name)" IDS_PIC_COMMAND "User picture command" + IDS_ENABLE_ACCELERATORS "Enable accelerators" + IDS_ENABLE_ACCELERATORS_TIP "Use keyboard accelerators to execute menu commands" + IDS_ALT_ACCELERATORS "Require Alt key for accelerators" + IDS_ALT_ACCELERATORS_TIP "Keyboard accelerators will be triggered only if Alt key is pressed" END STRINGTABLE @@ -643,6 +650,12 @@ BEGIN IDS_PIC_COMMAND_TIP "Enter the command you want to run when you click on the user picture" IDS_NAME_COMMAND "User name command" IDS_NAME_COMMAND_TIP "Enter the command you want to run when you click on the user name" + IDS_ALIGN_WORK_AREA "Align start menu to working area" + IDS_ALIGN_WORK_AREA_TIP "Align the start menu to the working area instead of to the taskbar. Use with custom taskbars" + IDS_HOR_OFFSET "Horizontal position offset" + IDS_HOR_OFFSET_TIP "Offset the start menu horizontally by the amount of pixels specified" + IDS_VERT_OFFSET "Vertical position offset" + IDS_VERT_OFFSET_TIP "Offset the start menu vertically by the amount of pixels specified" IDS_SMALL_SIZE_SM "Small icon size" IDS_SMALL_SIZE_SM_TIP "Set the small icon size. The default is 16 for DPI<=96, 20 for 96120" IDS_LARGE_SIZE_SM "Large icon size" @@ -1037,7 +1050,7 @@ BEGIN IDS_FOLDERS_FIRST "Show folders first" IDS_FOLDERS_FIRST_TIP "When this is checked, the All Programs tree will show the folders first and the programs last" IDS_PINNED_PROGRAMS "Pinned Programs folder" - IDS_PINNED_PROGRAMS_TIP "Select the location to store the pinned programs" + IDS_PINNED_PROGRAMS_TIP "Select the location to store pinned programs. After updating this setting, close this window in order to pin items through the context menu again" IDS_FAST_ITEMS "Use Start Menu folder" END @@ -1068,14 +1081,14 @@ BEGIN IDS_RIGHT_SHIFT_TIP "When this is checked, right-click on the start button will open the standard Windows context menu instead of the Open-Shell menu. Otherwise Shift+right-click will open it" IDS_RIGHT_SHIFTX "Right click opens Win+X menu" IDS_RIGHT_SHIFTX_TIP "When this is checked, right-click on the start button will open the Win+X power menu instead of the Open-Shell menu. Otherwise Shift+right-click will open it" - IDS_STARTSCREEN_ITEM "Show Start screen shortcut" + IDS_STARTSCREEN_ITEM "Show Start Menu/Screen shortcut" IDS_STARTSCREEN_ITEM_TIP - "When this is checked, the main menu will contain a shortcut to open the Start screen" + "When this is checked, the main menu will contain a shortcut to open original Start menu/screen" IDS_MIN_HEIGHT "Minimum menu height" IDS_MIN_HEIGHT_TIP "The main menu will be at least as tall as this many search results" IDS_GLASS_OVERRIDE "Override glass color" IDS_GLASS_OVERRIDE_TIP "Check this to override the system glass color to use in the menu" - IDS_GLASS_COLOR "Menu glass color" + IDS_GLASS_COLOR "Menu glass color (RRGGBB)" IDS_GLASS_COLOR_TIP "Select the glass color to use in the menu. How much this color affects the menu will depend on the selected skin" IDS_GLASS_INTENSITY "Menu glass intensity" IDS_GLASS_INTENSITY_TIP "Select the intensity (brightness) for the glass color in the menu (0 - dark, 100 - bright)" @@ -1137,37 +1150,45 @@ BEGIN IDS_STRING7024 "Shadows on glass#The text and the arrows in the second column of the main menu will have a drop shadow" IDS_STRING7025 "Opaque" IDS_STRING7026 "Main menu color" - IDS_STRING7027 "Custom color#Select custom color for the main menu" + IDS_STRING7027 "Custom color (RRGGBB)#Select custom color for the main menu" IDS_STRING7028 "Sub-menu color" - IDS_STRING7029 "Custom color#Select custom color for the sub-menus" + IDS_STRING7029 "Custom color (RRGGBB)#Select custom color for the sub-menus" IDS_STRING7030 "Silver" IDS_STRING7031 "Gold" IDS_STRING7032 "Steel" IDS_STRING7033 "Titanium" IDS_STRING7034 "Image for first column#Select custom image for the first column of the main menu" IDS_STRING7035 "Image for second column#Select custom image for the second column of the main menu" - IDS_STRING7036 "Text color for first column#Select custom color for the first column of the main menu text" - IDS_STRING7037 "Text color for second column#Select custom color for the second column of the main menu text" + IDS_STRING7036 "Text color for first column (RRGGBB)#Select custom color for the first column of the main menu text" + IDS_STRING7037 "Text color for second column (RRGGBB)#Select custom color for the second column of the main menu text" IDS_STRING7038 "Text size#Select custom size for the main menu text" + IDS_STRING7039 "Menu theme" + IDS_STRING7040 "Light" + IDS_STRING7041 "Dark" + IDS_STRING7042 "Use system setting" + IDS_STRING7043 "Transparency style" + IDS_STRING7044 "Two-tone#The main section of the menu will use system light/dark colors while additional surfaces use transparent glass with accent color." + IDS_STRING7045 "Full glass#The entire main menu will use transparent glass with accent color." END STRINGTABLE BEGIN - IDS_STRING7100 "This is the default skin when no other skin is selected or if the selected skin fails to load.\n\nPart of Open-Shell (c) 2009-2017, Ivo Beltchev" - IDS_STRING7101 "Windows Aero skin\n\nDefault skin to use for the Windows Aero theme.\n\nPart of Open-Shell (c) 2009-2017, Ivo Beltchev" - IDS_STRING7102 "Windows Basic skin\n\nDefault skin to use for the Windows Basic theme.\n\nPart of Open-Shell (c) 2009-2017, Ivo Beltchev" - IDS_STRING7103 "Classic skin\n\nClassic look with large or small icons.\n\nPart of Open-Shell (c) 2009-2017, Ivo Beltchev" + IDS_STRING7100 "This is the default skin when no other skin is selected or if the selected skin fails to load.\n\nPart of Open-Shell (c) 2009-2017, Ivo Beltchev" + IDS_STRING7101 "Windows Aero skin\n\nDefault skin to use for the Windows Aero theme.\n\nPart of Open-Shell (c) 2009-2017, Ivo Beltchev" + IDS_STRING7102 "Windows Basic skin\n\nDefault skin to use for the Windows Basic theme.\n\nPart of Open-Shell (c) 2009-2017, Ivo Beltchev" + IDS_STRING7103 "Classic skin\n\nClassic look with large or small icons.\n\nPart of Open-Shell (c) 2009-2017, Ivo Beltchev" END STRINGTABLE BEGIN - IDS_STRING7104 "Full Glass skin\n\nTransparent menu with large or small icons.\n\nPart of Open-Shell (c) 2009-2017, Ivo Beltchev" - IDS_STRING7105 "Smoked Glass skin\n\nSimple transparent menu with dark background.\n\nPart of Open-Shell (c) 2009-2017, Ivo Beltchev" - IDS_STRING7106 "Windows XP Luna skin\n\nA start menu similar to the one in Windows XP.\n\nPart of Open-Shell (c) 2009-2017, Ivo Beltchev" - IDS_STRING7107 "Windows 8 skin\n\nDefault skin to use for Windows 8.\n\nPart of Open-Shell (c) 2009-2017, Ivo Beltchev" - IDS_STRING7108 "Midnight skin\n\nSkin with dark background.\n\nPart of Open-Shell (c) 2009-2017, Ivo Beltchev" - IDS_STRING7109 "Metro skin\n\nSkin that uses the start screen colors.\n\nPart of Open-Shell (c) 2009-2017, Ivo Beltchev" - IDS_STRING7110 "Metallic skin\n\nA start menu skin with metallic look.\n\nPart of Open-Shell (c) 2009-2017, Ivo Beltchev" + IDS_STRING7104 "Full Glass skin\n\nTransparent menu with large or small icons.\n\nPart of Open-Shell (c) 2009-2017, Ivo Beltchev" + IDS_STRING7105 "Smoked Glass skin\n\nSimple transparent menu with dark background.\n\nPart of Open-Shell (c) 2009-2017, Ivo Beltchev" + IDS_STRING7106 "Windows XP Luna skin\n\nA start menu similar to the one in Windows XP.\n\nPart of Open-Shell (c) 2009-2017, Ivo Beltchev" + IDS_STRING7107 "Windows 8 skin\n\nDefault skin to use for Windows 8.\n\nPart of Open-Shell (c) 2009-2017, Ivo Beltchev" + IDS_STRING7108 "Midnight skin\n\nSkin with dark background.\n\nPart of Open-Shell (c) 2009-2017, Ivo Beltchev" + IDS_STRING7109 "Metro skin\n\nSkin that uses the start screen colors.\n\nPart of Open-Shell (c) 2009-2017, Ivo Beltchev" + IDS_STRING7110 "Metallic skin\n\nA start menu skin with metallic look.\n\nPart of Open-Shell (c) 2009-2017, Ivo Beltchev" + IDS_STRING7111 "Immersive skin\n\nA skin that uses immersive colors and modern visual elements in the style of Windows 10.\n\nPart of Open-Shell (c) 2023, The Open-Shell Team" END STRINGTABLE @@ -1218,8 +1239,8 @@ BEGIN IDS_SHOW_APPS_MENU_TIP2 "Enable the Apps menu\nWarning: You don't have the Apps item in your custom menu, so this setting will be ignored" IDS_SKIN_ERR_METRO_COLOR "The selected skin is not compatible with Windows 7.\r\n" - IDS_BUTTON_ALIGN "Align to corner of the screen" - IDS_BUTTON_ALIGN_TIP "When this is checked, the button will be aligned to the corner of the screen instead of the middle of the taskbar" + IDS_BUTTON_ALIGN "Align to edge of taskbar" + IDS_BUTTON_ALIGN_TIP "When this is checked, the button will be aligned to the edge the taskbar instead of the middle of the taskbar" IDS_MENU_GLASS2 "Enable menu glass" IDS_MENU_GLASS2_TIP "Check this to use glass transparency in the menu" IDS_GLASS_OPACITY "Glass opacity" @@ -1242,7 +1263,7 @@ BEGIN IDS_TASK_AEROGLASS_TIP "The taskbar will have glass transparency that is compatible with the Aero Glass mod" IDS_TASK_OPACITY "Taskbar opacity" IDS_TASK_OPACITY_TIP "Set the opacity for the taskbar (0 - transparent, 100 - opaque)" - IDS_TASK_COLOR "Taskbar color" + IDS_TASK_COLOR "Taskbar color (RRGGBB)" IDS_TASK_COLOR_TIP "Set the color for the taskbar" IDS_PCSETTINGS "Settings" IDS_PCSETTINGS_TIP "Shows the modern Settings window" @@ -1281,13 +1302,41 @@ BEGIN IDS_TASK_BORDERS "Border sizes" IDS_TASK_BORDERS_TIP "Select how many pixel on each side of the texture to exclude from stretching" IDS_TASKBAR_SETTINGS "Taskbar" - IDS_TASK_TEXTCOLOR "Taskbar text color" + IDS_TASK_TEXTCOLOR "Taskbar text color (RRGGBB)" IDS_TASK_TEXTCOLOR_TIP "Select the color for the text on the taskbar" IDS_SELECT_LAST "Select the last item in shutdown menu" IDS_SELECT_LAST_TIP "When this is checked, the last item will be selected by default when the shutdown menu is opened with the keyboard" IDS_CLEAR_CACHE "Clear cached information" END +STRINGTABLE +BEGIN + IDS_NO_DBLCLICK "Single-click to open folder shortcuts" + IDS_NO_DBLCLICK_TIP "When this is checked, single-clicking shortcuts (links) to folders will open them in explorer. Hovering over the shortcut will still expand sub-menus" + IDS_BOLD_SETTINGS "Highlight modified settings" + IDS_BOLD_SETTINGS_TIP "When this is checked, settings that have been modified will be highlighted in bold" + IDS_SEARCH_HINT "Custom search hint" + IDS_SEARCH_HINT_TIP "When this is checked, the hint text in the search box will be replaced" + IDS_NEW_SEARCH_HINT "Custom search hint text" + IDS_NEW_SEARCH_HINT_TIP "The text to replace the search hint with. Empty text is a valid option" + IDS_MORE_RESULTS "Enable ""See more results"" option" + IDS_MORE_RESULTS_TIP "When this is checked, the search results will include an option to do a more advanced search" + IDS_OPEN_CMD "Custom command" + IDS_OPEN_CMD_TIP "The action will run a user-defined command" + IDS_OPEN_CMD_TEXT "Command to run" + IDS_OPEN_CMD_TEXT_TIP "Enter the command to run when you use this control" + IDS_ITEM_LINKS "Display as a list of links" + IDS_ITEM_LINKS_TIP "This item will appear as a sub-menu showing only its top-level contents" +END + +STRINGTABLE +BEGIN + IDS_OPEN_TRUE_PATH "Open pinned folders to their true path" + IDS_OPEN_TRUE_PATH_TIP "When this is checked, pinned folders will open to their true path instead of the path to their shortcut in the Pinned Programs folder" + IDS_PINNED_PATH "Pinned folder path" + IDS_PINNED_PATH_TIP "The path to use as the Pinned folder. If the path does not exist, it will be created (if possible) after opening the start menu. Close this window after updating this setting to update your context menu.\n\nNote: If you do not have permissions for the selected path, you will not be able to pin items until you take ownership of the new folder" +END + #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/Src/StartMenu/StartMenuDLL/StartMenuDLL.vcxproj b/Src/StartMenu/StartMenuDLL/StartMenuDLL.vcxproj index 3aae1c7c0..b60797b41 100644 --- a/Src/StartMenu/StartMenuDLL/StartMenuDLL.vcxproj +++ b/Src/StartMenu/StartMenuDLL/StartMenuDLL.vcxproj @@ -1,6 +1,10 @@ + + Debug + ARM64 + Debug Win32 @@ -9,6 +13,10 @@ Debug x64 + + Release + ARM64 + Release Win32 @@ -17,6 +25,10 @@ Release x64 + + Setup + ARM64 + Setup Win32 @@ -30,261 +42,29 @@ {85DEECBB-1F9B-4983-9D54-3BF42182B7E7} StartMenuDLL Win32Proj - 10.0.17134.0 + 10.0 - - DynamicLibrary - v141 - Static - Unicode - true - - - DynamicLibrary - v141 - Static - Unicode - true - - - DynamicLibrary - v141 - Static - Unicode - - - DynamicLibrary - v141 - Static - Unicode - true - - - DynamicLibrary - v141 - Static - Unicode - true - - + DynamicLibrary - v141 + $(DefaultPlatformToolset) Static Unicode + true - - - - - - - - - - - - - - - - - - - - - - - + + - - ..\$(Configuration)\ - $(Configuration)\ - true - - - ..\$(Configuration)64\ - $(Configuration)64\ - true - - - ..\$(Configuration)\ - $(Configuration)\ - false - - - ..\$(Configuration)64\ - $(Configuration)64\ - false - - - ..\$(Configuration)\ - $(Configuration)\ - false - - - ..\$(Configuration)64\ - $(Configuration)64\ - false - - - - Disabled - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;_USRDLL;CLASSICSTARTMENUDLL_EXPORTS;%(PreprocessorDefinitions) - false - EnableFastChecks - MultiThreadedDebug - Use - Level3 - EditAndContinue - true - true - stdcpp17 - - - _DEBUG;%(PreprocessorDefinitions) - $(IntDir);..\..\Lib;%(AdditionalIncludeDirectories) - - - comctl32.lib;uxtheme.lib;WtsApi32.lib;Secur32.lib;Msimg32.lib;Netapi32.lib;dwmapi.lib;PowrProf.lib;Oleacc.lib;winmm.lib;htmlhelp.lib;wininet.lib;structuredquery.lib;Propsys.lib;wintrust.lib;crypt32.lib;%(AdditionalDependencies) - true - Windows - - - - - Disabled - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;_USRDLL;CLASSICSTARTMENUDLL_EXPORTS;%(PreprocessorDefinitions) - false - EnableFastChecks - MultiThreadedDebug - Use - Level3 - ProgramDatabase - true - true - stdcpp17 - - - _DEBUG;%(PreprocessorDefinitions) - $(IntDir);..\..\Lib;%(AdditionalIncludeDirectories) - - - comctl32.lib;uxtheme.lib;WtsApi32.lib;Secur32.lib;Msimg32.lib;Netapi32.lib;dwmapi.lib;PowrProf.lib;Oleacc.lib;winmm.lib;htmlhelp.lib;wininet.lib;structuredquery.lib;Propsys.lib;wintrust.lib;crypt32.lib;%(AdditionalDependencies) - true - Windows - - - - - MaxSpeed - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;_USRDLL;CLASSICSTARTMENUDLL_EXPORTS;%(PreprocessorDefinitions) - MultiThreaded - true - Use - Level3 - ProgramDatabase - true - true - stdcpp17 - - - NDEBUG;%(PreprocessorDefinitions) - $(IntDir);..\..\Lib;%(AdditionalIncludeDirectories) - - - comctl32.lib;uxtheme.lib;WtsApi32.lib;Secur32.lib;Msimg32.lib;Netapi32.lib;dwmapi.lib;PowrProf.lib;Oleacc.lib;winmm.lib;htmlhelp.lib;wininet.lib;structuredquery.lib;Propsys.lib;wintrust.lib;crypt32.lib;%(AdditionalDependencies) - true - Windows - true - true - - - - - MaxSpeed - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;_USRDLL;CLASSICSTARTMENUDLL_EXPORTS;%(PreprocessorDefinitions) - MultiThreaded - true - Use - Level3 - ProgramDatabase - true - true - stdcpp17 - - - NDEBUG;%(PreprocessorDefinitions) - $(IntDir);..\..\Lib;%(AdditionalIncludeDirectories) - - - comctl32.lib;uxtheme.lib;WtsApi32.lib;Secur32.lib;Msimg32.lib;Netapi32.lib;dwmapi.lib;PowrProf.lib;Oleacc.lib;winmm.lib;htmlhelp.lib;wininet.lib;structuredquery.lib;Propsys.lib;wintrust.lib;crypt32.lib;%(AdditionalDependencies) - true - Windows - true - true - - - - - MaxSpeed - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;_USRDLL;CLASSICSTARTMENUDLL_EXPORTS;BUILD_SETUP;%(PreprocessorDefinitions) - MultiThreaded - true - Use - Level3 - true - ProgramDatabase - true - true - stdcpp17 - - - NDEBUG;%(PreprocessorDefinitions) - $(IntDir);..\..\Lib;%(AdditionalIncludeDirectories) - - - comctl32.lib;uxtheme.lib;WtsApi32.lib;Secur32.lib;Msimg32.lib;Netapi32.lib;dwmapi.lib;PowrProf.lib;Oleacc.lib;winmm.lib;htmlhelp.lib;wininet.lib;structuredquery.lib;Propsys.lib;wintrust.lib;crypt32.lib;%(AdditionalDependencies) - true - Windows - true - true - - - + - MaxSpeed - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;_USRDLL;CLASSICSTARTMENUDLL_EXPORTS;BUILD_SETUP;%(PreprocessorDefinitions) - MultiThreaded - true - Use - Level3 - true - ProgramDatabase - true - true - stdcpp17 + _USRDLL;CLASSICSTARTMENUDLL_EXPORTS;%(PreprocessorDefinitions) - - NDEBUG;%(PreprocessorDefinitions) - $(IntDir);..\..\Lib;%(AdditionalIncludeDirectories) - comctl32.lib;uxtheme.lib;WtsApi32.lib;Secur32.lib;Msimg32.lib;Netapi32.lib;dwmapi.lib;PowrProf.lib;Oleacc.lib;winmm.lib;htmlhelp.lib;wininet.lib;structuredquery.lib;Propsys.lib;wintrust.lib;crypt32.lib;%(AdditionalDependencies) - true - Windows - true - true diff --git a/Src/StartMenu/StartMenuDLL/apps10.ico b/Src/StartMenu/StartMenuDLL/apps10.ico new file mode 100644 index 000000000..b36b27413 Binary files /dev/null and b/Src/StartMenu/StartMenuDLL/apps10.ico differ diff --git a/Src/StartMenu/StartMenuDLL/apps11.ico b/Src/StartMenu/StartMenuDLL/apps11.ico new file mode 100644 index 000000000..59ac8437e Binary files /dev/null and b/Src/StartMenu/StartMenuDLL/apps11.ico differ diff --git a/Src/StartMenu/StartMenuDLL/btn_classic.bmp b/Src/StartMenu/StartMenuDLL/btn_classic.bmp index 82624b0ad..4afd0f815 100644 Binary files a/Src/StartMenu/StartMenuDLL/btn_classic.bmp and b/Src/StartMenu/StartMenuDLL/btn_classic.bmp differ diff --git a/Src/StartMenu/StartMenuDLL/dllmain.cpp b/Src/StartMenu/StartMenuDLL/dllmain.cpp index df2a24e30..89f40af76 100644 --- a/Src/StartMenu/StartMenuDLL/dllmain.cpp +++ b/Src/StartMenu/StartMenuDLL/dllmain.cpp @@ -45,11 +45,6 @@ static int g_LoadDialogs[]= 0 }; -const wchar_t *GetDocRelativePath( void ) -{ - return DOC_PATH; -} - static HANDLE g_DllInitThread; static DWORD CALLBACK DllInitThread( void* ) @@ -62,7 +57,7 @@ static DWORD CALLBACK DllInitThread( void* ) *PathFindFileName(path)=0; wchar_t fname[_MAX_PATH]; - Sprintf(fname,_countof(fname),L"%s" INI_PATH L"StartMenuL10N.ini",path); + Sprintf(fname,_countof(fname),L"%sStartMenuL10N.ini",path); CString language=GetSettingString(L"Language"); ParseTranslations(fname,language); diff --git a/Src/StartMenu/StartMenuDLL/resource.h b/Src/StartMenu/StartMenuDLL/resource.h index 0aed48692..3e5a633ca 100644 --- a/Src/StartMenu/StartMenuDLL/resource.h +++ b/Src/StartMenu/StartMenuDLL/resource.h @@ -4,6 +4,8 @@ // #define IDI_APPICON 1 #define IDI_APPSICON 2 +#define IDI_APPSICON10 3 +#define IDI_APPSICON11 4 #define IDD_RENAME 102 #define IDC_EDITNAME 102 #define IDD_RENAMER 103 @@ -754,6 +756,36 @@ #define IDS_SELECT_LAST 3657 #define IDS_SELECT_LAST_TIP 3658 #define IDS_CLEAR_CACHE 3659 +#define IDS_ALIGN_WORK_AREA 3660 +#define IDS_ALIGN_WORK_AREA_TIP 3661 +#define IDS_HOR_OFFSET 3662 +#define IDS_HOR_OFFSET_TIP 3663 +#define IDS_VERT_OFFSET 3664 +#define IDS_VERT_OFFSET_TIP 3665 +#define IDS_NO_DBLCLICK 3666 +#define IDS_NO_DBLCLICK_TIP 3667 +#define IDS_BOLD_SETTINGS 3668 +#define IDS_BOLD_SETTINGS_TIP 3669 +#define IDS_SEARCH_HINT 3670 +#define IDS_SEARCH_HINT_TIP 3671 +#define IDS_NEW_SEARCH_HINT 3672 +#define IDS_NEW_SEARCH_HINT_TIP 3673 +#define IDS_MORE_RESULTS 3674 +#define IDS_MORE_RESULTS_TIP 3675 +#define IDS_OPEN_CMD 3676 +#define IDS_OPEN_CMD_TIP 3677 +#define IDS_OPEN_CMD_TEXT 3678 +#define IDS_OPEN_CMD_TEXT_TIP 3679 +#define IDS_ITEM_LINKS 3680 +#define IDS_ITEM_LINKS_TIP 3681 +#define IDS_OPEN_TRUE_PATH 3682 +#define IDS_OPEN_TRUE_PATH_TIP 3683 +#define IDS_PINNED_PATH 3684 +#define IDS_PINNED_PATH_TIP 3685 +#define IDS_ENABLE_ACCELERATORS 3686 +#define IDS_ENABLE_ACCELERATORS_TIP 3687 +#define IDS_ALT_ACCELERATORS 3688 +#define IDS_ALT_ACCELERATORS_TIP 3689 #define IDS_STRING7001 7001 #define IDS_STRING7002 7002 #define IDS_STRING7003 7003 @@ -792,6 +824,13 @@ #define IDS_STRING7036 7036 #define IDS_STRING7037 7037 #define IDS_STRING7038 7038 +#define IDS_STRING7039 7039 +#define IDS_STRING7040 7040 +#define IDS_STRING7041 7041 +#define IDS_STRING7042 7042 +#define IDS_STRING7043 7043 +#define IDS_STRING7044 7044 +#define IDS_STRING7045 7045 #define IDS_STRING7100 7100 #define IDS_STRING7101 7101 #define IDS_STRING7102 7102 @@ -803,6 +842,7 @@ #define IDS_STRING7108 7108 #define IDS_STRING7109 7109 #define IDS_STRING7110 7110 +#define IDS_STRING7111 7111 // Next default values for new objects // diff --git a/Src/StartMenu/StartMenuDLL/stdafx.h b/Src/StartMenu/StartMenuDLL/stdafx.h index 47dbfcc7f..30cf4c9ac 100644 --- a/Src/StartMenu/StartMenuDLL/stdafx.h +++ b/Src/StartMenu/StartMenuDLL/stdafx.h @@ -14,6 +14,7 @@ #include #include +#define _ATL_MODULES // compatibility with /permissive- #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit #include @@ -21,14 +22,6 @@ #include #include -#ifdef BUILD_SETUP -#define INI_PATH L"" -#define DOC_PATH L"" -#else -#define INI_PATH L"..\\" -#define DOC_PATH L"..\\..\\Docs\\Help\\" -#endif - #include "StringUtils.h" #include "TrackResources.h" #include "Assert.h" diff --git a/Src/StartMenu/StartMenuDLL/style_7.bmp b/Src/StartMenu/StartMenuDLL/style_7.bmp deleted file mode 100644 index 7514cbbff..000000000 Binary files a/Src/StartMenu/StartMenuDLL/style_7.bmp and /dev/null differ diff --git a/Src/StartMenu/StartMenuDLL/style_7.png b/Src/StartMenu/StartMenuDLL/style_7.png new file mode 100644 index 000000000..a8ac2f8de Binary files /dev/null and b/Src/StartMenu/StartMenuDLL/style_7.png differ diff --git a/Src/StartMenu/StartMenuDLL/style_7150.bmp b/Src/StartMenu/StartMenuDLL/style_7150.bmp deleted file mode 100644 index 996c3d3cf..000000000 Binary files a/Src/StartMenu/StartMenuDLL/style_7150.bmp and /dev/null differ diff --git a/Src/StartMenu/StartMenuDLL/style_7150.png b/Src/StartMenu/StartMenuDLL/style_7150.png new file mode 100644 index 000000000..a8c19dd90 Binary files /dev/null and b/Src/StartMenu/StartMenuDLL/style_7150.png differ diff --git a/Src/StartMenu/StartMenuDLL/style_classic.bmp b/Src/StartMenu/StartMenuDLL/style_classic.bmp deleted file mode 100644 index a177e4e7b..000000000 Binary files a/Src/StartMenu/StartMenuDLL/style_classic.bmp and /dev/null differ diff --git a/Src/StartMenu/StartMenuDLL/style_classic.png b/Src/StartMenu/StartMenuDLL/style_classic.png new file mode 100644 index 000000000..80fcef112 Binary files /dev/null and b/Src/StartMenu/StartMenuDLL/style_classic.png differ diff --git a/Src/StartMenu/StartMenuDLL/style_classic150.bmp b/Src/StartMenu/StartMenuDLL/style_classic150.bmp deleted file mode 100644 index a53836eaa..000000000 Binary files a/Src/StartMenu/StartMenuDLL/style_classic150.bmp and /dev/null differ diff --git a/Src/StartMenu/StartMenuDLL/style_classic150.png b/Src/StartMenu/StartMenuDLL/style_classic150.png new file mode 100644 index 000000000..1b74a957d Binary files /dev/null and b/Src/StartMenu/StartMenuDLL/style_classic150.png differ diff --git a/Src/StartMenu/StartMenuDLL/style_vista.bmp b/Src/StartMenu/StartMenuDLL/style_vista.bmp deleted file mode 100644 index fc868951c..000000000 Binary files a/Src/StartMenu/StartMenuDLL/style_vista.bmp and /dev/null differ diff --git a/Src/StartMenu/StartMenuDLL/style_vista.png b/Src/StartMenu/StartMenuDLL/style_vista.png new file mode 100644 index 000000000..70ef1e960 Binary files /dev/null and b/Src/StartMenu/StartMenuDLL/style_vista.png differ diff --git a/Src/StartMenu/StartMenuDLL/style_vista150.bmp b/Src/StartMenu/StartMenuDLL/style_vista150.bmp deleted file mode 100644 index 2f6992561..000000000 Binary files a/Src/StartMenu/StartMenuDLL/style_vista150.bmp and /dev/null differ diff --git a/Src/StartMenu/StartMenuDLL/style_vista150.png b/Src/StartMenu/StartMenuDLL/style_vista150.png new file mode 100644 index 000000000..c20897267 Binary files /dev/null and b/Src/StartMenu/StartMenuDLL/style_vista150.png differ diff --git a/Src/StartMenu/StartMenuHelper/ModernSettings.cpp b/Src/StartMenu/StartMenuHelper/ModernSettings.cpp new file mode 100644 index 000000000..5e6232427 --- /dev/null +++ b/Src/StartMenu/StartMenuHelper/ModernSettings.cpp @@ -0,0 +1,554 @@ +// Modern settings helper + +// - parse modern settings definitions from %windir%\ImmersiveControlPanel\Settings\AllSystemSettings_{253E530E-387D-4BC2-959D-E6F86122E5F2}.xml +// - store cached data (parsed settings, localized strings) in %LOCALAPPDATA%\OpenShell\ModernSettings.dat +// - provide mapped view over cached data + +#include "stdafx.h" +#include "ModernSettings.h" +#include "ResourceHelper.h" +#include +#include +#include +#include +#include +#include +#include + +enum class Id : uint32_t +{ + Header = 'SMSO', + Undef = 0, + Blob, + FileName, + DeepLink, + Icon, + Glyph, + PageId, + HostId, + GroupId, + SettingId, + Description, + Keywords, +}; + +#pragma pack(1) +struct FileHdr +{ + uint32_t openShellVersion = GetVersionEx(g_Instance); + uint32_t windowsVersion = GetVersionEx(GetModuleHandle(L"user32.dll")); + uint32_t userLanguageId = GetUserDefaultUILanguage(); + + bool operator==(const FileHdr& other) const + { + return (windowsVersion == other.windowsVersion) && + (openShellVersion == other.openShellVersion) && + (userLanguageId == other.userLanguageId); + } +}; + +struct ItemHdr +{ + Id id; + uint32_t size; + + const uint8_t* data() const + { + return (const uint8_t*)this + sizeof(*this); + } + + const ItemHdr* next() const + { + return (const ItemHdr*)(data() + size); + } + + std::wstring_view asString() const + { + std::wstring_view retval((const wchar_t*)data(), size / sizeof(wchar_t)); + if (!retval.empty() && retval.back() == 0) + { + retval.remove_suffix(1); + return retval; + } + + return {}; + } +}; +#pragma pack() + +class AttributeWriter +{ +public: + std::vector buffer() + { + return std::move(m_buffer); + } + + void addBlob(Id id, const void* data, size_t size) + { + ItemHdr hdr{ id, (uint32_t)size }; + append(&hdr, sizeof(hdr)); + append(data, size); + } + + void addString(Id id, const std::wstring& str) + { + if (!str.empty()) + addBlob(id, str.data(), (str.size() + 1) * sizeof(str[0])); + } + +private: + void append(const void* data, size_t size) + { + m_buffer.insert(m_buffer.end(), (const uint8_t*)data, (const uint8_t*)data + size); + } + + std::vector m_buffer; +}; + +static void ProcessAttributes(const void* buffer, size_t size, std::function callback) +{ + if (size < sizeof(ItemHdr)) + return; + + auto item = (const ItemHdr*)buffer; + auto last = (const ItemHdr*)((const uint8_t*)buffer + size); + + while (item < last) + { + auto next = item->next(); + if (next <= item || next > last) + break; + + callback(*item); + + item = next; + } +} + +/// + +static std::wstring GetPackageFullName(const wchar_t* packageFamily) +{ + static auto pGetPackagesByPackageFamily = static_cast((void*)GetProcAddress(GetModuleHandle(L"kernel32.dll"), "GetPackagesByPackageFamily")); + if (pGetPackagesByPackageFamily) + { + UINT32 count = 0; + UINT32 bufferLength = 0; + + if (pGetPackagesByPackageFamily(packageFamily, &count, nullptr, &bufferLength, nullptr) == ERROR_INSUFFICIENT_BUFFER && count > 0) + { + std::vector names(count); + std::vector buffer(bufferLength); + + if (pGetPackagesByPackageFamily(packageFamily, &count, names.data(), &bufferLength, buffer.data()) == ERROR_SUCCESS && count > 0) + return names[0]; + } + } + + return {}; +} + +static std::pair ParseResourceString(const wchar_t* resourceString) +{ + std::wstring_view str = resourceString; + + if (str[0] == '@' && str[1] == '{') + { + str.remove_prefix(2); + if (str.back() == '}') + str.remove_suffix(1); + + auto pos = str.find('?'); + if (pos != str.npos) + return { str.substr(0, pos), str.substr(pos + 1) }; + } + + return {}; +} + +static std::wstring FormatResourceString(const std::wstring_view& package, const std::wstring_view& resource) +{ + std::wstring retval(L"@{"); + + retval += package; + retval += L"?"; + retval += resource; + retval += L"}"; + + return retval; +} + + +static std::wstring TranslateIndirectString(const WCHAR* string) +{ + std::wstring retval; + retval.resize(1024); + + auto hr = ::SHLoadIndirectString(string, retval.data(), (UINT)retval.size(), nullptr); + + if (hr == E_INVALIDARG) + { + auto [package, resource] = ParseResourceString(string); + if (!package.empty() && !resource.empty()) + { + auto fullPackage = GetPackageFullName(std::wstring(package).c_str()); + if (!fullPackage.empty()) + { + auto fullStr = FormatResourceString(fullPackage, resource); + hr = ::SHLoadIndirectString(fullStr.c_str(), retval.data(), (UINT)retval.size(), nullptr); + } + } + } + + if (SUCCEEDED(hr)) + { + retval.resize(wcslen(retval.data())); + return retval; + } + + return {}; +} + +static std::wstring TranslateIndirectMultiString(const WCHAR* string) +{ + std::wstring retval; + std::wstring_view str(string); + + // remove '@' + str.remove_prefix(1); + + while (!str.empty()) + { + auto len = str.find(L'@', 1); + if (len == std::wstring::npos) + len = str.length(); + + std::wstring tmp(str.substr(0, len)); + retval += TranslateIndirectString(tmp.c_str()); + + str.remove_prefix(len); + } + + return retval; +} + +static std::wstring GetTranslatedString(CComPtr& parent, const WCHAR* name) +{ + CComPtr node; + if (parent->selectSingleNode(CComBSTR(name), &node) == S_OK) + { + CComBSTR value; + if (node->get_text(&value) == S_OK) + { + if (value[0] == L'@') + { + if (value[1] == L'@') + return TranslateIndirectMultiString(value); + else + return TranslateIndirectString(value); + } + else + { + return (LPWSTR)value; + } + } + } + + return {}; +} + +static void ParseFileName(CComPtr& parent, AttributeWriter& writer) +{ + writer.addString(Id::FileName, GetTranslatedString(parent, L"Filename")); +} + +static void ParseApplicationInformation(CComPtr& parent, AttributeWriter& writer) +{ + CComPtr node; + if (parent->selectSingleNode(CComBSTR(L"ApplicationInformation"), &node) == S_OK) + { + writer.addString(Id::DeepLink, GetTranslatedString(node, L"DeepLink")); + writer.addString(Id::Icon, GetTranslatedString(node, L"Icon")); + writer.addString(Id::Glyph, GetTranslatedString(node, L"Glyph")); + } +} + +static void ParseSettingIDs(CComPtr& node, AttributeWriter& writer) +{ + writer.addString(Id::PageId, GetTranslatedString(node, L"PageID")); + writer.addString(Id::HostId, GetTranslatedString(node, L"HostID")); + writer.addString(Id::GroupId, GetTranslatedString(node, L"GroupID")); + writer.addString(Id::SettingId, GetTranslatedString(node, L"SettingID")); +} + +static void ParseSettingPaths(CComPtr& parent, AttributeWriter& writer) +{ + CComPtr node; + if (parent->selectSingleNode(CComBSTR(L"SettingPaths/Path"), &node) == S_OK) + ParseSettingIDs(node, writer); +} + +static void ParseSettingIdentity(CComPtr& parent, AttributeWriter& writer) +{ + CComPtr node; + if (parent->selectSingleNode(CComBSTR(L"SettingIdentity"), &node) == S_OK) + { + // Win11 24H2+ + ParseSettingPaths(node, writer); + // older + ParseSettingIDs(node, writer); + } +} + +static void ParseSettingInformation(CComPtr& parent, AttributeWriter& writer) +{ + CComPtr node; + if (parent->selectSingleNode(CComBSTR(L"SettingInformation"), &node) == S_OK) + { + auto description = GetTranslatedString(node, L"Description"); + if (description.empty()) + description = GetTranslatedString(node, L"Name"); + + writer.addString(Id::Description, description); + + auto keywords = GetTranslatedString(node, L"HighKeywords"); + keywords += GetTranslatedString(node, L"LowKeywords"); + keywords += GetTranslatedString(node, L"Keywords"); + + writer.addString(Id::Keywords, keywords); + } +} + +static std::vector ParseSetting(CComPtr& parent) +{ + AttributeWriter writer; + + ParseFileName(parent, writer); + ParseApplicationInformation(parent, writer); + ParseSettingIdentity(parent, writer); + ParseSettingInformation(parent, writer); + + return writer.buffer(); +} + +static std::vector> ParseModernSettings() +{ + std::vector> retval; + + CComPtr doc; + if (SUCCEEDED(doc.CoCreateInstance(L"Msxml2.FreeThreadedDOMDocument"))) + { + doc->put_async(VARIANT_FALSE); + + wchar_t path[MAX_PATH]{}; + wcscpy_s(path, LR"(%windir%\ImmersiveControlPanel\Settings\AllSystemSettings_{FDB289F3-FCFC-4702-8015-18926E996EC1}.xml)"); + DoEnvironmentSubst(path, _countof(path)); + + if (!PathFileExists(path)) + { + wcscpy_s(path, LR"(%windir%\ImmersiveControlPanel\Settings\AllSystemSettings_{253E530E-387D-4BC2-959D-E6F86122E5F2}.xml)"); + DoEnvironmentSubst(path, _countof(path)); + } + + VARIANT_BOOL loaded; + if (SUCCEEDED(doc->load(CComVariant(path), &loaded)) && loaded) + { + CComPtr root; + if (doc->selectSingleNode(CComBSTR(L"PCSettings"), &root) == S_OK) + { + CComPtr node; + root->get_firstChild(&node); + while (node) + { + auto buffer = ParseSetting(node); + if (!buffer.empty()) + retval.push_back(std::move(buffer)); + + CComPtr next; + if (FAILED(node->get_nextSibling(&next))) + break; + node = std::move(next); + } + } + } + } + + return retval; +} + +static std::vector SerializeModernSettings(const std::vector>& settings) +{ + AttributeWriter writer; + + FileHdr hdr{}; + writer.addBlob(Id::Header, &hdr, sizeof(hdr)); + + for (const auto& setting : settings) + writer.addBlob(Id::Blob, setting.data(), setting.size()); + + return writer.buffer(); +} + +ModernSettings::ModernSettings(const wchar_t* fname) : m_storage(fname) +{ + if (m_storage) + { + bool valid = false; + auto s = m_storage.get(); + ProcessAttributes(s.data, s.size, [&](const ItemHdr& item) { + switch (item.id) + { + case Id::Header: + if (item.size >= sizeof(FileHdr)) + { + const auto hdr = (const FileHdr*)item.data(); + if (FileHdr() == *hdr) + valid = true; + } + break; + case Id::Blob: + if (valid) + { + const Blob blob = { item.data(), item.size }; + ModernSettings::Setting s(blob); + if (s) + m_settings.emplace(s.fileName, blob); + } + break; + } + }); + } +} + +ModernSettings::Setting::Setting(const Blob& blob) +{ + ProcessAttributes(blob.data, blob.size, [&](const ItemHdr& item) { + switch (item.id) + { + case Id::FileName: + fileName = item.asString(); + break; + case Id::DeepLink: + deepLink = item.asString(); + break; + case Id::Glyph: + glyph = item.asString(); + break; + case Id::Icon: + icon = item.asString(); + break; + case Id::PageId: + pageId = item.asString(); + break; + case Id::HostId: + hostId = item.asString(); + break; + case Id::GroupId: + groupId = item.asString(); + break; + case Id::SettingId: + settingId = item.asString(); + break; + case Id::Description: + description = item.asString();; + break; + case Id::Keywords: + keywords = item.asString(); + break; + } + }); +} + +std::vector ModernSettings::enumerate() const +{ + std::vector retval; + retval.reserve(m_settings.size()); + + for (const auto& i : m_settings) + retval.emplace_back(i.first); + + return retval; +} + +ModernSettings::Setting ModernSettings::get(const std::wstring_view& name) const +{ + auto it = m_settings.find(name); + if (it != m_settings.end()) + return { (*it).second }; + + return {}; +} + +static std::mutex s_lock; +static std::shared_ptr s_settings; + +std::wstring GetLocalAppData() +{ + WCHAR path[MAX_PATH]{}; + wcscpy_s(path, L"%LOCALAPPDATA%\\OpenShell"); + DoEnvironmentSubst(path, _countof(path)); + + // make sure directory exists + SHCreateDirectory(nullptr, path); + + return { path }; +} + +std::shared_ptr GetModernSettings() +{ + std::unique_lock l(s_lock); + + if (!s_settings) + { + auto path = GetLocalAppData(); + path += L"\\ModernSettings.dat"; + + // try to open cached settings + s_settings = std::make_shared(path.c_str()); + if (s_settings->size() == 0) + { + // file doesn't exist or wrong format + s_settings.reset(); + + // re-parse settings + auto settings = ParseModernSettings(); + if (!settings.empty()) + { + // sort by setting name (in reverse order) + // this way we will have newer settings (like SomeSetting-2) before older ones + std::stable_sort(settings.begin(), settings.end(), [](const auto& a, const auto& b) { + return ModernSettings::Setting(a).fileName > ModernSettings::Setting(b).fileName; + }); + + // now sort by description (strings presented to the user) + // and keep relative order of items with the same description + std::stable_sort(settings.begin(), settings.end(), [](const auto& a, const auto& b) { + return ModernSettings::Setting(a).description < ModernSettings::Setting(b).description; + }); + + // remove duplicates + settings.erase(std::unique(settings.begin(), settings.end(), [](const auto& a, const auto& b) { + return ModernSettings::Setting(a).description == ModernSettings::Setting(b).description; + }), settings.end()); + + // store to file + { + auto buffer = SerializeModernSettings(settings); + + File f(path.c_str(), GENERIC_WRITE, 0, CREATE_ALWAYS); + if (f) + { + DWORD written; + ::WriteFile(f, buffer.data(), (DWORD)buffer.size(), &written, nullptr); + } + } + + // and try again + s_settings = std::make_shared(path.c_str()); + } + } + } + + return s_settings; +} diff --git a/Src/StartMenu/StartMenuHelper/ModernSettings.h b/Src/StartMenu/StartMenuHelper/ModernSettings.h new file mode 100644 index 000000000..16fa9c378 --- /dev/null +++ b/Src/StartMenu/StartMenuHelper/ModernSettings.h @@ -0,0 +1,141 @@ +// Modern settings helper + +#pragma once + +#include +#include +#include +#include +#include + +struct Blob +{ + const void* data = nullptr; + size_t size = 0; +}; + +class File +{ +public: + File(const WCHAR* fileName, DWORD desiredAccess, DWORD shareMode, DWORD creationDisposition = OPEN_EXISTING, DWORD flagsAndAttributes = FILE_ATTRIBUTE_NORMAL) + { + m_handle = ::CreateFile(fileName, desiredAccess, shareMode, nullptr, creationDisposition, flagsAndAttributes, nullptr); + } + + ~File() + { + if (m_handle != INVALID_HANDLE_VALUE) + ::CloseHandle(m_handle); + } + + File(const File&) = delete; + File& operator=(const File&) = delete; + + explicit operator bool() const + { + return (m_handle != INVALID_HANDLE_VALUE); + } + + operator HANDLE() const + { + return m_handle; + } + + uint64_t size() const + { + LARGE_INTEGER li = {}; + return ::GetFileSizeEx(m_handle, &li) ? li.QuadPart : (uint64_t)-1; + } + +private: + HANDLE m_handle; +}; + +class MappedFile +{ +public: + MappedFile(const WCHAR* fileName) : m_file(fileName, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_DELETE) + { + if (m_file) + { + auto mapping = ::CreateFileMapping(m_file, nullptr, PAGE_READONLY, 0, 0, nullptr); + if (mapping) + { + m_view.data = ::MapViewOfFile(mapping, FILE_MAP_READ, 0, 0, 0); + if (m_view.data) + m_view.size = (size_t)m_file.size(); + + ::CloseHandle(mapping); + } + } + } + + ~MappedFile() + { + if (m_view.data) + ::UnmapViewOfFile(m_view.data); + } + + MappedFile(const MappedFile&) = delete; + MappedFile& operator=(const MappedFile&) = delete; + + explicit operator bool() const + { + return (m_view.data != nullptr); + } + + Blob get() const + { + return m_view; + } + +private: + File m_file; + Blob m_view; +}; + +class ModernSettings +{ +public: + ModernSettings(const wchar_t* fname); + + size_t size() const + { + return m_settings.size(); + } + + struct Setting + { + std::wstring_view fileName; + + std::wstring_view deepLink; + std::wstring_view icon; + std::wstring_view glyph; + + std::wstring_view pageId; + std::wstring_view hostId; + std::wstring_view groupId; + std::wstring_view settingId; + std::wstring_view description; + std::wstring_view keywords; + + Setting() = default; + Setting(const Blob& blob); + Setting(const std::vector& blob) : Setting(Blob{ blob.data(), blob.size() }) {} + + explicit operator bool() const + { + return !fileName.empty(); + } + }; + + std::vector enumerate() const; + Setting get(const std::wstring_view& name) const; + +private: + MappedFile m_storage; + std::map m_settings; +}; + +// retrieve actual instance of ModernSettings +std::shared_ptr GetModernSettings(); diff --git a/Src/StartMenu/StartMenuHelper/ModernSettingsContextMenu.cpp b/Src/StartMenu/StartMenuHelper/ModernSettingsContextMenu.cpp new file mode 100644 index 000000000..44bf38987 --- /dev/null +++ b/Src/StartMenu/StartMenuHelper/ModernSettingsContextMenu.cpp @@ -0,0 +1,210 @@ +// Context menu handler for Open-Shell Modern Settings shell folder + +// Based on Explorer Data Provider Sample (https://docs.microsoft.com/en-us/windows/win32/shell/samples-explorerdataprovider) + +#include "stdafx.h" +#include "ModernSettings.h" +#include "ModernSettingsContextMenu.h" +#include "ComHelper.h" + +#define MENUVERB_OPEN 0 + +struct ICIVERBTOIDMAP +{ + LPCWSTR pszCmd; // verbW + LPCSTR pszCmdA; // verbA + UINT idCmd; // hmenu id +}; + +static const ICIVERBTOIDMAP g_ContextMenuIDMap[] = +{ + { L"open", "open", MENUVERB_OPEN }, +}; + +HRESULT _MapICIVerbToCmdID(LPCMINVOKECOMMANDINFO pici, UINT* pid) +{ + if (IS_INTRESOURCE(pici->lpVerb)) + { + *pid = LOWORD((UINT_PTR)pici->lpVerb); + return S_OK; + } + + if (pici->fMask & CMIC_MASK_UNICODE) + { + for (const auto& i : g_ContextMenuIDMap) + { + if (StrCmpIC(((LPCMINVOKECOMMANDINFOEX)pici)->lpVerbW, i.pszCmd) == 0) + { + *pid = i.idCmd; + return S_OK; + } + } + } + else + { + for (const auto& i : g_ContextMenuIDMap) + { + if (StrCmpICA(pici->lpVerb, i.pszCmdA) == 0) + { + *pid = i.idCmd; + return S_OK; + } + } + } + + return E_FAIL; +} + +static bool ActivateModernSettingPage(const WCHAR* page) +{ + CComPtr mgr; + mgr.CoCreateInstance(CLSID_ApplicationActivationManager); + if (mgr) + { + DWORD pid = 0; + return SUCCEEDED(mgr->ActivateApplication(L"windows.immersivecontrolpanel_cw5n1h2txyewy!microsoft.windows.immersivecontrolpanel", page, AO_NONE, &pid)); + } + + return false; +} + +extern ModernSettings::Setting GetModernSetting(LPCITEMIDLIST pidl); + +static HRESULT Execute(const wchar_t* cmd) +{ + return (intptr_t)::ShellExecute(nullptr, L"open", cmd, nullptr, nullptr, SW_SHOWNORMAL) > 32 ? S_OK : E_FAIL; +} + +static HRESULT OpenItemByPidl(LPCITEMIDLIST pidl) +{ + auto child = ILFindLastID(pidl); + auto setting = GetModernSetting(child); + + if (!setting) + return E_INVALIDARG; + + if (setting.hostId == L"{6E6DDBCB-9C89-434B-A994-D5F22239523B}") + { + if (setting.deepLink.empty()) + return E_INVALIDARG; + + std::wstring cmd(L"windowsdefender://"); + cmd += setting.deepLink; + + return Execute(cmd.c_str()); + } + + if (setting.hostId == L"{7E0522FC-1AC4-41CA-AFD0-3610417A9C41}") + { + if (setting.pageId.empty()) + return E_INVALIDARG; + + std::wstring cmd(L"shell:::"); + cmd += setting.pageId; + + return Execute(cmd.c_str()); + } + + if (setting.hostId == L"{12B1697E-D3A0-4DBC-B568-CCF64A3F934D}") + { + if (setting.deepLink.empty()) + return E_INVALIDARG; + + std::wstring cmd(setting.deepLink); + + if (cmd.compare(0, 8, L"shell:::") == 0) + return Execute(cmd.c_str()); + + cmd.resize(MAX_PATH); + DoEnvironmentSubst(cmd.data(), (UINT)cmd.size()); + + STARTUPINFO startupInfo = { sizeof(startupInfo) }; + PROCESS_INFORMATION processInfo{}; + + if (!CreateProcess(nullptr, cmd.data(), nullptr, nullptr, FALSE, 0, nullptr, nullptr, &startupInfo, &processInfo)) + return E_FAIL; + + CloseHandle(processInfo.hThread); + CloseHandle(processInfo.hProcess); + + return S_OK; + } + + if (setting.pageId.empty()) + return E_INVALIDARG; + + std::wstring page; + + page += L"page="; + page += setting.pageId; + + if (!setting.settingId.empty()) + { + page += L"&target="; + page += setting.settingId; + } + else if (!setting.groupId.empty()) + { + page += L"&group="; + page += setting.groupId; + } + + page += L"&ActivationType=Search"; + + ActivateModernSettingPage(page.c_str()); + + return S_OK; +} + + +// CModernSettingsContextMenu + +HRESULT CModernSettingsContextMenu::QueryContextMenu(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT /* idCmdLast */, UINT /* uFlags */) +{ + InsertMenu(hmenu, indexMenu++, MF_BYPOSITION, idCmdFirst + MENUVERB_OPEN, L"Open"); + // other verbs could go here... + + // indicate that we added one verb. + return MAKE_HRESULT(SEVERITY_SUCCESS, 0, (USHORT)(1)); +} + +HRESULT CModernSettingsContextMenu::InvokeCommand(LPCMINVOKECOMMANDINFO pici) +{ + HRESULT hr = E_INVALIDARG; + UINT uID; + // Is this command for us? + if (SUCCEEDED(_MapICIVerbToCmdID(pici, &uID))) + { + if (uID == MENUVERB_OPEN && m_pdtobj) + { + CAbsolutePidl pidl; + hr = SHGetIDListFromObject(m_pdtobj, &pidl); + if (SUCCEEDED(hr)) + hr = OpenItemByPidl(pidl); + } + } + + return hr; +} + +HRESULT CModernSettingsContextMenu::GetCommandString(UINT_PTR /* idCmd */, UINT /* uType */, UINT* /* pRes */, LPSTR /* pszName */, UINT /* cchMax */) +{ + return E_NOTIMPL; +} + +HRESULT CModernSettingsContextMenu::Initialize(PCIDLIST_ABSOLUTE /* pidlFolder */, IDataObject* pdtobj, HKEY /* hkeyProgID */) +{ + m_pdtobj = pdtobj; + return S_OK; +} + +HRESULT CModernSettingsContextMenu::SetSite(IUnknown* punkSite) +{ + m_punkSite = punkSite; + return S_OK; +} + +HRESULT CModernSettingsContextMenu::GetSite(REFIID riid, void** ppvSite) +{ + return m_punkSite ? m_punkSite->QueryInterface(riid, ppvSite) : E_FAIL; +} diff --git a/Src/StartMenu/StartMenuHelper/ModernSettingsContextMenu.h b/Src/StartMenu/StartMenuHelper/ModernSettingsContextMenu.h new file mode 100644 index 000000000..4e7f37e91 --- /dev/null +++ b/Src/StartMenu/StartMenuHelper/ModernSettingsContextMenu.h @@ -0,0 +1,60 @@ +// Context menu handler for Open-Shell Modern Settings shell folder + +#pragma once +#include "resource.h" +#include "StartMenuHelper_h.h" +#include + +// CModernSettingsContextMenu + +class ATL_NO_VTABLE CModernSettingsContextMenu : + public CComObjectRootEx, + public CComCoClass, + public IContextMenu, + public IShellExtInit, + public IObjectWithSite +{ +public: + CModernSettingsContextMenu() + { + } + +DECLARE_REGISTRY_RESOURCEID_V2_WITHOUT_MODULE(IDR_MODERNSETTINGSCONTEXTMENU, CModernSettingsContextMenu) + +DECLARE_NOT_AGGREGATABLE(CModernSettingsContextMenu) + +BEGIN_COM_MAP(CModernSettingsContextMenu) + COM_INTERFACE_ENTRY(IContextMenu) + COM_INTERFACE_ENTRY(IShellExtInit) + COM_INTERFACE_ENTRY(IObjectWithSite) +END_COM_MAP() + + DECLARE_PROTECT_FINAL_CONSTRUCT() + + HRESULT FinalConstruct() + { + return S_OK; + } + + void FinalRelease() + { + } + + // IContextMenu + IFACEMETHODIMP QueryContextMenu(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags); + IFACEMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO lpici); + IFACEMETHODIMP GetCommandString(UINT_PTR idCmd, UINT uType, UINT* pRes, LPSTR pszName, UINT cchMax); + + // IShellExtInit + IFACEMETHODIMP Initialize(PCIDLIST_ABSOLUTE pidlFolder, IDataObject* pdtobj, HKEY hkeyProgID); + + // IObjectWithSite + IFACEMETHODIMP SetSite(IUnknown* punkSite); + IFACEMETHODIMP GetSite(REFIID riid, void** ppvSite); + +private: + CComPtr m_pdtobj; + CComPtr m_punkSite; +}; + +OBJECT_ENTRY_AUTO(__uuidof(ModernSettingsContextMenu), CModernSettingsContextMenu) diff --git a/Src/StartMenu/StartMenuHelper/ModernSettingsContextMenu.rgs b/Src/StartMenu/StartMenuHelper/ModernSettingsContextMenu.rgs new file mode 100644 index 000000000..ad8bce577 --- /dev/null +++ b/Src/StartMenu/StartMenuHelper/ModernSettingsContextMenu.rgs @@ -0,0 +1,19 @@ +HKCR +{ + NoRemove CLSID + { + ForceRemove {5ab14324-c087-42c1-b905-a0bfdb4e9532} = s 'Open-Shell Modern Settings Context Menu' + { + InprocServer32 = s '%MODULE%' + { + val ThreadingModel = s 'Apartment' + } + ShellEx + { + MayChangeDefaultMenu = s '' + { + } + } + } + } +} diff --git a/Src/StartMenu/StartMenuHelper/ModernSettingsShellFolder.cpp b/Src/StartMenu/StartMenuHelper/ModernSettingsShellFolder.cpp new file mode 100644 index 000000000..fb2a13e10 --- /dev/null +++ b/Src/StartMenu/StartMenuHelper/ModernSettingsShellFolder.cpp @@ -0,0 +1,594 @@ +// Open-Shell Modern Settings shell folder +// Provides folder that contains all modern settings +// +// To open the folder press Win+R and type: +// shell:::{82E749ED-B971-4550-BAF7-06AA2BF7E836} + +// Based on Explorer Data Provider Sample (https://docs.microsoft.com/en-us/windows/win32/shell/samples-explorerdataprovider) + +#include "stdafx.h" +#include "ModernSettings.h" +#include "ModernSettingsShellFolder.h" +#include "ResourceHelper.h" +#include +#include +#include + +struct ColumnDescription +{ + const wchar_t* name; + PROPERTYKEY key; +}; + +static const ColumnDescription g_columnDescriptions[] = +{ + {L"Name", PKEY_ItemNameDisplay}, + {L"Keywords", PKEY_Keywords}, + {L"Filename", PKEY_FileName}, +}; + +#define MAGIC 'SMSO' + +#pragma pack(1) +struct FVITEMID +{ + USHORT cb; + DWORD magic; + WORD size; + wchar_t data[1]; +}; +#pragma pack() + +static const FVITEMID* PidlToItem(LPCITEMIDLIST pidl) +{ + if (pidl) + { + auto item = (const FVITEMID*)pidl; + if (item->cb && item->magic == MAGIC) + return item; + } + + return nullptr; +} + +ModernSettings::Setting GetModernSetting(LPCITEMIDLIST pidl) +{ + auto item = PidlToItem(pidl); + if (item) + { + auto settings = GetModernSettings(); + if (settings) + return settings->get({ item->data, item->size / sizeof(wchar_t) }); + } + + return {}; +} + +STDAPI StringToStrRet(PCWSTR pszName, STRRET* pStrRet) +{ + pStrRet->uType = STRRET_WSTR; + return SHStrDup(pszName, &pStrRet->pOleStr); +} + +// CModernSettingsShellFolderEnumIDList + +class ATL_NO_VTABLE CModernSettingsShellFolderEnumIDList : + public CComObjectRoot, + public IEnumIDList +{ +public: + BEGIN_COM_MAP(CModernSettingsShellFolderEnumIDList) + COM_INTERFACE_ENTRY(IEnumIDList) + END_COM_MAP() + + // IEnumIDList + IFACEMETHODIMP Next(ULONG celt, PITEMID_CHILD* rgelt, ULONG* pceltFetched) + { + ULONG celtFetched = 0; + + HRESULT hr = (pceltFetched || celt <= 1) ? S_OK : E_INVALIDARG; + if (SUCCEEDED(hr)) + { + ULONG i = 0; + while (SUCCEEDED(hr) && i < celt && m_item < m_items.size()) + { + hr = m_parent->CreateChildID(m_items[m_item], &rgelt[i]); + if (SUCCEEDED(hr)) + { + celtFetched++; + i++; + } + + m_item++; + } + } + + if (pceltFetched) + *pceltFetched = celtFetched; + + return (celtFetched == celt) ? S_OK : S_FALSE; + } + IFACEMETHODIMP Skip(DWORD celt) + { + m_item += celt; + return S_OK; + } + IFACEMETHODIMP Reset() + { + m_item = 0; + return S_OK; + } + IFACEMETHODIMP Clone(IEnumIDList** ppenum) + { + // this method is rarely used and it's acceptable to not implement it. + *ppenum = NULL; + return E_NOTIMPL; + } + + void Initialize(CModernSettingsShellFolder* parent) + { + m_parent = parent; + + m_settings = GetModernSettings(); + if (m_settings) + m_items = m_settings->enumerate(); + } + +private: + CComPtr m_parent; + std::shared_ptr m_settings; + std::vector m_items; + DWORD m_item = 0; +}; + +// Extract icon + +static void BitmapDataToStraightAlpha(void* bits, UINT width, UINT height) +{ + RGBQUAD* data = (RGBQUAD*)bits; + for (UINT y = 0; y < height; y++) + { + for (UINT x = 0; x < width; x++) + { + auto alpha = data->rgbReserved; + if (alpha) + { + data->rgbBlue = (BYTE)((DWORD)data->rgbBlue * 255 / alpha); + data->rgbGreen = (BYTE)((DWORD)data->rgbGreen * 255 / alpha); + data->rgbRed = (BYTE)((DWORD)data->rgbRed * 255 / alpha); + } + data++; + } + } +} + +HICON IconFromGlyph(UINT glyph, UINT size) +{ + ICONINFO info{}; + + info.fIcon = TRUE; + info.hbmMask = CreateBitmap(size, size, 1, 1, nullptr); + + BITMAPINFO bi{}; + bi.bmiHeader.biSize = sizeof(bi.bmiHeader); + bi.bmiHeader.biWidth = size; + bi.bmiHeader.biHeight = -((LONG)size); + bi.bmiHeader.biPlanes = 1; + bi.bmiHeader.biBitCount = 32; + + void* bits = nullptr; + info.hbmColor = CreateDIBSection(nullptr, &bi, 0, &bits, nullptr, 0); + + HDC dc = CreateCompatibleDC(nullptr); + SelectObject(dc, info.hbmColor); + + HFONT font = CreateFontW(size, 0, 0, 0, 400, 0, 0, 0, 1, 0, 0, 0, 0, IsWin11() ? L"Segoe Fluent Icons" : L"Segoe MDL2 Assets"); + SelectObject(dc, font); + + RECT rc{}; + rc.right = size; + rc.bottom = size; + + auto theme = OpenThemeData(nullptr, L"CompositedWindow::Window"); + DTTOPTS opts{}; + opts.dwSize = sizeof(opts); + opts.dwFlags = DTT_TEXTCOLOR | DTT_COMPOSITED; + opts.crText = 0x00FFFFFF; + DrawThemeTextEx(theme, dc, 0, 0, (LPCWSTR)&glyph, 1, DT_CENTER | DT_VCENTER | DT_SINGLELINE, &rc, &opts); + CloseThemeData(theme); + + DeleteObject(font); + DeleteDC(dc); + + BitmapDataToStraightAlpha(bits, size, size); + + HICON retval = CreateIconIndirect(&info); + + DeleteObject(info.hbmColor); + DeleteObject(info.hbmMask); + + return retval; +} + +class ATL_NO_VTABLE GlyphExtractIcon : + public CComObjectRoot, + public IExtractIconW +{ +public: + + BEGIN_COM_MAP(GlyphExtractIcon) + COM_INTERFACE_ENTRY(IExtractIconW) + END_COM_MAP() + + void SetGlyph(USHORT glyph) + { + m_glyph = glyph; + } + + // IExtractIconW methods + IFACEMETHODIMP GetIconLocation(UINT uFlags, _Out_writes_(cchMax) PWSTR pszIconFile, UINT cchMax, _Out_ int* piIndex, _Out_ UINT* pwFlags) + { + StringCchCopy(pszIconFile, cchMax, L"OpenShell-ModernSettingIcon"); + *piIndex = m_glyph; + *pwFlags = GIL_NOTFILENAME; + return S_OK; + } + IFACEMETHODIMP Extract(_In_ PCWSTR pszFile, UINT nIconIndex, _Out_opt_ HICON* phiconLarge, _Out_opt_ HICON* phiconSmall, UINT nIconSize) + { + if (phiconLarge) + *phiconLarge = IconFromGlyph(nIconIndex, LOWORD(nIconSize)); + if (phiconSmall) + *phiconSmall = IconFromGlyph(nIconIndex, HIWORD(nIconSize)); + return S_OK; + } + +private: + USHORT m_glyph = 0; +}; + + +// CModernSettingsShellFolder + +// IShellFolder methods + +// Translates a display name into an item identifier list. +HRESULT CModernSettingsShellFolder::ParseDisplayName(HWND hwnd, IBindCtx* pbc, PWSTR pszName, ULONG* pchEaten, PIDLIST_RELATIVE* ppidl, ULONG* pdwAttributes) +{ + return E_INVALIDARG; +} + +// Allows a client to determine the contents of a folder by +// creating an item identifier enumeration object and returning +// its IEnumIDList interface. The methods supported by that +// interface can then be used to enumerate the folder's contents. +HRESULT CModernSettingsShellFolder::EnumObjects(HWND /* hwnd */, DWORD grfFlags, IEnumIDList** ppenumIDList) +{ + CComObject* enumIdList; + auto hr = CComObject::CreateInstance(&enumIdList); + if (SUCCEEDED(hr)) + { + enumIdList->Initialize(this); + hr = enumIdList->QueryInterface(IID_PPV_ARGS(ppenumIDList)); + } + + return hr; +} + +// Factory for handlers for the specified item. +HRESULT CModernSettingsShellFolder::BindToObject(PCUIDLIST_RELATIVE pidl, IBindCtx* pbc, REFIID riid, void** ppv) +{ + return E_NOINTERFACE; +} + +HRESULT CModernSettingsShellFolder::BindToStorage(PCUIDLIST_RELATIVE pidl, IBindCtx* pbc, REFIID riid, void** ppv) +{ + return BindToObject(pidl, pbc, riid, ppv); +} + +// Called to determine the equivalence and/or sort order of two idlists. +HRESULT CModernSettingsShellFolder::CompareIDs(LPARAM lParam, PCUIDLIST_RELATIVE pidl1, PCUIDLIST_RELATIVE pidl2) +{ + UINT column = LOWORD(lParam); + return MAKE_HRESULT(SEVERITY_SUCCESS, 0, (USHORT)(StrCmp(GetColumnDisplayName(pidl1, column).data(), GetColumnDisplayName(pidl2, column).data()))); +} + +// Called by the Shell to create the View Object and return it. +HRESULT CModernSettingsShellFolder::CreateViewObject(HWND hwnd, REFIID riid, void** ppv) +{ + HRESULT hr = E_NOINTERFACE; + *ppv = NULL; + + if (riid == IID_IShellView) + { + SFV_CREATE csfv = { sizeof(csfv), 0 }; + hr = QueryInterface(IID_PPV_ARGS(&csfv.pshf)); + if (SUCCEEDED(hr)) + { + hr = SHCreateShellFolderView(&csfv, (IShellView**)ppv); + csfv.pshf->Release(); + } + } + + return hr; +} + +// Retrieves the attributes of one or more file objects or subfolders. +HRESULT CModernSettingsShellFolder::GetAttributesOf(UINT cidl, PCUITEMID_CHILD_ARRAY apidl, ULONG* rgfInOut) +{ + *rgfInOut &= SFGAO_CANLINK; + return S_OK; +} + +// Retrieves an OLE interface that can be used to carry out +// actions on the specified file objects or folders. +HRESULT CModernSettingsShellFolder::GetUIObjectOf(HWND hwnd, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, REFIID riid, UINT* /* prgfInOut */, void** ppv) +{ + HRESULT hr = E_NOINTERFACE; + *ppv = nullptr; + + if (riid == IID_IContextMenu) + { + // The default context menu will call back for IQueryAssociations to determine the + // file associations with which to populate the menu. + const DEFCONTEXTMENU dcm = { hwnd, nullptr, m_pidl, static_cast(this), cidl, apidl, nullptr, 0, nullptr }; + hr = SHCreateDefaultContextMenu(&dcm, riid, ppv); + } + else if (riid == IID_IExtractIconW) + { + hr = E_INVALIDARG; + + auto s = GetModernSetting(*apidl); + if (s) + { + if (!s.icon.empty()) + { + CComPtr pdxi; + hr = SHCreateDefaultExtractIcon(IID_PPV_ARGS(&pdxi)); + if (SUCCEEDED(hr)) + { + WCHAR icon_path[MAX_PATH]; + + StringCchCopy(icon_path, _countof(icon_path), s.icon.data()); + auto location = PathParseIconLocation(icon_path); + + hr = pdxi->SetNormalIcon(icon_path, location); + if (SUCCEEDED(hr)) + hr = pdxi->QueryInterface(riid, ppv); + } + } + else + { + auto glyph = !s.glyph.empty() ? s.glyph.front() : 0xe115; + + CComObject* extract; + hr = CComObject::CreateInstance(&extract); + if (SUCCEEDED(hr)) + { + extract->SetGlyph(glyph); + hr = extract->QueryInterface(riid, ppv); + } + } + } + } + else if (riid == IID_IDataObject) + { + hr = SHCreateDataObject(m_pidl, cidl, apidl, nullptr, riid, ppv); + } + else if (riid == IID_IQueryAssociations) + { + WCHAR szFolderViewImplClassID[64]; + hr = StringFromGUID2(CLSID_ModernSettingsShellFolder, szFolderViewImplClassID, ARRAYSIZE(szFolderViewImplClassID)); + if (SUCCEEDED(hr)) + { + const ASSOCIATIONELEMENT assocItem = { ASSOCCLASS_CLSID_STR, nullptr, szFolderViewImplClassID }; + hr = AssocCreateForClasses(&assocItem, 1, riid, ppv); + } + } + + return hr; +} + +// Retrieves the display name for the specified file object or subfolder. +HRESULT CModernSettingsShellFolder::GetDisplayNameOf(PCUITEMID_CHILD pidl, SHGDNF shgdnFlags, STRRET* pName) +{ + auto setting = GetModernSetting(pidl); + if (!setting) + return E_INVALIDARG; + + HRESULT hr = S_OK; + + if (shgdnFlags & SHGDN_FORPARSING) + { + if (shgdnFlags & SHGDN_INFOLDER) + { + // This form of the display name needs to be handled by ParseDisplayName. + hr = StringToStrRet(setting.fileName.data(), pName); + } + else + { + WCHAR szDisplayName[MAX_PATH]; + CComString pszThisFolder; + hr = SHGetNameFromIDList(m_pidl, (shgdnFlags & SHGDN_FORADDRESSBAR) ? SIGDN_DESKTOPABSOLUTEEDITING : SIGDN_DESKTOPABSOLUTEPARSING, &pszThisFolder); + if (SUCCEEDED(hr)) + { + StringCchCopy(szDisplayName, ARRAYSIZE(szDisplayName), pszThisFolder); + StringCchCat(szDisplayName, ARRAYSIZE(szDisplayName), L"\\"); + StringCchCat(szDisplayName, ARRAYSIZE(szDisplayName), setting.fileName.data()); + + hr = StringToStrRet(szDisplayName, pName); + } + } + } + else + { + hr = StringToStrRet(setting.description.data(), pName); + } + + return hr; +} + +// Sets the display name of a file object or subfolder, changing the item identifier in the process. +HRESULT CModernSettingsShellFolder::SetNameOf(HWND /* hwnd */, PCUITEMID_CHILD /* pidl */, PCWSTR /* pszName */, DWORD /* uFlags */, PITEMID_CHILD* ppidlOut) +{ + *ppidlOut = NULL; + return E_NOTIMPL; +} + +// IShellFolder2 methods + +// Requests the GUID of the default search object for the folder. +HRESULT CModernSettingsShellFolder::GetDefaultSearchGUID(GUID* /* pguid */) +{ + return E_NOTIMPL; +} + +HRESULT CModernSettingsShellFolder::EnumSearches(IEnumExtraSearch** ppEnum) +{ + *ppEnum = NULL; + return E_NOINTERFACE; +} + +// Retrieves the default sorting and display column (indices from GetDetailsOf). +HRESULT CModernSettingsShellFolder::GetDefaultColumn(DWORD /* dwRes */, ULONG* pSort, ULONG* pDisplay) +{ + *pSort = 0; + *pDisplay = 0; + return S_OK; +} + +// Retrieves the default state for a specified column. +HRESULT CModernSettingsShellFolder::GetDefaultColumnState(UINT iColumn, SHCOLSTATEF* pcsFlags) +{ + if (iColumn < _countof(g_columnDescriptions)) + { + *pcsFlags = SHCOLSTATE_ONBYDEFAULT | SHCOLSTATE_TYPE_STR; + return S_OK; + } + + return E_INVALIDARG; +} + +// Retrieves detailed information, identified by a property set ID (FMTID) and property ID (PID), on an item in a Shell folder. +HRESULT CModernSettingsShellFolder::GetDetailsEx(PCUITEMID_CHILD pidl, const PROPERTYKEY* pkey, VARIANT* pv) +{ + for (const auto& desc : g_columnDescriptions) + { + if (IsEqualPropertyKey(*pkey, desc.key)) + { + auto str = GetColumnDisplayName(pidl, (UINT)std::distance(g_columnDescriptions, &desc)); + + pv->vt = VT_BSTR; + pv->bstrVal = SysAllocString(str.data()); + return pv->bstrVal ? S_OK : E_OUTOFMEMORY; + } + } + + return S_OK; +} + +// Retrieves detailed information, identified by a column index, on an item in a Shell folder. +HRESULT CModernSettingsShellFolder::GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS* pDetails) +{ + pDetails->cxChar = 24; + + if (!pidl) + { + // No item means we're returning information about the column itself. + + if (iColumn >= _countof(g_columnDescriptions)) + { + // GetDetailsOf is called with increasing column indices until failure. + return E_FAIL; + } + + pDetails->fmt = LVCFMT_LEFT; + return StringToStrRet(g_columnDescriptions[iColumn].name, &pDetails->str); + } + + auto str = GetColumnDisplayName(pidl, iColumn); + return StringToStrRet(str.data(), &pDetails->str); +} + +// Converts a column name to the appropriate property set ID (FMTID) and property ID (PID). +HRESULT CModernSettingsShellFolder::MapColumnToSCID(UINT iColumn, PROPERTYKEY* pkey) +{ + if (iColumn < _countof(g_columnDescriptions)) + { + *pkey = g_columnDescriptions[iColumn].key; + return S_OK; + } + + return E_FAIL; +} + +// IPersist method +HRESULT CModernSettingsShellFolder::GetClassID(CLSID* pClassID) +{ + *pClassID = CLSID_ModernSettingsShellFolder; + return S_OK; +} + +// IPersistFolder method +HRESULT CModernSettingsShellFolder::Initialize(PCIDLIST_ABSOLUTE pidl) +{ + m_pidl = pidl; + return m_pidl ? S_OK : E_FAIL; +} + +// IPersistFolder2 methods +// Retrieves the PIDLIST_ABSOLUTE for the folder object. +HRESULT CModernSettingsShellFolder::GetCurFolder(PIDLIST_ABSOLUTE* ppidl) +{ + *ppidl = NULL; + HRESULT hr = m_pidl ? S_OK : E_FAIL; + if (SUCCEEDED(hr)) + { + *ppidl = ILCloneFull(m_pidl); + hr = *ppidl ? S_OK : E_OUTOFMEMORY; + } + return hr; +} + +HRESULT CModernSettingsShellFolder::CreateChildID(const std::wstring_view& fileName, PITEMID_CHILD* ppidl) +{ + auto size = fileName.size() * sizeof(wchar_t); + + // Sizeof an object plus the next cb plus the characters in the string. + UINT nIDSize = sizeof(FVITEMID) + sizeof(USHORT) + (WORD)size; + + // Allocate and zero the memory. + FVITEMID* lpMyObj = (FVITEMID*)CoTaskMemAlloc(nIDSize); + + HRESULT hr = lpMyObj ? S_OK : E_OUTOFMEMORY; + if (SUCCEEDED(hr)) + { + ZeroMemory(lpMyObj, nIDSize); + lpMyObj->cb = static_cast(nIDSize - sizeof(lpMyObj->cb)); + lpMyObj->magic = MAGIC; + lpMyObj->size = (WORD)size; + memcpy(lpMyObj->data, fileName.data(), size); + + *ppidl = (PITEMID_CHILD)lpMyObj; + } + + return hr; +} + +std::wstring_view CModernSettingsShellFolder::GetColumnDisplayName(PCUITEMID_CHILD pidl, UINT iColumn) +{ + auto setting = GetModernSetting(pidl); + if (setting) + { + switch (iColumn) + { + case 0: + return setting.description; + case 1: + return setting.keywords; + case 2: + return setting.fileName; + } + } + + return {}; +} diff --git a/Src/StartMenu/StartMenuHelper/ModernSettingsShellFolder.h b/Src/StartMenu/StartMenuHelper/ModernSettingsShellFolder.h new file mode 100644 index 000000000..dba4f2e7b --- /dev/null +++ b/Src/StartMenu/StartMenuHelper/ModernSettingsShellFolder.h @@ -0,0 +1,85 @@ +// Open-Shell Modern Settings shell folder +// Provides folder that contains all modern settings + +#pragma once +#include "resource.h" +#include "ComHelper.h" +#include "StartMenuHelper_h.h" +#include +#include + +// CModernSettingsShellFolder + +class ATL_NO_VTABLE CModernSettingsShellFolder : + public CComObjectRootEx, + public CComCoClass, + public IShellFolder2, + public IPersistFolder2 +{ +public: + CModernSettingsShellFolder() + { + } + +DECLARE_REGISTRY_RESOURCEID_V2_WITHOUT_MODULE(IDR_MODERNSETTINGSSHELLFOLDER, CModernSettingsShellFolder) + +DECLARE_NOT_AGGREGATABLE(CModernSettingsShellFolder) + +BEGIN_COM_MAP(CModernSettingsShellFolder) + COM_INTERFACE_ENTRY(IShellFolder) + COM_INTERFACE_ENTRY(IShellFolder2) + COM_INTERFACE_ENTRY(IPersist) + COM_INTERFACE_ENTRY(IPersistFolder) + COM_INTERFACE_ENTRY(IPersistFolder2) +END_COM_MAP() + + DECLARE_PROTECT_FINAL_CONSTRUCT() + + HRESULT FinalConstruct() + { + return S_OK; + } + + void FinalRelease() + { + } + + // IShellFolder + IFACEMETHODIMP ParseDisplayName(HWND hwnd, IBindCtx* pbc, PWSTR pszName, ULONG* pchEaten, PIDLIST_RELATIVE* ppidl, ULONG* pdwAttributes); + IFACEMETHODIMP EnumObjects(HWND hwnd, DWORD grfFlags, IEnumIDList** ppenumIDList); + IFACEMETHODIMP BindToObject(PCUIDLIST_RELATIVE pidl, IBindCtx* pbc, REFIID riid, void** ppv); + IFACEMETHODIMP BindToStorage(PCUIDLIST_RELATIVE pidl, IBindCtx* pbc, REFIID riid, void** ppv); + IFACEMETHODIMP CompareIDs(LPARAM lParam, PCUIDLIST_RELATIVE pidl1, PCUIDLIST_RELATIVE pidl2); + IFACEMETHODIMP CreateViewObject(HWND hwnd, REFIID riid, void** ppv); + IFACEMETHODIMP GetAttributesOf(UINT cidl, PCUITEMID_CHILD_ARRAY apidl, ULONG* rgfInOut); + IFACEMETHODIMP GetUIObjectOf(HWND hwnd, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, REFIID riid, UINT* prgfInOut, void** ppv); + IFACEMETHODIMP GetDisplayNameOf(PCUITEMID_CHILD pidl, SHGDNF shgdnFlags, STRRET* pName); + IFACEMETHODIMP SetNameOf(HWND hwnd, PCUITEMID_CHILD pidl, PCWSTR pszName, DWORD uFlags, PITEMID_CHILD* ppidlOut); + + // IShellFolder2 + IFACEMETHODIMP GetDefaultSearchGUID(GUID* pGuid); + IFACEMETHODIMP EnumSearches(IEnumExtraSearch** ppenum); + IFACEMETHODIMP GetDefaultColumn(DWORD dwRes, ULONG* pSort, ULONG* pDisplay); + IFACEMETHODIMP GetDefaultColumnState(UINT iColumn, SHCOLSTATEF* pbState); + IFACEMETHODIMP GetDetailsEx(PCUITEMID_CHILD pidl, const PROPERTYKEY* pkey, VARIANT* pv); + IFACEMETHODIMP GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS* pDetails); + IFACEMETHODIMP MapColumnToSCID(UINT iColumn, PROPERTYKEY* pkey); + + // IPersist + IFACEMETHODIMP GetClassID(CLSID* pClassID); + + // IPersistFolder + IFACEMETHODIMP Initialize(PCIDLIST_ABSOLUTE pidl); + + // IPersistFolder2 + IFACEMETHODIMP GetCurFolder(PIDLIST_ABSOLUTE* ppidl); + + HRESULT CreateChildID(const std::wstring_view& fileName, PITEMID_CHILD* ppidl); + +private: + std::wstring_view GetColumnDisplayName(PCUITEMID_CHILD pidl, UINT iColumn); + + CAbsolutePidl m_pidl; // where this folder is in the name space +}; + +OBJECT_ENTRY_AUTO(__uuidof(ModernSettingsShellFolder), CModernSettingsShellFolder) diff --git a/Src/StartMenu/StartMenuHelper/ModernSettingsShellFolder.rgs b/Src/StartMenu/StartMenuHelper/ModernSettingsShellFolder.rgs new file mode 100644 index 000000000..d73087217 --- /dev/null +++ b/Src/StartMenu/StartMenuHelper/ModernSettingsShellFolder.rgs @@ -0,0 +1,26 @@ +HKCR +{ + NoRemove CLSID + { + ForceRemove {82e749ed-b971-4550-baf7-06aa2bf7e836} = s 'Open-Shell Modern Settings' + { + InprocServer32 = s '%MODULE%' + { + val ThreadingModel = s 'Apartment' + } + ShellFolder + { + val Attributes = d '&HA0000000' + } + ShellEx + { + ContextMenuHandlers + { + Default = s '{5ab14324-c087-42c1-b905-a0bfdb4e9532}' + { + } + } + } + } + } +} diff --git a/Src/StartMenu/StartMenuHelper/StartMenuExt.cpp b/Src/StartMenu/StartMenuHelper/StartMenuExt.cpp index 10a3b3054..5cf4aff21 100644 --- a/Src/StartMenu/StartMenuHelper/StartMenuExt.cpp +++ b/Src/StartMenu/StartMenuHelper/StartMenuExt.cpp @@ -91,7 +91,7 @@ STDMETHODIMP CStartMenuExt::Initialize( PCIDLIST_ABSOLUTE pidlFolder, IDataObjec bUsePinned=(setting==1); if (bUsePinned) { - Strcpy(m_PinFolder1,_countof(m_PinFolder1),L"%APPDATA%\\OpenShell\\Pinned\\"); + Sprintf(m_PinFolder1,_countof(m_PinFolder1),L"%s\\",GetSettingString(L"PinnedItemsPath")); DoEnvironmentSubst(m_PinFolder1,_countof(m_PinFolder1)); m_PinFolder2[0]=0; } diff --git a/Src/StartMenu/StartMenuHelper/StartMenuExt.h b/Src/StartMenu/StartMenuHelper/StartMenuExt.h index 025041a10..8ad501941 100644 --- a/Src/StartMenu/StartMenuHelper/StartMenuExt.h +++ b/Src/StartMenu/StartMenuHelper/StartMenuExt.h @@ -3,7 +3,7 @@ #pragma once #include "resource.h" // main symbols -#include "StartMenuHelper_i.h" +#include "StartMenuHelper_h.h" #include @@ -55,8 +55,8 @@ END_COM_MAP() STDMETHODIMP InvokeCommand( CMINVOKECOMMANDINFO *pInfo ); STDMETHODIMP GetCommandString( UINT_PTR idCmd, UINT uFlags, UINT* pwReserved, LPSTR pszName, UINT cchMax ); - wchar_t m_PinFolder1[_MAX_PATH]; // ending with \ - wchar_t m_PinFolder2[_MAX_PATH]; // ending with \ + wchar_t m_PinFolder1[_MAX_PATH]; // ending with backslash + wchar_t m_PinFolder2[_MAX_PATH]; // ending with backslash wchar_t m_FileName[_MAX_PATH]; LPITEMIDLIST m_FilePidl; bool m_bInPinFolder1, m_bInPinFolder2; diff --git a/Src/StartMenu/StartMenuHelper/StartMenuHelper.cpp b/Src/StartMenu/StartMenuHelper/StartMenuHelper.cpp index 8086f6f5d..5004cb83e 100644 --- a/Src/StartMenu/StartMenuHelper/StartMenuHelper.cpp +++ b/Src/StartMenu/StartMenuHelper/StartMenuHelper.cpp @@ -3,7 +3,7 @@ #include "stdafx.h" #include "resource.h" -#include "StartMenuHelper_i.h" +#include "StartMenuHelper_h.h" #include "dllmain.h" #include "ResourceHelper.h" #include "Settings.h" @@ -25,6 +25,8 @@ const CLSID g_ExplorerClsid= {0xECD4FC4D, 0x521C, 0x11D0, {0xB7, 0x92, 0x00, 0xA const CLSID g_EmulationClsid= {0xD3214FBB, 0x3CA1, 0x406A, {0xB3, 0xE8, 0x3E, 0xB7, 0xC3, 0x93, 0xA1, 0x5E}}; #define EMULATION_KEY L"TreatAs" +#define SHELLEXT_NAME L"StartMenuExt" + static void AdjustPrivileges( void ) { HANDLE hToken; @@ -46,6 +48,18 @@ static void AdjustPrivileges( void ) } } +static void AddShellExt(const wchar_t* progID, const LPSECURITY_ATTRIBUTES sa) +{ + HKEY hkey = NULL; + + if (RegCreateKeyEx(HKEY_CLASSES_ROOT, CString(progID) + L"\\ShellEx\\ContextMenuHandlers\\" SHELLEXT_NAME, NULL, NULL, REG_OPTION_BACKUP_RESTORE, KEY_WRITE, sa, &hkey, NULL) == ERROR_SUCCESS) + { + wchar_t val[] = L"{E595F05F-903F-4318-8B0A-7F633B520D2B}"; + RegSetValueEx(hkey, NULL, NULL, REG_SZ, (BYTE*)val, sizeof(val)); + RegCloseKey(hkey); + } +} + static void AddRegistryKeys( bool bPin ) { AdjustPrivileges(); @@ -103,21 +117,12 @@ static void AddRegistryKeys( bool bPin ) RegSetValueEx(hkey,NULL,NULL,REG_SZ,(BYTE*)val,sizeof(val)); RegCloseKey(hkey); } - hkey=NULL; + if (bPin) { - if (RegCreateKeyEx(HKEY_CLASSES_ROOT,L"Launcher.ImmersiveApplication\\ShellEx\\ContextMenuHandlers\\StartMenuExt",NULL,NULL,REG_OPTION_BACKUP_RESTORE,KEY_WRITE,&sa,&hkey,NULL)==ERROR_SUCCESS) - { - wchar_t val[]=L"{E595F05F-903F-4318-8B0A-7F633B520D2B}"; - RegSetValueEx(hkey,NULL,NULL,REG_SZ,(BYTE*)val,sizeof(val)); - RegCloseKey(hkey); - } - if (RegCreateKeyEx(HKEY_CLASSES_ROOT,L"Launcher.SystemSettings\\ShellEx\\ContextMenuHandlers\\StartMenuExt",NULL,NULL,REG_OPTION_BACKUP_RESTORE,KEY_WRITE,&sa,&hkey,NULL)==ERROR_SUCCESS) - { - wchar_t val[]=L"{E595F05F-903F-4318-8B0A-7F633B520D2B}"; - RegSetValueEx(hkey,NULL,NULL,REG_SZ,(BYTE*)val,sizeof(val)); - RegCloseKey(hkey); - } + AddShellExt(L"Launcher.ImmersiveApplication", &sa); + AddShellExt(L"Launcher.DesktopPackagedApplication", &sa); + AddShellExt(L"Launcher.SystemSettings", &sa); } } } @@ -127,6 +132,16 @@ static void AddRegistryKeys( bool bPin ) FreeSid(pAdminSID); } +static void RemoveShellExt(const wchar_t* progID) +{ + HKEY hkey = NULL; + if (RegCreateKeyEx(HKEY_CLASSES_ROOT, CString(progID) + L"\\ShellEx\\ContextMenuHandlers", NULL, NULL, REG_OPTION_BACKUP_RESTORE, KEY_WRITE | DELETE, NULL, &hkey, NULL) == ERROR_SUCCESS) + { + RegDeleteTree(hkey, SHELLEXT_NAME); + RegCloseKey(hkey); + } +} + static void RemoveRegistryKeys( bool bPin ) { AdjustPrivileges(); @@ -136,19 +151,12 @@ static void RemoveRegistryKeys( bool bPin ) RegDeleteTree(hkey,EMULATION_KEY); RegCloseKey(hkey); } - hkey=NULL; + if (bPin) { - if (RegCreateKeyEx(HKEY_CLASSES_ROOT,L"Launcher.ImmersiveApplication\\ShellEx\\ContextMenuHandlers",NULL,NULL,REG_OPTION_BACKUP_RESTORE,KEY_WRITE|DELETE,NULL,&hkey,NULL)==ERROR_SUCCESS) - { - RegDeleteTree(hkey,L"StartMenuExt"); - RegCloseKey(hkey); - } - if (RegCreateKeyEx(HKEY_CLASSES_ROOT,L"Launcher.SystemSettings\\ShellEx\\ContextMenuHandlers",NULL,NULL,REG_OPTION_BACKUP_RESTORE,KEY_WRITE|DELETE,NULL,&hkey,NULL)==ERROR_SUCCESS) - { - RegDeleteTree(hkey,L"StartMenuExt"); - RegCloseKey(hkey); - } + RemoveShellExt(L"Launcher.ImmersiveApplication"); + RemoveShellExt(L"Launcher.DesktopPackagedApplication"); + RemoveShellExt(L"Launcher.SystemSettings"); } } diff --git a/Src/StartMenu/StartMenuHelper/StartMenuHelper.idl b/Src/StartMenu/StartMenuHelper/StartMenuHelper.idl index 34030f7d9..96c2cd8ac 100644 --- a/Src/StartMenu/StartMenuHelper/StartMenuHelper.idl +++ b/Src/StartMenu/StartMenuHelper/StartMenuHelper.idl @@ -6,6 +6,7 @@ import "oaidl.idl"; import "ocidl.idl"; +import "shobjidl.idl"; [ object, @@ -31,4 +32,21 @@ library StartMenuHelperLib { [default] interface IStartMenuExt; }; + [ + uuid(82e749ed-b971-4550-baf7-06aa2bf7e836) + ] + coclass ModernSettingsShellFolder + { + interface IShellFolder2; + interface IPersistFolder2; + }; + [ + uuid(5ab14324-c087-42c1-b905-a0bfdb4e9532) + ] + coclass ModernSettingsContextMenu + { + interface IContextMenu; + interface IShellExtInit; + interface IObjectWithSite; + }; }; diff --git a/Src/StartMenu/StartMenuHelper/StartMenuHelper.rc b/Src/StartMenu/StartMenuHelper/StartMenuHelper.rc index c15df9d02..825ffc08d 100644 --- a/Src/StartMenu/StartMenuHelper/StartMenuHelper.rc +++ b/Src/StartMenu/StartMenuHelper/StartMenuHelper.rc @@ -98,6 +98,8 @@ END IDR_STARTMENUHELPER REGISTRY "StartMenuHelper.rgs" IDR_STARTMENUEXT REGISTRY "StartMenuExt.rgs" +IDR_MODERNSETTINGSSHELLFOLDER REGISTRY "ModernSettingsShellFolder.rgs" +IDR_MODERNSETTINGSCONTEXTMENU REGISTRY "ModernSettingsContextMenu.rgs" #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/Src/StartMenu/StartMenuHelper/StartMenuHelper.vcxproj b/Src/StartMenu/StartMenuHelper/StartMenuHelper.vcxproj index 19849a12e..363990fba 100644 --- a/Src/StartMenu/StartMenuHelper/StartMenuHelper.vcxproj +++ b/Src/StartMenu/StartMenuHelper/StartMenuHelper.vcxproj @@ -1,6 +1,14 @@ + + Debug + ARM64 + + + Debug + ARM64EC + Debug Win32 @@ -9,6 +17,14 @@ Debug x64 + + Release + ARM64 + + + Release + ARM64EC + Release Win32 @@ -17,6 +33,14 @@ Release x64 + + Setup + ARM64 + + + Setup + ARM64EC + Setup Win32 @@ -30,332 +54,59 @@ {A42C6159-ACA8-46D1-A0FB-19C398B137D5} StartMenuHelper AtlProj - 10.0.17134.0 + 10.0 - - DynamicLibrary - v141 - Static - Unicode - true - - + DynamicLibrary - v141 - Static - Unicode - true - - - DynamicLibrary - v141 - Static - Unicode - - - DynamicLibrary - v141 - Static - Unicode - true - - - DynamicLibrary - v141 - Static - Unicode - true - - - DynamicLibrary - v141 + $(DefaultPlatformToolset) Static Unicode + true - - - - - - - - - - - - - - - - - - - - - - - + + - - $(Configuration)\ - $(Configuration)\ - true - true + $(ProjectName)32 - - $(Configuration)64\ - $(Configuration)64\ - true - true + $(ProjectName)64 - - $(Configuration)\ - $(Configuration)\ - true - false - $(ProjectName)32 - - - $(Configuration)64\ - $(Configuration)64\ - true - false + $(ProjectName)64 - - $(Configuration)\ - $(Configuration)\ - true - false - $(ProjectName)32 - - - $(Configuration)64\ - $(Configuration)64\ - true - false + $(ProjectName)64 + true - - - _DEBUG;%(PreprocessorDefinitions) - false - true - StartMenuHelper_i.h - StartMenuHelper_i.c - StartMenuHelper_p.c - true - - - Disabled - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;_WINDOWS;_DEBUG;_USRDLL;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebug - Use - Level3 - EditAndContinue - true - true - stdcpp17 - - - _DEBUG;%(PreprocessorDefinitions) - $(IntDir);%(AdditionalIncludeDirectories) - - - true - comctl32.lib;uxtheme.lib;winmm.lib;htmlhelp.lib;wininet.lib;version.lib;%(AdditionalDependencies) - .\$(TargetName).def - true - Windows - - - - - _DEBUG;%(PreprocessorDefinitions) - false - true - StartMenuHelper_i.h - StartMenuHelper_i.c - StartMenuHelper_p.c - + - Disabled - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;_WINDOWS;_DEBUG;_USRDLL;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebug - Use - Level3 - ProgramDatabase - true - true - stdcpp17 + _USRDLL;%(PreprocessorDefinitions) - _DEBUG;%(PreprocessorDefinitions) $(IntDir);%(AdditionalIncludeDirectories) - true comctl32.lib;uxtheme.lib;winmm.lib;htmlhelp.lib;wininet.lib;version.lib;%(AdditionalDependencies) - .\$(TargetName).def - true - Windows + $(TargetName).def - - - NDEBUG;%(PreprocessorDefinitions) - false - true - StartMenuHelper_i.h - StartMenuHelper_i.c - StartMenuHelper_p.c - true - - - MaxSpeed - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;_WINDOWS;NDEBUG;_USRDLL;%(PreprocessorDefinitions) - MultiThreaded - Use - Level3 - ProgramDatabase - true - true - stdcpp17 - - - NDEBUG;%(PreprocessorDefinitions) - $(IntDir);%(AdditionalIncludeDirectories) - + true - comctl32.lib;uxtheme.lib;winmm.lib;htmlhelp.lib;wininet.lib;version.lib;%(AdditionalDependencies) - .\$(TargetName).def - true - Windows - true - true - - - - - NDEBUG;%(PreprocessorDefinitions) - false - true - StartMenuHelper_i.h - StartMenuHelper_i.c - StartMenuHelper_p.c - - - MaxSpeed - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;_WINDOWS;NDEBUG;_USRDLL;%(PreprocessorDefinitions) - MultiThreaded - Use - Level3 - ProgramDatabase - true - true - stdcpp17 - - - NDEBUG;%(PreprocessorDefinitions) - $(IntDir);%(AdditionalIncludeDirectories) - - - true - comctl32.lib;uxtheme.lib;winmm.lib;htmlhelp.lib;wininet.lib;version.lib;%(AdditionalDependencies) - .\$(TargetName).def - true - Windows - true - true - - - - - NDEBUG;%(PreprocessorDefinitions) - false - true - StartMenuHelper_i.h - StartMenuHelper_i.c - StartMenuHelper_p.c - true - - - MaxSpeed - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;_WINDOWS;NDEBUG;_USRDLL;BUILD_SETUP;%(PreprocessorDefinitions) - MultiThreaded - Use - Level3 - ProgramDatabase - true - true - stdcpp17 - - - NDEBUG;%(PreprocessorDefinitions) - $(IntDir);%(AdditionalIncludeDirectories) - - - comctl32.lib;uxtheme.lib;winmm.lib;htmlhelp.lib;wininet.lib;version.lib;%(AdditionalDependencies) - .\$(TargetName).def - true - Windows - true - true - - - - - NDEBUG;%(PreprocessorDefinitions) - false - true - StartMenuHelper_i.h - StartMenuHelper_i.c - StartMenuHelper_p.c - - - MaxSpeed - ..\..\Lib;%(AdditionalIncludeDirectories) - WIN32;_WINDOWS;NDEBUG;_USRDLL;BUILD_SETUP;%(PreprocessorDefinitions) - MultiThreaded - Use - Level3 - ProgramDatabase - true - true - stdcpp17 - - - NDEBUG;%(PreprocessorDefinitions) - $(IntDir);%(AdditionalIncludeDirectories) - - - comctl32.lib;uxtheme.lib;winmm.lib;htmlhelp.lib;wininet.lib;version.lib;%(AdditionalDependencies) - .\$(TargetName).def - true - Windows - true - true + true + + + @@ -369,17 +120,24 @@ + + - + + PreserveNewest + + + + - + diff --git a/Src/StartMenu/StartMenuHelper/StartMenuHelper.vcxproj.filters b/Src/StartMenu/StartMenuHelper/StartMenuHelper.vcxproj.filters index 496c1d988..119fd0dfb 100644 --- a/Src/StartMenu/StartMenuHelper/StartMenuHelper.vcxproj.filters +++ b/Src/StartMenu/StartMenuHelper/StartMenuHelper.vcxproj.filters @@ -34,6 +34,15 @@ Generated Files + + Source Files + + + Source Files + + + Source Files + @@ -56,6 +65,12 @@ Resource Files + + Resource Files + + + Resource Files + @@ -73,9 +88,18 @@ Header Files - + Generated Files + + Header Files + + + Header Files + + + Header Files + diff --git a/Src/StartMenu/StartMenuHelper/dllmain.cpp b/Src/StartMenu/StartMenuHelper/dllmain.cpp index 10c2ced4e..ebecaa183 100644 --- a/Src/StartMenu/StartMenuHelper/dllmain.cpp +++ b/Src/StartMenu/StartMenuHelper/dllmain.cpp @@ -2,7 +2,7 @@ #include "stdafx.h" #include "resource.h" -#include "StartMenuHelper_i.h" +#include "StartMenuHelper_h.h" #include "dllmain.h" #include "Settings.h" #include "Translations.h" @@ -37,11 +37,6 @@ void SettingChangedCallback( const CSetting *pSetting ) { } -const wchar_t *GetDocRelativePath( void ) -{ - return L""; -} - CSetting g_Settings[]={ {L"MenuStyleGroup",CSetting::TYPE_GROUP}, {L"MenuStyle",CSetting::TYPE_INT,0,0,2}, @@ -57,6 +52,7 @@ CSetting g_Settings[]={ {L"DisablePinExt",CSetting::TYPE_BOOL,0,0,0}, {L"FolderStartMenu",CSetting::TYPE_STRING,0,0,L""}, {L"FolderCommonStartMenu",CSetting::TYPE_STRING,0,0,L""}, + {L"PinnedItemsPath",CSetting::TYPE_DIRECTORY,0,0,L"%APPDATA%\\OpenShell\\Pinned"}, {L"Language",CSetting::TYPE_GROUP}, {L"Language",CSetting::TYPE_STRING,0,0,L"",CSetting::FLAG_COLD|CSetting::FLAG_SHARED}, @@ -91,7 +87,7 @@ static DWORD CALLBACK DllInitThread( void* ) } wchar_t fname[_MAX_PATH]; - Sprintf(fname,_countof(fname),L"%s" INI_PATH L"StartMenuHelperL10N.ini",path); + Sprintf(fname,_countof(fname),L"%sStartMenuHelperL10N.ini",path); CString language=GetSettingString(L"Language"); ParseTranslations(fname,language); diff --git a/Src/StartMenu/StartMenuHelper/resource.h b/Src/StartMenu/StartMenuHelper/resource.h index 1f9e57e6a..d9ab48d28 100644 --- a/Src/StartMenu/StartMenuHelper/resource.h +++ b/Src/StartMenu/StartMenuHelper/resource.h @@ -4,6 +4,8 @@ // #define IDR_STARTMENUHELPER 101 #define IDR_STARTMENUEXT 102 +#define IDR_MODERNSETTINGSSHELLFOLDER 103 +#define IDR_MODERNSETTINGSCONTEXTMENU 104 // Next default values for new objects // @@ -12,6 +14,6 @@ #define _APS_NEXT_RESOURCE_VALUE 201 #define _APS_NEXT_COMMAND_VALUE 32768 #define _APS_NEXT_CONTROL_VALUE 201 -#define _APS_NEXT_SYMED_VALUE 103 +#define _APS_NEXT_SYMED_VALUE 105 #endif #endif diff --git a/Src/StartMenu/StartMenuHelper/stdafx.h b/Src/StartMenu/StartMenuHelper/stdafx.h index b1237cc39..4a90cdb03 100644 --- a/Src/StartMenu/StartMenuHelper/stdafx.h +++ b/Src/StartMenu/StartMenuHelper/stdafx.h @@ -12,7 +12,7 @@ #define _ATL_APARTMENT_THREADED #define _ATL_NO_AUTOMATIC_NAMESPACE - +#define _ATL_MODULES // compatibility with /permissive- #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit #include "resource.h" @@ -22,9 +22,3 @@ #include using namespace ATL; - -#ifdef BUILD_SETUP -#define INI_PATH L"" -#else -#define INI_PATH L"..\\" -#endif diff --git a/Src/StartMenu/StartMenuL10N.ini b/Src/StartMenu/StartMenuL10N.ini index d483f5cfb..8c915b8e4 100644 --- a/Src/StartMenu/StartMenuL10N.ini +++ b/Src/StartMenu/StartMenuL10N.ini @@ -93,6 +93,7 @@ Menu.SearchPeople = عن أ&شخاص... Menu.SortByName = فرز &حسب الاسم Menu.Open = ف&تح Menu.OpenAll = &فتح كافة المستخدمين +Menu.OpenPinned = Open Pinned Menu.Explore = ا&ستكشاف Menu.ExploreAll = است&كشاف كافة المستخدمين Menu.MenuSettings = إعدادات @@ -129,7 +130,7 @@ Menu.RemoveHighlight = إزالة التمييز Menu.Uninstall = إز&الة التثبيت Menu.UninstallTitle = إزالة التثبيت Menu.UninstallPrompt = ‏‏هل تريد بالتأكيد إزالة تثبيت %s؟ -Search.CategorySettings = الإعدادات +Search.CategorySettings = لوحة التح&كم Search.CategoryPCSettings = إعدادات الكمبيوتر Search.CategoryPrograms = البرامج Search.CategoryDocuments = المستندات @@ -229,6 +230,7 @@ Menu.SearchPeople = За хо&ра... Menu.SortByName = &Сортирай по име Menu.Open = &Отвори Menu.OpenAll = О&твори "Всички потребители" +Menu.OpenPinned = Отворете фиксираните елементи Menu.Explore = &Преглед Menu.ExploreAll = Пре&глед на "Всички потребители" Menu.MenuSettings = Настройки @@ -265,7 +267,7 @@ Menu.RemoveHighlight = Премахни осветяването Menu.Uninstall = &Деинсталирай Menu.UninstallTitle = Деинсталиране Menu.UninstallPrompt = Наистина ли искате да деинсталирате %s? -Search.CategorySettings = Настройки +Search.CategorySettings = Контролен панел Search.CategoryPCSettings = Настройки на компютъра Search.CategoryPrograms = Програми Search.CategoryDocuments = Документи @@ -365,6 +367,7 @@ Menu.SearchPeople = &Persones... Menu.SortByName = Ordenar per &Nom Menu.Open = &Obrir Menu.OpenAll = Ob&rir tots els usuaris +Menu.OpenPinned = Obre elements fixats Menu.Explore = E&xplorar Menu.ExploreAll = &Explorar tots els usuaris Menu.MenuSettings = Configuració @@ -403,7 +406,7 @@ Menu.UninstallTitle = Desinstal·la Menu.UninstallPrompt = Esteu segur que voleu desinstal·lar el %s? Menu.ClassicSettings = Open-Shell &Menú Menu.SettingsTip = Ajustaments del Open-Shell Menú -Search.CategorySettings = Configuració +Search.CategorySettings = Panell de control Search.CategoryPCSettings = Configuració de l'ordinador Search.CategoryPrograms = Programes Search.CategoryDocuments = Documents @@ -503,6 +506,7 @@ Menu.SearchPeople = Oso&by... Menu.SortByName = Seřadit podle &názvu Menu.Open = &Otevřít Menu.OpenAll = Ot&evřít položky všech uživatele +Menu.OpenPinned = Otevřít připnuté položky Menu.Explore = Proz&koumat Menu.ExploreAll = P&rocházet položky všech uživatelů Menu.MenuSettings = Nastavení @@ -539,7 +543,7 @@ Menu.RemoveHighlight = Odebrat nejzajímavější místo Menu.Uninstall = &Odinstalovat Menu.UninstallTitle = Odinstalovat Menu.UninstallPrompt = Opravdu chcete odinstalovat položku %s? -Search.CategorySettings = Nastavení +Search.CategorySettings = Ovládací panely Search.CategoryPCSettings = Nastavení počítače Search.CategoryPrograms = Programy Search.CategoryDocuments = Dokumenty @@ -639,6 +643,7 @@ Menu.SearchPeople = Efter &personer... Menu.SortByName = So&rter efter navn Menu.Open = Å&bn Menu.OpenAll = &Åbn mappen Alle brugere +Menu.OpenPinned = Åbn fastgjorte elementer Menu.Explore = &Stifinder Menu.ExploreAll = &Gennemse mappen Alle brugere Menu.MenuSettings = Indstillinger @@ -675,7 +680,7 @@ Menu.RemoveHighlight = Fjern centralt punkt Menu.Uninstall = &Fjern Menu.UninstallTitle = Fjern Menu.UninstallPrompt = Er du sikker på, at du vil fjerne %s? -Search.CategorySettings = Indstillinger +Search.CategorySettings = Kontrolpanel Search.CategoryPCSettings = Pc-indstillinger Search.CategoryPrograms = Programmer Search.CategoryDocuments = Dokumenter @@ -705,7 +710,7 @@ Menu.Documents = &Dokumente Menu.Settings = &Einstellungen Menu.Search = &Suchen Menu.SearchBox = Suchen -Menu.SearchPrograms = Programme/Dateien durchsuchen +Menu.SearchPrograms = Programme und Dateien durchsuchen Menu.SearchInternet = Internet durchsuchen Menu.Searching = Suchvorgang... Menu.NoMatch = Es wurden keine Suchergebnisse gefunden. @@ -741,8 +746,8 @@ Menu.UserMusicTip = Enthält Musik- und andere Audiodateien. Menu.UserVideosTip = Enthält Filme und andere Videodateien. Menu.NetworkTip = Zeigt vorhandene Netzwerkverbindungen an und hilft bei der Erstellung von neuen Verbindungen. Menu.PrintersTip = Fügt lokale und Netzwerkdrucker hinzu, entfernt und konfiguriert diese. -Menu.TaskbarTip = Passt das Startmenü und die Taskleiste an, z.B. die Auswahl anzuzeigender Elementtypen und deren Darstellung. -Menu.ControlPanelTip = Ändert Einstellungen, und passt die Funktionalität des Computers an. +Menu.TaskbarTip = Passt das Startmenü und die Taskleiste an, z. B. die Auswahl anzuzeigender Elementtypen und deren Darstellung. +Menu.ControlPanelTip = Ändert Einstellungen und passt die Funktionalität des Computers an. Menu.DocumentsLibTip = Greift auf Briefe, Berichte, Notizen und andere Dokumente zu. Menu.MusicLibTip = Gibt Musik und andere Audiodateien wieder. Menu.PicturesLibTip = Zeigt digitale Bilder an und verwaltet sie. @@ -753,20 +758,20 @@ Menu.HomegroupTip = Greift auf Bibliotheken und Ordner zu, die von anderen Perso Menu.RunTip = Öffnet ein Programm, einen Ordner, ein Dokument oder eine Website. Menu.HelpTip = Sucht Hilfethemen, Lernprogramme, Problembehandlung und andere Supportdienste. Menu.ProgramsTip = Öffnet eine Liste der Programme. -Menu.SearchFilesTip = Sucht nach Dokumenten, Musik, Bildern, E-Mail und mehr. +Menu.SearchFilesTip = Sucht nach Dokumenten, Musik, Bildern, E-Mails und mehr. Menu.GamesTip = Verwaltet Spiele auf dem Computer. Menu.SecurityTip = Öffnet die Windows-Sicherheitsoptionen, um Kennwörter zu ändern, sich als anderer Benutzer anzumelden oder den Task-Manager zu starten. Menu.SearchComputersTip = Nach Computern im Netzwerk suchen Menu.SearchPrintersTip = Nach einem Drucker suchen Menu.AdminToolsTip = Konfigurieren Sie Verwaltungseinstellungen für den Computer. -Menu.ShutdownTip = Schließt alle offenen Programme, fährt Windows herunter, und schaltet den Computer aus. -Menu.RestartTip = Schließt alle offenen Programme, fährt Windows herunter, und führt einen Neustart durch. -Menu.SleepTip = Speichert die Sitzung im Arbeitsspeicher und versetzt den Computer in einen Energiesparmodus, so dass die Sitzung schnell wiederhergestellt werden kann. +Menu.ShutdownTip = Schließt alle offenen Programme, fährt Windows herunter und schaltet den Computer aus. +Menu.RestartTip = Schließt alle offenen Programme, fährt Windows herunter und führt einen Neustart durch. +Menu.SleepTip = Speichert die Sitzung im Arbeitsspeicher und versetzt den Computer in einen Energiesparmodus, sodass die Sitzung schnell wiederhergestellt werden kann. Menu.HibernateTip = Speichert die Sitzung und schaltet den Computer aus. Wenn Sie den Computer einschalten, wird die Sitzung wiederhergestellt. Menu.LogOffTip = Schließt Programme und führt die Abmeldung aus. Menu.DisconnectTip = Trennt diese Sitzung. Sie können eine Verbindung mit dieser Sitzung erneut herstellen, wenn Sie sich das nächste Mal anmelden. Menu.LockTip = Sperrt diesen Computer. -Menu.UndockTip = Entfernt den Laptop- bzw. Notebookcomputer aus der Dockingstation. +Menu.UndockTip = Entfernt den Laptop oder das Notebook aus der Dockingstation. Menu.SwitchUserTip = Wechselt Benutzer, ohne Programme zu schließen. Menu.Empty = (Leer) Menu.Features = Programme und Funktionen @@ -775,6 +780,7 @@ Menu.SearchPeople = &Nach Personen... Menu.SortByName = &Nach Namen sortieren Menu.Open = Ö&ffnen Menu.OpenAll = Öffnen - &Alle Benutzer +Menu.OpenPinned = Öffnen - &Schnellzugriff Menu.Explore = &Explorer Menu.ExploreAll = E&xplorer - Alle Benutzer Menu.MenuSettings = Einstellungen @@ -811,7 +817,7 @@ Menu.RemoveHighlight = Haupttreffer entfernen Menu.Uninstall = &Deinstallieren Menu.UninstallTitle = Deinstallieren Menu.UninstallPrompt = Möchten Sie %s wirklich deinstallieren? -Search.CategorySettings = Einstellungen +Search.CategorySettings = Systemsteuerung Search.CategoryPCSettings = PC-Einstellungen Search.CategoryPrograms = Programme Search.CategoryDocuments = Dokumente @@ -911,6 +917,7 @@ Menu.SearchPeople = Για ά&τομα... Menu.SortByName = Ταξι&νόμηση κατά όνομα Menu.Open = Άν&οιγμα Menu.OpenAll = Άνοιγμα ό&λων των χρηστών +Menu.OpenPinned = Άνοιγμα καρφιτσωμένων στοιχείων Menu.Explore = Ε&ξερεύνηση Menu.ExploreAll = &Εξερεύνηση όλων των χρηστών Menu.MenuSettings = Ρυθμίσεις @@ -947,7 +954,7 @@ Menu.RemoveHighlight = Κατάργηση επισήμανσης Menu.Uninstall = &Κατάργηση εγκατάστασης Menu.UninstallTitle = Κατάργηση εγκατάστασης Menu.UninstallPrompt = Είστε βέβαιοι ότι θέλετε να καταργήσετε την εγκατάσταση του %s; -Search.CategorySettings = Ρυθμίσεις +Search.CategorySettings = Πίνακας Ελέγχου Search.CategoryPCSettings = Ρυθμίσεις υπολογιστή Search.CategoryPrograms = Προγράμματα Search.CategoryDocuments = Έγγραφα @@ -991,7 +998,7 @@ Menu.LogOffShort = &Log off Menu.Undock = Undock Comput&er Menu.Disconnect = D&isconnect Menu.ShutdownBox = Sh&ut Down... -Menu.Shutdown = Sh&ut Down +Menu.Shutdown = Sh&ut down Menu.Restart = &Restart Menu.ShutdownUpdate = Update and shut down Menu.RestartUpdate = Update and restart @@ -1047,6 +1054,7 @@ Menu.SearchPeople = For &People... Menu.SortByName = Sort &by Name Menu.Open = &Open Menu.OpenAll = O&pen All Users +Menu.OpenPinned = Open Pinned Menu.Explore = &Explore Menu.ExploreAll = E&xplore All Users Menu.MenuSettings = Settings @@ -1083,8 +1091,8 @@ Menu.RemoveHighlight = Remove highlight Menu.Uninstall = &Uninstall Menu.UninstallTitle = Uninstall Menu.UninstallPrompt = Are you sure you want to uninstall %s? -Search.CategorySettings = Settings -Search.CategoryPCSettings = Modern Settings +Search.CategorySettings = Control Panel +Search.CategoryPCSettings = Settings Search.CategoryPrograms = Programs Search.CategoryDocuments = Documents Search.CategoryMusic = Music @@ -1183,6 +1191,7 @@ Menu.SearchPeople = &Personas... Menu.SortByName = Ordenar por &Nombre Menu.Open = &Abrir Menu.OpenAll = Ab&rir todos los usuarios +Menu.OpenPinned = Abrir elementos fijados Menu.Explore = E&xplorar Menu.ExploreAll = &Explorar todos los usuarios Menu.MenuSettings = Configuración @@ -1219,7 +1228,7 @@ Menu.RemoveHighlight = Quitar como elemento destacado Menu.Uninstall = &Desinstalar Menu.UninstallTitle = Desinstalar Menu.UninstallPrompt = ¿Está seguro de que desea desinstalar %s? -Search.CategorySettings = Configuración +Search.CategorySettings = Panel de control Search.CategoryPCSettings = Configuración de tu PC Search.CategoryPrograms = Programas Search.CategoryDocuments = Documentos @@ -1319,6 +1328,7 @@ Menu.SearchPeople = &Inimesi... Menu.SortByName = Sor&di nime järgi Menu.Open = &Ava Menu.OpenAll = A&va kaust Kõik kasutajad +Menu.OpenPinned = Ava kinnitatud üksused Menu.Explore = Uu&ri Menu.ExploreAll = Uur&i kausta Kõik kasutajad Menu.MenuSettings = Sätted @@ -1355,7 +1365,7 @@ Menu.RemoveHighlight = Eemalda esiletõst Menu.Uninstall = &Desinstalli Menu.UninstallTitle = Desinstalli Menu.UninstallPrompt = Kas soovite kindlasti desinstallida %s? -Search.CategorySettings = Sätted +Search.CategorySettings = Juhtpaneel Search.CategoryPCSettings = Arvutisätted Search.CategoryPrograms = Programmid Search.CategoryDocuments = Dokumendid @@ -1455,6 +1465,7 @@ Menu.SearchPeople = برای ا&فراد... Menu.SortByName = &ترتیب بر اساس نام Menu.Open = با&ز کردن Menu.OpenAll = باز کردن تمام &کاربرها +Menu.OpenPinned = Open Pinned Menu.Explore = کاو&ش Menu.ExploreAll = کاوش ت&مام کاربرها Menu.MenuSettings = تنظیمات @@ -1493,7 +1504,7 @@ Menu.UninstallTitle = لغو نصب Menu.UninstallPrompt = ‏‏آیا مطمئنید می خواهید %s را لغو نصب کنید؟ Menu.ClassicSettings = منوی ش&روع کلاسیک Menu.SettingsTip = تنظیمات منوی شروع کلاسیک -Search.CategorySettings = تنظیمات +Search.CategorySettings = صفحه کنترل Search.CategoryPCSettings = تنظیمات رایانه Search.CategoryPrograms = برنامه‌ها Search.CategoryDocuments = اسناد @@ -1593,6 +1604,7 @@ Menu.SearchPeople = &Henkilöitä... Menu.SortByName = &Lajittele nimen mukaan Menu.Open = &Avaa Menu.OpenAll = Avaa &kaikki käyttäjät +Menu.OpenPinned = Avaa kiinnitetyt kohteet Menu.Explore = &Resurssienhallinta Menu.ExploreAll = &Selaa kaikkia käyttäjiä Menu.MenuSettings = Asetukset @@ -1629,7 +1641,7 @@ Menu.RemoveHighlight = Poista tärkeä kohde Menu.Uninstall = &Poista asennus Menu.UninstallTitle = Poista asennus Menu.UninstallPrompt = Haluatko varmasti poistaa kohteen %s asennuksen? -Search.CategorySettings = Asetukset +Search.CategorySettings = Ohjauspaneeli Search.CategoryPCSettings = Tietokoneen asetukset Search.CategoryPrograms = Ohjelmat Search.CategoryDocuments = Tiedostot @@ -1729,6 +1741,7 @@ Menu.SearchPeople = Des &personnes… Menu.SortByName = Trier par &nom Menu.Open = &Ouvrir Menu.OpenAll = Ouvrir &tous les utilisateurs +Menu.OpenPinned = Ouvrir les éléments épinglés Menu.Explore = E&xplorer Menu.ExploreAll = &Explorer Tous les utilisateurs Menu.MenuSettings = Paramètres @@ -1765,7 +1778,7 @@ Menu.RemoveHighlight = Supprimer la recommandation Menu.Uninstall = &Désinstaller Menu.UninstallTitle = Désinstaller Menu.UninstallPrompt = Faut-il vraiment désinstaller %s ? -Search.CategorySettings = Paramètres +Search.CategorySettings = Panneau de configuration Search.CategoryPCSettings = Paramètres du PC Search.CategoryPrograms = Programmes Search.CategoryDocuments = Documents @@ -1865,6 +1878,7 @@ Menu.SearchPeople = Airson &daoine... Menu.SortByName = Seòrsaich a-rèir ain&m Menu.Open = F&osgail Menu.OpenAll = &Fosgail a h-uile cleachdaiche +Menu.OpenPinned = Fosgail nithean pinnte Menu.Explore = &Rùraich Menu.ExploreAll = Rùraic&h a h-uile cleachdaiche Menu.MenuSettings = Roghainnean @@ -1901,7 +1915,7 @@ Menu.RemoveHighlight = Remove highlight Menu.Uninstall = &Dì-stàlaich Menu.UninstallTitle = Dì-stàlaich Menu.UninstallPrompt = A bheil thu cinnteach gu bheil thu airson %s a dhì-stàladh? -Search.CategorySettings = Roghainnean +Search.CategorySettings = A' phanail-smachd Search.CategoryPCSettings = Roghainnean a' PC Search.CategoryPrograms = Prògraman Search.CategoryDocuments = Sgrìobhainnean @@ -2001,6 +2015,7 @@ Menu.SearchPeople = עבור &אנשים... Menu.SortByName = מיין לפי &שם Menu.Open = &פתח Menu.OpenAll = פתח את &כל המשתמשים +Menu.OpenPinned = Open Pinned Menu.Explore = &סייר Menu.ExploreAll = סיי&ר בכל המשתמשים Menu.MenuSettings = הגדרות @@ -2037,7 +2052,7 @@ Menu.RemoveHighlight = הסר הבלטה Menu.Uninstall = ה&סר התקנה Menu.UninstallTitle = הסר התקנה Menu.UninstallPrompt = ‏‏האם אתה בטוח שברצונך להסיר את התקנת %s? -Search.CategorySettings = הגדרות +Search.CategorySettings = לוח הבקרה Search.CategoryPCSettings = הגדרות מחשב Search.CategoryPrograms = תוכניות Search.CategoryDocuments = מסמכים @@ -2137,6 +2152,7 @@ Menu.SearchPeople = Za &osobe... Menu.SortByName = Poredaj po i&menu Menu.Open = &Otvori Menu.OpenAll = Ot&vori sve korisnike +Menu.OpenPinned = Otvaranje zakačenih stavki Menu.Explore = Ist&raži Menu.ExploreAll = Istr&aži sve korisnike Menu.MenuSettings = Postavke @@ -2173,7 +2189,7 @@ Menu.RemoveHighlight = Ukloni isticanje Menu.Uninstall = &Deinstaliraj Menu.UninstallTitle = Deinstaliraj Menu.UninstallPrompt = Jeste li sigurni da želite deinstalirati %s iz računala? -Search.CategorySettings = Postavke +Search.CategorySettings = Upravljačka ploča Search.CategoryPCSettings = Postavke PC-ja Search.CategoryPrograms = Programi Search.CategoryDocuments = Dokumenti @@ -2273,6 +2289,7 @@ Menu.SearchPeople = &Személyek... Menu.SortByName = &Név szerinti rendezés Menu.Open = &Megnyitás Menu.OpenAll = M&egnyitás - All Users +Menu.OpenPinned = Open Pinned Menu.Explore = T&allózás Menu.ExploreAll = Ta&llózás - All Users Menu.MenuSettings = Beállítások @@ -2309,7 +2326,7 @@ Menu.RemoveHighlight = Kiemelés eltávolítása Menu.Uninstall = Eltá&volítás Menu.UninstallTitle = Eltávolítás Menu.UninstallPrompt = Biztosan el kívánja távolítani a következőt: %s? -Search.CategorySettings = Beállítások +Search.CategorySettings = Vezérlőpult Search.CategoryPCSettings = Gépház Search.CategoryPrograms = Programs Search.CategoryDocuments = Dokumentumok @@ -2411,6 +2428,7 @@ Menu.SearchPeople = Að &fólki... Menu.SortByName = Raða &eftir heiti Menu.Open = &Opna Menu.OpenAll = O&pna Allir notendur +Menu.OpenPinned = Opnaðu fest atriði Menu.Explore = Opna &möppu Menu.ExploreAll = Opna m&öppu Allir notendur Menu.MenuSettings = Stillingar @@ -2447,8 +2465,8 @@ Menu.RemoveHighlight = Fjarlægja auðkenningu Menu.Uninstall = Fjarlægja Menu.UninstallTitle = Fjarlægja Menu.UninstallPrompt = Ertu viss um að það eigi að fjarlægja %s? -Search.CategorySettings = Stillingar -Search.CategoryPCSettings = Sérstillingar tölvunnar +Search.CategorySettings = Stjórnborð +Search.CategoryPCSettings = PC stillingar Search.CategoryPrograms = Forrit Search.CategoryDocuments = Skjöl Search.CategoryMusic = Tónlist @@ -2547,6 +2565,7 @@ Menu.SearchPeople = &Contatti... Menu.SortByName = Or&dina per nome Menu.Open = &Apri Menu.OpenAll = Apri &cartella Utenti +Menu.OpenPinned = Apri gli elementi appuntati Menu.Explore = &Esplora Menu.ExploreAll = Esplora cartella &Utenti Menu.MenuSettings = Impostazioni @@ -2583,7 +2602,7 @@ Menu.RemoveHighlight = Rimuovi elemento di rilievo Menu.Uninstall = &Disinstalla Menu.UninstallTitle = Disinstalla Menu.UninstallPrompt = Disinstallare %s? -Search.CategorySettings = Impostazioni +Search.CategorySettings = Pannello di controllo Search.CategoryPCSettings = Impostazioni PC Search.CategoryPrograms = Programmi Search.CategoryDocuments = Documenti @@ -2683,6 +2702,7 @@ Menu.SearchPeople = 人(&P)... Menu.SortByName = 名前順で並べ替え(&B) Menu.Open = 開く(&O) Menu.OpenAll = 開く - All Users(&P) +Menu.OpenPinned = 開く - Pinned Menu.Explore = エクスプローラー(&E) Menu.ExploreAll = エクスプローラー - All Users(&X) Menu.MenuSettings = 設定 @@ -2819,6 +2839,7 @@ Menu.SearchPeople = 사람 찾기(&P)... Menu.SortByName = 이름순 정렬(&B) Menu.Open = 열기(&O) Menu.OpenAll = 열기 - All Users(&P) +Menu.OpenPinned = 열기 - Pinned Menu.Explore = 탐색(&E) Menu.ExploreAll = 탐색 - All Users(&X) Menu.MenuSettings = 설정 @@ -2955,6 +2976,7 @@ Menu.SearchPeople = &Asmenims... Menu.SortByName = &Rūšiuoti pagal vardus Menu.Open = &Atidaryti Menu.OpenAll = A&tidaryti aplanką Visi vartotojai +Menu.OpenPinned = Atidaryti prisegtus elementus Menu.Explore = Naršyt&i Menu.ExploreAll = Na&ršyti visus vartotojus Menu.MenuSettings = Parametrai @@ -2991,7 +3013,7 @@ Menu.RemoveHighlight = Šalinti paryškinimą Menu.Uninstall = &Pašalinti Menu.UninstallTitle = Pašalinti Menu.UninstallPrompt = Ar tikrai norite pašalinti %s? -Search.CategorySettings = Parametrai +Search.CategorySettings = Valdymo skydas Search.CategoryPCSettings = PC parametrai Search.CategoryPrograms = Programos Search.CategoryDocuments = Dokumentai @@ -3091,6 +3113,7 @@ Menu.SearchPeople = &Personām... Menu.SortByName = &Kārtot pēc nosaukuma Menu.Open = A&tvērt Menu.OpenAll = &Atvērt visus lietotājus +Menu.OpenPinned = Atvērt piespraustos vienumus Menu.Explore = &Pārlūkot Menu.ExploreAll = Pār&lūkot visus lietotājus Menu.MenuSettings = Iestatījumi @@ -3127,7 +3150,7 @@ Menu.RemoveHighlight = Noņemt marķējumu Menu.Uninstall = &Atinstalēt Menu.UninstallTitle = Atinstalēt Menu.UninstallPrompt = Vai esat pārliecināts, ka vēlaties atinstalēt %s? -Search.CategorySettings = Iestatījumi +Search.CategorySettings = Vadības panelis Search.CategoryPCSettings = Datora iestatījumi Search.CategoryPrograms = Programmas Search.CategoryDocuments = Dokumenti @@ -3227,6 +3250,7 @@ Menu.SearchPeople = За луѓе... Menu.SortByName = Сортирај по име Menu.Open = Отвори Menu.OpenAll = Отвори "Сите корисници" +Menu.OpenPinned = Отворете закачени ставки Menu.Explore = Преглед Menu.ExploreAll = Преглед на "Сите корисници" Menu.MenuSettings = Подесувања @@ -3263,7 +3287,7 @@ Menu.RemoveHighlight = Remove highlight Menu.Uninstall = &Деинсталирај Menu.UninstallTitle = Деинсталирај Menu.UninstallPrompt = Дали сте сигурни дека сакате да го деинсталирате %s? -Search.CategorySettings = Подесувања +Search.CategorySettings = Контрол панел Search.CategoryPCSettings = Параметри на компјутерот Search.CategoryPrograms = Програми Search.CategoryDocuments = Документи @@ -3363,6 +3387,7 @@ Menu.SearchPeople = Etter &personer... Menu.SortByName = Sorter etter &navn Menu.Open = Å&pne Menu.OpenAll = &Åpne mappen All users +Menu.OpenPinned = Åpne festede elementer Menu.Explore = &Utforsk Menu.ExploreAll = Utforsk &mappen All users Menu.MenuSettings = Innstillinger @@ -3399,7 +3424,7 @@ Menu.RemoveHighlight = Fjern høydepunkt Menu.Uninstall = &Avinstaller Menu.UninstallTitle = Avinstaller Menu.UninstallPrompt = Er du sikker på at du vil avinstallere %s? -Search.CategorySettings = Innstillinger +Search.CategorySettings = Kontrollpanel Search.CategoryPCSettings = PC-innstillinger Search.CategoryPrograms = Programmer Search.CategoryDocuments = Dokumenter @@ -3499,6 +3524,7 @@ Menu.SearchPeople = &Personen... Menu.SortByName = S&orteren op naam Menu.Open = &Openen Menu.OpenAll = &Alle gebruikers weergeven +Menu.OpenPinned = Open vastgezette items Menu.Explore = Ve&rkennen Menu.ExploreAll = Alle &gebruikers verkennen Menu.MenuSettings = Instellingen @@ -3535,7 +3561,7 @@ Menu.RemoveHighlight = Aandachtspunt verwijderen Menu.Uninstall = V&erwijderen Menu.UninstallTitle = Verwijderen Menu.UninstallPrompt = Weet u zeker dat u %s wilt verwijderen? -Search.CategorySettings = Instellingen +Search.CategorySettings = Configuratiescherm Search.CategoryPCSettings = Pc-instellingen Search.CategoryPrograms = Programma's Search.CategoryDocuments = Documenten @@ -3635,6 +3661,7 @@ Menu.SearchPeople = &Do osób... Menu.SortByName = Sortuj w&edług nazw Menu.Open = &Otwórz Menu.OpenAll = Otwórz &wszystkich użytkowników +Menu.OpenPinned = Otwórz przypięte elementy Menu.Explore = &Eksploruj Menu.ExploreAll = E&ksploruj wszystkich użytkowników Menu.MenuSettings = Ustawienia @@ -3671,7 +3698,7 @@ Menu.RemoveHighlight = Usuń wyróżnienie Menu.Uninstall = &Odinstaluj Menu.UninstallTitle = Odinstaluj Menu.UninstallPrompt = Czy na pewno chcesz odinstalować program %s? -Search.CategorySettings = Ustawienia +Search.CategorySettings = Panel sterowania Search.CategoryPCSettings = Ustawienia komputera Search.CategoryPrograms = Programy Search.CategoryDocuments = Dokumenty @@ -3722,7 +3749,7 @@ Menu.RestartUpdate = Atualizar e reiniciar Menu.Sleep = &Dormir Menu.Hibernate = &Hibernar Menu.ControlPanel = &Painel de controle -Menu.PCSettings = Configurações do computador +Menu.PCSettings = Configurações Menu.Security = Segurança do Windows Menu.Network = Co&nexões de Rede Menu.Printers = &Impressoras @@ -3771,6 +3798,7 @@ Menu.SearchPeople = Para &Pessoas... Menu.SortByName = C&lassificar por nome Menu.Open = &Abrir Menu.OpenAll = A&brir a pasta All Users +Menu.OpenPinned = Abrir itens fixados Menu.Explore = E&xplorar Menu.ExploreAll = Expl&orar a pasta All Users Menu.MenuSettings = Configurações @@ -3807,7 +3835,7 @@ Menu.RemoveHighlight = Remover Destaque Menu.Uninstall = &Desinstalar Menu.UninstallTitle = Desinstalar Menu.UninstallPrompt = Tem certeza de que deseja desinstalar %s? -Search.CategorySettings = Configurações +Search.CategorySettings = Painel de controle Search.CategoryPCSettings = Configurações do computador Search.CategoryPrograms = Programas Search.CategoryDocuments = Documentos @@ -3907,6 +3935,7 @@ Menu.SearchPeople = &Pessoas... Menu.SortByName = Ordenar pelo &nome Menu.Open = &Abrir Menu.OpenAll = A&brir All Users +Menu.OpenPinned = Abrir os itens fixados Menu.Explore = E&xplorar Menu.ExploreAll = Explorar All &Users Menu.MenuSettings = Definições @@ -3943,7 +3972,7 @@ Menu.RemoveHighlight = Remover destaque Menu.Uninstall = D&esinstalar Menu.UninstallTitle = Desinstalar Menu.UninstallPrompt = Tem a certeza de que pretende desinstalar %s? -Search.CategorySettings = Definições +Search.CategorySettings = Painel de controlo Search.CategoryPCSettings = Definições do PC Search.CategoryPrograms = Programas Search.CategoryDocuments = Documentos @@ -4043,6 +4072,7 @@ Menu.SearchPeople = &Persoane... Menu.SortByName = &Sortare după nume Menu.Open = &Deschidere Menu.OpenAll = Desc&hidere Toți utilizatorii +Menu.OpenPinned = Deschideți elementele fixate Menu.Explore = &Explorare Menu.ExploreAll = E&xplorare Toți utilizatorii Menu.MenuSettings = Setări @@ -4079,7 +4109,7 @@ Menu.RemoveHighlight = Eliminare evidențiere Menu.Uninstall = &Dezinstalare Menu.UninstallTitle = Dezinstalare Menu.UninstallPrompt = Sigur dezinstalați %s? -Search.CategorySettings = Setări +Search.CategorySettings = Panou de control Search.CategoryPCSettings = Setări PC Search.CategoryPrograms = Programe Search.CategoryDocuments = Documente @@ -4179,6 +4209,7 @@ Menu.SearchPeople = &Людей... Menu.SortByName = &Сортировать по имени Menu.Open = &Открыть Menu.OpenAll = Открыть о&бщее для всех меню +Menu.OpenPinned = Открыть папку "Pinned" Menu.Explore = &Проводник Menu.ExploreAll = Проводни&к в общее для всех меню Menu.MenuSettings = Настройка @@ -4215,7 +4246,7 @@ Menu.RemoveHighlight = Выключить пометку Menu.Uninstall = &Удалить Menu.UninstallTitle = Удалить Menu.UninstallPrompt = Вы действительно хотите удалить "%s"? -Search.CategorySettings = Параметры +Search.CategorySettings = Панель управления Search.CategoryPCSettings = Параметры ПК Search.CategoryPrograms = Программы Search.CategoryDocuments = Документы @@ -4315,6 +4346,7 @@ Menu.SearchPeople = Ľu&dia... Menu.SortByName = &Usporiadať podľa názvov Menu.Open = &Otvoriť Menu.OpenAll = Ot&voriť profil All Users +Menu.OpenPinned = Otvoriť Pinned Menu.Explore = &Preskúmať Menu.ExploreAll = P&reskúmať profil All Users Menu.MenuSettings = Nastavenie @@ -4351,7 +4383,7 @@ Menu.RemoveHighlight = Odstrániť zvýraznenie Menu.Uninstall = &Odinštalovať Menu.UninstallTitle = Odinštalovať Menu.UninstallPrompt = Naozaj chcete odinštalovať program %s? -Search.CategorySettings = Nastavenia +Search.CategorySettings = Ovládací panel Search.CategoryPCSettings = Nastavenie PC Search.CategoryPrograms = Programy Search.CategoryDocuments = Dokumenty @@ -4451,6 +4483,7 @@ Menu.SearchPeople = &Za osebe ... Menu.SortByName = &Razvrsti po imenih Menu.Open = &Odpri Menu.OpenAll = O&dpri mapo »All users« +Menu.OpenPinned = Odpri »Pinned« Menu.Explore = R&azišči Menu.ExploreAll = &Razišči mapo »All users« Menu.MenuSettings = Nastavitve @@ -4487,7 +4520,7 @@ Menu.RemoveHighlight = Odstrani označitev Menu.Uninstall = &Odstrani Menu.UninstallTitle = Odstrani Menu.UninstallPrompt = Ali ste prepričani, da želite odstraniti %s? -Search.CategorySettings = Nastavitve +Search.CategorySettings = Nadzorna plošča Search.CategoryPCSettings = Nastavitve računalnika Search.CategoryPrograms = Programi Search.CategoryDocuments = Dokumenti @@ -4587,6 +4620,7 @@ Menu.SearchPeople = &Za osobe... Menu.SortByName = &Sortiraj po imenu Menu.Open = &Otvori Menu.OpenAll = O&tvori sve korisnike +Menu.OpenPinned = Otvori dodato Menu.Explore = &Istraži Menu.ExploreAll = Istraži sve &korisnike Menu.MenuSettings = Postavke @@ -4623,7 +4657,7 @@ Menu.RemoveHighlight = Ukloni istaknuti sadržaj Menu.Uninstall = &Deinstaliraj Menu.UninstallTitle = Deinstaliraj Menu.UninstallPrompt = Želite li zaista da deinstalirate %s? -Search.CategorySettings = Postavke +Search.CategorySettings = Kontrolna tabla Search.CategoryPCSettings = Postavke računara Search.CategoryPrograms = Programs Search.CategoryDocuments = Dokumenti @@ -4723,6 +4757,7 @@ Menu.SearchPeople = Efter &personer... Menu.SortByName = Sortera efter &namn Menu.Open = &Öppna Menu.OpenAll = Öppna &delade Start-menyn +Menu.OpenPinned = Öppna fästa objekt Menu.Explore = &Utforska Menu.ExploreAll = Utf&orska delade Start-menyn Menu.MenuSettings = Inställningar @@ -4759,7 +4794,7 @@ Menu.RemoveHighlight = Ta bort fokus Menu.Uninstall = &Avinstallera Menu.UninstallTitle = Avinstallera Menu.UninstallPrompt = Vill du avinstallera %s? -Search.CategorySettings = Inställningar +Search.CategorySettings = Kontrollpanelen Search.CategoryPCSettings = Datorinställningar Search.CategoryPrograms = Program Search.CategoryDocuments = Dokument @@ -4860,6 +4895,7 @@ Menu.SearchPeople = สำหรับ&บุคคล... Menu.SortByName = เรียงลำดั&บตามชื่อ Menu.Open = เ&ปิด Menu.OpenAll = &เปิดโฟลเดอร์ All Users +Menu.OpenPinned = เ&ปิด Pinned Menu.Explore = สำรว&จ Menu.ExploreAll = &สำรวจโฟลเดอร์ All Users Menu.MenuSettings = การตั้งค่า @@ -4896,7 +4932,7 @@ Menu.RemoveHighlight = เอาไฮไลท์ออก Menu.Uninstall = &ถอนการติดตั้ง Menu.UninstallTitle = ถอนการติดตั้ง Menu.UninstallPrompt = คุณแน่ใจหรือไม่ว่าคุณต้องการถอนการติดตั้ง %s -Search.CategorySettings = การตั้งค่า +Search.CategorySettings = แผงควบคุม Search.CategoryPCSettings = การตั้งค่าพีซี Search.CategoryPrograms = โปรแกรม Search.CategoryDocuments = เอกสาร @@ -4996,6 +5032,7 @@ Menu.SearchPeople = &Kişiler... Menu.SortByName = A&da Göre Sırala Menu.Open = &Aç Menu.OpenAll = Tü&m Kullanıcıları Aç +Menu.OpenPinned = Sabitlenmiş öğeleri Aç Menu.Explore = A&raştır Menu.ExploreAll = &Tüm Kullanıcıları Araştır Menu.MenuSettings = Ayarlar @@ -5032,7 +5069,7 @@ Menu.RemoveHighlight = Önemli Noktayı Kaldır Menu.Uninstall = &Kaldır Menu.UninstallTitle = Kaldır Menu.UninstallPrompt = %s programını kaldırmak istediğinizden emin misiniz? -Search.CategorySettings = Ayarlar +Search.CategorySettings = Denetim Masası Search.CategoryPCSettings = Bilgisayar ayarları Search.CategoryPrograms = Programlar Search.CategoryDocuments = Belgeler @@ -5132,6 +5169,7 @@ Menu.SearchPeople = Л&юдей... Menu.SortByName = Сортувати за &іменем Menu.Open = &Відкрити Menu.OpenAll = В&ідкрити спільне для всіх меню +Menu.OpenPinned = Open Pinned Menu.Explore = &Провідник Menu.ExploreAll = Пр&овідник до спільного для всіх меню Menu.MenuSettings = Настройки @@ -5168,7 +5206,7 @@ Menu.RemoveHighlight = Видалити виділення Menu.Uninstall = &Видалити Menu.UninstallTitle = Видалити Menu.UninstallPrompt = Дійсно видалити %s? -Search.CategorySettings = Настройки +Search.CategorySettings = Панель керування Search.CategoryPCSettings = Параметри ПК Search.CategoryPrograms = Програми Search.CategoryDocuments = Документи @@ -5268,6 +5306,7 @@ Menu.SearchPeople = 个人(&P)... Menu.SortByName = 按名称排序(&B) Menu.Open = 打开(&O) Menu.OpenAll = 打开所有用户(&P) +Menu.OpenPinned = Open Pinned Menu.Explore = 浏览(&E) Menu.ExploreAll = 浏览所有用户(&X) Menu.MenuSettings = 设置 @@ -5404,6 +5443,7 @@ Menu.SearchPeople = 人員(&P)... Menu.SortByName = 依名稱排序(&B) Menu.Open = 開啟(&O) Menu.OpenAll = 開啟所有使用者(&P) +Menu.OpenPinned = Open Pinned Menu.Explore = 檔案總管(&E) Menu.ExploreAll = 瀏覽所有使用者(&X) Menu.MenuSettings = 設定 @@ -5540,6 +5580,7 @@ Menu.SearchPeople = 人員(&P)... Menu.SortByName = 依名稱排序(&B) Menu.Open = 開啟(&O) Menu.OpenAll = 開啟所有使用者(&P) +Menu.OpenPinned = Open Pinned Menu.Explore = 檔案總管(&E) Menu.ExploreAll = 瀏覽所有使用者(&X) Menu.MenuSettings = 設定 diff --git a/Src/StartMenu/stdafx.h b/Src/StartMenu/stdafx.h index 122f46672..9f7676bd1 100644 --- a/Src/StartMenu/stdafx.h +++ b/Src/StartMenu/stdafx.h @@ -14,6 +14,7 @@ #include #include +#define _ATL_MODULES // compatibility with /permissive- #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit #include diff --git a/Src/Update/DesktopToasts/DesktopNotificationManagerCompat.cpp b/Src/Update/DesktopToasts/DesktopNotificationManagerCompat.cpp new file mode 100644 index 000000000..e537452f3 --- /dev/null +++ b/Src/Update/DesktopToasts/DesktopNotificationManagerCompat.cpp @@ -0,0 +1,291 @@ +// ****************************************************************** +// Copyright (c) Microsoft. All rights reserved. +// This code is licensed under the MIT License (MIT). +// THE CODE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE. +// ****************************************************************** + +#include "DesktopNotificationManagerCompat.h" +#include +#include + +#define RETURN_IF_FAILED(hr) do { HRESULT _hrTemp = hr; if (FAILED(_hrTemp)) { return _hrTemp; } } while (false) + +using namespace ABI::Windows::Data::Xml::Dom; +using namespace Microsoft::WRL; +using namespace Microsoft::WRL::Wrappers; + +namespace DesktopNotificationManagerCompat +{ + HRESULT RegisterComServer(GUID clsid, const wchar_t exePath[]); + HRESULT EnsureRegistered(); + bool IsRunningAsUwp(); + + bool s_registeredAumidAndComServer = false; + std::wstring s_aumid; + bool s_registeredActivator = false; + bool s_hasCheckedIsRunningAsUwp = false; + bool s_isRunningAsUwp = false; + + HRESULT RegisterAumidAndComServer(const wchar_t *aumid, GUID clsid) + { +/* + // If running as Desktop Bridge + if (IsRunningAsUwp()) + { + // Clear the AUMID since Desktop Bridge doesn't use it, and then we're done. + // Desktop Bridge apps are registered with platform through their manifest. + // Their LocalServer32 key is also registered through their manifest. + s_aumid = L""; + s_registeredAumidAndComServer = true; + return S_OK; + } +*/ + // Copy the aumid + s_aumid = std::wstring(aumid); +/* + // Get the EXE path + wchar_t exePath[MAX_PATH]; + DWORD charWritten = ::GetModuleFileName(nullptr, exePath, ARRAYSIZE(exePath)); + RETURN_IF_FAILED(charWritten > 0 ? S_OK : HRESULT_FROM_WIN32(::GetLastError())); + + // Register the COM server + RETURN_IF_FAILED(RegisterComServer(clsid, exePath)); +*/ + s_registeredAumidAndComServer = true; + return S_OK; + } + + HRESULT RegisterActivator() + { + // Module needs a callback registered before it can be used. + // Since we don't care about when it shuts down, we'll pass an empty lambda here. + Module::Create([] {}); + + // If a local server process only hosts the COM object then COM expects + // the COM server host to shutdown when the references drop to zero. + // Since the user might still be using the program after activating the notification, + // we don't want to shutdown immediately. Incrementing the object count tells COM that + // we aren't done yet. + Module::GetModule().IncrementObjectCount(); + + RETURN_IF_FAILED(Module::GetModule().RegisterObjects()); + + s_registeredActivator = true; + return S_OK; + } + + HRESULT RegisterComServer(GUID clsid, const wchar_t exePath[]) + { + // Turn the GUID into a string + OLECHAR* clsidOlechar; + StringFromCLSID(clsid, &clsidOlechar); + std::wstring clsidStr(clsidOlechar); + ::CoTaskMemFree(clsidOlechar); + + // Create the subkey + // Something like SOFTWARE\Classes\CLSID\{23A5B06E-20BB-4E7E-A0AC-6982ED6A6041}\LocalServer32 + std::wstring subKey = LR"(SOFTWARE\Classes\CLSID\)" + clsidStr + LR"(\LocalServer32)"; + + // Include -ToastActivated launch args on the exe + std::wstring exePathStr(exePath); + exePathStr = L"\"" + exePathStr + L"\" " + TOAST_ACTIVATED_LAUNCH_ARG; + + // We don't need to worry about overflow here as ::GetModuleFileName won't + // return anything bigger than the max file system path (much fewer than max of DWORD). + DWORD dataSize = static_cast((exePathStr.length() + 1) * sizeof(WCHAR)); + + // Register the EXE for the COM server + return HRESULT_FROM_WIN32(::RegSetKeyValue( + HKEY_CURRENT_USER, + subKey.c_str(), + nullptr, + REG_SZ, + reinterpret_cast(exePathStr.c_str()), + dataSize)); + } + + HRESULT CreateToastNotifier(IToastNotifier **notifier) + { + RETURN_IF_FAILED(EnsureRegistered()); + + ComPtr toastStatics; + RETURN_IF_FAILED(Windows::Foundation::GetActivationFactory( + HStringReference(RuntimeClass_Windows_UI_Notifications_ToastNotificationManager).Get(), + &toastStatics)); + + if (s_aumid.empty()) + { + return toastStatics->CreateToastNotifier(notifier); + } + else + { + return toastStatics->CreateToastNotifierWithId(HStringReference(s_aumid.c_str()).Get(), notifier); + } + } + + HRESULT CreateXmlDocumentFromString(const wchar_t *xmlString, IXmlDocument **doc) + { + ComPtr answer; + RETURN_IF_FAILED(Windows::Foundation::ActivateInstance(HStringReference(RuntimeClass_Windows_Data_Xml_Dom_XmlDocument).Get(), &answer)); + + ComPtr docIO; + RETURN_IF_FAILED(answer.As(&docIO)); + + // Load the XML string + RETURN_IF_FAILED(docIO->LoadXml(HStringReference(xmlString).Get())); + + return answer.CopyTo(doc); + } + + HRESULT CreateToastNotification(IXmlDocument *content, IToastNotification **notification) + { + ComPtr factory; + RETURN_IF_FAILED(Windows::Foundation::GetActivationFactory( + HStringReference(RuntimeClass_Windows_UI_Notifications_ToastNotification).Get(), + &factory)); + + return factory->CreateToastNotification(content, notification); + } + + HRESULT get_History(std::unique_ptr* history) + { + RETURN_IF_FAILED(EnsureRegistered()); + + ComPtr toastStatics; + RETURN_IF_FAILED(Windows::Foundation::GetActivationFactory( + HStringReference(RuntimeClass_Windows_UI_Notifications_ToastNotificationManager).Get(), + &toastStatics)); + + ComPtr toastStatics2; + RETURN_IF_FAILED(toastStatics.As(&toastStatics2)); + + ComPtr nativeHistory; + RETURN_IF_FAILED(toastStatics2->get_History(&nativeHistory)); + + *history = std::make_unique(s_aumid.c_str(), nativeHistory); + return S_OK; + } + + bool CanUseHttpImages() + { + return IsRunningAsUwp(); + } + + HRESULT EnsureRegistered() + { + // If not registered AUMID yet + if (!s_registeredAumidAndComServer) + { + // Check if Desktop Bridge + if (IsRunningAsUwp()) + { + // Implicitly registered, all good! + s_registeredAumidAndComServer = true; + } + else + { + // Otherwise, incorrect usage, must call RegisterAumidAndComServer first + return E_ILLEGAL_METHOD_CALL; + } + } + + // If not registered activator yet + if (!s_registeredActivator) + { + // Incorrect usage, must call RegisterActivator first + return E_ILLEGAL_METHOD_CALL; + } + + return S_OK; + } + + bool IsRunningAsUwp() + { + if (!s_hasCheckedIsRunningAsUwp) + { + // https://stackoverflow.com/questions/39609643/determine-if-c-application-is-running-as-a-uwp-app-in-desktop-bridge-project + UINT32 length; + wchar_t packageFamilyName[PACKAGE_FAMILY_NAME_MAX_LENGTH + 1]; + LONG result = GetPackageFamilyName(GetCurrentProcess(), &length, packageFamilyName); + s_isRunningAsUwp = result == ERROR_SUCCESS; + s_hasCheckedIsRunningAsUwp = true; + } + + return s_isRunningAsUwp; + } +} + +DesktopNotificationHistoryCompat::DesktopNotificationHistoryCompat(const wchar_t *aumid, ComPtr history) +{ + m_aumid = std::wstring(aumid); + m_history = std::move(history); +} + +HRESULT DesktopNotificationHistoryCompat::Clear() +{ + if (m_aumid.empty()) + { + return m_history->Clear(); + } + else + { + return m_history->ClearWithId(HStringReference(m_aumid.c_str()).Get()); + } +} + +HRESULT DesktopNotificationHistoryCompat::GetHistory(ABI::Windows::Foundation::Collections::IVectorView **toasts) +{ + ComPtr history2; + RETURN_IF_FAILED(m_history.As(&history2)); + + if (m_aumid.empty()) + { + return history2->GetHistory(toasts); + } + else + { + return history2->GetHistoryWithId(HStringReference(m_aumid.c_str()).Get(), toasts); + } +} + +HRESULT DesktopNotificationHistoryCompat::Remove(const wchar_t *tag) +{ + if (m_aumid.empty()) + { + return m_history->Remove(HStringReference(tag).Get()); + } + else + { + return m_history->RemoveGroupedTagWithId(HStringReference(tag).Get(), HStringReference(L"").Get(), HStringReference(m_aumid.c_str()).Get()); + } +} + +HRESULT DesktopNotificationHistoryCompat::RemoveGroupedTag(const wchar_t *tag, const wchar_t *group) +{ + if (m_aumid.empty()) + { + return m_history->RemoveGroupedTag(HStringReference(tag).Get(), HStringReference(group).Get()); + } + else + { + return m_history->RemoveGroupedTagWithId(HStringReference(tag).Get(), HStringReference(group).Get(), HStringReference(m_aumid.c_str()).Get()); + } +} + +HRESULT DesktopNotificationHistoryCompat::RemoveGroup(const wchar_t *group) +{ + if (m_aumid.empty()) + { + return m_history->RemoveGroup(HStringReference(group).Get()); + } + else + { + return m_history->RemoveGroupWithId(HStringReference(group).Get(), HStringReference(m_aumid.c_str()).Get()); + } +} diff --git a/Src/Update/DesktopToasts/DesktopNotificationManagerCompat.h b/Src/Update/DesktopToasts/DesktopNotificationManagerCompat.h new file mode 100644 index 000000000..2d63fe86d --- /dev/null +++ b/Src/Update/DesktopToasts/DesktopNotificationManagerCompat.h @@ -0,0 +1,108 @@ +// ****************************************************************** +// Copyright (c) Microsoft. All rights reserved. +// This code is licensed under the MIT License (MIT). +// THE CODE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE. +// ****************************************************************** + +#pragma once +#include +#include +#include +#include +#include +#define TOAST_ACTIVATED_LAUNCH_ARG L"-ToastActivated" + +using namespace ABI::Windows::UI::Notifications; + +class DesktopNotificationHistoryCompat; + +namespace DesktopNotificationManagerCompat +{ + /// + /// If not running under the Desktop Bridge, you must call this method to register your AUMID with the Compat library and to + /// register your COM CLSID and EXE in LocalServer32 registry. Feel free to call this regardless, and we will no-op if running + /// under Desktop Bridge. Call this upon application startup, before calling any other APIs. + /// + /// An AUMID that uniquely identifies your application. + /// The CLSID of your NotificationActivator class. + HRESULT RegisterAumidAndComServer(const wchar_t *aumid, GUID clsid); + + /// + /// Registers your module to handle COM activations. Call this upon application startup. + /// + HRESULT RegisterActivator(); + + /// + /// Creates a toast notifier. You must have called RegisterActivator first (and also RegisterAumidAndComServer if you're a classic Win32 app), or this will throw an exception. + /// + HRESULT CreateToastNotifier(IToastNotifier** notifier); + + /// + /// Creates an XmlDocument initialized with the specified string. This is simply a convenience helper method. + /// + HRESULT CreateXmlDocumentFromString(const wchar_t *xmlString, ABI::Windows::Data::Xml::Dom::IXmlDocument** doc); + + /// + /// Creates a toast notification. This is simply a convenience helper method. + /// + HRESULT CreateToastNotification(ABI::Windows::Data::Xml::Dom::IXmlDocument* content, IToastNotification** notification); + + /// + /// Gets the DesktopNotificationHistoryCompat object. You must have called RegisterActivator first (and also RegisterAumidAndComServer if you're a classic Win32 app), or this will throw an exception. + /// + HRESULT get_History(std::unique_ptr* history); + + /// + /// Gets a boolean representing whether http images can be used within toasts. This is true if running under Desktop Bridge. + /// + bool CanUseHttpImages(); +} + +class DesktopNotificationHistoryCompat +{ +public: + + /// + /// Removes all notifications sent by this app from action center. + /// + HRESULT Clear(); + + /// + /// Gets all notifications sent by this app that are currently still in Action Center. + /// + HRESULT GetHistory(ABI::Windows::Foundation::Collections::IVectorView** history); + + /// + /// Removes an individual toast, with the specified tag label, from action center. + /// + /// The tag label of the toast notification to be removed. + HRESULT Remove(const wchar_t *tag); + + /// + /// Removes a toast notification from the action using the notification's tag and group labels. + /// + /// The tag label of the toast notification to be removed. + /// The group label of the toast notification to be removed. + HRESULT RemoveGroupedTag(const wchar_t *tag, const wchar_t *group); + + /// + /// Removes a group of toast notifications, identified by the specified group label, from action center. + /// + /// The group label of the toast notifications to be removed. + HRESULT RemoveGroup(const wchar_t *group); + + /// + /// Do not call this. Instead, call DesktopNotificationManagerCompat.get_History() to obtain an instance. + /// + DesktopNotificationHistoryCompat(const wchar_t *aumid, Microsoft::WRL::ComPtr history); + +private: + std::wstring m_aumid; + Microsoft::WRL::ComPtr m_history = nullptr; +}; \ No newline at end of file diff --git a/Src/Update/DesktopToasts/DesktopToasts.def b/Src/Update/DesktopToasts/DesktopToasts.def new file mode 100644 index 000000000..45eb4a7ed --- /dev/null +++ b/Src/Update/DesktopToasts/DesktopToasts.def @@ -0,0 +1,5 @@ +LIBRARY "DesktopToasts.dll" + +EXPORTS + Initialize + DisplaySimpleToast diff --git a/Src/Update/DesktopToasts/DesktopToasts.h b/Src/Update/DesktopToasts/DesktopToasts.h new file mode 100644 index 000000000..a1ac9cef7 --- /dev/null +++ b/Src/Update/DesktopToasts/DesktopToasts.h @@ -0,0 +1,59 @@ +#include + +using DesktopToastActivateHandler = void(__cdecl*)(void* context, LPCWSTR invokedArgs); + +HRESULT Initialize(LPCWSTR appUserModelId, DesktopToastActivateHandler handler, void* handlerContext); +HRESULT DisplaySimpleToast(LPCWSTR title, LPCWSTR text); + +class DesktopToasts +{ +public: + explicit DesktopToasts(LPCWSTR appUserModelId) + { + if (::IsWindows10OrGreater()) + { + auto m_lib = ::LoadLibrary(L"DesktopToasts.dll"); + if (m_lib) + { + m_pInitialize = (decltype(m_pInitialize))::GetProcAddress(m_lib, "Initialize"); + m_pDisplayToast = (decltype(m_pDisplayToast))::GetProcAddress(m_lib, "DisplaySimpleToast"); + + if (m_pInitialize && m_pDisplayToast) + { + if (m_pInitialize(appUserModelId, ToastActivate, this) == S_OK) + m_initialized = true; + } + } + } + } + + ~DesktopToasts() + { + if (m_lib) + ::FreeLibrary(m_lib); + } + + explicit operator bool() const + { + return m_initialized; + } + + HRESULT DisplaySimpleToast(LPCWSTR title, LPCWSTR text) + { + return m_pDisplayToast(title, text); + } + +private: + virtual void OnToastActivate(LPCWSTR invokedArgs) {} + + static void __cdecl ToastActivate(void* context, LPCWSTR invokedArgs) + { + static_cast(context)->OnToastActivate(invokedArgs); + } + + bool m_initialized = false; + + HMODULE m_lib = nullptr; + decltype(&::Initialize) m_pInitialize = nullptr; + decltype(&::DisplaySimpleToast) m_pDisplayToast = nullptr; +}; diff --git a/Src/Update/DesktopToasts/DesktopToasts.rc b/Src/Update/DesktopToasts/DesktopToasts.rc new file mode 100644 index 000000000..3d252060b --- /dev/null +++ b/Src/Update/DesktopToasts/DesktopToasts.rc @@ -0,0 +1,61 @@ +// Microsoft Visual C++ generated resource script. +// + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION _PRODUCT_VERSION + PRODUCTVERSION _PRODUCT_VERSION + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "CompanyName", "Open-Shell" + VALUE "FileDescription", "Desktop toast notifications support" + VALUE "FileVersion", _PRODUCT_VERSION_STR + VALUE "InternalName", "DesktopToasts.dll" + VALUE "LegalCopyright", "Copyright (C) 2020, The Open-Shell Team" + VALUE "OriginalFilename", "DesktopToasts.dll" + VALUE "ProductName", "Open-Shell" + VALUE "ProductVersion", _PRODUCT_VERSION_STR + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// diff --git a/Src/Update/DesktopToasts/DesktopToasts.vcxproj b/Src/Update/DesktopToasts/DesktopToasts.vcxproj new file mode 100644 index 000000000..a68cbab4a --- /dev/null +++ b/Src/Update/DesktopToasts/DesktopToasts.vcxproj @@ -0,0 +1,65 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + 16.0 + Win32Proj + {d94bd2a6-1872-4f01-b911-f406603aa2e1} + DesktopToasts + 10.0 + + + + DynamicLibrary + $(DefaultPlatformToolset) + Unicode + true + + + + + + + + + + + + + true + DESKTOPTOASTS_EXPORTS;_USRDLL;%(PreprocessorDefinitions) + NotUsing + + + false + runtimeobject.lib;%(AdditionalDependencies) + DesktopToasts.def + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Src/Update/DesktopToasts/DesktopToasts.vcxproj.filters b/Src/Update/DesktopToasts/DesktopToasts.vcxproj.filters new file mode 100644 index 000000000..e13aeaa0a --- /dev/null +++ b/Src/Update/DesktopToasts/DesktopToasts.vcxproj.filters @@ -0,0 +1,43 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + + + Source Files + + + + + Resource Files + + + \ No newline at end of file diff --git a/Src/Update/DesktopToasts/dllmain.cpp b/Src/Update/DesktopToasts/dllmain.cpp new file mode 100644 index 000000000..cccd93365 --- /dev/null +++ b/Src/Update/DesktopToasts/dllmain.cpp @@ -0,0 +1,131 @@ +// dllmain.cpp : Defines the entry point for the DLL application. +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +#include +#include +#include +#include + +#include "DesktopToasts.h" +#include "DesktopNotificationManagerCompat.h" + +#define RETURN_IF_FAILED(hr) do { HRESULT _hrTemp = hr; if (FAILED(_hrTemp)) { return _hrTemp; } } while (false) + +using namespace ABI::Windows::Data::Xml::Dom; +using namespace ABI::Windows::UI::Notifications; +using namespace Microsoft::WRL; +using namespace Microsoft::WRL::Wrappers; + +DesktopToastActivateHandler g_handler = nullptr; +void* g_handlerContext = nullptr; + +class DECLSPEC_UUID("E407B70A-1FBD-4D5E-8822-231C69102472") NotificationActivator WrlSealed WrlFinal + : public RuntimeClass, INotificationActivationCallback> +{ +public: + virtual HRESULT STDMETHODCALLTYPE Activate( + _In_ LPCWSTR appUserModelId, + _In_ LPCWSTR invokedArgs, + _In_reads_(dataCount) const NOTIFICATION_USER_INPUT_DATA * data, + ULONG dataCount) override + { + if (g_handler) + g_handler(g_handlerContext, invokedArgs); + + return S_OK; + } +}; + +// Flag class as COM creatable +CoCreatableClass(NotificationActivator); + +HRESULT Initialize(LPCWSTR appUserModelId, DesktopToastActivateHandler handler, void* handlerContext) +{ + RETURN_IF_FAILED(DesktopNotificationManagerCompat::RegisterAumidAndComServer(appUserModelId, __uuidof(NotificationActivator))); + RETURN_IF_FAILED(DesktopNotificationManagerCompat::RegisterActivator()); + g_handler = handler; + g_handlerContext = handlerContext; + + return S_OK; +} + +HRESULT SetNodeValueString(HSTRING inputString, IXmlNode* node, IXmlDocument* xml) +{ + ComPtr inputText; + RETURN_IF_FAILED(xml->CreateTextNode(inputString, &inputText)); + + ComPtr inputTextNode; + RETURN_IF_FAILED(inputText.As(&inputTextNode)); + + ComPtr appendedChild; + return node->AppendChild(inputTextNode.Get(), &appendedChild); +} + +_Use_decl_annotations_ +HRESULT SetTextValues(const PCWSTR* textValues, UINT32 textValuesCount, IXmlDocument* toastXml) +{ + ComPtr nodeList; + RETURN_IF_FAILED(toastXml->GetElementsByTagName(HStringReference(L"text").Get(), &nodeList)); + + UINT32 nodeListLength; + RETURN_IF_FAILED(nodeList->get_Length(&nodeListLength)); + + // If a template was chosen with fewer text elements, also change the amount of strings + // passed to this method. + RETURN_IF_FAILED(textValuesCount <= nodeListLength ? S_OK : E_INVALIDARG); + + for (UINT32 i = 0; i < textValuesCount; i++) + { + ComPtr textNode; + RETURN_IF_FAILED(nodeList->Item(i, &textNode)); + + RETURN_IF_FAILED(SetNodeValueString(HStringReference(textValues[i]).Get(), textNode.Get(), toastXml)); + } + + return S_OK; +} + +HRESULT DisplaySimpleToast(LPCWSTR title, LPCWSTR text) +{ + // Construct XML + ComPtr doc; + HRESULT hr = DesktopNotificationManagerCompat::CreateXmlDocumentFromString(L"", &doc); + if (SUCCEEDED(hr)) + { + PCWSTR textValues[] = { title, text }; + SetTextValues(textValues, ARRAYSIZE(textValues), doc.Get()); + + // Create the notifier + // Classic Win32 apps MUST use the compat method to create the notifier + ComPtr notifier; + hr = DesktopNotificationManagerCompat::CreateToastNotifier(¬ifier); + if (SUCCEEDED(hr)) + { + // Create the notification itself (using helper method from compat library) + ComPtr toast; + hr = DesktopNotificationManagerCompat::CreateToastNotification(doc.Get(), &toast); + if (SUCCEEDED(hr)) + { + // And show it! + hr = notifier->Show(toast.Get()); + } + } + } + + return hr; +} + +BOOL APIENTRY DllMain( HMODULE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved + ) +{ + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +} diff --git a/Src/Update/Update.cpp b/Src/Update/Update.cpp index 35094dee8..5a64b411d 100644 --- a/Src/Update/Update.cpp +++ b/Src/Update/Update.cpp @@ -16,6 +16,7 @@ #include "ResourceHelper.h" #include "Translations.h" #include +#include "DesktopToasts/DesktopToasts.h" void ClosingSettings( HWND hWnd, int flags, int command ) @@ -43,11 +44,6 @@ void UpdateSettings( void ) UpdateSetting(L"Language",language,false); } -const wchar_t *GetDocRelativePath( void ) -{ - return NULL; -} - static int g_LoadDialogs[]= { IDD_UPDATE,0x04000000, @@ -59,11 +55,13 @@ static CSetting g_Settings[]={ {L"Update",CSetting::TYPE_GROUP}, {L"Language",CSetting::TYPE_STRING,0,0,L"",CSetting::FLAG_SHARED}, {L"Update",CSetting::TYPE_BOOL,0,0,1,CSetting::FLAG_SHARED}, + {L"Nightly",CSetting::TYPE_BOOL,0,0,0,CSetting::FLAG_SHARED}, {NULL} }; const int SETTING_UPDATE=2; +const int SETTING_NIGHTLY=3; /////////////////////////////////////////////////////////////////////////////// @@ -78,6 +76,7 @@ class CUpdateDlg: public CResizeableDlg MESSAGE_HANDLER( WM_GETMINMAXINFO, OnGetMinMaxInfo ) MESSAGE_HANDLER( WM_CTLCOLORSTATIC, OnColorStatic ) COMMAND_HANDLER( IDC_CHECKAUTOCHECK, BN_CLICKED, OnCheckAuto ) + COMMAND_HANDLER( IDC_CHECKNIGHTLY, BN_CLICKED, OnCheckNightly ) COMMAND_HANDLER( IDC_BUTTONCHECKNOW, BN_CLICKED, OnCheckNow ) COMMAND_HANDLER( IDC_BUTTONDOWNLOAD, BN_CLICKED, OnDownload ) COMMAND_HANDLER( IDC_CHECKDONT, BN_CLICKED, OnDontRemind ) @@ -99,7 +98,6 @@ class CUpdateDlg: public CResizeableDlg void Run( void ); void UpdateData( void ); - bool HasNewLanguage( void ) { return (m_Data.bNewLanguage && !m_Data.bIgnoreLanguage) && !(m_Data.bNewVersion && !m_Data.bIgnoreVersion); } protected: // Handler prototypes: @@ -113,6 +111,7 @@ class CUpdateDlg: public CResizeableDlg LRESULT OnCancel( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled ); LRESULT OnColorStatic( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ); LRESULT OnCheckAuto( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled ); + LRESULT OnCheckNightly( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled ); LRESULT OnCheckNow( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled ); LRESULT OnDownload( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled ); LRESULT OnDontRemind( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled ); @@ -144,7 +143,7 @@ LRESULT CUpdateDlg::OnInitDialog( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& HDC hdc=::GetDC(NULL); int dpi=GetDeviceCaps(hdc,LOGPIXELSY); ::ReleaseDC(NULL,hdc); - m_Font=CreateFont(-9*dpi/72,0,0,0,FW_NORMAL,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FIXED_PITCH,L"Consolas"); + m_Font=CreateFont(-MulDiv(9,dpi,72),0,0,0,FW_NORMAL,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FIXED_PITCH,L"Consolas"); if (m_Font) GetDlgItem(IDC_EDITTEXT).SetFont(m_Font); m_Tooltip.Create(TOOLTIPS_CLASS,m_hWnd,NULL,NULL,WS_POPUP|TTS_NOPREFIX); @@ -160,6 +159,13 @@ LRESULT CUpdateDlg::OnInitDialog( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& CheckDlgButton(IDC_CHECKAUTOCHECK,check?BST_CHECKED:BST_UNCHECKED); GetDlgItem(IDC_CHECKAUTOCHECK).EnableWindow(!(g_Settings[SETTING_UPDATE].flags&CSetting::FLAG_LOCKED_MASK)); GetDlgItem(IDC_BUTTONCHECKNOW).EnableWindow(!(g_Settings[SETTING_UPDATE].flags&CSetting::FLAG_LOCKED_MASK) || check); + + bool nightly = false; + if (g_Settings[SETTING_NIGHTLY].value.vt == VT_I4) + nightly = g_Settings[SETTING_NIGHTLY].value.intVal != 0; + CheckDlgButton(IDC_CHECKNIGHTLY, nightly ? BST_CHECKED : BST_UNCHECKED); + GetDlgItem(IDC_CHECKNIGHTLY).EnableWindow(!(g_Settings[SETTING_NIGHTLY].flags & CSetting::FLAG_LOCKED_MASK) && check); + UpdateUI(); return TRUE; @@ -192,7 +198,7 @@ LRESULT CUpdateDlg::OnCancel( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bH LRESULT CUpdateDlg::OnColorStatic( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ) { - if ((m_Data.bNewVersion || m_Data.bNewLanguage) && lParam==(LPARAM)GetDlgItem(IDC_STATICLATEST).m_hWnd) + if (m_Data.bNewVersion && lParam==(LPARAM)GetDlgItem(IDC_STATICLATEST).m_hWnd) { HDC hdc=(HDC)wParam; SetTextColor(hdc,0xFF); @@ -209,6 +215,17 @@ LRESULT CUpdateDlg::OnCheckAuto( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bool check=IsDlgButtonChecked(IDC_CHECKAUTOCHECK)==BST_CHECKED; g_Settings[SETTING_UPDATE].value=CComVariant(check?1:0); g_Settings[SETTING_UPDATE].flags&=~CSetting::FLAG_DEFAULT; + GetDlgItem(IDC_CHECKNIGHTLY).EnableWindow(check); + UpdateUI(); + return 0; +} + +LRESULT CUpdateDlg::OnCheckNightly(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) +{ + CSettingsLockWrite lock; + bool check = IsDlgButtonChecked(IDC_CHECKNIGHTLY) == BST_CHECKED; + g_Settings[SETTING_NIGHTLY].value = CComVariant(check ? 1 : 0); + g_Settings[SETTING_NIGHTLY].flags &= ~CSetting::FLAG_DEFAULT; UpdateUI(); return 0; } @@ -265,37 +282,6 @@ LRESULT CUpdateDlg::OnDownload( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& } } } - else if (m_Data.bNewLanguage) - { - for (std::vector::const_iterator it=m_Data.languages.begin();it!=m_Data.languages.end();++it) - { - if (_wcsicmp(m_Data.newLanguage,it->language)==0) - { - CString error; - DWORD res=DownloadLanguageDll(m_hWnd,COMPONENT_UPDATE,*it,error); - if (res==2) - return 0; - if (res) - { - MessageBox(LoadStringEx(it->bBasic?IDS_LANGUAGE_SUCCESS2:IDS_LANGUAGE_SUCCESS),LoadStringEx(IDS_UPDATE_TITLE),MB_OK|(it->bBasic?MB_ICONWARNING:MB_ICONINFORMATION)); - SetDlgItemText(IDC_STATICLATEST,L""); - } - else - { - error+=LoadStringEx(IDS_DOWNLOAD_TIP)+L"\r\n\r\n"+m_Data.languageLink; - TASKDIALOGCONFIG task={sizeof(task),m_hWnd,NULL,TDF_ENABLE_HYPERLINKS|TDF_ALLOW_DIALOG_CANCELLATION|TDF_USE_HICON_MAIN,TDCBF_OK_BUTTON}; - CString title=LoadStringEx(IDS_UPDATE_TITLE); - task.pszWindowTitle=title; - task.pszContent=error; - task.hMainIcon=LoadIcon(NULL,IDI_ERROR); - task.pfCallback=TaskDialogCallbackProc; - TaskDialogIndirect(&task,NULL,NULL,NULL); - } - return 0; - } - } - Assert(0); // NEWLanguage is not in the list - } return 0; } @@ -309,17 +295,12 @@ LRESULT CUpdateDlg::OnDontRemind( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL m_Data.bIgnoreVersion=(IsDlgButtonChecked(IDC_CHECKDONT)==BST_CHECKED); regKey.SetDWORDValue(L"RemindedVersion",m_Data.bIgnoreVersion?m_Data.newVersion:0); } - else if (m_Data.bNewLanguage) - { - m_Data.bIgnoreLanguage=(IsDlgButtonChecked(IDC_CHECKDONT)==BST_CHECKED); - regKey.SetDWORDValue(L"RemindedLangVersion",m_Data.bIgnoreLanguage?m_Data.encodedLangVersion:0); - } return 0; } LRESULT CUpdateDlg::OnWeb( int idCtrl, LPNMHDR pnmh, BOOL& bHandled ) { - ShellExecute(m_hWnd,NULL,L"https://github.com/Open-Shell/Open-Shell-Menu",NULL,NULL,SW_SHOWNORMAL); + ShellExecute(m_hWnd,NULL,L"https://open-shell.github.io/Open-Shell-Menu/",NULL,NULL,SW_SHOWNORMAL); return 0; } @@ -355,28 +336,6 @@ void CUpdateDlg::UpdateUI( void ) tool.lpszText=(LPWSTR)(LPCWSTR)m_Data.downloadUrl; m_Tooltip.SendMessage(TTM_ADDTOOL,0,(LPARAM)&tool); } - else if (m_Data.bNewLanguage) - { - SetDlgItemText(IDC_STATICLATEST,LoadStringEx(IDS_LANG_OUTOFDATE)); - SetDlgItemText(IDC_EDITTEXT,L""); - GetDlgItem(IDC_EDITTEXT).ShowWindow(SW_HIDE); - GetDlgItem(IDC_BUTTONDOWNLOAD).ShowWindow(SW_SHOW); - bool check=true; - if (g_Settings[SETTING_UPDATE].value.vt==VT_I4) - check=g_Settings[SETTING_UPDATE].value.intVal!=0; - GetDlgItem(IDC_CHECKDONT).ShowWindow(check?SW_SHOW:SW_HIDE); - CheckDlgButton(IDC_CHECKDONT,m_Data.bIgnoreLanguage?BST_CHECKED:BST_UNCHECKED); - TOOLINFO tool={sizeof(tool),TTF_SUBCLASS|TTF_IDISHWND,m_hWnd,(UINT_PTR)GetDlgItem(IDC_BUTTONDOWNLOAD).m_hWnd}; - for (std::vector::const_iterator it=m_Data.languages.begin();it!=m_Data.languages.end();++it) - { - if (_wcsicmp(m_Data.newLanguage,it->language)==0) - { - tool.lpszText=(LPWSTR)(LPCWSTR)it->url; - break; - } - } - m_Tooltip.SendMessage(TTM_ADDTOOL,0,(LPARAM)&tool); - } else { SetDlgItemText(IDC_STATICLATEST,LoadStringEx(IDS_UPDATED)); @@ -399,6 +358,9 @@ void CUpdateDlg::UpdateUI( void ) void CUpdateDlg::Run( void ) { + if (m_hWnd) + return; + DLGTEMPLATE *pTemplate=LoadDialogEx(IDD_UPDATE); Create(NULL,pTemplate); MSG msg; @@ -457,15 +419,25 @@ class COwnerWindow: public CWindowImpl /////////////////////////////////////////////////////////////////////////////// +class UpdateToasts : public DesktopToasts +{ +public: + UpdateToasts() : DesktopToasts(L"OpenShell.Update") {} + +private: + void OnToastActivate(LPCWSTR invokedArgs) override + { + g_UpdateDlg.Run(); + } +}; + +/////////////////////////////////////////////////////////////////////////////// + int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrCmdLine, int nCmdShow ) { INITCOMMONCONTROLSEX init={sizeof(init),ICC_STANDARD_CLASSES}; InitCommonControlsEx(&init); -/* - VersionData data; - data.Load(L"D:\\Work\\OpenShell\\Setup\\Final\\update_4.0.4.ver",false); - return 0; -*/ + // prevent multiple instances from running on the same desktop // the assumption is that multiple desktops for the same user will have different name (but may repeat across users) wchar_t userName[256]; @@ -491,8 +463,6 @@ int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrC CString language=GetSettingString(L"Language"); ParseTranslations(NULL,language); - g_Instance=hInstance; - HINSTANCE resInstance=LoadTranslationDll(language); LoadTranslationResources(resInstance,g_LoadDialogs); @@ -504,6 +474,9 @@ int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrC COwnerWindow ownerWindow; ownerWindow.Create(NULL,0,0,WS_POPUP); + + UpdateToasts toasts; + if (wcsstr(lpstrCmdLine,L"-popup")!=NULL) { g_UpdateDlg.UpdateData(); @@ -511,57 +484,85 @@ int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrC int sleep=5000-(timeGetTime()-time0); if (sleep>0) Sleep(sleep); - HWND balloon=CreateWindowEx(WS_EX_TOPMOST|WS_EX_TOOLWINDOW|(IsLanguageRTL()?WS_EX_LAYOUTRTL:0),TOOLTIPS_CLASS,NULL,WS_POPUP|TTS_CLOSE|TTS_NOPREFIX,0,0,0,0,NULL,NULL,g_Instance,NULL); - SendMessage(balloon,TTM_SETMAXTIPWIDTH,0,500); - TOOLINFO tool={sizeof(tool),TTF_ABSOLUTE|TTF_TRANSPARENT|TTF_TRACK|(IsLanguageRTL()?TTF_RTLREADING:0U)}; - tool.uId=1; - CString message=LoadStringEx(g_UpdateDlg.HasNewLanguage()?IDS_LANG_NEWVERSION:IDS_NEWVERSION); - tool.lpszText=(wchar_t*)(const wchar_t*)message; - SendMessage(balloon,TTM_ADDTOOL,0,(LPARAM)&tool); - SendMessage(balloon,TTM_SETTITLE,(WPARAM)LoadIcon(g_Instance,MAKEINTRESOURCE(IDI_APPICON)),(LPARAM)(const wchar_t*)LoadStringEx(IDS_UPDATE_TITLE)); - APPBARDATA appbar={sizeof(appbar)}; - SHAppBarMessage(ABM_GETTASKBARPOS,&appbar); - MONITORINFO info={sizeof(info)}; - GetMonitorInfo(MonitorFromWindow(appbar.hWnd,MONITOR_DEFAULTTOPRIMARY),&info); - SendMessage(balloon,TTM_TRACKPOSITION,0,0); - SendMessage(balloon,TTM_TRACKACTIVATE,TRUE,(LPARAM)&tool); - RECT rc; - GetWindowRect(balloon,&rc); - LONG pos; - if (appbar.uEdge==ABE_LEFT) - pos=MAKELONG(info.rcWork.left,info.rcWork.bottom-rc.bottom+rc.top); - else if (appbar.uEdge==ABE_RIGHT) - pos=MAKELONG(info.rcWork.right-rc.right+rc.left,info.rcWork.bottom-rc.bottom+rc.top); - else if (appbar.uEdge==ABE_TOP) - pos=MAKELONG(IsLanguageRTL()?info.rcWork.left:info.rcWork.right-rc.right+rc.left,info.rcWork.top); + + auto title = LoadStringEx(IDS_UPDATE_TITLE); + auto message = LoadStringEx(IDS_NEWVERSION); + + if (toasts) + { + toasts.DisplaySimpleToast(title, message); + } else - pos=MAKELONG(IsLanguageRTL()?info.rcWork.left:info.rcWork.right-rc.right+rc.left,info.rcWork.bottom-rc.bottom+rc.top); - SendMessage(balloon,TTM_TRACKPOSITION,0,pos); - SetWindowSubclass(balloon,SubclassBalloonProc,0,'CLSH'); - PlaySound(L"SystemNotification",NULL,SND_APPLICATION|SND_ALIAS|SND_ASYNC|SND_NODEFAULT|SND_SYSTEM); - int time0=timeGetTime(); - while (IsWindowVisible(balloon)) { - if (time0 && (timeGetTime()-time0)>=15000) - { - time0=0; - TOOLINFO tool={sizeof(tool)}; - tool.uId=1; - SendMessage(balloon,TTM_TRACKACTIVATE,FALSE,(LPARAM)&tool); - } - MSG msg; - while (PeekMessage(&msg,0,0,0,PM_REMOVE)) + HWND balloon = CreateWindowEx(WS_EX_TOPMOST | WS_EX_TOOLWINDOW | (IsLanguageRTL() ? WS_EX_LAYOUTRTL : 0), TOOLTIPS_CLASS, NULL, WS_POPUP | TTS_CLOSE | TTS_NOPREFIX, 0, 0, 0, 0, NULL, NULL, g_Instance, NULL); + SendMessage(balloon, TTM_SETMAXTIPWIDTH, 0, 500); + TOOLINFO tool = { sizeof(tool),TTF_ABSOLUTE | TTF_TRANSPARENT | TTF_TRACK | (IsLanguageRTL() ? TTF_RTLREADING : 0U) }; + tool.uId = 1; + tool.lpszText = (wchar_t*)(const wchar_t*)message; + SendMessage(balloon, TTM_ADDTOOL, 0, (LPARAM)&tool); + SendMessage(balloon, TTM_SETTITLE, (WPARAM)LoadIcon(g_Instance, MAKEINTRESOURCE(IDI_APPICON)), (LPARAM)(const wchar_t*)title); + APPBARDATA appbar = { sizeof(appbar) }; + SHAppBarMessage(ABM_GETTASKBARPOS, &appbar); + MONITORINFO info = { sizeof(info) }; + GetMonitorInfo(MonitorFromWindow(appbar.hWnd, MONITOR_DEFAULTTOPRIMARY), &info); + SendMessage(balloon, TTM_TRACKPOSITION, 0, 0); + SendMessage(balloon, TTM_TRACKACTIVATE, TRUE, (LPARAM)&tool); + RECT rc; + GetWindowRect(balloon, &rc); + LONG pos; + if (appbar.uEdge == ABE_LEFT) + pos = MAKELONG(info.rcWork.left, info.rcWork.bottom - rc.bottom + rc.top); + else if (appbar.uEdge == ABE_RIGHT) + pos = MAKELONG(info.rcWork.right - rc.right + rc.left, info.rcWork.bottom - rc.bottom + rc.top); + else if (appbar.uEdge == ABE_TOP) + pos = MAKELONG(IsLanguageRTL() ? info.rcWork.left : info.rcWork.right - rc.right + rc.left, info.rcWork.top); + else + pos = MAKELONG(IsLanguageRTL() ? info.rcWork.left : info.rcWork.right - rc.right + rc.left, info.rcWork.bottom - rc.bottom + rc.top); + SendMessage(balloon, TTM_TRACKPOSITION, 0, pos); + SetWindowSubclass(balloon, SubclassBalloonProc, 0, 'CLSH'); + PlaySound(L"SystemNotification", NULL, SND_APPLICATION | SND_ALIAS | SND_ASYNC | SND_NODEFAULT | SND_SYSTEM); + int time0 = timeGetTime(); + while (IsWindowVisible(balloon)) { - TranslateMessage(&msg); - DispatchMessage(&msg); + if (time0 && (timeGetTime() - time0) >= 15000) + { + time0 = 0; + TOOLINFO tool = { sizeof(tool) }; + tool.uId = 1; + SendMessage(balloon, TTM_TRACKACTIVATE, FALSE, (LPARAM)&tool); + } + MSG msg; + while (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + Sleep(10); } - Sleep(10); } } + else if (wcsstr(lpstrCmdLine, L"-ToastActivated")) + { + g_UpdateDlg.UpdateData(); + // dialog will be shown once toast is activated (UpdateToasts::OnToastActivate) + } else { g_UpdateDlg.Run(); } + + // process messages for a while + for (int i = 0; i < 100; i++) + { + MSG msg; + while (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + Sleep(10); + } + ownerWindow.DestroyWindow(); CoUninitialize(); return 0; diff --git a/Src/Update/Update.rc b/Src/Update/Update.rc index 918b45c27..4f91f0207 100644 --- a/Src/Update/Update.rc +++ b/Src/Update/Update.rc @@ -123,22 +123,24 @@ END // Dialog // -IDD_UPDATE DIALOGEX 0, 0, 316, 181 +IDD_UPDATE DIALOGEX 0, 0, 316, 200 STYLE DS_SETFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "Open-Shell Update" FONT 9, "Segoe UI", 400, 0, 0x0 BEGIN CONTROL "Automatically check for new versions",IDC_CHECKAUTOCHECK, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,7,129,10 - PUSHBUTTON "Check now",IDC_BUTTONCHECKNOW,7,17,50,14 - LTEXT "message",IDC_STATICLATEST,7,33,302,10,SS_CENTERIMAGE - EDITTEXT IDC_EDITTEXT,7,45,302,97,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | NOT WS_VISIBLE | WS_VSCROLL - PUSHBUTTON "Download",IDC_BUTTONDOWNLOAD,7,144,50,14,NOT WS_VISIBLE + CONTROL "Check for nightly builds",IDC_CHECKNIGHTLY, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,19,151,10 + PUSHBUTTON "Check now",IDC_BUTTONCHECKNOW,7,34,50,14 + LTEXT "message",IDC_STATICLATEST,7,48,302,10,SS_CENTERIMAGE + EDITTEXT IDC_EDITTEXT,7,60,302,97,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | NOT WS_VISIBLE | WS_VSCROLL + PUSHBUTTON "Download",IDC_BUTTONDOWNLOAD,7,161,50,14,NOT WS_VISIBLE CONTROL "Don't remind me again about this version",IDC_CHECKDONT, - "Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,61,144,141,14 - CONTROL "https://github.com/Open-Shell/Open-Shell-Menu",IDC_LINKWEB,"SysLink",WS_TABSTOP,7,164,66,10,WS_EX_TRANSPARENT - DEFPUSHBUTTON "OK",IDOK,202,160,50,14 - PUSHBUTTON "Cancel",IDCANCEL,259,160,50,14 + "Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,61,161,141,14 + CONTROL "Open-Shell-Menu",IDC_LINKWEB,"SysLink",WS_TABSTOP,7,181,66,10,WS_EX_TRANSPARENT + DEFPUSHBUTTON "OK",IDOK,202,177,50,14 + PUSHBUTTON "Cancel",IDCANCEL,259,177,50,14 END @@ -155,7 +157,7 @@ BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 309 TOPMARGIN, 7 - BOTTOMMARGIN, 174 + BOTTOMMARGIN, 191 END END #endif // APSTUDIO_INVOKED @@ -181,8 +183,6 @@ BEGIN IDS_OUTOFDATE "There is a new version of Open-Shell" IDS_NEWVERSION "There is a new version of Open-Shell.\nClick here to see what's new or to change the reminder settings." IDS_UPDATE_FAIL "Failed to check for new version" - IDS_LANG_OUTOFDATE "There is a new language file for this version of Open-Shell" - IDS_LANG_NEWVERSION "There is a new language file for this version of Open-Shell.\nClick here to install it or to change the reminder settings." END #endif // English (U.S.) resources diff --git a/Src/Update/Update.vcxproj b/Src/Update/Update.vcxproj index a4cf6e1b0..89e3d4579 100644 --- a/Src/Update/Update.vcxproj +++ b/Src/Update/Update.vcxproj @@ -14,91 +14,29 @@ {171B46B0-6083-4D9E-BD33-946EA3BD76FA} Update Win32Proj - 10.0.17134.0 + 10.0 - + Application - v141 - Static - Unicode - true - - - Application - v141 + $(DefaultPlatformToolset) Static Unicode + true - - - - - - - + + - - $(Configuration)\ - $(Configuration)\ - true - - - $(Configuration)\ - $(Configuration)\ - false - - - - Disabled - ..\Lib;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebug - NotUsing - Level3 - EditAndContinue - true - stdcpp17 - - - $(IntDir);..\Lib;%(AdditionalIncludeDirectories) - - - shlwapi.lib;comctl32.lib;uxtheme.lib;winmm.lib;wininet.lib;htmlhelp.lib;wintrust.lib;crypt32.lib;%(AdditionalDependencies) - true - Windows - - - + - MaxSpeed - false - ..\Lib;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - MultiThreaded - true NotUsing - Level3 - true - ProgramDatabase - true - stdcpp17 - - $(IntDir);..\Lib;%(AdditionalIncludeDirectories) - shlwapi.lib;comctl32.lib;uxtheme.lib;winmm.lib;wininet.lib;htmlhelp.lib;wintrust.lib;crypt32.lib;%(AdditionalDependencies) - true - Windows - true - true diff --git a/Src/Update/resource.h b/Src/Update/resource.h index 3cc9b965b..f842f9c92 100644 --- a/Src/Update/resource.h +++ b/Src/Update/resource.h @@ -9,6 +9,7 @@ #define IDC_CHECKDONT 1004 #define IDC_BUTTONCHECKNOW 1005 #define IDC_CHECKAUTOCHECK 1006 +#define IDC_CHECKNIGHTLY 1007 #define IDD_UPDATE 6001 #define IDS_UPDATED 6001 #define IDS_OUTOFDATE 6002 @@ -21,7 +22,7 @@ // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 227 +#define _APS_NEXT_RESOURCE_VALUE 228 #define _APS_NEXT_COMMAND_VALUE 32769 #define _APS_NEXT_CONTROL_VALUE 262 #define _APS_NEXT_SYMED_VALUE 106 diff --git a/Src/Version.props b/Src/Version.props deleted file mode 100644 index 8951258be..000000000 --- a/Src/Version.props +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - 4.3.2 - - - - _PRODUCT_VERSION=$(CS_VERSION.Replace('.', ',')),0;_PRODUCT_VERSION_STR=\"$(CS_VERSION_ORIG)\";%(PreprocessorDefinitions) - - - - \ No newline at end of file diff --git a/appveyor.yml b/appveyor.yml index 0d9aa68e2..a9390d421 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,8 +1,11 @@ version: 4.4.{build} +branches: + only: + - master pull_requests: do_not_increment_build_number: true skip_tags: true -image: Visual Studio 2017 +image: Visual Studio 2022 clone_depth: 1 build_script: - cmd: Src\Setup\__MakeFinal.bat @@ -11,3 +14,12 @@ only_commits: files: - Src/ - Localization/ +deploy: +- provider: GitHub + tag: v$(APPVEYOR_BUILD_VERSION) + release: $(APPVEYOR_BUILD_VERSION) + on: + APPVEYOR_ACCOUNT_NAME: passionate-coder + auth_token: + secure: SOu6Y71k0oIxXJR35x+7ZeU/+WRW8kaGnCWcbR3OVOd8HeCJwB1Tw3hUJa5EveLGKaGoMKGqAh01Pwc8tWX4xmphZsYYUr09IVjA0+rqgN5VT87CXD6OQxUxBJ7g+9IN + prerelease: true