Showing preview only (2,184K chars total). Download the full file or copy to clipboard to get everything.
Repository: valinet/ExplorerPatcher
Branch: master
Commit: b14813683437
Files: 228
Total size: 2.1 MB
Directory structure:
gitextract_7jbw90k9/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yml
│ │ └── config.yml
│ └── workflows/
│ └── build.yml
├── .gitignore
├── .gitmodules
├── BuildDependenciesDebug.bat
├── BuildDependenciesRelease.bat
├── CHANGELOG.md
├── ExplorerPatcher/
│ ├── ArchiveMenu.c
│ ├── ArchiveMenu.h
│ ├── ExplorerPatcher.rc
│ ├── ExplorerPatcher.vcxproj
│ ├── ExplorerPatcher.vcxproj.filters
│ ├── HideExplorerSearchBar.c
│ ├── HideExplorerSearchBar.h
│ ├── ImmersiveColor.h
│ ├── ImmersiveFlyouts.c
│ ├── ImmersiveFlyouts.h
│ ├── InputSwitch.cpp
│ ├── InputSwitch.h
│ ├── Localization.cpp
│ ├── Localization.h
│ ├── RefreshedStyles.xbf
│ ├── SettingsMonitor.c
│ ├── SettingsMonitor.h
│ ├── ShellExperienceHostPatches.cpp
│ ├── StartMenu.c
│ ├── StartMenu.h
│ ├── StartMenuSettings.cpp
│ ├── StartupSound.cpp
│ ├── StartupSound.h
│ ├── Taskbar10.cpp
│ ├── TaskbarCenter.cpp
│ ├── TaskbarCenter.h
│ ├── TwinUIPatches.cpp
│ ├── def.h
│ ├── dllmain.c
│ ├── dxgi_imp.cpp
│ ├── dxgi_imp.h
│ ├── fmemopen.c
│ ├── fmemopen.h
│ ├── getline.c
│ ├── getline.h
│ ├── hooking.h
│ ├── inc/
│ │ ├── ClassicWinRtForwardDecl.h
│ │ ├── ContainerPolicies.h
│ │ ├── NativeString.h
│ │ ├── PopNoWilResultMacrosLogging.h
│ │ ├── PushNoWilResultMacrosLogging.h
│ │ ├── RefCountedObject.h
│ │ ├── ResultUtils.h
│ │ ├── SimpleArray.h
│ │ ├── SimpleBoxer.h
│ │ └── memsafe.h
│ ├── lvt.c
│ ├── lvt.h
│ ├── osutility.h
│ ├── packages.config
│ ├── queryversion.h
│ ├── resource.h
│ ├── symbols.c
│ ├── symbols.h
│ ├── updates.cpp
│ ├── updates.h
│ ├── utility.c
│ └── utility.h
├── ExplorerPatcher.sln
├── FUNDING.yml
├── LICENSE
├── README.md
├── debug.h
├── ep_extra/
│ ├── README.md
│ ├── ep_extra.rc
│ ├── ep_extra.vcxproj
│ ├── ep_extra.vcxproj.filters
│ ├── main.asm
│ ├── resource.h
│ └── worker.c
├── ep_extra_valinet.win7alttab/
│ ├── README.md
│ ├── Resource.rc
│ ├── ep_extra_valinet.win7alttab.vcxproj
│ ├── ep_extra_valinet.win7alttab.vcxproj.filters
│ ├── main.c
│ └── resource.h
├── ep_generate_release_description/
│ ├── ep_generate_release_description.c
│ ├── ep_generate_release_description.vcxproj
│ └── ep_generate_release_description.vcxproj.filters
├── ep_generate_release_name/
│ ├── ep_generate_release_name.c
│ ├── ep_generate_release_name.vcxproj
│ ├── ep_generate_release_name.vcxproj.filters
│ └── resource.h
├── ep_gui/
│ ├── GUI.c
│ ├── GUI.h
│ ├── dllmain.cpp
│ ├── ep_gui.vcxproj
│ ├── pch.cpp
│ ├── pch.h
│ └── resources/
│ ├── EPSettingsResources.h
│ ├── EPSharedResources.h
│ ├── ep_gui.rc
│ ├── lang/
│ │ └── ep_gui.en-US.rc
│ ├── resource.h
│ ├── settings.reg
│ └── settings10.reg
├── ep_setup/
│ ├── ep_setup.c
│ ├── ep_setup.vcxproj
│ ├── ep_setup.vcxproj.filters
│ ├── resources/
│ │ ├── ep_setup.rc
│ │ ├── ep_setup_debug.rc
│ │ ├── files/
│ │ │ ├── Windows.UI.ShellCommon/
│ │ │ │ ├── Windows.UI.ShellCommon.pri
│ │ │ │ └── pris/
│ │ │ │ ├── Windows.UI.ShellCommon.ar-SA.pri
│ │ │ │ ├── Windows.UI.ShellCommon.bg-BG.pri
│ │ │ │ ├── Windows.UI.ShellCommon.ca-ES.pri
│ │ │ │ ├── Windows.UI.ShellCommon.cs-CZ.pri
│ │ │ │ ├── Windows.UI.ShellCommon.da-DK.pri
│ │ │ │ ├── Windows.UI.ShellCommon.de-DE.pri
│ │ │ │ ├── Windows.UI.ShellCommon.el-GR.pri
│ │ │ │ ├── Windows.UI.ShellCommon.en-GB.pri
│ │ │ │ ├── Windows.UI.ShellCommon.en-US.pri
│ │ │ │ ├── Windows.UI.ShellCommon.es-ES.pri
│ │ │ │ ├── Windows.UI.ShellCommon.es-MX.pri
│ │ │ │ ├── Windows.UI.ShellCommon.et-EE.pri
│ │ │ │ ├── Windows.UI.ShellCommon.eu-ES.pri
│ │ │ │ ├── Windows.UI.ShellCommon.fi-FI.pri
│ │ │ │ ├── Windows.UI.ShellCommon.fr-CA.pri
│ │ │ │ ├── Windows.UI.ShellCommon.fr-FR.pri
│ │ │ │ ├── Windows.UI.ShellCommon.gl-ES.pri
│ │ │ │ ├── Windows.UI.ShellCommon.he-IL.pri
│ │ │ │ ├── Windows.UI.ShellCommon.hr-HR.pri
│ │ │ │ ├── Windows.UI.ShellCommon.hu-HU.pri
│ │ │ │ ├── Windows.UI.ShellCommon.id-ID.pri
│ │ │ │ ├── Windows.UI.ShellCommon.it-IT.pri
│ │ │ │ ├── Windows.UI.ShellCommon.ja-JP.pri
│ │ │ │ ├── Windows.UI.ShellCommon.ko-KR.pri
│ │ │ │ ├── Windows.UI.ShellCommon.lt-LT.pri
│ │ │ │ ├── Windows.UI.ShellCommon.lv-LV.pri
│ │ │ │ ├── Windows.UI.ShellCommon.nb-NO.pri
│ │ │ │ ├── Windows.UI.ShellCommon.nl-NL.pri
│ │ │ │ ├── Windows.UI.ShellCommon.pl-PL.pri
│ │ │ │ ├── Windows.UI.ShellCommon.pt-BR.pri
│ │ │ │ ├── Windows.UI.ShellCommon.pt-PT.pri
│ │ │ │ ├── Windows.UI.ShellCommon.ro-RO.pri
│ │ │ │ ├── Windows.UI.ShellCommon.ru-RU.pri
│ │ │ │ ├── Windows.UI.ShellCommon.sk-SK.pri
│ │ │ │ ├── Windows.UI.ShellCommon.sl-SI.pri
│ │ │ │ ├── Windows.UI.ShellCommon.sr-Latn-RS.pri
│ │ │ │ ├── Windows.UI.ShellCommon.sv-SE.pri
│ │ │ │ ├── Windows.UI.ShellCommon.th-TH.pri
│ │ │ │ ├── Windows.UI.ShellCommon.tr-TR.pri
│ │ │ │ ├── Windows.UI.ShellCommon.uk-UA.pri
│ │ │ │ ├── Windows.UI.ShellCommon.vi-VN.pri
│ │ │ │ ├── Windows.UI.ShellCommon.zh-CN.pri
│ │ │ │ └── Windows.UI.ShellCommon.zh-TW.pri
│ │ │ └── pnidui/
│ │ │ ├── ar-SA/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── bg-BG/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── ca-ES/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── cs-CZ/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── da-DK/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── de-DE/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── el-GR/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── en-GB/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── en-US/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── es-ES/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── es-MX/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── et-EE/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── eu-ES/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── fi-FI/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── fr-CA/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── fr-FR/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── gl-ES/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── he-IL/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── hr-HR/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── hu-HU/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── id-ID/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── it-IT/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── ja-JP/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── ko-KR/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── lt-LT/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── lv-LV/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── nb-NO/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── nl-NL/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── pl-PL/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── pt-BR/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── pt-PT/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── ro-RO/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── ru-RU/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── sk-SK/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── sl-SI/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── sr-Latn-RS/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── sv-SE/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── th-TH/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── tr-TR/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── uk-UA/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── vi-VN/
│ │ │ │ └── pnidui.dll.mui
│ │ │ ├── zh-CN/
│ │ │ │ └── pnidui.dll.mui
│ │ │ └── zh-TW/
│ │ │ └── pnidui.dll.mui
│ │ ├── lang/
│ │ │ └── ep_setup.en-US.rc
│ │ └── resource.h
│ ├── rijndael-alg-fst.c
│ └── rijndael-alg-fst.h
├── ep_setup_patch/
│ ├── ep_setup_patch.c
│ ├── ep_setup_patch.vcxproj
│ └── ep_setup_patch.vcxproj.filters
├── ep_startmenu/
│ ├── ep_sm_forwards.h
│ ├── ep_sm_main.c
│ ├── ep_sm_main_cpp.cpp
│ ├── ep_startmenu.vcxproj
│ └── ep_startmenu.vcxproj.filters
├── ep_weather_host/
│ ├── ep_weather.c
│ ├── ep_weather.h
│ ├── ep_weather_error_html.h
│ ├── ep_weather_factory.c
│ ├── ep_weather_factory.h
│ ├── ep_weather_host.c
│ ├── ep_weather_host.h
│ ├── ep_weather_host.rc
│ ├── ep_weather_host.vcxproj
│ ├── ep_weather_host.vcxproj.filters
│ ├── ep_weather_provider_google_html.h
│ ├── ep_weather_provider_google_script.h
│ ├── ep_weather_utility.h
│ ├── packages.config
│ └── resource.h
├── ep_weather_host_stub/
│ ├── ep_weather_host.idl
│ ├── ep_weather_host_stub.def
│ ├── ep_weather_host_stub.vcxproj
│ └── ep_weather_host_stub.vcxproj.filters
└── version.h
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: Bug report
description: Report the issue you have with ExplorerPatcher here
labels:
- bug
body:
- type: markdown
attributes:
value: |
> [!WARNING]
> Issues regarding virus detections will be closed automatically. Discuss it in [Issue #3670](https://github.com/valinet/ExplorerPatcher/issues/3670) or [Issue #3228](https://github.com/valinet/ExplorerPatcher/issues/3228)
- type: checkboxes
attributes:
label: Before reporting your issue
description: Please ensure you meet the following criteria before reporting issues
options:
- label: I have confirmed that this issue does not happen when ExplorerPatcher is not installed
- label: I do not have "register as shell extension" enabled
- label: I have tried my best to check existing issues
- type: textarea
attributes:
label: Repro ExplorerPatcher versions
description: Provide the relevant versions of ExplorerPatcher for reproduction of the issue.
placeholder: |
Example:
ExplorerPatcher 67.1
validations:
required: true
- type: textarea
attributes:
label: Repro Windows Versions
description: Provide the relevant versions for reproduction of the issue. For example, Windows version, and architecture (e.g. x64 or ARM64).
placeholder: |
Example:
Windows 11 24H2 26100.1150 ARM64
Windows 11 24H2 26100.2314 ARM64
validations:
required: true
- type: textarea
attributes:
label: 3rd party tweak software installed
description: A list of 3rd Party software that may modify the shell in someway.
placeholder: |
Example:
TranslucentTB
Windhawk (with disable grouping and vertical taskbar mods)
OpenShell
Nilesoft Shell
Wallpaper Engine
validations:
required: true
- type: textarea
attributes:
label: Describe the bug
description: A clear and concise description of what the bug is. Please try to isolate the issue to ExplorerPatcher by disabling other customization software.
placeholder: |
Example:
1. Install EP 67.1.
2. Enable Windows 10 (ExplorerPatcher) taskbar and restart Explorer.
3. Make sure Ethernet (if available) is disconnected, and then disconnect Wi-Fi.
4. Turn on Personal Hotspot (iPhone) or Mobile Hotspot (Android).
5. Connect to the Personal Hotspot.
6. Observe icon changing from No Internet to Wi-Fi signal bars.
7. Turn off Personal Hotspot.
8. Observe icon staying in Wi-Fi signal bars state instead of changing to No Internet (globe icon).
validations:
required: true
- type: textarea
attributes:
label: Expected outcome
description: Describe what you expected to happen when performing the steps above.
placeholder: |
Example:
The icon of the Network tray icon changes from Wi-Fi signal bars to globe (no Internet) icon like it was on 11 23H2, 11 22H2, and previous versions.
validations:
required: true
- type: textarea
attributes:
label: Actual outcome
description: Describe what actually happens after performing the steps above.
placeholder: |
Example:
The icon is stuck in the Wi-Fi icon state, giving false impressions that the device is still connected to Wi-Fi. The icon will stay this way until Wi-Fi/Airplane Mode is toggled, or until the device is reconnected to a Wi-Fi router.
validations:
required: true
- type: textarea
attributes:
label: Additional info
description: Provide any additional information that may help in diagnosing the issue, such as logs, error messages, or links to related issues.
placeholder: |
Example:
Windows 11 build 25236 removed pnidui.dll, leaving the restoration-from-22621 method being the only option to have this icon. However, there may be interface mismatches or API updates that caused the 22621 (22H2) pnidui.dll to behave this way on 24H2. Patches to pnidui.dll may be needed in order to fix this.
validations:
required: false
- type: textarea
id: crashdumps
attributes:
label: Crash Dumps
description: In case of crashes, if possible, please upload the latest crash dumps relating to explorer.exe. Crash dumps can be found in %LOCALAPPDATA%\CrashDumps.
placeholder: Drop or paste crash dumps to upload.
validations:
required: false
- type: textarea
id: screenshots
attributes:
label: Media
description: Add screenshots/videos to help illustrate the issue
placeholder: Drop or paste images or videos to upload.
validations:
required: false
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: Questions
about: Ask questions and receive support here
url: https://github.com/valinet/ExplorerPatcher/discussions/categories/q-a
- name: Feature requests
about: Suggestions for new features and enhancements here
url: https://github.com/valinet/ExplorerPatcher/discussions/categories/ideas
- name: Showcase
about: Show off your system or give tips and tricks here
url: https://github.com/valinet/ExplorerPatcher/discussions/categories/show-and-tell
- name: Wiki
about: Useful documentation on ExplorerPatcher
url: https://github.com/valinet/ExplorerPatcher/wiki
================================================
FILE: .github/workflows/build.yml
================================================
# references:
# https://trstringer.com/github-actions-multiline-strings/
# https://trstringer.com/github-actions-create-release-upload-artifacts/
# https://github.com/Speedy37/sws/blob/444c67157a98652c4e7ffd3b6d6bbfb664071926/.github/workflows/msbuild.yml
# https://stackoverflow.com/questions/58886293/getting-current-branch-and-commit-hash-in-github-action
name: Build
on:
push:
pull_request:
workflow_dispatch:
inputs:
ref:
description: 'Commit'
required: true
config:
description: 'Configuration'
required: false
build_dir:
description: 'Build dir'
required: false
env:
SOLUTION_FILE_PATH: .
BUILD_CONFIGURATION: Release
permissions:
contents: write
jobs:
build:
runs-on: windows-2025
timeout-minutes: 30
steps:
- name: Print inputs
shell: bash
run: |
echo "ref: ${GITHUB_EVENT_INPUTS_REF}"
echo "config: ${GITHUB_EVENT_INPUTS_CONFIG}"
echo "build_dir: ${GITHUB_EVENT_INPUTS_BUILD_DIR}"
env:
GITHUB_EVENT_INPUTS_REF: ${{ github.event.inputs.ref }}
GITHUB_EVENT_INPUTS_CONFIG: ${{ github.event.inputs.config }}
GITHUB_EVENT_INPUTS_BUILD_DIR: ${{ github.event.inputs.build_dir }}
- name: Checkout latest build and submodules
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 6.0.2
if: github.event.inputs.ref == ''
with:
submodules: recursive
persist-credentials: false
- name: Checkout specific build and submodules
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 6.0.2
if: github.event.inputs.ref != ''
with:
ref: ${{ github.event.inputs.ref }}
submodules: recursive
persist-credentials: false
- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # 2.0.0
- name: Declare some variables
id: vars
shell: bash
run: |
echo "branch=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_OUTPUT
echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
- name: Enable SimpleWindowSwitcher support for newer Windows SDKs
shell: cmd
run: |
cd libs/sws
C:\msys64\usr\bin\wget.exe https://github.com/valinet/sws/commit/972acb76d1e6429133c92ed7cdefd29b9a2c6179.patch
C:\msys64\usr\bin\dos2unix.exe 972acb76d1e6429133c92ed7cdefd29b9a2c6179.patch
C:\msys64\usr\bin\dos2unix.exe SimpleWindowSwitcher/sws_def.h
C:\msys64\usr\bin\patch.exe -N SimpleWindowSwitcher/sws_def.h 972acb76d1e6429133c92ed7cdefd29b9a2c6179.patch
C:\msys64\usr\bin\unix2dos.exe SimpleWindowSwitcher/sws_def.h
exit /b 0
- name: Setup NuGet
uses: nuget/setup-nuget@323ab0502cd38fdc493335025a96c8fdb0edc71f # 2.0.1
with:
nuget-version: '7.x'
- name: Restore NuGet packages
run: |
nuget restore ExplorerPatcher.sln
- name: Build dependencies
shell: cmd
run: |
BuildDependencies%BUILD_CONFIGURATION%.bat
- name: Download ep_taskbar
uses: robinraju/release-downloader@daf26c55d821e836577a15f77d86ddc078948b05 # 1.12
with:
repository: ExplorerPatcher/ep_taskbar_releases
fileName: ep_taskbar.*.dll
latest: true
out-file-path: build/Release
# build/Release/ep_taskbar.*.amd64.dll -> build/Release/x64/ep_taskbar.*.dll
# build/Release/ep_taskbar.*.arm64.dll -> build/Release/ARM64/ep_taskbar.*.dll
- name: Move ep_taskbar
shell: bash
run: |
if ls build/Release/ep_taskbar.*.amd64.dll 1> /dev/null 2>&1; then
mkdir -p build/Release/x64
for file in build/Release/ep_taskbar.*.amd64.dll; do
mv "$file" "build/Release/x64/$(basename "$file" .amd64.dll).dll"
done
fi
if ls build/Release/ep_taskbar.*.arm64.dll 1> /dev/null 2>&1; then
mkdir -p build/Release/ARM64
for file in build/Release/ep_taskbar.*.arm64.dll; do
mv "$file" "build/Release/ARM64/$(basename "$file" .arm64.dll).dll"
done
fi
- name: Build ExplorerPatcher (IA-32)
if: github.event.inputs.config == ''
working-directory: ${{env.GITHUB_WORKSPACE}}
run: |
msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} /p:Platform=IA-32 ${{env.SOLUTION_FILE_PATH}}
- name: Build ExplorerPatcher (amd64)
if: github.event.inputs.config == ''
working-directory: ${{env.GITHUB_WORKSPACE}}
run: |
msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} /p:Platform=amd64 ${{env.SOLUTION_FILE_PATH}}
- name: Build ExplorerPatcher (arm64)
if: github.event.inputs.config == ''
working-directory: ${{env.GITHUB_WORKSPACE}}
run: |
msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} /p:Platform=arm64 /p:WithArm64XBinaries=true ${{env.SOLUTION_FILE_PATH}}
- name: Build ExplorerPatcher (Custom Build)
if: github.event.inputs.config != ''
working-directory: ${{env.GITHUB_WORKSPACE}}
run: |
msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} /p:Platform=$env:GITHUB_EVENT_INPUTS_CONFIG ${{env.SOLUTION_FILE_PATH}}
env:
GITHUB_EVENT_INPUTS_CONFIG: ${{ github.event.inputs.config }}
- name: Create expected build directory
if: github.event.inputs.build_dir != ''
shell: bash
run: |
mkdir build
cp -r ${GITHUB_EVENT_INPUTS_BUILD_DIR}/Release build/Release
env:
GITHUB_EVENT_INPUTS_BUILD_DIR: ${{ github.event.inputs.build_dir }}
- name: Generate dxgi.dll
shell: bash
run: |
if [[ -f "build/Release/x64/ExplorerPatcher.amd64.dll" ]]; then cp build/Release/x64/ExplorerPatcher.amd64.dll build/Release/x64/dxgi.dll; fi
if [[ -f "build/Release/ARM64/ExplorerPatcher.arm64.dll" ]]; then cp build/Release/ARM64/ExplorerPatcher.arm64.dll build/Release/ARM64/dxgi.dll; fi
- name: Patch amd64 setup
shell: cmd
run: |
if exist "build\Release\x64\ExplorerPatcher.amd64.dll" (
"build\Release\x64\ep_setup_patch.exe" "build\Release\x64\ExplorerPatcher.amd64.dll" "build\Release\x64\ep_setup.exe"
)
exit /b 0
- name: Patch arm64 setup
shell: cmd
run: |
if exist "build\Release\ARM64\ExplorerPatcher.arm64.dll" (
"build\Release\x64\ep_setup_patch.exe" "build\Release\ARM64\ExplorerPatcher.arm64.dll" "build\Release\ARM64\ep_setup.exe"
)
exit /b 0
- name: Delete intermediate files
shell: bash
run: |
rm -rf build/Release/x64/ep_setup_files
rm -f build/Release/x64/ep_setup_files.zip.bin
rm -rf build/Release/ARM64/ep_setup_files
rm -f build/Release/ARM64/ep_setup_files.zip.bin
- name: Upload artifacts
if: github.event_name != 'pull_request'
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: ep_bin_multi_${{ steps.vars.outputs.sha_short }}_${{ steps.vars.outputs.branch }}
path: |
build/Release/
if-no-files-found: error
# build/Release/x64/ep_setup.exe -> build/Release/ep_setup.exe
# build/Release/ARM64/ep_setup.exe -> build/Release/ep_setup_arm64.exe
- name: Stage files for release
if: github.ref == 'refs/heads/master' && github.event.inputs.ref == ''
shell: bash
run: |
if [ -d "build/Release/x64" ] && ls build/Release/x64/ep_setup.exe 1> /dev/null 2>&1; then
cp build/Release/x64/ep_setup.exe build/Release/ep_setup.exe
fi
if [ -d "build/Release/ARM64" ] && ls build/Release/ARM64/ep_setup.exe 1> /dev/null 2>&1; then
cp build/Release/ARM64/ep_setup.exe build/Release/ep_setup_arm64.exe
fi
- name: Generate release name
shell: bash
working-directory: build/Release/x64
if: github.ref == 'refs/heads/master' && github.event.inputs.ref == ''
run: |
echo "data=$(./ep_generate_release_name.exe)" >> $GITHUB_OUTPUT
id: release_name
- name: Generate release notes
shell: bash
working-directory: build/Release/x64
if: github.ref == 'refs/heads/master' && github.event.inputs.ref == ''
run: |
echo "data<<EP_RELEASE_DESCRIPTION_DELIM" >> $GITHUB_OUTPUT
echo "$(./ep_generate_release_description.exe ${STEPS_VARS_OUTPUTS_SHA_SHORT} ${STEPS_VARS_OUTPUTS_BRANCH} ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})" >> $GITHUB_OUTPUT
echo "EP_RELEASE_DESCRIPTION_DELIM" >> $GITHUB_OUTPUT
id: release_description
env:
STEPS_VARS_OUTPUTS_SHA_SHORT: ${{ steps.vars.outputs.sha_short }}
STEPS_VARS_OUTPUTS_BRANCH: ${{ steps.vars.outputs.branch }}
- name: Create/update release (valinet)
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # 2.5.0
if: github.repository_owner == 'valinet' && github.ref == 'refs/heads/master' && github.event.inputs.ref == ''
id: create_release
with:
draft: false
prerelease: ${{ !startsWith(github.event.head_commit.message, 'rel_') }}
name: ${{ steps.release_name.outputs.data }}
tag_name: ${{ steps.release_name.outputs.data }}_${{ steps.vars.outputs.sha_short }}
body: ${{ steps.release_description.outputs.data }}
files: |
build/Release/ep_setup.exe
build/Release/ep_setup_arm64.exe
env:
GITHUB_TOKEN: ${{ secrets.PAT }}
- name: Create/update release (forks)
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # 2.5.0
if: github.repository_owner != 'valinet' && github.ref == 'refs/heads/master' && github.event.inputs.ref == ''
id: create_release_fork
with:
draft: false
prerelease: ${{ !startsWith(github.event.head_commit.message, 'rel_') }}
name: ${{ steps.release_name.outputs.data }}
tag_name: ${{ steps.release_name.outputs.data }}_${{ steps.vars.outputs.sha_short }}
body: ${{ steps.release_description.outputs.data }}
files: |
build/Release/ep_setup.exe
build/Release/ep_setup_arm64.exe
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .gitignore
================================================
ep_private.h
.idea/
ep_taskbar*/
b*.bat
c*.bat
build/
*.dll
*.exe
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
================================================
FILE: .gitmodules
================================================
[submodule "libs/libvalinet"]
path = libs/libvalinet
url = https://github.com/valinet/libvalinet
[submodule "libs/sws"]
path = libs/sws
url = https://github.com/valinet/sws
[submodule "libs/zlib"]
path = libs/zlib
url = https://github.com/madler/zlib
[submodule "ep_dwm"]
path = ep_dwm
url = https://github.com/valinet/ep_dwm
[submodule "ExplorerPatcher-L10N"]
path = ExplorerPatcher-L10N
url = https://github.com/valinet/ExplorerPatcher-L10N
================================================
FILE: BuildDependenciesDebug.bat
================================================
rmdir /s /q libs\zlib\build
if "%VSINSTALLDIR:~-1%"=="\" (
set "EP_VSINSTALLDIR=%VSINSTALLDIR:~0,-1%"
) else (
set "EP_VSINSTALLDIR=%VSINSTALLDIR%"
)
cmake libs/zlib -Blibs/zlib/build/x64 -G "Visual Studio 17 2022" -A x64 -D"CMAKE_GENERATOR_INSTANCE:PATH=%EP_VSINSTALLDIR%" -D"CMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded$<$<CONFIG:Debug>:Debug>" -DCMAKE_POLICY_DEFAULT_CMP0091=NEW
cmake libs/zlib -Blibs/zlib/build/arm64 -G "Visual Studio 17 2022" -A ARM64 -D"CMAKE_GENERATOR_INSTANCE:PATH=%EP_VSINSTALLDIR%" -D"CMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded$<$<CONFIG:Debug>:Debug>" -DCMAKE_POLICY_DEFAULT_CMP0091=NEW
cmake --build libs/zlib/build/x64 --config Debug
cmake --build libs/zlib/build/arm64 --config Debug
================================================
FILE: BuildDependenciesRelease.bat
================================================
rmdir /s /q libs\zlib\build
if "%VSINSTALLDIR:~-1%"=="\" (
set "EP_VSINSTALLDIR=%VSINSTALLDIR:~0,-1%"
) else (
set "EP_VSINSTALLDIR=%VSINSTALLDIR%"
)
cmake libs/zlib -Blibs/zlib/build/x64 -G "Visual Studio 17 2022" -A x64 -D"CMAKE_GENERATOR_INSTANCE:PATH=%EP_VSINSTALLDIR%" -D"CMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded$<$<CONFIG:Debug>:Debug>" -DCMAKE_POLICY_DEFAULT_CMP0091=NEW
cmake libs/zlib -Blibs/zlib/build/arm64 -G "Visual Studio 17 2022" -A ARM64 -D"CMAKE_GENERATOR_INSTANCE:PATH=%EP_VSINSTALLDIR%" -D"CMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded$<$<CONFIG:Debug>:Debug>" -DCMAKE_POLICY_DEFAULT_CMP0091=NEW
cmake --build libs/zlib/build/x64 --config Release
cmake --build libs/zlib/build/arm64 --config Release
================================================
FILE: CHANGELOG.md
================================================
# Explorer Patcher Change log
This document includes the same release notes as in the [Releases](https://github.com/valinet/ExplorerPatcher/releases) section on GitHub.
## 26100.4946.69
Tested on OS builds 26100.4946, 26100.5074, 26200.5751, and 26220.6682.
##### 1
* ep_weather: Fixed "Unable to load weather information" due to changes in Google's side. Thanks @davids5 for the fix! (#1334, #4351) (c3c83ff)
* Start11: Fixed hiding of Recommended Section on recent builds of 24H2. Thanks @m-wigley for the fix! (#4476) (9106226)
* GUI: File Explorer > Title bar is now available again on >= 22H2. Thanks @SandTechStuff! (583fa53)
* Reduced the occurrences of the Windows 11 bug in Explorer windows where `WM_SETTINGCHANGE` would scroll the folder items list to the top. (fa19402b)
* Changed hooking library to SlimDetours. (ff30457)
* On ARM64, fixes incompatibilities with certain Windhawk mods that hook `CreateWindowExW` such as [Taskbar Volume Control](https://windhawk.net/mods/taskbar-volume-control).
* On ARM64, fixes a very slim chance bug where hooked functions would cause a crash when called until a reboot.
* ep_taskbar: Now statically links to private functions it uses. (ab99f26)
* Taskbar10: Fixed folder toolbar menus and Toolbars > New toolbar not working on builds with `TrayThreadBSTA` (54481602) feature flag turned on, such as 26100.5074+. (#4542) (1bbe207)
* GUI: Windows 8 Network flyout is now no longer an option on builds >= 25346 as van.dll was removed. Thanks @m-wigley for the fix! (#4478) (72c6983)
* On Windows 11 22H2+, Windows 10 (ExplorerPatcher) taskbar a.k.a. ep_taskbar is now used by default. (ad2fa72)
##### 2
* Fixed weather button not having an icon. (#4545) (6959c69)
* You may need to perform "Clear weather widget local data" in EP properties > Weather.
##### 3
* File Explorer: Fixed "Shrink address bar height" resulting in broken graphics on recent 24H2 builds. (#4552) (6d946bd)
* Start10: Fixed open/close animation patching on x64 27938+ and ARM64 27881+. (201a7e5, 79f8dd3, f873888, 465117e, 4434d10)
* Start10: Fixed Windows 10 Start menu refusing to open when the new Windows 11 Start menu feature flag(s) are enabled. (#4523) (afd109f)
* Fixed Windows 10 Alt+Tab and Windows 10 taskbar Win+X functionality on ARM64 226x1 and 27686+. (18dfcd0)
##### 4
* File Explorer: Corrected shrunk address bar toolbar button size when Servicing_CFDNavButtonsTheming (NI: 56845961, GE: 52061322) is enabled. (#4552) (9e91030)
##### 5
* Start10: Fixed Windows 10 Start menu not opening on 22H2/23H2 ARM64. (c08b0a6)
##### 6
* File Explorer: XAML folder views are now disabled when Windows 11 Command Bar is not used. (80414f5)
* This fixes crashes when navigating away and returning to Home/Gallery on 22H2/23H2 (#3447), and when opening Home on 26xxx.7015+.
* File Explorer: Fixed Alt+D not working on builds with modern (XAML) navigation bar in File Explorer. (#2847) (a80d9dc)
* File Explorer: Mitigated breakages on builds with tabs in File Explorer: (75178ec, df7d604)
* Fixed menu bar behavior when Windows 7 Command Bar is used. Pressing Alt will now summon the menu bar immediately like it used to. (#2676)
* Fixed window position and size saving when Windows 10 Ribbon is used. (#2243)
* Taskbar10: These settings now take effect on ep_taskbar: (#4097) (48e1de3)
* Pinned items act as quick launch (don't group with active apps)
* When the taskbar shows button labels, remove the extra gap around pinned items
Known issues we will address in the short term:
* Changing weather icon pack to "Microsoft" has no effect.
* On Nickel (Windows 11 22H2/23H2), when the new Windows 11 Start menu is enabled, using Windows 10 or Windows 10 (ExplorerPatcher) taskbar will crashloop explorer.exe.
## 22631.5335.68
Tested on OS builds 22621.3296, 22631.5189, 22631.5335, 26100.3476, 26100.4061, and 26100.4188.
##### 1
* Start10: Fixed Pin to Start on 226x1.4541+ and 261xx.2454+. (#3984) (4ef3667, 123ea8b)
* sws: Added support for 24H2. (#3765)
* ep_dwm: Added support for 24H2. (#3555)
* `ep_dwm.exe` has been renamed to `ep_dwm_svc.exe` to get around 24H2 upgrade blocks. (115b462)
* ep_dwm: Now always unregistered on uninstallation, regardless of whether it was running during the uninstallation or not. (858b634)
* Setup: The failure message now displays the associated code line number that failed, to assist in troubleshooting. (c64a17e)
* Taskbar10: Fixed disabling immersive menus on ARM64. (8b4d8db)
* Taskbar10: Fixed Win+X menu still having Windows Terminal entries when Windows Terminal is not installed, that crashes Explorer when selected. (1b20cbd, 207f669)
* For now, if you want to have PowerShell entries, Windows Terminal must be uninstalled.
* Taskbar10: Fixed Win+X entry clicks doing nothing on 26xxx.5551+ ARM64.
* GUI: Added dropdown indicators to dropdown entries. (9f71a5c)
* GUI: The language names now include the country name. (3f11766)
* Localization: Added Czech translations. (Thanks @9hb, @andrewz1986, and @Panzimy!)
* Localization: Added Spanish (Spain) translations. (Thanks @AlejandroMartiGisbert!)
* ep_taskbar: Added support for "Show desktop button: Hidden" setting. (#4020) (1be6658)
* ep_taskbar: Fixed a bug that prevented shortcut global hotkeys from working on 24H2. (#3777, #4016)
* ep_taskbar: Fixed a bug that prevented the taskbar from resizing properly after DPI changes. (#3796)
* ep_taskbar: Added the following languages: German, French, Hungarian, Indonesian, Italian, Korean, Lithuanian, Dutch, Polish, Portuguese (Brazil), Romanian, Spanish (Spain), Turkish, Ukrainian, Chinese (Simplified).
* ep_taskbar: Fixed a number of memory leaks and code/behavior inaccuracies.
##### 2
* ❗ **ep_taskbar: Fixed incompatibility with 26200.5603 (Dev), 26120.4151 (Beta), and 26100.4188 (Release Preview).** (#4321)
* ep_taskbar: Now supports all Windows 10 versions supported by EP (17763/1809+). (aec8c70, 1edb989)
## 22621.4317.67
Tested on OS builds 22621.3296, 22631.4391, 26120.961, 26100.1150, and 26100.2161.
##### 1
* Taskbar10: Win+X now works again on 226xx.4317+. (cc9b6b3, #3837)
* Start10: Fixed an issue where the resource loader failed when the drive letter of the boot drive is other than C:. Thanks @ittrgrey for pointing out! (fc25c25)
* Start10: Fixed an issue where the Start menu crashes when summoning the context menu of an item that has jump list entries on builds 226xx.4391+ and 261xx.2130+. (4978024, #3842)
* ep_taskbar: Fixed an issue where "Not responding" windows are not handled properly.
* ep_taskbar: Flashing taskbar items are now animated.
* ep_taskbar: Narrator now describes the "Show desktop" button.
* ep_taskbar: `TrayUI` class is now exported.
* Localization: Added translations for Portuguese (Brazil). Thanks @thiagojramos!
## 22621.3880.66
Tested on OS builds 19045.4598, 22621.3296, 22621.3810, 26120.961, and 26244.5000. (Note: 22621 and 22631 share the same OS files)
##### 1
* Taskbar10: Introduced a new taskbar implementation: Windows 10 (ExplorerPatcher). (146070d, 0b86e55)
* You can try this implementation out by changing the "Taskbar style" to "Windows 10 (ExplorerPatcher)".
* For now, this is **only available for builds 22621, 22631, and 22635.** Other builds will not have the option.
* Refer to [this wiki article](https://github.com/valinet/ExplorerPatcher/wiki/ExplorerPatcher's-taskbar-implementation) for more information including important ones.
##### 2
<details>
* Taskbar10: Due to false positive antivirus detections, the new taskbar implementation is no longer bundled in the setup program. (48c2a75)
* If you want to use the new taskbar implementation, you can download the appropriate DLL for your system from the [Releases](https://github.com/ExplorerPatcher/ep_taskbar_releases/releases/latest) page of its releases repository, and then manually putting it in `C:\Program Files\ExplorerPatcher` without the architecture specifier.
* For example, for 226xx builds on x64-based systems, download `ep_taskbar.2.amd64.dll`, rename to `ep_taskbar.2.dll`, and lastly put it in `C:\Program Files\ExplorerPatcher`.
</details>
##### 3
* Introduced support for ARM64 devices. (992b3a6, 2e4e4f5, b76c0e4, c9884b2, 57f63ad, 78788ec, 4799b4b, 5d0d218)
* These builds are only tested on and made to work with 24H2 ARM64 builds. Older ARM64 Windows versions than 24H2 may not work as expected.
* Added an "Update now" button into update notifications for easier updating. (2b9c747, 8c16a9a)
* Revised how files are packed in ep_setup for smaller size and easier maintenance. (30579b0, b253625, 04fd2b7, db54ce9, 126c024, c0201ff)
* EP's taskbar implementation for 24H2 is now available in [its releases repository](https://github.com/ExplorerPatcher/ep_taskbar_releases/releases/latest), as `ep_taskbar.5.dll`. If you want to try this out, follow the steps explained above.
##### 4
With this update, ExplorerPatcher is now officially compatible and supported on Windows 11 24H2 🥳🎉
* Start10: Now works again on 24H2 and 226xx.3930+. (755f101, 7e0f7eb, b473114)
* Taskbar10: EP's taskbar DLLs are now included again in the setup files. (d9595fc)
* Taskbar10: Network icon now shows again on 24H2. (7e0f7eb, b473114)
* Start10: Fixed positioning when the taskbar is not placed at the bottom, on 24H2 and latest 22H2/23H2 builds. (de2532d, ea5881f)
* Taskbar10: Fixed taskbar jump list flyout positioning when the taskbar is not placed at the bottom, on latest 22H2/23H2/24H2 builds. (39609e4)
* Setup: Updated the code for dealing with locked files, this should reduce the chances of getting setup failures due to locked files. (7e0f7eb)
* ep_taskbar: Fixed tray icons not being saved.
* ep_taskbar: Removed the Copilot button on 22H2.
##### 5
* Taskbar10: Fixed jump list positioning patch on latest builds with `TaskbarJumplistOnHover` feature flag. (#3615) (351a020)
* Taskbar11: Fixed Task Manager menu entry doing nothing on 24H2+. (#3021, #3556) (060066c)
* Start10: Fixed symbols mechanism when custom `StartUI_.dll` is used. (0f38628)
* Start10: Increased reliability of ARM64 patterns for restoring the animations and fixing positioning. (#3566) (2ea3894)
* ep_taskbar: Fixed the task band not having a handle when the taskbar is unlocked.
* ep_taskbar: Fixed scroll arrows in window list popups (`ExtendedUI`) having weird appearance and behavior.
##### 6
* Updates: Fixed a bug where empty UpdateURL registry values would break the updates system. (#3668) (ac14c75)
* Setup: Cleaned some unneeded stuff in the setup binary. (9811810)
* Misc: Restored exported functions for launching/restarting Explorer: `ZZLaunchExplorer`, `ZZLaunchExplorerDelayed`, and `ZZRestartExplorer`. (9811810)
##### 7
* Taskbar10: The registry key for the "Combine taskbar labels" setting is no longer redirected. (eb1f1ec, 2a6fb15)
* This means you can now configure this reliably both from EP's Properties dialog and the Settings app.
* If you are using EP with Windows 11 taskbar on Windows 11 builds before 226x1.2361 (builds without the Never Combine option on the Windows 11 taskbar), please make sure that this is set to "Always" to prevent issues.
* ep_taskbar: Now supports EP Weather. (#3546)
* ep_taskbar: Disabled app icon animations in the notification center button due to crashes when receiving a large number of notifications. (#3605)
* ep_taskbar: Fixed an issue where fallback UWP app icons do not show up, such as [Okular](https://okular.kde.org)'s. (#3754)
* ep_taskbar: Fixed an issue where the primary taskbar's monitor location is not remembered. (#3719)
* ep_taskbar: Implemented Win+X hotkey. (#3671)
* ep_taskbar: Initial support for [Windhawk](https://windhawk.net) mods. The following classes are now exported: `ClockButton`, `CTaskListThumbnailWnd`, `CTaskBand`, `CTaskBand::CLauncherTask`, `CTaskBtnGroup`, `CWindowTaskItem`, `CImmersiveTaskItem`, `CTaskGroup`, `TaskItemFilter`, `CTaskListWnd`, and `CTaskThumbnail`. (#3769)
* Check [this list](https://github.com/valinet/ExplorerPatcher/wiki/ExplorerPatcher's-taskbar-implementation#windhawk-mods-support) for compatibility info.
* The mods themselves need to be manually updated to support ep_taskbar. Please contact the respective mod authors for this.
## 22621.3527.65
Tested on OS builds 22621.3296, 22621.3447, 22621.3527, 22635.3566, 26058.1000, 26120.461, and 26200.5001. (Note: 22621 and 22631 share the same OS files)
##### 1
* Taskbar10: The Windows 10 taskbar option is now no longer available on 26002+. (#3053, e57a6b0)
* This is to comply with Microsoft's removal of the stock Windows 10 taskbar in `explorer.exe` of said builds.
* Start10: Fixed Pin to Start on 226xx.3420+ (22H2, 23H2) and 25169+ (24H2). (232fe6b)
* Start10: Reverted the menu closing delay fix when EP is injected only into `StartMenuExperienceHost.exe` for now. (e59c34c)
##### 2
* Start10: Fixed a bug where the recently introduced "account suggestions" prevents the user tile menu from opening on later 22H2/23H2 builds and 24H2. (d11445a)
##### 3
* All: Updated some patterns to work with 22635.3430+ (Beta) and recent 24H2 builds. (6d22947)
* This should fix the Windows 10 start menu crashing and Win+X not working on both aforementioned builds when symbols are not yet downloaded.
##### 4
* Updates: Support for `ep_make`, a new script which builds ExplorerPatcher locally on your computer. Read more [here](https://github.com/valinet/ep_make). (80592f6)
* GUI: Reorganized "About" and "Uninstall" sections. (4794713)
* ep_weather: Fixed alignment.
##### 5
* Weather: Layout fixes. (57b44d2, 2112a18)
## 22621.3296.64
Tested on OS builds 22000.2538, 22621.1992, 22621.3155, 22621.3235, 22621.3296, 25951.1000, and 26058.1000.
##### 1
* Taskbar10: Fixed a bug where SCOOBE would repeatedly crash Explorer when Language Switcher is set to anything other than Windows 10 (the default). (fe7f800, 5c35f58)
* Taskbar10: Refined the method for aligning the Windows 11 Start menu and Search flyouts when using the Windows 10 taskbar on 22621.2792+. (8f84a96)
* This should fix related crashes during logon and screen resolution change on 26063+.
* Taskbar10: Revised the method for restoring acrylic to the Windows 10 taskbar on 22621+. (5e7bad2)
* This should fix the taskbar being fully transparent on recent builds such as 22635.3066 and 22621/22631.3296 despite not having any other customization software.
* ExplorerPatcher should now avoid further injection when the system is in safe mode. (95ea9e7)
* Setup: Moved uninstallation prompt dialog existence check to the GUI. (0589a25)
* Various changes to prepare for the alternate taskbar reimplementation that will be released in the future. (a0885c6, 0791bd7, fc61884, 623ecee)
##### 2
* Taskbar10: Revised the method for disabling DisableWin10Taskbar present on 26002+. (913b2d0)
##### 3
* Start10: Support for OS builds 226xx.3420+ and 24H2, including fixed animations (5e25663, c286ab5).
* Start10: Prevent menu closing delay when patching standalone (without ExplorerPatcher injecting `explorer.exe`) (45bd735).
## 22621.3007.63
Tested on OS builds 22000.2538, 22621.1992, 22621.3007, 22621.3085, and 22621.3155.
##### 1
* **Fixed a bug where `explorer.exe` would crash repeatedly when the system is in OOBE.** (36ebe5a)
* ExplorerPatcher now no longer loads if it detects that the system is in OOBE or in credential reset.
* Taskbar10: The Network and Battery flyouts on later 22621 builds onwards and Windows 10 now open instantly without issues. (97fd483)
* Taskbar10: Allowed the use of search box (without highlights) on Windows 11. (0157ecc)
* **The behavior when the Start or Search menu is open is currently not the same as Windows 10, and we have no plans to fix this yet. Please do not make new Issues regarding this.**
* Start10: Added proper handling when the Windows 10 start menu is not available (e.g. 24H2/Canary builds). (3c8809e)
* Start10: Removed the original method for fixing Jump List (right click) views. (79b0f68)
* File Explorer: The address bar shrinking is now more accurate with pixel-perfect height compared to Windows 7, 8.1, and 10 (without the modern search). (e0b97e2)
* GUI: Added "Uninstall" section containing a button to launch the uninstaller. (0c5021b)
* Setup: There should now be fewer .prev files, and uninstallation should be cleaner as well. (296c6a0)
* Symbols: Added `explorer.exe` symbols for 22621+ and unified the method for Windows 10 Alt+Tab on 22000. (1f2e2c4)
* Localization: Added translations for Lithuanian, Polish, Russian, and Turkish.
##### 2
* Taskbar10: Improved animation performance when centering and/or EP Weather is not enabled, also fixed search box positioning on small taskbar without centering. (22d9e3c)
* Setup: Fixed a bug that placed `wincorlib.dll` on Windows 10 when it is not supposed to, causing the start menu to crash. (610ba7f)
##### 3
* Taskbar10: Fixed flyout positioning on Windows 11 26058+. (dfe340d)
* Slightly improved performance when interacting with the taskbar, both new and old. (dfe340d)
##### 4
* Setup: Reverted the method for ending `explorer.exe` and its subprocesses. (fdc357b)
## 22621.2861.62
Tested on OS builds 22621.2715, 22621.2861, 22631.2787, 22631.2861, 22635.2915, and 23590.1000.
##### 1
* Taskbar10: Various *important* fixes: (ec68783)
* Revised the method for enabling the old taskbar due to a very rare issue where the old taskbar couldn't be enabled with the previous method. (#2499)
* Fixed crash on 25921+ due to the removal of pnidui.dll. (#2558)
* Fixed potential stability issues when using the new taskbar on 22621.2787+.
* Taskbar10: Fixed white boxes on submenus when context menu skinning is disabled. (72f1458)
* File Explorer: Fixed crashes when using Windows 7/10 control interface on OS builds 22635.2915+. (3a1b8b8)
* Localization: Added translations for French, German, Hungarian, Korean, Romanian, and Ukrainian.
* The properties window has been made slightly wider to accomodate the newly added languages. (#2574)
* Localization: Added a language switcher to the About section of Properties window. (7c3be29, a7a3d27)
##### 2
* Symbols: Fixed languages with longer strings such as French crashing Explorer when attempting to download symbols. (ce9f973)
**Note:** Due to the breakages as well as frequent changes happening in Canary builds, we strongly do not recommend using ExplorerPatcher on Canary builds for now.
## 22621.2506.60
Tested on OS builds 22000.2416, 22000.2538, 22621.2361, 22621.2506, 22621.2715, 22631.2787, 23585.1001, and 23590.1000.
#### Details
##### 1
* Taskbar10: Fixed Windows 11 Start menu and Search positioning on builds 22621.2787+ and 23545+ (Dev). (ac268b1, 7d0cdde)
* File Explorer: Added option to disable the modern navigation bar of Moment 4. (2dc1340)
* File Explorer: Restored "Apply Mica" functionality on OS builds 22621+. (f62c532)
* Localization: Officially added translations for the following languages: Chinese (Simplified), Chinese (Traditional), Dutch, Indonesian, Japanese
* Thanks to [everyone involved](https://github.com/valinet/ExplorerPatcher-L10N#acknowledgements)!
* GUI: Decoupled the Properties window into `ep_gui.dll` from the main DLL in order to reduce the main DLL size and to allow scalable localization. (f6f6d89, 639d7aa)
* `rundll32 C:\Windows\dxgi.dll,ZZGUI` will continue to work as before.
#### ⚠️ Important notice for translators ⚠️
In this update, most if not all user-facing parts of ExplorerPatcher have been made localizable.
* The English texts have been put together into [here](https://github.com/valinet/ExplorerPatcher/tree/master/ep_gui/resources/lang) and [here](https://github.com/valinet/ExplorerPatcher/tree/master/ep_setup/resources/lang).
* Non-English texts have been designed to be put into [this separate repository](https://github.com/valinet/ExplorerPatcher-L10N). Feel free to make a PR there if you want to contribute to translations.
* Some texts have been updated to be more concise and accurate, so for existing translation fork maintainers, please double check the translations before making a PR to the said repository.
* Also for translation fork maintainers, a large number of conflicts will happen if you decide to continue merging changes from the main repository.
* Please let us know through Issues if there are still user-facing parts of ExplorerPatcher that are not localizable.
We apologize for the additional work that this change might cause. We hope that this one-time change will make it easier for translators to localize ExplorerPatcher and also easier for both translators and users to keep ExplorerPatcher up to date.
## 22621.2428.59
Tested on OS builds 22000.2416, 22621.2428, 23555.1000, and 23560.1000.
#### Details
##### 1
Note: After updating to this version, the symbols will be re-downloaded even if they have been downloaded before.
* Taskbar10: Fixed Control Center and Toast Center positioning on build 25951 (Canary). (dca0b3a)
* Taskbar10: Fixed start menu position when the taskbar is at the left or right side on Moment 4 builds. (a57471f)
* Taskbar10: Fixed the Windows 10 taskbar background patch to not crash anymore on build 25951 (Canary). (b52bd79)
* Taskbar10: Made classic theme taskbar fonts more accurate. Thanks @aubymori! (8fc53a1)
* Start10: Fixed a bug where certain texts in the Windows 10 Start menu stayed in English. (655e62c, 5321766)
* Start10: Properly fixed start menu showing/hiding along with its original animations on builds 22000.65+. (7e2f768)
* GUI: Fixed a bug where "Remember last used section" doesn't remember the current page after being enabled. (11160c8)
* Symbols: Reworked how symbols are managed so that symbols don't need to be successfully downloaded in succession. (8412bd6)
* Setup: Fixed uninstallation of EP installations that have went through upgrades before the proper Pin to Start fix. (845d2b5, a7c87ce)
## 22621.2361.58
Tested on OS builds 22000.2416, 22621.1, 22621.2134, 22621.2361, 22631.2338, and 23545.1000.
#### Details
##### 1
* Taskbar10: Fixed Windows 10 taskbar not showing up on Windows 11 builds with "Never combine" on the new taskbar. (bc3bbc7)
* Taskbar10: Fixed pen menu crashing `explorer.exe` on 22621.2134+. (1977d78)
* Taskbar11: Fixed a bug that crashed `explorer.exe` when right clicking the new taskbar on Windows 11 builds with "Never combine" on the new taskbar. (6023718)
* File Explorer: EP now tries to avoid crashes related to the new Windows App SDK views. (b426d2c)
* On OS builds 22621+, fixed a bug that crashed `explorer.exe` when required functions in `twinui.pcshell.dll` (for Win+X and Windows 10 Alt+Tab) could not be found using the fallback method. (6023718)
##### 2
* Taskbar11: Fixed a bug that reset the "never combine" setting on OS builds 22621.2361+ (#2207) (085b3dd)
* Taskbar10: Fixed Wi-Fi flyout buttons on OS build 22621 (0706393)
* Start10: Fixed start menu folders, show recently added, and show frequently used apps settings not being applied on OS builds 22621.2134+ (e28940d)
##### 3
* Start10: Pin to Start/Unpin from Start has been properly fixed on Start Menu and Explorer (but not Search yet) of all Windows 11 builds. (15c07a0)
* Start10: Fixed non-UWP apps not appearing on Dev channel builds 23545+. (a4f5bd0)
* File Explorer: Fixed command bar settings not being applied on non-primary Explorer instances on Windows 11. (001e8d8)
##### 4
* Taskbar11: Restored the fix for the bug that reset the "never combine" setting on OS builds 22621.2361+, which was removed in 22621.2361.58.3 by accident. (9f04110)
* Start: "Start menu style" now requires restart so that Pin to Start/Unpin from Start on Explorer works properly. (bdd71ef)
* Taskbar10: Disabled the patch for proper acrylic background on Canary builds (25000+) for now. (4ee742f)
Many thanks to @Amrsatrio for sustained efforts in maintaining and improving ExplorerPatcher.
Thanks to @ARestrepo228 for hints on fixing Pin to Start/Unpin from Start.
## 22621.2283.57
Tested on OS build 22621.2283. Installer requires Internet connectivity.
#### Details
##### 1
* Taskbar10: Fixed Action Center, Control Center, and notification toasts placements on OS builds 22621.2134+ (thanks @Amrsatrio).
* Taskbar10: Fixed a bug that prevented Task View and/or the window switcher (`Alt`+`Tab`) from working on OS builds 22621.2134+ (thanks @Amrsatrio).
* Taskbar10: Fixed a bug that prevented the volume and brightness flyouts from displaying (thanks @Amrsatrio).
* Taskbar10: Fixed a bug that prevented the `Win`+`A` (Action Center), `Win`+`N` (Control Center), and `Win`+`B` (Focus on tray overflow button) shortcuts from working on OS builds 22621.2134+ (thanks @Amrsatrio).
* Taskbar10: Fixed the context menu of the new IME button OS builds 22621.2134+ (thanks @Amrsatrio).
* Taskbar11: Fixed a bug that crashed `explorer.exe` when right clicking the taskbar on OS builds 22621.2134+.
* Quality of life improvements regarding symbol data (thanks @Amrsatrio).
Learn about known issues and track the progress regarding this update [here](https://github.com/valinet/ExplorerPatcher/pull/2097). Special thanks to @Amrsatrio for providing support towards fixing ExplorerPatcher on newer OS builds.
##### 2
* Fixed a bug that crashed `explorer.exe` on OS builds lower than 22621 (Windows 11 22H2). (dfee1ae)
## 22621.1992.56
Tested on OS build 22621.1992. Installer requires Internet connectivity.
#### Details
##### 1
* Windows 10 Start menu: Fixed a bug that prevented the menu from working on OS builds 22621.1413 and newer (46c5041). Please read these important notes regarding the fix [here](https://github.com/valinet/ExplorerPatcher/discussions/1679).
##### 2
* Windows 10 Start menu: Fixed a bug that prevented centering on Windows 10 (275a91f).
##### 3
* Windows 10 taskbar: Correct centering of taskbar items when search box is enabled in Windows 10 (2e43c67).
## 22621.1555.55
Tested on OS build 22621.1555. Installer requires Internet connectivity.
#### Details
##### 1
* Weather: Fixed a bug that prevented the widget from loading when using the Microsoft icon pack. (968d969)
##### 2
* Simple Window Switcher
* Support for individual list and grouping for UWP apps (implemented grouping and naming enhancements based on using information associated with `AppUserModelID`s)
* Ability to switch between global and local window lists when the switcher is shown.
* Maintain position in the list when certain events occur, like closing windows or switching between the global and local window lists.
* `Del` key closes the currently selected window(s).
* Fixed a bug that prevented newly spawned windows while the switcher is open from going to the back of the list.
* Fixed a bug that prevented window lists from building properly when windows were slow to close.
* Fixed a bug that prevented proper activation of pop-up windows under certain conditions. For example, the switcher is now able to correctly switch to the "Error Checking" window in This PC - right click C: - Properties - Tools - Error checking - Check.
## 22621.1413.54
Tested on OS build 22621.1413.
Please make sure you are connected to the Internet while installing, the application might need to perform one-time downloads for several resources in order to enable full functionality.
#### Details
##### 1
* Windows 10 taskbar: Fixed a bug that made the following functionalities have issues or stop working: Task View button, `Win-Tab`, `Alt-Tab` after pressing `Win-Tab`, flyouts alignment, notification center alignment, `Win` key shortcuts on OS build 22621.1413+ (thanks @CthRio for the heads up). (0ad140c)
* Setup: Fixed a bug that prevented File Explorer from starting automatically after servicing the application if the installer run using different credentials than the logged on user (thanks @Abestanis). (1738b45)
* Weather: Fixed widget icons when using Microsoft icon pack. (2a1aad2)
* Implemented a mechanism to stop repeated crashes. (d7e5b7d)
##### 2
* Weather: Fixed a bug that prevented the widget from displaying correctly. (a5e5287)
##### 3
* Windows 11 Start menu: Better enforcement for disabling the "Recommended" section. (27a8fd9)
##### 4
* Windows 11 Start menu: Fixed a bug that prevented the menu from working when the setting "Disable Recommended section" is used and the display scaling is 125%. (5649a83)
##### 5
* Fixed a bug that could crash File Explorer on older OS builds, like 17763 (LTSC 2019). (6bc2ea5)
## 22621.1344.53
Tested on OS builds 22621.1344, 22000.1574, and 19044.1466.
Please make sure you are connected to the Internet while installing, the application might need to perform one-time downloads for several resources in order to enable full functionality.
#### Details
##### 1
* Windows 10 taskbar: Fixed a bug that crashed `explorer` on OS build 22621.1344. (f9d702e)
* Weather: Fixed a bug that displayed the widget area using a different background color. (cc0af46)
* Weather: Fixed a bug that might throw a script error when certain elements are not ready. (c083327)
* Weather: Fixed a bug that could prevent the widget from properly loading. (a8c7fba)
* ep_extra: Implemented a loadable module for Windows 7's Alt-Tab. (ca8ce13)
* ep_extra: Implemented an `ep_extra`-based loader. (1f4b586)
## 22621.819.52
Tested on OS builds 22621.819 and 22000.1098.
Please make sure you are connected to the Internet while installing, the application might need to perform one-time downloads for several resources in order to enable full functionality.
#### Details
##### 1
* Windows 11 Start menu: Implemented centering on screen when taskbar is not at the bottom. (4212e35)
* Windows 11 taskbar: Option to use the stock taskbar context menu. (451db3c)
* Fixed a bug that could display the Start menu on a wrong monitor or outside the screen when the taskbar was moved to the top of the screen and the previous setting was at the right edge of the screen. (53fad19)
##### 2
* Windows 11 Start menu: Fixed a bug that prevented the disable "Recommended" section feature from working when the scaling level of the screen the Start menu is displayed on is set to 125% (120 DPI). (9f9d43e)
## 22621.608.51
Tested on OS builds 22621.608 and 22000.1042.
Please make sure you are connected to the Internet while installing, the application might need to perform one-time downloads for several resources in order to enable full functionality.
#### Details
##### 1
* Fixed a bug that could prevent the Windows 10 network or battery flyouts from showing on OS build 22000.
* Fixed the Windows 10 network and battery flyouts on OS build 22621.
* Weather: Fixed a bug that displayed the widget contents with incorrect left padding.
##### 2
* sws: Support for changing selection in window list using the mouse wheel (suggestion by andrewz).
* Fix broken "Cascade windows", "Show windows stacked", "Show windows side by side", and "Undo ..." options in taskbar context menu (reported by iamk9008).
##### 3
* sws: Option to have the scroll wheel change the selection when using the switcher:
* "Never" (default), the same behavior as two versions ago, which means that, when the switcher is active, it does not react to the scroll wheel being used.
* "When cursor is over the switcher" has the switcher react to the scroll whell and advance/reverse the selection only when the cursor is above the switcher
* "Always" has the switcher react to the scroll whell and advance/reverse the selection regardless of where the cursor is placed. In this mode, background applications won't receive scroll wheel updates until the switcher is closed, regardless of the "Scroll inactive windows when hovering over them" setting from Windows.
* sws: Fixed a bug that had the scroll wheel move selections in the opposite direction compared to Windows 7 Alt-Tab's behavior. When enabled, the scrolling up selects the previous window in the list, while scrolling down selects the next window in the list. To obtain the previous behavior, which is to scroll up to select the next window, and to scroll down to select the previous window, set `ScrollWheelInvert` to `1` in `HKCU\Software\ExplorerPatcher\sws` (5cef3b1).
* sws: Fixed a bug that could unexpectedly move the switcher to another monitor when your cursor was placed on the other monitor, the option to have the switcher display on the monitor the cursor is placed on is enabled and the switcher finished refreshing its data in the background (https://github.com/valinet/sws/commit/8b68539201102801367ef8f3716b9f1260e2dbe5).
* sws: Fixed a bug that could prevent hotkey associations from being properly cleaned up when you disabled the setting to have a per-application window list (https://github.com/valinet/sws/commit/c5776e5a6a0c5495892a15e16a1def31b225fc51).
* sws: Fixed a bug that could prevent correct reload of settings when entries were directly deleted from the registry (cbc5f19).
##### 4
* Windows 11 taskbar: Fixed a bug that could crash `explorer.exe` when right clicking certain system tray icons on 22621-based builds. Thanks for the reports about this issue. (a6a88b1)
##### 5
* Windows 11 Start menu: Fixed a bug that prevented the menu from taking into account the "Layout" setting from Windows Settings - Personalization - Taskbar on 22621-based builds. (2572a80)
##### 6
* Fixed a bug that could cause the host process of ExplorerPatcher to crash under certain circumstances. (d7a0385)
## 22622.450.50
Tested on OS build 22622.450.
Please make sure you are connected to the Internet while installing, the application might need to perform one-time downloads for several resources in order to enable full functionality.
#### Details
##### 1
* Support for OS builds 22621+. Read more [here](https://github.com/valinet/ExplorerPatcher/issues/1082#issuecomment-1206690333).
* Added an option to shrink address bar height in File Explorer windows (thanks @krlvm).
##### 2
* Support for disabling the modern search bar in 32-bit applications as well (thanks @krlvm).
* Fixed a bug that could prevent deleting registry keys when the application was supposed to (for example, when uninstalling or toggling certain settings).
##### 3
* Fixed incorrect check for running dwm instances in `ep_dwm`
* Fixed a use-after-free bug in `ep_dwm` (thanks @ibhk)
## 22000.795.48
Tested on OS build 22000.795.
Please make sure you are connected to the Internet while installing, the application might need to perform one-time downloads for several resources in order to enable full functionality.
#### Details
##### 1
* Weather: Fixed a bug that could hang the widget and lead to an infinite loop with the program using an entire CPU core when the computer resumed from sleep or hibernation.
* Weather: Fixed a bug that had the widget display the error page when the computer lost network connectivity; instead, now the widget continues to display the cached data from the previous refresh (if any).
##### 2
* Weather: Fixed a bug that could hang explorer and the weather widget host process under certain circumstances, for example, when explorer restarted.
## 22000.778.47
Tested on OS build 22000.778.
Please make sure you are connected to the Internet while installing, the application might need to perform one-time downloads for several resources in order to enable full functionality.
#### Details
##### 1
* Built-in support for OS build 22000.778.
* Fixed a bug that had the Start button context menu / Win-X menu / power user menu fail to display and potentially lock the shell on OS builds 22000.778+ and 22621+
##### 2
* Fixed a system high DPI-related bug that caused wide Windows 10 taskbar buttons and incorrect (desktop) icon spacing
## 22000.708.46
Tested on OS build 22000.708.
Please make sure you are connected to the Internet while installing, the application might need to perform one-time downloads for several resources in order to enable full functionality.
#### Details
##### 1
* Built-in support for OS build 22000.708.
* Added configuration options for the new Windows Spotlight desktop background feature, including:
* Hide the "Learn about this picture" icon
* Choose which items from the Windows spotlight icon context menu to have replicated in the desktop context menu (legacy context menu only)
* Set a schedule for "Switch to next picture"
* Manipulate the feature from the Properties UI, bypassing the desktop icon
* The Properties UI hides sections that are not applicable to your current settings; for example, the "Weather" tab is not displayed if you've selected the Windows 11 taskbar, as none of the options in there apply when in this mode.
##### 2
* sws: Fixed a bug that created unnecessary paint events when a window was flashing and the switcher is not shown
##### 3
* Added option to hide the "Show desktop" button, but still retain its functionality, when using the Windows 10 taskbar
* Fixed a bug in Windows 10 where the Start menu was displayed centered by default
##### 4
* Weather: Show "Reload" link when data fails to load (thanks Varun A. for the suggestion)
* sws: Draw placeholder thumbnail when a proper thumbnail cannot be obtained (for example, due to a window having an invalid width or height)
* sws: Fixed a bug that could prevent the switcher from identifying when the desktop is in the foreground
* sws: Fixed a regression that could prevent the switcher from properly detecting foreground window changes
* sws: Fixed a bug that made very small windows have a rectangle area too small for properly working with in the switcher
##### 5
* Fixed a bug that could prevent Control Panel link redirection from working correctly
* Weather: Fixed a bug that prevented the widget from working when WebView2 Runtime >= 102.0.1245.33
##### 6
* Fix a bug in the Properties window that had the it fail to display some sections under default settings
## 22000.675.45
Tested on OS build 22000.675.
Please make sure you are connected to the Internet while installing, the application might need to perform one-time downloads for several resources in order to enable full functionality.
#### Details
##### 1
* sws: Fixed a bug that displayed a wrong window to switch to when a background application was denied the request to have the foreground window by the OS (#1084)
##### 2
* libvalinet: Fixed a memory leak in `toast.h`
* sws: Fixed a bug that caused the switcher to display non-responsive (hung) immersive (UWP) windows twice in the list
##### 3
* sws: Fixed a bug that created unnecessary paint events when a window was flashing and the switcher is not shown
## 22000.613.44
Tested on OS build 22000.613.
Please make sure you are connected to the Internet while installing, the application might need to perform one-time downloads for several resources in order to enable full functionality.
#### Details
##### 1
* Option to disable Win+F (Feedback Hub) hotkey
* Built-in support for OS build 22000.613
##### 2
* Weather: Fixed a bug that had "COM Surrogate" display as a running app in Task Manager after the widget flyout was opened the first time
* Weather: Fixed a bug that could hang or lock the shutdown/restart/sign out process when using the weather widget
## 22000.556.43
Tested on OS build 22000.556.
Please make sure you are connected to the Internet while installing, the application might need to perform one-time downloads for several resources in order to enable full functionality.
#### Details
##### 4
* Option to enable legacy file transfer dialog
##### 3
* Option to enable classic drive groupings in This PC (thanks @lordmilko)
* Choice of Windows 11 Command Bar, Windows 10 Ribbon or Windows 7 Command Bar for File Explorer windows
##### 2
* Fixed Windows 10 taskbar showing fully transparent instead of the acrylic effect on newer OS builds (22581+)
##### 1
* Option to disable window Snap quadrants in Windows 11 (thanks @lordmilko)
## 22000.556.42
Tested on OS build 22000.556.
Please make sure you are connected to the Internet while installing, the application might need to perform one-time downloads for several resources in order to enable full functionality.
#### Highlights
* Implemented Weather widget for the classic taskbar, similar to what is available in the more recent updates to Windows 10. Read more about it [here](https://github.com/valinet/ExplorerPatcher/wiki/Weather).
* Support for the Windows 10 Start menu in Windows 11. Read more about this [here](https://github.com/valinet/ExplorerPatcher/discussions/920).
* Option to center Windows 10 Start menu and Windows 10 taskbar.
* Support for Windows 10. Read more about this [here](https://github.com/valinet/ExplorerPatcher/discussions/898).
#### Details
##### 1
* The weather widget recomputes its area automatically, by default, in order to fit its contents, instead of remaining at a fixed size; there is also an option to choose between the two behavior
* Possibility to disable the icon in the weather widget
* Fixed a bug that prevented the weather widget flyout from displaying correctly when the taskbar was using small icons (#741)
* Fixed inconsistencies when displaying the weather widget and the system themes are disabled (aka the classic theme is used)
* Screen readers now read the weather data when requested for the weather widget
* Changing the Start button style or weather widget layout does not toggle taskbar auto-hide now; instead, the settings take effect immediately
##### 2
* The weather widget defaults to showing in the preferred language set in Windows, instead of English (#734)
* Fixed a bug that could corrupt registry entries of type REG_SZ set via the Properties UI (#734)
* Fixed a bug that reset the setting when pressing "Cancel" in an input box in the Properties UI (#734)
##### 3
* The weather widget shows an error screen when an error happens (like, using an incorrect location, or the network not working etc)
* The weather widget adjusts its size vertically to accommodate the entire contents (#734)
##### 4
* The weather widget supports dark mode (thanks @krlvm) (#755)
##### 5
* Fixed a bug that prevented correct registration of the weather flyout on certain systems (26b6646)
* Fixed a bug that made the weather flyout open with noticeable delay under certain circumstances
* Fixed a bug that prevented correct operation on builds without built-in symbols (#783)
##### 6
* Fixed several race conditions that could lead to incorrect operation of the weather widget (for example, `explorer.exe` crashing when disabling or enabling the widget)
##### 7
* Implemented 2 features that help in replacing the functionality of the quick launch toolbar with pinned taskbar items. Read more about it [here](https://github.com/valinet/ExplorerPatcher/discussions/819)
##### 8
* Implemented option to have the Start menu open on a specific monitor (#821)
* The weather widget supports setting window corner preference (rounded/not rounded)
##### 10
* Option to clear weather widget local data
##### 11
* Installer sets a Start menu shortcut for the "Properties" window
##### 14
* The weather widget positions and sizes itself with respect to the text size accessibility setting as well ([#734](https://github.com/valinet/ExplorerPatcher/discussions/734#discussioncomment-2190218))
##### 15
* Support for high contrast themes in the "Properties" window and in the weather widget (#885)
* Fixed a bug that could lead to a crash when `explorer.exe` starts (#879)
* Fixed a bug that could prevent the weather widget from launching under certain conditions
##### 16
* Initial support for Windows 10
* Enabling the weather widget will automatically download and install the Microsoft WebView2 Runtime on computers where it is not installed
##### 17
* Fixed a bug in the Weather widget that could display an erroneous Google search pop-up (thanks @plofhaan) ([#734](https://github.com/valinet/ExplorerPatcher/discussions/734#discussioncomment-2216475))
##### 18
* Fixed a bug that resulted in an access violation on log off when EP runs alongside 7+TT (#894)
##### 19
* Option to enable dev tools for weather widget debugging (#934)
* Fixed a bug that prevented the "Skin menus" setting from working in the `Win`+`X` menu on Windows 10
##### 20
* Fixed a bug that would display an information banner that obscured the weather widget in some occasions when displaying the widget in German (#934) (thanks @frederic2de)
##### 21
* Fixed program windows in older 22000-based OS builds
##### 22
* Added option to enable rounded corners on the Windows 10 Start menu (#937)
* Added option to disable the "Recommended" section on the Windows 11 Start menu
* Fixed a bug that prevented correct displaying of the weather widget contents when using a right-to-left language (#954)
##### 23
* Support for full screen Windows 10 Start menu
##### 24
* Support for "Show more tiles" option in the Windows 10 Start menu (#933)
* Fixed a bug that prevented extraction of all files when running `ep_setup.exe /extract`
##### 25
* Implemented floating/docked rounded corners in the Windows 10 Start menu
##### 26
* Implemented centered Windows 10 taskbar
* Option to hide the app list in the Windows 10 Start menu
* Fixed a bug that presented the weather widget with a wrong height when using the taskbar vertically
##### 27
* Implemented centered Windows 10 Start menu
* Fixed a bug that prevented the taskbar from displaying UWP icons when using the Windows 10 Start menu on newer Windows builds (#973)
##### 28
* Fixed a bug in the Windows 10 Start menu that prevented the menu from displaying when not using rounded corners
* Fixed a bug in the Windows 10 Start menu that prevented the menu from updating its position when the settings changed
* Fixed a bug in the Start menu that prevented the app from receiving settings change notifications when some registry keys were not available on the system
* Fixed a crash at startup in `explorer.exe` (in module `sndvolsso.dll`) on OS build 22567+
##### 29
* Fixed a bug that prevented the weather widget from working on OS server SKUs
* Enabled centered Start menu and taskbar in Windows 10
* Prompt before updating when running on the built-in Administrator account and the `FilterAdministratorToken` policy ("User Account Control: Use Admin Approval Mode for the built-in Administrator account") is disabled or not configured
* Reworked CHANGELOG format
##### .30
* Support for daytime/nighttime icons in the weather widget
* Improved contrast between the weather icons and the taskbar using light theme
* Implemented Mica effect for File Explorer windows (thanks @MishaTY) and option to hide the icon and title of File Explorer windows
* Fixed a bug that made the search, Cortana and task view buttons display on the left even though the taskbar was set to center with Start menu (#999)
* Disabling the "Recommended" section in the Windows 11 Start menu now works in newer OS builds as well (#995)
##### .31
* The Microsoft icon pack for the weather widget applies to the widget contents as well, in addition to the taskbar icon
* Fixed a bug that slightly moved the taskbar buttons to the right when dragging to rearrange one of them over the first or last item when using the centered Windows 10 taskbar (#1009)
* Fixed a bug that crashed the "Properties" window when accessing the "System tray" section in Windows 10 (#1013)
* Fixed a bug that prevented the Mica effect from working on File Explorer windows when the "Launch folder windows in a separate process" setting was used (#1021)
* Fixed a bug that made certain systems, under certain circumstances, to become stuck in "tablet mode"; symptoms included more spacing between taskbar icons, compact view permanently disabled in File Explorer, and/or item checkboxes permanently enabled in File Explorer (#1022). After installing this update, if you are still stuck with the tablet UI, open the Registry Editor, go to `HKEY_CURRENT_USER\SOFTWARE\Microsoft\TabletTip\ConvertibleSlateModeChanged` and delete the `ConvertibleSlateModeChanged` value which most likely is stuck to `1`.
##### .32
* Built-in support for 22000.556
* Weather widget can now show on the left/top side of the taskbar
* Weather widget can display condition on 2 lines
* Reliability improvements for the centered Windows 10 taskbar which now also works along with other taskbar toolbars
* Fixed a bug that had the Windows 10 Start menu default to being left-aligned on Windows 10
* Fixed a bug that prevented the "Centered, with Start button" modes of the Windows 10 taskbar from working correctly when the taskbar was vertically aligned
##### .33
* Weather: Implemented manual zoom levels (#1033)
* Weather: Fixed a bug that had the widget display, at startup, a day/night icon relating to time at the last hour change, instead of the actual current time
* Weather: Fixed a bug that made the widget display a line at the top for some places
* Fixed a bug that could make the centered taskbar not layout correctly when showing/hiding either of the search, Cortana or task view buttons the first time after the application started
* Fixed a bug that prevented the centered taskbar from working when animations are turned off system-wide (for example, in usual remote sessions)
* Fixed a bug that prevented the taskbar from displaying correctly when the weather widget is set to display at left/top (#1041)
##### .34
* Weather: Fixed a bug that prevented resizing other taskbar toolbars (#1043)
* Weather: Fixed bugs regarding left/top positioning option (#1041)
##### .35
* Option to allow version downgrades when updating the application after switching the servicing channels (#1051)
* ExplorerPatcher no longer sets the `MinWidth` registry entry automatically - this was used to mitigate an issue with `explorer.exe` where taskbar button labels were becoming too large. If you are affected by having this registry entry set, open the Registry Editor, go to `HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics` and remove the `MinWidth` entry (which is probably set to `38`). The same procedure can be used in order to have this option set up in the registry. For more information, see #664.
* Setup will disable the `UndockingDisabled` registry entry at `HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Shell\Update\Packages` when servicing the application. Using `UndockingDisabled` with ExplorerPatcher is not necessary and can actually cause issues (for example, see #704).
##### .36
* Weather: Display time of last update in the Properties window
##### .37
* Fixed Windows 10 taskbar button thumbnails on newer OS builds (22572+)
* Fixed Windows 10 taskbar showing fully transparent instead of the acrylic effect on newer OS builds (22572+)
##### .38
* Fixed a bug that made the disable window rounded corners feature not work after signing out and then back into a user account
##### .39
* Weather: Fixed a bug that prevented the widget from starting up on new installations due to the folder `%APPDATA%\ExplorerPatcher` not existing
## 22000.469.41
Tested on OS build 22000.434.
#### New features
* Built-in support for OS builds 22000.434, 22000.438, 22000.466, and 22000.469
* Ability to choose a Windows 10 or Windows 11 Start button style for the Windows 10 taskbar (#436, thanks @krlvm)
* Support for screen readers in the Properties window (#627) (.1)
* Option to disable `Office` hotkeys (`Ctrl`+`Alt`+`Shift`+`Windows` key combinations) (#661) (.4)
* Simple Window Switcher can switch applications instead of windows (#665) (.5, .6)
* Option to disable rounded corners for windows (.7)
* Ability to hide the "Properties" item from the taskbar context menu (.9)
* Import/export functionality for program settings (.11)
#### Feature enhancements
* The option to toggle taskbar auto hide when double clicking the taskbar now works with the Windows 11 taskbar as well
* Performing a memory leak dump now displays GDI, peak GDI, USER and peak USER object counts as well
* The language switcher list displays only the options that work (previously, it showed some cryptic internal implementations, like "LOGONUI", "UAC", "SETTINGPAGE" and "OOBE"). Thus, the list of language switchers offers the following choices:
* Windows 11 (default)
* Windows 10 (with link to "Language Preferences")
* Windows 10
* Simple Window Switcher now highlights windows that require user attention (windows that have their taskbar button flash and colored in orange) (.8)
* Reliability improvements for the option that maps the `Win`+`C` shortcut to open the clock flyout instead of Microsoft Teams (eliminated dependency on symbol data) (.10)
* When an update is available, the notification displays the version of the update (.12)
* The updater correctly detects when the current version is a pre-release but the user has switched the update channel to stable and does not suggest the older stable version as an update anymore (multiple reports, #540, #710) (.12)
* Import/export settings suggests a file name automatically (.15)
#### Fixes
* Fixed a bug that prevented the Properties UI's system menu from displaying and working correctly
* Fixed a bug that displayed a wrong timestamp (29/08/2021) instead of the current date and time on the notifications generated by ExplorerPatcher
* Fixed a wrong function prototype (5b4bd07#r62018175, thanks @Simplestas)
* Protected some state variables from changing internally if modified in the registry until `explorer` is restarted
* Fixed a bug that could unexpectedly prevent the [Win]+[Alt]+[D] shortcut from working properly
* Windows 10 language switcher displays correctly when the taskbar is placed in some location other than the bottom of the screen (#629) (.2)
* Available symbols download properly on Insider builds (tested on 22526.1000) (.3)
* Mitigated an `explorer.exe` bug where Windows 10 taskbar buttons were becoming too large under certain circumstances when the setting to show labels/never combine is used and the screen resolution/DPI changes (#664) (.6)
* Performance improvements and bug fixes for Simple Window Switcher (.8)
## 22000.376.40
Tested on OS build 22000.376.
#### Highlights
* Built-in support for OS build 22000.376 (.12)
* Hotfix: Windows 10 taskbar "always combine"/"show labels" setting is properly preserved when upgrading from an older release (multiple reports, #612, #614) (.21)
* Primary taskbar remembers position when moved to a secondary monitor (multiple issues, like #504)
* Ability to set Control Center as network icon action (merged #492)
* Added possibility to use the original Windows 10 (Alt-Tab) window switcher; thus, the available options are now:
* Windows 11 switcher - full screeen, slow, tiny selection outline, slow opening times
* Windows 10 switcher - pretty good but lacks customization options
* Windows NT switcher - the classic simple icon-based interface hosted by `csrss`
* Simple Window Switcher - my own take on implementing this kind of functionality
* Registry access in the "Properties" GUI is now virtualized; that means, the same lightweight infrastructure is maintained but more complex behaviors can be offered via the improved backend; as such, this version introduces the following new configuration options:
* Primary and secondary taskbar placement
* Automatically hide the taskbar
* Proper activation of the "Properties" window when another instance is running and minimized
* Symbols parsing success notification displays for longer
* Debug builds are clearly indicated in the "About" page of "Properties"
* Fixed solution to properly produce a debug setup program
* Possibility to uninstall by renaming `ep_setup.exe` to `ep_uninstall.exe` and running that (.4)
* Fixed a bug that crashed the "Properties" GUI when toggling certain settings (#527) (.6)
* The "Properties" window is restarted unelevated if it was open when application servicing was performed (#528) (.7, .13)
* Reliability improvements for File Explorer restarts (#529) (.7)
* When changing the main taskbar position and restarting File Explorer, the new position is now correctly saved and applied when File Explorer restarts (#523) (.7)
* Mitigation for the issue described in #416 (.7)
* Fixed a bug that prevented the Windows 10 window switcher from displaying when it was enabled, instead falling back to the Windows NT window switcher (#548) (.8)
* Fixed the "Show People in the taskbar" option and made it not require a restart to apply (#554) (.10)
* Ability to choose look of Snap Assist (window list when snapping a window): Windows 11 or Windows 10 style (.11)
* Fixed a bug that prevented the correct set up of "DisplayVersion" registry entry in the uninstall information registry key (.11)
* Secondary taskbars' context menu is displayed similarly to the primary taskbar's context menu for Windows 10 style (.12)
* Safeguards to prevent malicious executions on update mechanism hijacks for systems where User Account Control is disabled (#567) (.13)
* Option to prevent certain Control Panel links from being redirected to the Settings app (.14), including in build 22523 (.15)
* Settings are now stored in `HKEY_CURRENT_USER\Software\ExplorerPatcher` so that Windows does not reset them anymore across major OS updates (#576) (.16)
* Improved Properties UI layout by reducing wasted space and eliminating redundant elements (#590) (.17)
* Support for the `Win`+`Alt`+`D` shortcut to activate the clock flyout, as in Windows 10 (#591) (.17)
* Fixes for Windows 11 taskbar:
* As shipped by Microsoft, a taskbar displayed on a secondary monitor does not react when the mouse is over it and auto hide is on; fixed this (#589) (.17)
* As shipped by Microsoft, under certain circumstances, the main taskbar does not show its system tray when `explorer` starts up and auto hide is on; fixed this (.17)
* As shipped by Microsoft, a taskbar displayed on a secondary monitor might display a wrong contextual menu when auto hide is on; fixed this (.17)
* The clock flyouts now display correctly when using this taskbar
* Fixed a bug that displayed wrong window previews when the combine taskbar buttons option was set to never combine (#564) (.17)
* Possibility to set position on screen (top/bottom) from the Properties UI
* Restoring default settings only asks for elevation if required (for the moment, only if you have registered the application as shell extension) (.18)
* Fixed the context menu not working (and a potential associated crash) of the new Microsoft IME (#598, #588) (.19) (huge thanks to @Simplestas)
* GUI: Lock `ExplorerFrame` into memory (.20)
#### Simple Window Switcher
* Dramatically improved performance, refactored application; switched to building the window lists faster, on demand, so that the proper windows are always displayed (as far as I remember, the latest `IsAltTabWindow` is based on a function called `IsTaskedWindow` ripped straight from AltTab.dll from Windows 7 6.1.7600.16385)
* Proper history of window activations is maintained internally
* Implemented support for layered windows, thus making transparency possible when using the default theme (Acrylic and Mica brushes are still available, but those have the disadvantage that the system can disable them in certain scenarios, like saving energy when working on battery power)
* Improved reliability of startup delay and window dismiss when quickly Alt-Tabbing
* Window icons are retrieved async now
* Better icon drawing using GDI+ flat API
* Added some more debug messages
* Fixed some rendering problems when themes are disabled
* Fixed regression of [#161](https://github.com/valinet/ExplorerPatcher/issues/161#issuecomment-986234002) (.1)
* Possibility to disable per-application window lists (`Alt`+`) ([#283](https://github.com/valinet/ExplorerPatcher/issues/283#issuecomment-986261712)) (.2)
* Fixed bug that prevented proper loading of default settings (.3)
* Implemented a mitigation for #516: gestures for switching apps on Windows Precision Touchpad devices trigger the Windows 10 switcher instead of the Windows 11 switcher, which is much closer to how Simple Window Switcher looks and behaves; ideally, a full solution for this should be provided in the future, in the form of support for activation and navigation using Windows Precision Touchpad gestures in the Simple Window Switcher (.5)
* Fixed an issue that could hung the application and made window switchers unavailable (#525) (many thanks to @jdp1024) (.7)
* Possibility to configure window padding (.7)
* Support for closing window with middle button ([#110](https://github.com/valinet/ExplorerPatcher/discussions/110#discussioncomment-1793318)) (.9)
* Mitigated an issue that may have prevented Explorer from launching correctly when Simple Window Switcher is set as window switcher (.9)
* Fixed a crash that could make Explorer restart repeatedly at startup or even hang indefinitely (#525) (.15)
## 22000.348.39
Tested on build 22000.348.
#### New features
* Built-in support for build 22000.348.
* Implemented option to toggle taskbar auto-hide when double clicking the main taskbar (#389)
* Running `ep_setup.exe` again while EP is already installed will now update the program to the latest version. To uninstall, as the previous behavior did, run `ep_setup.exe /uninstall`
* Implemented absolute height and width parameters for the Windows 10 switcher. These are especially useful for ultra wide monitors, in a scenario similar to the one described in [this post](https://github.com/valinet/ExplorerPatcher/discussions/110#discussioncomment-1673007) - to configure, set `MaxWidthAbs` and/or `MaxHeightAbs` DWORD values in `HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher\sws` (#110)
* Provides a simple mechanism for chainloading a custom library when the shell interface is created, from which you can execute your custom code (subject to change, see [this](https://github.com/valinet/ExplorerPatcher/discussions/408#discussioncomment-1674348) for more details) (#408)
#### Feature enhancements
* Option to receive pre-release versions, if available, when checking for updates
* Improved behavior regarding symbol data information; please refer to https://github.com/valinet/ExplorerPatcher/wiki/Symbols for more information (.1)
#### Fixes
* Fixed mismatches between defaults from EP and Windows' defaults
* Application starts with limited functionality on builds lacking hardcoded symbol information; symbol downloading is disabled for now, by default, but can be enabled in the "Advanced" settings section of "Properties"
* Improvements to how hung windows are treated by the Windows 10 window switcher; fixed an issue that severely delayed the time it took the window switcher to display when a window hung on the screen (#449)
* Clicking "Close" in the Windows 10 window switcher is now more tolerant to small mouse movements (#110) (.1)
* The existing "Properties" window is properly displayed if opening it when another instance is already running and is minimized (.2)
## 22000.318.38
Tested on build 22000.318.
#### New features
* Functional Windows 10 network flyout
* Functional Windows 10 battery flyout
* Implemented support for Windows 7 battery flyout (#274)
* Implemented `/extract` switch which unpacks the files from `ep_setup.exe` to disk (#396) (.1):
* `ep_setup /extract` - extracts `ExplorerPatcher.IA-32.dll` and `ExplorerPatcher.amd64.dll` to current directory
* `ep_setup /extract test` - extracts to `test` folder in current directory
* `ep_setup /extract "C:\test with space"` - extracts to `C:\test with space` directory
* Taskbar toolbar layouts are preserved when switching between Windows 10 and Windows 11 taskbars and in general (these will be reset when installing this update but should be subsequently remembered) (#395) (.2)
* Implemented option to toggle taskbar auto-hide when double clicking the main taskbar (#389) (.3)
* Running `ep_setup.exe` again while EP is already installed will now update the program to the latest version. To uninstall, as the previous behavior did, run `ep_setup.exe /uninstall` (.4)
* Implemented absolute height and width parameters for the Windows 10 switcher. These are especially useful for ultra wide monitors, in a scenario similar to the one described in [this post](https://github.com/valinet/ExplorerPatcher/discussions/110#discussioncomment-1673007) - to configure, set `MaxWidthAbs` and/or `MaxHeightAbs` DWORD values in `HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher\sws` (#110) (.5)
* Provides a simple mechanism for chainloading a custom library when the shell interface is created, from which you can execute your custom code (subject to change, see [this](https://github.com/valinet/ExplorerPatcher/discussions/408#discussioncomment-1674348) for more details) (#408) (.6)
#### Feature enhancements
* Improved reliability when invoking Control Center (`Win`+`A`) when the taskbar icon is disabled (the icon should now not reappear anymore sometimes) (#242)
* Small reorganization of some options in "Properties"
* Option to receive pre-release versions, if available, when checking for updates (.9)
#### Fixes
* Windows 10 network and battery flyout should now always launch when the tray icon is clicked (#410) (.1)
* Fixed mismatches between defaults from EP and Windows' defaults (.3)
* Application starts with limited functionality on builds lacking hardcoded symbol information; symbol downloading is disabled for now, by default, but can be enabled in the "Advanced" settings section of "Properties" (.7)
* Improvements to how hung windows are treated by the Windows 10 window switcher; fixed an issue that severely delayed the time it took the window switcher to display when a window hung on the screen (#449) (.8)
## 22000.318.37
Tested on build 22000.318 and 22000.346 (currently in Windows Insider beta and release preview channels).
#### New features
* The configuration interface is now accessed by right clicking on the taskbar and choosing "Properties" (previously, it was available in the `Win`+`X` menu). This behavior works when either the Windows 10 or Windows 11 taskbar is enabled. As well, you can launch the "Properties" window directly by pressing `Win`+`R` and typing `rundll32 C:\Windows\dxgi.dll,ZZGUI`, followed by `Enter`.
* Implemented a setup program:
* To install, simply run `ep_setup.exe`. File Explorer will restart and the program will be enabled right away.
* To uninstall, there are 2 options:
* Run `ep_setup.exe` again.
* Via "Programs and Features" in Control Panel, or "Apps and features" in the Settings app.
* Learn more about the setup program [here](https://github.com/valinet/ExplorerPatcher/wiki/Installer-How-To)
* Implemented automatic updates; there are 3 settings to choose from when File Explorer starts:
* Notify about available updates (default) - the program will check for updates and display a notification if a new build is available; you can go to "Properties" and install the update from there
* Prompt to install available updates - the program will check for updates, download them if any, and prompt you to install them automatically
* Do not check for updates - the program never checks for updates in the background
* Of course, you can manually check for updates at any point using "Properties" - "Updates" - "Check for updates". To install the update you were notified about, go to "Properties" - "Updates" - "Install latest version".
* When installing an update, you will be prompted using UAC to allow elevation - always check that the update originates from matches what you expect; official updates are currently served via https://github.com/valinet/ExplorerPatcher.
* Learn more about how to configure updates on your system, including how to set a custom endpoint [here](https://github.com/valinet/ExplorerPatcher/wiki/Configure-updates)
* Implemented a proper right click menu for the Windows 11 taskbar - it displays the most common options, similar to previous Windows releases and the Windows 10 taskbar, including frequently accessed items like "Taskbar settings", "Task Manager" and "Show the desktop"
* System tray icons are now left intact when switching between the Windows 10 and Windows 11 taskbars, or when switching builds, reinstalling the application etc. Basically, now, once you set a certain layout for the system tray with the Windows 10 taskbar, it will always be remembered, instead of the annoying behavior where Windows was discarding your choices in order to accommodate the Windows 11 taskbar
#### Feature enhancements
* Hardcoded symbols are now based on file hashes, not build numbers
* Better organization for the settings in "Properties"
* Update toast notifications are displayed only as long as they are required. Subsequent notifications no longer have to wait for the previous ones to timeout, but rather they replace the previous ones (#346) (.2)
#### Fixes
* Mitigated an issue that prevented the Windows 11 taskbar from displaying properly under certain circumstances
* Fixed an issue that would crash the Windows 11 taskbar when it was enabled after positioning the Windows 10 taskbar on either side of the screen (left/right)
* Fixed a bug in "Windows 10 Window switcher" that may have lead to `explorer.exe` crashing when more than 20 windows are opened on the screen (probably the cause for a lot of crashes)
* Fixed numerous issues when injecting processes, including as shell extension; reliability improvements
* Adjusted the padding of the system tray hidden icons indicator so that it is now properly centered vertically when using the classic theme mitigations
* Fixed a memory leak in "Settings Manager"
* Removed verbose output from "Settings Manager"
* Corrected import from `dxgi.dll`
* Fixed typo in configuration UI (#346) (.1)
* Fixed typos and spelling in error message (#346) (.2)
* Fixed bug that prevented "Properties" from working when invoked from Quick Launch or other toolbars (#349) (.2)
* As you may have noticed, releases do not contain unpacked files anymore. Thus, for people looking for a quick way to get the unpacked files, the release notes now include a link to the artifacts generated during during the build process. The artifacts include the usual DLLs (including `dxgi.dll`), plus symbol files and all the helper executables generated during the build. (#351) (.2)
* Setup program version is synchronized with the version of the application (.2)
* Fixed a mismatch between the default value for the setting "Add shortcut to program settings in Win+X menu" displayed in the UI and actually used in the software (#352) (.2)
* Fixed an issue that prevented "Restore default settings" in the "Properties" UI from working (#374) (.3)
* Improved some wording in the Properties UI (#377) (.4)
* Added option to show separators between toolbars in the taskbar (#379) (.4)
* "Properties" is restarted when doing an install/update and closed when uninstalling the application (.5)
* "Properties" can open the last used section when starting (.5)
## 22000.318.36
Tested on build 22000.318.
#### Fixes
* Fixes an issue that prevented Explorer from starting up when Windows 10 taskbar was disabled and Windows 10 window switcher was enabled (#313) (.1)
* Lots of bug and issue fixes for shell extension failing to work under certain circumstances (#259)
## 22000.318.35
Tested on build 22000.318.
#### Feature enhancements
* Start menu position can now be changed without needing to restart File Explorer
#### Fixes
* Improved reliability of Start menu positioning when the monitor topology changes and at startup
* Start menu injection returns error codes from the remote process in the debug console
* Other Start menu quality of life improvements
## 22000.318.34
Tested on build 22000.318.
#### New features
* Added option to enable legacy list view ("SysListView32") in File Explorer (credit @toiletflusher, @anixx from WinClassic) (.1)
#### Feature enhancements
* Built-in support for build 22000.318
## 22000.282.33
Tested on build 22000.282.
#### New features
* Ability to choose language switcher flyout style (option available in the "Properties" - "System tray" section)
#### Fixes
* The key above the `Tab` key is now correctly identified for all keyboard layouts, so the per-application Windows 10 window switcher mode works correctly (#283)
## 22000.282.32
Tested on build 22000.282.
#### New features
* Windows 10 window switcher features new configuration options:
* Always show switcher on primary monitor
* Show windows only from current monitor
* Theme selector: Mica, Acrylic and None
* Corner preference: Rounded, Rounded small, Not rounded
* More options for row height
* [Alt]+[\`] shows the switcher only for windows of the foreground application
* `[Enter]` switches to selected window (same as `[Space]`) (#240) (.1)
* Navigation using arrow keys (#240) (.1)
* Ability to choose behavior for Cortana button: hidden, shown and opens Cortana, shown and opens Widgets (#255) (.3)
* Builds are now automatic, generated as soon as new content is pushed to the repository and compiled on GitHub's infrastructure (.6)
#### Feature enhancements
* Clock context menu options "Adjust date/time" and "Customize notification icons" open in Control Panel instead of Settings
#### Fixes
* Taskbar context menu not displaying properly when using classic theme mitigations should now be fixed
* Reliability improvements, correct injection, avoid double patching
* All windows should now be properly detected and included in the Windows 10 window switcher
* Performance enhancements for Windows 10 window switcher: layouts are now precomputed when a window change occurs, so it should be very fast to open and consistent, no matter the current load; also, fast switching does not trigger the window, as it should
* "Show Cortana button" taskbar menu entry now works again (#252) (.2)
* Fixes a bug that prevented correct opening of some applications (like `powershell`) when EP was registered as shell extension (#256) (.4) - PLEASE NOTE THAT RUNNING AS SHELL EXTENSION IS STILL EXPERIMENTAL, UNSUPPORTED, AND ONLY RECOMMENDED FOR SPECIFIC USE CASES THAT YOU SHOULD KNOW ABOUT ALREADY; otherwise, just dropping the DLL in `C:\Windows` is enough
* Windows 10 window switcher switcher now correctly displays UWP apps immediately after launch (#266) (.5)
* Selection and highlight rectangle are now correctly drawn when using light theme on Windows 10 window switcher (.5)
* Keyboard selection (left, right, up, down, space, Return) also works when window switcher is shown by holding down the `ALT` key (#263) (.7)
## 22000.282.31
Tested on build: 22000.282.
#### New features
* Cortana button now opens the Widgets panel
* Ability to choose what happens when clicking the Network icon in the system tray
* Possibility to use the legacy clock flyout
* Possibility to use the legacy volume flyout
* Fixes to fully support the classic theme, with a functional taskbar, system tray, Explorer windows, working context menus; read more about this feature [here](https://github.com/valinet/ExplorerPatcher/discussions/101)
* Choose type of flyout for clock (.1)
* Compatibility with build 22000.282 (.2)
#### Feature enhancements
* Reorganized settings in the GUI
* Added option not to have an accelerator for the `Properties` menu entry in `Win`+`X` (#162)
* The "Adjust date/time" and "Customize notification icons" links in the clock context menu now open the more versatile Control Panel applets (.4)
* The console can now be disabled and then dismissed without causing the Explorer process to restart (.4)
* Implemented a new exported function which restarts File Explorer cleanly, reloading your folder windows: `rundll32 C:\Windows\dxgi.dll,ZZRestartExplorer` (.4)
#### Fixes
* Fixed an issue where the Windows 10 window switcher failed to display some windows (#161)
* Fixed an issue that prevented Start from opening again until Explorer was restarted after opening File Explorer via the Start menu Explorer icon (#145)
* Fixed patching in libvalinet
* Fixed GUI launch path; GUI now launches in an external process, survives Explorer restarts
* Addresses an issue that prevented correct operation under certain circumstances and that could lead to a rare bug where Explorer would crash after a Control Panel window was opened (also related to Control Panel windows not always respecting preferences like "disable navigation bar") (.3)
* Fixed a bug that caused the cursor to move when invoking `Win`+`X` (.4)
* Fixed a bug that caused incorrect positioning of `Win`+`X` when the main taskbar was present on a monitor different than the primary one (.4)
* The Start menu now automatically reloads in the background only when its settings change, instead of when any settings change (.4)
* Improved the reliability of the "Restart File Explorer" link in the Properties GUI (.4)
* Improved the detection of scenarios when the patcher should inject and apply the full set of patches to File Explorer (.4)
* Other bug fixes (.4)
#### Experimental
**PLEASE NOTE THAT RUNNING AS SHELL EXTENSION IS STILL EXPERIMENTAL, UNSUPPORTED, AND ONLY RECOMMENDED FOR SPECIFIC USE CASES THAT YOU SHOULD KNOW ABOUT ALREADY. IT IS NOT REQUIRED FOR OBTAINING ANY OF THE CORE FUNCTIONALITY, IT IS AVAILABLE ONLY FOR SOME ADVANCED USE CASES AND IS STILL A BIGGER WORK-IN-PROGRESS THAN THE MAIN PROJECT.**
The application can now be registered as a shell extension. This will enable the Explorer related functionality to work in Open/Save file dialogs as well. This is especially useful for users wanting proper support of the classic theme in Windows 11.
Please note that this is experimental. For the moment, the preferred installation method remains dropping the DLL in `C:\Windows`. For interested users, I invite you to test this functionality and report your findings in the discussions board.
To enable this, put the 2 DLLs (`ExplorerPatcher.amd64.dll` and `ExplorerPatcher.IA-32.dll`) in a secure folder (for example, `C:\Program Files\ExplorerPatcher`). Then, in that folder, run this command: `regsvr32 ExplorerPatcher.amd64.dll`. After elevation, a message will display informing you of the operation outcome, and if it went well, Explorer will restart displaying the old taskbar.
To uninstall, run `regsvr32 /u ExplorerPatcher.amd64.dll` in the same folder and preferably reboot the computer to unload the DLLs from all applications. Then, the files can be deleted just fine.
## 22000.258.30.6
Tested on build: 22000.258.
* Reworked settings framework
* More settings are available to customize
* Most setting changes take effect immediatly
* Implemented Windows 10 window switcher (Alt+Tab)
* GUI
* Revamped GUI, now the interface is split by categories and is displayed on two columns
* Regular items do not display a "+" sign anymore at the beginning of their label
* The current choice is ticked in the drop down menu
* Regions are now calculated correctly
* Solved memory leaks
* Option to disable immersive context menus (#96)
* General bug fixes
* Window switcher is now disabled by default (.1)
* Corrected typo in settings (.2)
* Added option to set tray clock to display seconds (.3)
* Added option to set the right click menu of the network system tray icon to launch either (.3):
* Network settings in the Settings app
* Network and Sharing Center in the Control Panel
* Network Connections in the Control Panel
* Added preliminary support for advanced mitigations for correct rendering when using the classic theme (.3)
* GUI optionally loads UI file from DLL folder (helps for easy debugging) (.4)
* Small bug fix for symbols download (.5)
* Better method for closing windows in window switcher (.6)
## 22000.258.26.3
Tested on build: 22000.258.
* Compatibility with OS build 22000.258
* Option to open Network and Sharing Center instead if Network settings when right clicking the network icon in the system tray
* Centered network and sound right click menus and made them toggle on right click
* Reliability enhancements for Start menu positioning (#78) (.1)
* Fixes #85 (.2)
* Fixes #90 (added option to change taskbar icon size) (.3)
## 22000.194.0.25
Tested on build: 22000.194.
* Start menu is hooked from File Explorer; please remove the DLL from `C:\Windows\SystemApps\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy` when using this new version
* `Win`+`X` now opens even when the taskbar is set to autohide (fixes #63)
* `Win`+`C` now opens even when the taskbar is set to autohide (fixes #63)
* Bluetooth and Safe to Remove menus toggle their visibility when clicked
* Bluetooth and Safe to Remove menus are centered relative to the icon they are invoked from
* WiFi list now correctly toggles when clicking the Network icon in the taskbar
* The settings GUI now supports dark mode and switches correctly when the system theme changes
* The settings GUI draws correctly when themes are disabled (classic theme compatibility)
* Removed interoperability with StartAllBack or StartIsBack
## 22000.194.0.23
Tested on build: 22000.194.
* Fixed a bug that showed`Win`+`X` on the wrong monitor in certain scenarios
* `Win`+`X` shows in Windows 11 fashion (centered, above the Start button) if using a centered taskbar with centered Start button as well (using a program like [TaskbarX](https://github.com/valinet/TaskbarX))
* Fixed the bug that prevented the application from loading in`StartMenuExperienceHost.exe` (thanks to @BraINstinct0 for the report)
* Fixed padding and element sizes in GUI so it better fits on smaller screens (thanks to @Gaurav-Original-ClassicShellTester for the report)
* GUI shows application title when run outside of File Explorer
* GUI stays on screen and just reloads the settings when restoring defaults (instead of closing)
* Keyboard (tab) support for GUI: `Esc` to close the window, `Tab` to select the next option, `Shift`+`Tab` to select the previous option, `Space` to toggle (or activate) the option
* Possibility of running the GUI standalone; run this command: `rundll32.exe C:\Windows\dxgi.dll,ZZGUI`; this has the advantage that it stays on the screen after restarting File Explorer
## 22000.194.0.22
Tested on build: 22000.194.
* When the taskbar is located at the bottom of the screen, opening the power user menu (`Win`+`X`) now automatically highlights the "Desktop" entry in the list. Also, the menu items can be activated either with left click, either with right click. Thus, this enables a behavior where you can double click the Start button with the right mouse button in order to quickly show the desktop (thanks to @Gaurav-Original-ClassicShellTester for the suggestion)
## 22000.194.0.21
Tested on build: 22000.194.
* Implemented configuration GUI; to access it, right click the Start button (or press `Win`+`X`) and choose "Properties" (thanks to @BraINstinct0 for the suggestion)
## 22000.194.0.20
Tested on build: 22000.194.
* Huge code refactoring, improved memory patching
* Updated README with better description of the software and how to use it
* Drastically reduced the number of symbols required (around 40MB to download, instead of over 400MB previously)
* Improved Start menu and search positioning, now it is not necessary to have the DLL in `C:\Windows\SystemApps\MicrosoftWindows.Client.CBS_cw5n1h2txyewy`, please remove it from there.
* Skin "Bluetooth" pop-up menu
* Option to hide the search bar in File Explorer completely
* Option to disable the control center button in the taskbar
* Removed the option to disable the modern search box in File Explorer. Instead, you now run a command which disables it globally on your user account (works in "Open" dialogs as well); read [here](https://github.com/valinet/ExplorerPatcher#disable-the-modern-search-box-in-File-Explorer)
* Removed the option to disable the immersive (new) context menu in File Explorer. Instead, you now run a command which disables it globally on your user account; read [here](https://github.com/valinet/ExplorerPatcher#disable-the-immersive-context-menu)
* Ability to disable command bar is described [here](https://github.com/valinet/ExplorerPatcher#disable-the-command-bar-in-File-Explorer)
* Option to apply Mica effect on File Explorer windows (requires `StartIsBack64.dll`), read [here](https://github.com/valinet/ExplorerPatcher#configuration)
* Option to skin system tray icons to match Windows 11 style (requires `StartisBack64.dll`), read [here](https://github.com/valinet/ExplorerPatcher#configuration)
## 22449.1000.0.18
Tested on the following builds: 22449.1000, 22000.176, 22000.1.
New in this version:
* Ability to disable the "modern search box" in File Explorer and uses the classic functional search from early Windows 10 versions or Windows 7/8. To disable this and still use the new search, set `General\AllowModernSearchBox = 1` in `settings.ini`
Fixes:
* Much improved algorithm for enabling the classic taskbar after symbols have downloaded on newer builds
* Restored compatibility with RTM build of Windows 11 (22000.1)
* Fixes the "modern search box" not working correctly when the DLL is used in `C:\Windows\SystemApps\MicrosoftWindows.Client.CBS_cw5n1h2txyewy`
## 22449.1000.0.16
New in this version:
- Compatibility with OS build 22449.1000.0.16.
- Fixed bug that prevented console from showing when the `AllocConsole` setting was specified in `settings.ini`
## 22000.168.0.14
* Start menu and search now respect the taskbar alignment setting
* Ability to customize the number of "Most used" apps in the Start menu apps list
* Symbols are automatically downloaded for Start menu and search; to have the application work with those two, place the DLL in the following additional 2 locations:
* `C:\Windows\SystemApps\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy`
* `C:\Windows\SystemApps\MicrosoftWindows.Client.CBS_cw5n1h2txyewy`
## 22000.168.0.12
* Support for showing the app list by default in the Windows 11 Start menu; to enable this feature, copy the DLL to `C:\Windows\SystemApps\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy` and restart Explorer (works only on 22000.168 for the moment, will be generally available after more testing is performed).
* `Win+X` is now shown correctly on multi monitor setups
* Other bug fixes
## 22000.168.0.11
Fixes [#3](https://github.com/valinet/ExplorerPatcher/issues/3) and [#10](https://github.com/valinet/ExplorerPatcher/issues/10).
## 22000.168.0.10
Improved Explorer hooking.
The application now comes in the form of a single DLL file (`dxgi.dll`) which you have to place in `%windir%` (usually `C:\Windows`). Restart Explorer and that's it.
Please make sure to uninstall the old version before using this new one.
## 22000.168.0.9
Implements [#6](https://github.com/valinet/ExplorerPatcher/issues/6) (option to revert to classic context menu). To disable this feature, add this to the settings.ini file:
```
[General]
AllowImmersiveContextMenus=1
```
## 22000.168.0.8
The popup menu for "Safe to Remove Hardware" is now skinned in the same style as the Win+X menu and the taskbar context menus, in order to improve UI consistency.
## 22000.168.0.7
Enables compatibility with [ArchiveMenu](https://github.com/valinet/archivemenu).
## 22000.168.0.6
Fixes [#5](https://github.com/valinet/ExplorerPatcher/issues/5) (removes the delay at logon on newer builds like 22000.168; the bug is similar to the effect introduced by `UndockingDisabled` on these newer builds).
## 22000.1.0.5
Offsets are now determined at runtime
The application was tested on builds 22000.1 and 22000.168.
- Library downloads and parses symbols in order to determine function hooking offsets at runtime and saves the data in a "settings.ini" file located in the application folder for future use; the file is invalidated when a new OS build is detected
- The main executable attempts to determine the location where a jump has to be patched out so that Explorer remains on the 'show old taskbar' code path; it will systematically patch each jz/jnz instruction and will check whether Explorer still runs fine, and, if it does so and does not crash, whether the old taskbar got actually shown; once the offset is determined, it is saved in the "settings.ini" file for future use
- Please have an unmetered active working Internet connection when running for the first time
- Messages from the patcher (i.e. install/uninstall successful message, symbol downloading message) will now display in a toast (Windows 10 notification) if possible; when Explorer is not running, it falls back to using standard MessageBox'es
- Disabled the pre/post build command that restarted sihost.exe in Debug builds
## 22000.1.0.4
New in this release
- Win+X combination is now handled and opens the power user menu
Of note from previous releases:
- Start menu is now displayed on monitor containing the cursor when invoked with the Windows key if the appropriate configuration is made into the registry (enables a functionality which was previously available in Windows 8.1). To activate this, follow this tutorial: https://www.tenforums.com/tutorials/5943-start-menu-open-main-last-display-windows-10-a.html
- The power user menu (Win+X) is now skinned using the system theme, as it was in Windows 10
## 22000.1.0.3
Start menu is now displayed on monitor containing the cursor when invoked with the Windows key if the appropriate configuration is made into the registry (enables a functionality which was previously available in Windows 8.1).
To activate this, follow this tutorial: https://www.tenforums.com/tutorials/5943-start-menu-open-main-last-display-windows-10-a.html
## 22000.1.0.2
Fixes [#1](https://github.com/valinet/ExplorerPatcher/issues/1) (the menu is now skinned using the system theme, as it was in Windows 10).
## 22000.1.0.1
Added functionality to bring back the power user menu (Win+X).
## 22000.1.0.0
Initial version of the application. Only x64 builds.
================================================
FILE: ExplorerPatcher/ArchiveMenu.c
================================================
#include "ArchiveMenu.h"
DWORD ArchiveMenuThread(ArchiveMenuThreadParams* params)
{
Sleep(1000);
printf("Started \"Archive menu\" thread.\n");
HRESULT hr = CoInitialize(NULL);
if (FAILED(hr))
{
return 0;
}
WNDCLASS wc = { 0 };
wc.style = CS_DBLCLKS;
wc.lpfnWndProc = params->wndProc;
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.hInstance = GetModuleHandle(NULL);
wc.lpszClassName = L"ArchiveMenuWindowExplorer";
wc.hCursor = LoadCursorW(NULL, IDC_ARROW);
RegisterClass(&wc);
*(params->hWnd) = params->CreateWindowInBand(
0,
L"ArchiveMenuWindowExplorer",
0,
WS_POPUP,
0,
0,
0,
0,
0,
0,
GetModuleHandle(NULL),
NULL,
7
);
if (!*(params->hWnd))
{
return 0;
}
ITaskbarList* pTaskList = NULL;
hr = CoCreateInstance(
&__uuidof_TaskbarList,
NULL,
CLSCTX_ALL,
&__uuidof_ITaskbarList,
(void**)(&pTaskList)
);
if (FAILED(hr))
{
return 0;
}
hr = pTaskList->lpVtbl->HrInit(pTaskList);
if (FAILED(hr))
{
return 0;
}
ShowWindow(*(params->hWnd), SW_SHOW);
hr = pTaskList->lpVtbl->DeleteTab(pTaskList, *(params->hWnd));
if (FAILED(hr))
{
return 0;
}
hr = pTaskList->lpVtbl->Release(pTaskList);
if (FAILED(hr))
{
return 0;
}
MSG msg = { 0 };
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
printf("Ended \"Archive menu\" thread.\n");
}
LRESULT CALLBACK ArchiveMenuWndProc(
_In_ HWND hWnd,
_In_ UINT uMsg,
_In_ WPARAM wParam,
_In_ LPARAM lParam,
HRESULT(*ImmersiveContextMenuHelper_ApplyOwnerDrawToMenuFunc)(HMENU hMenu, HWND hWnd, POINT* pPt, unsigned int options, void* data),
void(*ImmersiveContextMenuHelper_RemoveOwnerDrawFromMenuFunc)(HMENU hMenu, HWND hWnd)
)
{
LRESULT result;
if (uMsg == WM_COPYDATA)
{
COPYDATASTRUCT* st = lParam;
HWND srcWnd = wParam;
POINT pt;
GetCursorPos(&pt);
HWND prevhWnd = GetForegroundWindow();
SetForegroundWindow(hWnd);
HMENU hMenu = CreatePopupMenu();
TCHAR buffer[MAX_PATH + 100];
TCHAR filename[MAX_PATH];
ZeroMemory(filename, MAX_PATH * sizeof(TCHAR));
memcpy(filename, st->lpData, wcslen(st->lpData) * sizeof(TCHAR));
PathUnquoteSpacesW(filename);
PathRemoveExtensionW(filename);
PathStripPathW(filename);
wsprintf(buffer, EXTRACT_NAME, filename);
InsertMenu(hMenu, 0, MF_BYPOSITION | MF_STRING, 1, buffer);
InsertMenu(hMenu, 0, MF_BYPOSITION | MF_STRING, 2, OPEN_NAME);
INT64* unknown_array = calloc(4, sizeof(INT64));
ImmersiveContextMenuHelper_ApplyOwnerDrawToMenuFunc(
hMenu,
hWnd,
&(pt),
0xc,
unknown_array
);
BOOL res = TrackPopupMenu(
hMenu,
TPM_RETURNCMD,
pt.x - 15,
pt.y - 15,
0,
hWnd,
0
);
ImmersiveContextMenuHelper_RemoveOwnerDrawFromMenuFunc(
hMenu,
hWnd
);
free(unknown_array);
SetForegroundWindow(prevhWnd);
if (res == 1 || res == 2)
{
ZeroMemory(buffer, (MAX_PATH + 100) * sizeof(TCHAR));
if (res == 2)
{
wsprintf(buffer, OPEN_CMD, st->lpData);
//wprintf(L"%s\n%s\n\n", st->lpData, buffer);
}
else if (res == 1)
{
TCHAR path[MAX_PATH + 1], path_orig[MAX_PATH + 1];
ZeroMemory(path, (MAX_PATH + 1) * sizeof(TCHAR));
ZeroMemory(path_orig, (MAX_PATH + 1) * sizeof(TCHAR));
memcpy(path, st->lpData, wcslen(st->lpData) * sizeof(TCHAR));
memcpy(path_orig, st->lpData, wcslen(st->lpData) * sizeof(TCHAR));
PathUnquoteSpacesW(path_orig);
PathRemoveExtensionW(path_orig);
wsprintf(buffer, EXTRACT_CMD, path_orig, path);
//wprintf(L"%s\n%s\n\n", st->lpData, buffer);
}
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
BOOL b = CreateProcess(
NULL,
buffer,
NULL,
NULL,
TRUE,
CREATE_UNICODE_ENVIRONMENT,
NULL,
NULL,
&si,
&pi
);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
DestroyMenu(hMenu);
ShowWindow(hWnd, SW_HIDE);
return 0;
}
else if (uMsg == WM_CLOSE)
{
return 0;
}
return 1;
}
================================================
FILE: ExplorerPatcher/ArchiveMenu.h
================================================
#ifndef _H_ARCHIVEMENU_H_
#define _H_ARCHIVEMENU_H_
#include <initguid.h>
#include <Windows.h>
#include <Shlobj_core.h>
#ifdef __cplusplus
extern "C" {
#endif
#define OPEN_NAME L"&Open archive"
#define EXTRACT_NAME L"&Extract to \"%s\\\""
#define OPEN_CMD L"\"C:\\Program Files\\7-Zip\\7zFM.exe\" %s"
#define EXTRACT_CMD L"\"C:\\Program Files\\7-Zip\\7zG.exe\" x -o\"%s\" -spe %s"
DEFINE_GUID(__uuidof_TaskbarList,
0x56FDF344,
0xFD6D, 0x11d0, 0x95, 0x8A,
0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90
);
DEFINE_GUID(__uuidof_ITaskbarList,
0x56FDF342,
0xFD6D, 0x11d0, 0x95, 0x8A,
0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90
);
typedef struct _ArchiveMenuThreadParams
{
HWND* hWnd;
WNDPROC wndProc;
HWND(WINAPI* CreateWindowInBand)(
_In_ DWORD dwExStyle,
_In_opt_ LPCWSTR lpClassName,
_In_opt_ LPCWSTR lpWindowName,
_In_ DWORD dwStyle,
_In_ int X,
_In_ int Y,
_In_ int nWidth,
_In_ int nHeight,
_In_opt_ HWND hWndParent,
_In_opt_ HMENU hMenu,
_In_opt_ HINSTANCE hInstance,
_In_opt_ LPVOID lpParam,
DWORD band
);
} ArchiveMenuThreadParams;
DWORD ArchiveMenuThread(ArchiveMenuThreadParams* params);
LRESULT CALLBACK ArchiveMenuWndProc(
_In_ HWND hWnd,
_In_ UINT uMsg,
_In_ WPARAM wParam,
_In_ LPARAM lParam,
HRESULT(*ImmersiveContextMenuHelper_ApplyOwnerDrawToMenuFunc)(HMENU hMenu, HWND hWnd, POINT* pPt, unsigned int options, void* data),
void(*ImmersiveContextMenuHelper_RemoveOwnerDrawFromMenuFunc)(HMENU hMenu, HWND hWnd)
);
#ifdef __cplusplus
}
#endif
#endif
================================================
FILE: ExplorerPatcher/ExplorerPatcher.vcxproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64EC">
<Configuration>Debug</Configuration>
<Platform>ARM64EC</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64EC">
<Configuration>Release</Configuration>
<Platform>ARM64EC</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>16.0</VCProjectVersion>
<ProjectGuid>{DB3E4319-2969-42B6-B7E8-BB57AA8C9FA9}</ProjectGuid>
<RootNamespace>CenterTitlebarTextLibrary</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
<ProjectName>ExplorerPatcher</ProjectName>
<WithArm64XBinaries>false</WithArm64XBinaries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
<TargetName>ExplorerPatcher.IA-32</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
<TargetName>ExplorerPatcher.IA-32</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
<TargetName>ExplorerPatcher.amd64</TargetName>
<WithMainPatcher>true</WithMainPatcher>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
<TargetName>ExplorerPatcher.amd64</TargetName>
<WithMainPatcher>true</WithMainPatcher>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
<TargetName>ExplorerPatcher.arm64</TargetName>
<WithMainPatcher>true</WithMainPatcher>
<BuildAsX>$(WithArm64XBinaries)</BuildAsX>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
<TargetName>ExplorerPatcher.arm64</TargetName>
<WithMainPatcher>true</WithMainPatcher>
<BuildAsX>$(WithArm64XBinaries)</BuildAsX>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64EC'">
<LinkIncremental>true</LinkIncremental>
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
<TargetName>ExplorerPatcher.arm64ec</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64EC'">
<LinkIncremental>false</LinkIncremental>
<OutDir>$(SolutionDir)\build\$(Configuration)\$(Platform)\</OutDir>
<TargetName>ExplorerPatcher.arm64ec</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<AdditionalIncludeDirectories>inc;$(SolutionDir)libs\libvalinet;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<LanguageStandard>stdcpp20</LanguageStandard>
<UseFullPaths>false</UseFullPaths>
<RuntimeTypeInfo>false</RuntimeTypeInfo>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<DelayLoadDLLs>Winmm.dll</DelayLoadDLLs>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
<ClCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<ForcedIncludeFiles>$(SolutionDir)debug.h</ForcedIncludeFiles>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
<ClCompile>
<Optimization>MinSpace</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>NDEBUG;WINRT_NO_SOURCE_LOCATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
<ClCompile>
<CallingConvention>StdCall</CallingConvention>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
<ClCompile>
<PreprocessorDefinitions>WITH_MAIN_PATCHER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<CallingConvention>Cdecl</CallingConvention>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Platform)'=='ARM64'">
<ClCompile>
<PreprocessorDefinitions>WITH_MAIN_PATCHER;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<CallingConvention>Cdecl</CallingConvention>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Platform)'=='ARM64EC'">
<ClCompile>
<CallingConvention>Cdecl</CallingConvention>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_error.c">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_IconPainter.c">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_RegistryMonitor.c">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_tshwnd.c">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_vector.c">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_window.c">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_WindowHelpers.c">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_WindowSwitcher.c">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_WindowSwitcherLayout.c">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_WindowSwitcherLayoutWindow.c">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="ArchiveMenu.c">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="dllmain.c" />
<ClCompile Include="dxgi_imp.cpp">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="fmemopen.c" />
<ClCompile Include="getline.c" />
<ClCompile Include="HideExplorerSearchBar.c" />
<ClCompile Include="ImmersiveFlyouts.c">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="InputSwitch.cpp">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="Localization.cpp" />
<ClCompile Include="lvt.c">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="SettingsMonitor.c" />
<ClCompile Include="ShellExperienceHostPatches.cpp">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="StartMenu.c">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="StartMenuSettings.cpp">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="StartupSound.cpp" />
<ClCompile Include="symbols.c">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="Taskbar10.cpp">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="TaskbarCenter.cpp">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="TwinUIPatches.cpp">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="updates.cpp">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="utility.c">
<ExcludedFromBuild Condition="'$(WithMainPatcher)'!='true'">true</ExcludedFromBuild>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_def.h" />
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_error.h" />
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_IconPainter.h" />
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_RegistryMonitor.h" />
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_tshwnd.h" />
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_utility.h" />
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_vector.h" />
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_window.h" />
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_WindowHelpers.h" />
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_WindowSwitcher.h" />
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_WindowSwitcherLayout.h" />
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_WindowSwitcherLayoutWindow.h" />
<ClInclude Include="..\version.h" />
<ClInclude Include="ArchiveMenu.h" />
<ClInclude Include="def.h" />
<ClInclude Include="dxgi_imp.h" />
<ClInclude Include="fmemopen.h" />
<ClInclude Include="getline.h" />
<ClInclude Include="HideExplorerSearchBar.h" />
<ClInclude Include="hooking.h" />
<ClInclude Include="ep_private.h" />
<ClInclude Include="ImmersiveColor.h" />
<ClInclude Include="ImmersiveFlyouts.h" />
<ClInclude Include="InputSwitch.h" />
<ClInclude Include="Localization.h" />
<ClInclude Include="lvt.h" />
<ClInclude Include="osutility.h" />
<ClInclude Include="queryversion.h" />
<ClInclude Include="resource.h" />
<ClInclude Include="SettingsMonitor.h" />
<ClInclude Include="StartMenu.h" />
<ClInclude Include="StartupSound.h" />
<ClInclude Include="symbols.h" />
<ClInclude Include="TaskbarCenter.h" />
<ClInclude Include="updates.h" />
<ClInclude Include="utility.h" />
<ClInclude Include="inc\ClassicWinRtForwardDecl.h" />
<ClInclude Include="inc\ContainerPolicies.h" />
<ClInclude Include="inc\memsafe.h" />
<ClInclude Include="inc\NativeString.h" />
<ClInclude Include="inc\PopNoWilResultMacrosLogging.h" />
<ClInclude Include="inc\PushNoWilResultMacrosLogging.h" />
<ClInclude Include="inc\RefCountedObject.h" />
<ClInclude Include="inc\ResultUtils.h" />
<ClInclude Include="inc\SimpleArray.h" />
<ClInclude Include="inc\SimpleBoxer.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="ExplorerPatcher.rc" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="..\packages\Microsoft.Windows.ImplementationLibrary.1.0.250325.1\build\native\Microsoft.Windows.ImplementationLibrary.targets" Condition="Exists('..\packages\Microsoft.Windows.ImplementationLibrary.1.0.250325.1\build\native\Microsoft.Windows.ImplementationLibrary.targets')" />
<Import Project="..\packages\KNSoft.SlimDetours.1.1.4-beta\build\KNSoft.SlimDetours.targets" Condition="Exists('..\packages\KNSoft.SlimDetours.1.1.4-beta\build\KNSoft.SlimDetours.targets')" />
</ImportGroup>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>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}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Microsoft.Windows.ImplementationLibrary.1.0.250325.1\build\native\Microsoft.Windows.ImplementationLibrary.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Windows.ImplementationLibrary.1.0.250325.1\build\native\Microsoft.Windows.ImplementationLibrary.targets'))" />
<Error Condition="!Exists('..\packages\KNSoft.SlimDetours.1.1.4-beta\build\KNSoft.SlimDetours.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\KNSoft.SlimDetours.1.1.4-beta\build\KNSoft.SlimDetours.targets'))" />
</Target>
</Project>
================================================
FILE: ExplorerPatcher/ExplorerPatcher.vcxproj.filters
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;c++;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="Header Files\sws">
<UniqueIdentifier>{bd0d631a-7170-49ec-94ef-70c77ec3a4ab}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\sws">
<UniqueIdentifier>{4caf96b4-d282-4cad-a9c6-4d8d1374e5a6}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\internal">
<UniqueIdentifier>{2b202c30-7683-42d3-afc3-ddd3c38e1c8d}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\internal">
<UniqueIdentifier>{08cd1a6f-9a8f-45ef-a50b-142a1725c106}</UniqueIdentifier>
</Filter>
<Filter Include="Settings">
<UniqueIdentifier>{190d08ad-4a1d-4b58-81a1-6403eeb3cd2a}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="resource.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="hooking.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ArchiveMenu.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="StartupSound.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="dxgi_imp.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="SettingsMonitor.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="HideExplorerSearchBar.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="StartMenu.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="symbols.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="utility.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="TaskbarCenter.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="fmemopen.h">
<Filter>Header Files\internal</Filter>
</ClInclude>
<ClInclude Include="getline.h">
<Filter>Header Files\internal</Filter>
</ClInclude>
<ClInclude Include="ep_private.h">
<Filter>Header Files\internal</Filter>
</ClInclude>
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_def.h">
<Filter>Header Files\sws</Filter>
</ClInclude>
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_error.h">
<Filter>Header Files\sws</Filter>
</ClInclude>
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_vector.h">
<Filter>Header Files\sws</Filter>
</ClInclude>
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_WindowHelpers.h">
<Filter>Header Files\sws</Filter>
</ClInclude>
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_WindowSwitcher.h">
<Filter>Header Files\sws</Filter>
</ClInclude>
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_WindowSwitcherLayout.h">
<Filter>Header Files\sws</Filter>
</ClInclude>
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_WindowSwitcherLayoutWindow.h">
<Filter>Header Files\sws</Filter>
</ClInclude>
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_RegistryMonitor.h">
<Filter>Header Files\sws</Filter>
</ClInclude>
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_window.h">
<Filter>Header Files\sws</Filter>
</ClInclude>
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_utility.h">
<Filter>Header Files\sws</Filter>
</ClInclude>
<ClInclude Include="queryversion.h">
<Filter>Header Files\internal</Filter>
</ClInclude>
<ClInclude Include="updates.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\version.h">
<Filter>Header Files\internal</Filter>
</ClInclude>
<ClInclude Include="ImmersiveFlyouts.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_tshwnd.h">
<Filter>Header Files\sws</Filter>
</ClInclude>
<ClInclude Include="..\libs\sws\SimpleWindowSwitcher\sws_IconPainter.h">
<Filter>Header Files\sws</Filter>
</ClInclude>
<ClInclude Include="def.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="lvt.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="osutility.h">
<Filter>Header Files\internal</Filter>
</ClInclude>
<ClInclude Include="ImmersiveColor.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="InputSwitch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Localization.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="inc\ContainerPolicies.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="inc\memsafe.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="inc\NativeString.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="inc\RefCountedObject.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="inc\ResultUtils.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="inc\SimpleArray.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="ExplorerPatcher.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<ClCompile Include="dllmain.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ArchiveMenu.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="SettingsMonitor.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="HideExplorerSearchBar.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="StartMenu.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="StartMenuSettings.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="symbols.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="utility.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="fmemopen.c">
<Filter>Source Files\internal</Filter>
</ClCompile>
<ClCompile Include="getline.c">
<Filter>Source Files\internal</Filter>
</ClCompile>
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_error.c">
<Filter>Source Files\sws</Filter>
</ClCompile>
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_vector.c">
<Filter>Source Files\sws</Filter>
</ClCompile>
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_WindowHelpers.c">
<Filter>Source Files\sws</Filter>
</ClCompile>
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_WindowSwitcher.c">
<Filter>Source Files\sws</Filter>
</ClCompile>
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_WindowSwitcherLayout.c">
<Filter>Source Files\sws</Filter>
</ClCompile>
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_WindowSwitcherLayoutWindow.c">
<Filter>Source Files\sws</Filter>
</ClCompile>
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_RegistryMonitor.c">
<Filter>Source Files\sws</Filter>
</ClCompile>
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_window.c">
<Filter>Source Files\sws</Filter>
</ClCompile>
<ClCompile Include="ImmersiveFlyouts.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_IconPainter.c">
<Filter>Source Files\sws</Filter>
</ClCompile>
<ClCompile Include="..\libs\sws\SimpleWindowSwitcher\sws_tshwnd.c">
<Filter>Source Files\sws</Filter>
</ClCompile>
<ClCompile Include="lvt.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="InputSwitch.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Localization.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="StartupSound.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Taskbar10.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="TaskbarCenter.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="TwinUIPatches.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="updates.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Natvis Include="$(MSBuildThisFileDirectory)..\..\natvis\wil.natvis" />
</ItemGroup>
</Project>
================================================
FILE: ExplorerPatcher/HideExplorerSearchBar.c
================================================
#include "HideExplorerSearchBar.h"
HWND FindChildWindow(
HWND hwndParent,
wchar_t* lpszClass
)
{
HWND hwnd = FindWindowEx(
hwndParent,
NULL,
lpszClass,
NULL
);
if (hwnd == NULL)
{
HWND hwndChild = FindWindowEx(
hwndParent,
NULL,
NULL,
NULL
);
while (hwndChild != NULL && hwnd == NULL)
{
hwnd = FindChildWindow(
hwndChild,
lpszClass
);
if (hwnd == NULL)
{
hwndChild = FindWindowEx(
hwndParent,
hwndChild,
NULL,
NULL
);
}
}
}
return hwnd;
}
VOID HideExplorerSearchBar(HWND hWnd)
{
HWND band = NULL, rebar = NULL;
band = FindChildWindow(
hWnd,
(wchar_t*)L"TravelBand"
);
if (!band)
{
return;
}
rebar = GetParent(band);
if (!rebar)
{
return;
}
int idx = 0;
idx = (int)SendMessage(
rebar,
RB_IDTOINDEX,
4,
0
);
if (idx >= 0)
{
SendMessage(
rebar,
RB_SHOWBAND,
idx,
FALSE
);
}
idx = (int)SendMessage(
rebar,
RB_IDTOINDEX,
5,
0
);
if (idx >= 0)
{
SendMessage(
rebar,
RB_SHOWBAND,
idx,
TRUE
);
}
RedrawWindow(
rebar,
NULL,
NULL,
RDW_UPDATENOW | RDW_ALLCHILDREN
);
}
LRESULT CALLBACK HideExplorerSearchBarSubClass(
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam,
UINT_PTR uIdSubclass,
DWORD_PTR dwRefData
)
{
if (uMsg == WM_SIZE || uMsg == WM_PARENTNOTIFY)
{
if (uMsg == WM_SIZE && IsWindows11Version22H2OrHigher()) HideExplorerSearchBar(hWnd);
else if (uMsg == WM_PARENTNOTIFY && (WORD)wParam == 1) HideExplorerSearchBar(hWnd);
}
else if (uMsg == WM_DESTROY)
{
RemoveWindowSubclass(hWnd, HideExplorerSearchBarSubClass, (UINT_PTR)HideExplorerSearchBarSubClass);
}
return DefSubclassProc(hWnd, uMsg, wParam, lParam);
}
================================================
FILE: ExplorerPatcher/HideExplorerSearchBar.h
================================================
#ifndef _H_HIDEEXPLORERSEARCHBAR_H_
#define _H_HIDEEXPLORERSEARCHBAR_H_
#include <Windows.h>
#include <commctrl.h>
#pragma comment(lib, "Comctl32.lib")
#include "osutility.h"
// https://stackoverflow.com/questions/30141592/how-do-i-find-a-handle-inside-a-control
HWND FindChildWindow(
HWND hwndParent,
wchar_t* lpszClass
);
// https://github.com/Open-Shell/Open-Shell-Menu/blob/master/Src/ClassicExplorer/ExplorerBHO.cpp
VOID HideExplorerSearchBar(HWND hWnd);
LRESULT CALLBACK HideExplorerSearchBarSubClass(
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam,
UINT_PTR uIdSubclass,
DWORD_PTR dwRefData
);
#endif
================================================
FILE: ExplorerPatcher/ImmersiveColor.h
================================================
#pragma once
#include <Windows.h>
#include "utility.h"
class CImmersiveColor
{
public:
static DWORD GetColor(IMMERSIVE_COLOR_TYPE colorType)
{
IMMERSIVE_COLOR_PREFERENCE icp;
icp.crStartColor = 0;
icp.crAccentColor = 0;
GetUserColorPreference(&icp, false/*, true*/);
return GetColorFromPreference(&icp, colorType, false, IHCM_REFRESH);
}
static bool IsColorSchemeChangeMessage(UINT uMsg, LPARAM lParam)
{
bool bRet = false;
if (uMsg == WM_SETTINGCHANGE && lParam && CompareStringOrdinal((WCHAR*)lParam, -1, L"ImmersiveColorSet", -1, TRUE) == CSTR_EQUAL)
{
RefreshImmersiveColorPolicyState();
bRet = true;
}
GetIsImmersiveColorUsingHighContrast(IHCM_REFRESH);
return bRet;
}
};
class CImmersiveColorImpl
{
public:
static HRESULT GetColorPreferenceImpl(IMMERSIVE_COLOR_PREFERENCE* pcpPreference, bool fForceReload, bool fUpdateCached)
{
return GetUserColorPreference(pcpPreference, fForceReload);
}
};
================================================
FILE: ExplorerPatcher/ImmersiveFlyouts.c
================================================
#include "ImmersiveFlyouts.h"
void InvokeActionCenter()
{
HRESULT hr = S_OK;
IUnknown* pImmersiveShell = NULL;
hr = CoCreateInstance(
&CLSID_ImmersiveShell,
NULL,
CLSCTX_NO_CODE_DOWNLOAD | CLSCTX_LOCAL_SERVER,
&IID_IServiceProvider,
&pImmersiveShell
);
if (SUCCEEDED(hr))
{
IShellExperienceManagerFactory* pShellExperienceManagerFactory = NULL;
IUnknown_QueryService(
pImmersiveShell,
&CLSID_ShellExperienceManagerFactory,
&CLSID_ShellExperienceManagerFactory,
&pShellExperienceManagerFactory
);
if (pShellExperienceManagerFactory)
{
HSTRING_HEADER hstringHeader;
HSTRING hstring = NULL;
hr = WindowsCreateStringReference(
L"Windows.Internal.ShellExperience.ControlCenter",
(UINT32)(sizeof(L"Windows.Internal.ShellExperience.ControlCenter") / sizeof(wchar_t) - 1),
&hstringHeader,
&hstring
);
if (hstring)
{
IUnknown* pIntf = NULL;
pShellExperienceManagerFactory->lpVtbl->GetExperienceManager(
pShellExperienceManagerFactory,
hstring,
&pIntf
);
if (pIntf)
{
IActionCenterOrControlCenterExperienceManager* pControlCenterExperienceManager = NULL;
pIntf->lpVtbl->QueryInterface(pIntf, &IID_ControlCenterExperienceManager, &pControlCenterExperienceManager);
if (pControlCenterExperienceManager)
{
pControlCenterExperienceManager->lpVtbl->HotKeyInvoked(pControlCenterExperienceManager, 0);
pControlCenterExperienceManager->lpVtbl->Release(pControlCenterExperienceManager);
}
}
WindowsDeleteString(hstring);
}
pShellExperienceManagerFactory->lpVtbl->Release(pShellExperienceManagerFactory);
}
pImmersiveShell->lpVtbl->Release(pImmersiveShell);
}
}
HRESULT InvokeFlyoutRect(BOOL bAction, DWORD dwWhich, __x_ABI_CWindows_CFoundation_CRect* pRc)
{
HRESULT hr = S_OK;
IUnknown* pImmersiveShell = NULL;
hr = CoCreateInstance(
&CLSID_ImmersiveShell,
NULL,
CLSCTX_NO_CODE_DOWNLOAD | CLSCTX_LOCAL_SERVER,
&IID_IServiceProvider,
&pImmersiveShell
);
if (SUCCEEDED(hr))
{
IShellExperienceManagerFactory* pShellExperienceManagerFactory = NULL;
hr = IUnknown_QueryService(
pImmersiveShell,
&CLSID_ShellExperienceManagerFactory,
&CLSID_ShellExperienceManagerFactory,
&pShellExperienceManagerFactory
);
if (SUCCEEDED(hr))
{
HSTRING_HEADER hstringHeader;
HSTRING hstring = NULL;
WCHAR* pwszStr = NULL;
switch (dwWhich)
{
case INVOKE_FLYOUT_NETWORK:
pwszStr = L"Windows.Internal.ShellExperience.NetworkFlyout";
break;
case INVOKE_FLYOUT_CLOCK:
pwszStr = L"Windows.Internal.ShellExperience.TrayClockFlyout";
break;
case INVOKE_FLYOUT_BATTERY:
pwszStr = L"Windows.Internal.ShellExperience.TrayBatteryFlyout";
break;
case INVOKE_FLYOUT_SOUND:
pwszStr = L"Windows.Internal.ShellExperience.MtcUvc";
break;
}
hr = WindowsCreateStringReference(
pwszStr,
pwszStr ? wcslen(pwszStr) : 0,
&hstringHeader,
&hstring
);
if (SUCCEEDED(hr))
{
IUnknown* pIntf = NULL;
hr = pShellExperienceManagerFactory->lpVtbl->GetExperienceManager(
pShellExperienceManagerFactory,
hstring,
&pIntf
);
if (SUCCEEDED(hr))
{
IExperienceManager* pExperienceManager = NULL;
hr = pIntf->lpVtbl->QueryInterface(
pIntf,
dwWhich == INVOKE_FLYOUT_NETWORK ? &IID_NetworkFlyoutExperienceManager :
(dwWhich == INVOKE_FLYOUT_CLOCK ? &IID_TrayClockFlyoutExperienceManager :
(dwWhich == INVOKE_FLYOUT_BATTERY ? &IID_TrayBatteryFlyoutExperienceManager :
(dwWhich == INVOKE_FLYOUT_SOUND ? &IID_TrayMtcUvcFlyoutExperienceManager : &IID_IUnknown))),
&pExperienceManager
);
if (SUCCEEDED(hr))
{
if (bAction == INVOKE_FLYOUT_SHOW)
{
hr = pExperienceManager->lpVtbl->ShowFlyout(pExperienceManager, pRc);
}
else if (bAction == INVOKE_FLYOUT_HIDE)
{
hr = pExperienceManager->lpVtbl->HideFlyout(pExperienceManager);
}
pExperienceManager->lpVtbl->Release(pExperienceManager);
}
}
WindowsDeleteString(hstring);
}
pShellExperienceManagerFactory->lpVtbl->Release(pShellExperienceManagerFactory);
}
pImmersiveShell->lpVtbl->Release(pImmersiveShell);
}
return hr;
}
================================================
FILE: ExplorerPatcher/ImmersiveFlyouts.h
================================================
#ifndef _H_IMMERSIVEFLYOUTS_H_
#define _H_IMMERSIVEFLYOUTS_H_
#include <Windows.h>
#include <roapi.h>
#include "utility.h"
DEFINE_GUID(IID_TrayBatteryFlyoutExperienceManager,
0x0a73aedc,
0x1c68, 0x410d, 0x8d, 0x53,
0x63, 0xaf, 0x80, 0x95, 0x1e, 0x8f
);
DEFINE_GUID(IID_TrayClockFlyoutExperienceManager,
0xb1604325,
0x6b59, 0x427b, 0xbf, 0x1b,
0x80, 0xa2, 0xdb, 0x02, 0xd3, 0xd8
);
DEFINE_GUID(IID_TrayMtcUvcFlyoutExperienceManager,
0x7154c95d,
0xc519, 0x49bd, 0xa9, 0x7e,
0x64, 0x5b, 0xbf, 0xab, 0xE1, 0x11
);
DEFINE_GUID(IID_NetworkFlyoutExperienceManager,
0xC9DDC674,
0xB44B, 0x4C67, 0x9D, 0x79,
0x2B, 0x23, 0x7D, 0x9B, 0xE0, 0x5A
);
typedef interface IExperienceManager IExperienceManager;
typedef struct IExperienceManagerVtbl // : IInspectable
{
BEGIN_INTERFACE
HRESULT(STDMETHODCALLTYPE* QueryInterface)(
IExperienceManager* This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void** ppvObject);
ULONG(STDMETHODCALLTYPE* AddRef)(
IExperienceManager* This);
ULONG(STDMETHODCALLTYPE* Release)(
IExperienceManager* This);
HRESULT(STDMETHODCALLTYPE* GetIids)(
IExperienceManager* This,
ULONG* iidCount,
IID** iids);
HRESULT(STDMETHODCALLTYPE* GetRuntimeClassName)(
IExperienceManager* This,
HSTRING* className);
HRESULT(STDMETHODCALLTYPE* GetTrustLevel)(
IExperienceManager* This,
TrustLevel* trustLevel);
HRESULT(STDMETHODCALLTYPE* ShowFlyout)(
IExperienceManager* This,
/* [in] */ __x_ABI_CWindows_CFoundation_CRect* rect);
HRESULT(STDMETHODCALLTYPE* HideFlyout)(
IExperienceManager* This);
END_INTERFACE
} IExperienceManagerVtbl;
interface IExperienceManager
{
CONST_VTBL struct IExperienceManagerVtbl* lpVtbl;
};
DEFINE_GUID(CLSID_ShellExperienceManagerFactory,
0x2E8FCB18,
0xA0EE, 0x41AD, 0x8E, 0xF8,
0x77, 0xFB, 0x3A, 0x37, 0x0C, 0xA5
);
typedef interface IShellExperienceManagerFactory IShellExperienceManagerFactory;
typedef struct IShellExperienceManagerFactoryVtbl // : IInspectable
{
BEGIN_INTERFACE
HRESULT(STDMETHODCALLTYPE* QueryInterface)(
IShellExperienceManagerFactory* This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void** ppvObject);
ULONG(STDMETHODCALLTYPE* AddRef)(
IShellExperienceManagerFactory* This);
ULONG(STDMETHODCALLTYPE* Release)(
IShellExperienceManagerFactory* This);
HRESULT(STDMETHODCALLTYPE* GetIids)(
IShellExperienceManagerFactory* This,
ULONG* iidCount,
IID** iids);
HRESULT(STDMETHODCALLTYPE* GetRuntimeClassName)(
IShellExperienceManagerFactory* This,
HSTRING* className);
HRESULT(STDMETHODCALLTYPE* GetTrustLevel)(
IShellExperienceManagerFactory* This,
TrustLevel* trustLevel);
HRESULT(STDMETHODCALLTYPE* GetExperienceManager)(
IShellExperienceManagerFactory* This,
/* [in] */ HSTRING* experience,
_COM_Outptr_ IInspectable** ppvObject);
END_INTERFACE
} IShellExperienceManagerFactoryVtbl;
interface IShellExperienceManagerFactory
{
CONST_VTBL struct IShellExperienceManagerFactoryVtbl* lpVtbl;
};
DEFINE_GUID(IID_ActionCenterExperienceManager,
0xdec04b18,
0x357e, 0x41d8, 0x9b, 0x71,
0xb9, 0x91, 0x24, 0x3b, 0xea, 0x34
);
DEFINE_GUID(IID_ControlCenterExperienceManager,
0xd669a58e,
0x6b18, 0x4d1d, 0x90, 0x04,
0xa8, 0x86, 0x2a, 0xdb, 0x0a, 0x20
);
typedef interface IActionCenterOrControlCenterExperienceManager IActionCenterOrControlCenterExperienceManager;
typedef struct IActionCenterOrControlCenterExperienceManagerVtbl // : IInspectable
{
BEGIN_INTERFACE
HRESULT(STDMETHODCALLTYPE* QueryInterface)(
IActionCenterOrControlCenterExperienceManager* This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void** ppvObject);
ULONG(STDMETHODCALLTYPE* AddRef)(
IActionCenterOrControlCenterExperienceManager* This);
ULONG(STDMETHODCALLTYPE* Release)(
IActionCenterOrControlCenterExperienceManager* This);
HRESULT(STDMETHODCALLTYPE* GetIids)(
IActionCenterOrControlCenterExperienceManager* This,
ULONG* iidCount,
IID** iids);
HRESULT(STDMETHODCALLTYPE* GetRuntimeClassName)(
IActionCenterOrControlCenterExperienceManager* This,
HSTRING* className);
HRESULT(STDMETHODCALLTYPE* GetTrustLevel)(
IActionCenterOrControlCenterExperienceManager* This,
TrustLevel* trustLevel);
HRESULT(STDMETHODCALLTYPE* HotKeyInvoked)(
IActionCenterOrControlCenterExperienceManager* This,
/* [in] */ void* kind);
HRESULT(STDMETHODCALLTYPE* Show)( // only in control center
IActionCenterOrControlCenterExperienceManager* This,
HSTRING hstringUnknown,
void* bSupressAnimations,
void* dwUnknown_ShouldBeOne);
HRESULT(STDMETHODCALLTYPE* Hide)( // only in control center
IActionCenterOrControlCenterExperienceManager* This,
HSTRING hstringUnknown,
void* bSupressAnimations);
END_INTERFACE
} IActionCenterOrControlCenterExperienceManagerVtbl;
interface IActionCenterOrControlCenterExperienceManager
{
CONST_VTBL struct IActionCenterOrControlCenterExperienceManagerVtbl* lpVtbl;
};
void InvokeActionCenter();
#define INVOKE_FLYOUT_SHOW 1
#define INVOKE_FLYOUT_HIDE 2
#define INVOKE_FLYOUT_NETWORK 1
#define INVOKE_FLYOUT_CLOCK 2
#define INVOKE_FLYOUT_BATTERY 3
#define INVOKE_FLYOUT_SOUND 4
HRESULT InvokeFlyoutRect(BOOL bAction, DWORD dwWhich, __x_ABI_CWindows_CFoundation_CRect* pRc);
inline HRESULT InvokeFlyout(BOOL bAction, DWORD dwWhich)
{
__x_ABI_CWindows_CFoundation_CRect rc;
ZeroMemory(&rc, sizeof(rc));
return InvokeFlyoutRect(bAction, dwWhich, &rc);
}
#endif
================================================
FILE: ExplorerPatcher/InputSwitch.cpp
================================================
#include "InputSwitch.h"
#include <shellscalingapi.h>
#include <wrl/implements.h>
#include <wil/result_macros.h>
#define TB_POS_NOWHERE 0
#define TB_POS_BOTTOM 1
#define TB_POS_TOP 2
#define TB_POS_LEFT 3
#define TB_POS_RIGHT 4
extern "C" UINT GetTaskbarLocationAndSize(POINT ptCursor, RECT* rc);
extern "C" INPUT_SWITCH_IDL_CLIENT_TYPE dwIMEStyle;
extern "C" HRESULT CInputSwitchControl_ModifyAnchor(UINT dwNumberOfProfiles, RECT* lpRect);
HRESULT CInputSwitchControl_ModifyAnchor(UINT dwNumberOfProfiles, RECT* lpRect)
{
if (!dwIMEStyle) // impossible case (this is not called for the Windows 11 language switcher), but just in case
{
return S_FALSE;
}
HWND hWndTaskbar = FindWindowW(L"Shell_TrayWnd", NULL);
UINT dpiX = 96, dpiY = 96;
HRESULT hr = GetDpiForMonitor(
MonitorFromWindow(hWndTaskbar, MONITOR_DEFAULTTOPRIMARY),
MDT_DEFAULT,
&dpiX,
&dpiY
);
double dpix = dpiX / 96.0;
double dpiy = dpiY / 96.0;
//printf("RECT %d %d %d %d - %d %d\n", lpRect->left, lpRect->right, lpRect->top, lpRect->bottom, dwNumberOfProfiles, a3);
RECT rc;
GetWindowRect(hWndTaskbar, &rc);
POINT pt;
pt.x = rc.left;
pt.y = rc.top;
UINT tbPos = GetTaskbarLocationAndSize(pt, &rc);
if (tbPos == TB_POS_BOTTOM)
{
}
else if (tbPos == TB_POS_TOP)
{
if (dwIMEStyle == 1) // Windows 10 (with Language preferences link)
{
lpRect->top = rc.top + (rc.bottom - rc.top) + (UINT)(((double)dwNumberOfProfiles * (60.0 * dpiy)) + (5.0 * dpiy * 4.0) + (dpiy) + (48.0 * dpiy));
}
else if (dwIMEStyle == 2 || dwIMEStyle == 3 || dwIMEStyle == 4 || dwIMEStyle == 5) // LOGONUI, UAC, Windows 10, OOBE
{
lpRect->top = rc.top + (rc.bottom - rc.top) + (UINT)(((double)dwNumberOfProfiles * (60.0 * dpiy)) + (5.0 * dpiy * 2.0));
}
}
else if (tbPos == TB_POS_LEFT)
{
if (dwIMEStyle == 1 || dwIMEStyle == 2 || dwIMEStyle == 3 || dwIMEStyle == 4 || dwIMEStyle == 5)
{
lpRect->right = rc.left + (rc.right - rc.left) + (UINT)((double)(300.0 * dpix));
lpRect->top += (lpRect->bottom - lpRect->top);
}
}
if (tbPos == TB_POS_RIGHT)
{
if (dwIMEStyle == 1 || dwIMEStyle == 2 || dwIMEStyle == 3 || dwIMEStyle == 4 || dwIMEStyle == 5)
{
lpRect->right = lpRect->right - (rc.right - rc.left);
lpRect->top += (lpRect->bottom - lpRect->top);
}
}
if (dwIMEStyle == 4)
{
lpRect->right -= (UINT)((double)(300.0 * dpix)) - (lpRect->right - lpRect->left);
}
return S_OK;
}
class CInputSwitchControlProxy : public Microsoft::WRL::RuntimeClass<Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::ClassicCom>, IInputSwitchControl>
{
public:
CInputSwitchControlProxy()
: m_type((INPUT_SWITCH_IDL_CLIENT_TYPE)-1)
{
}
HRESULT RuntimeClassInitialize(IInputSwitchControl* original)
{
m_original = original;
return S_OK;
}
STDMETHODIMP Init(INPUT_SWITCH_IDL_CLIENT_TYPE type) override
{
m_type = type;
return m_original->Init(type == ISCT_IDL_DESKTOP && dwIMEStyle != ISCT_IDL_DESKTOP ? dwIMEStyle : type);
}
STDMETHODIMP ShowInputSwitch(const RECT* rect) override
{
RECT myRect = *rect;
if (m_type == ISCT_IDL_DESKTOP)
{
UINT dwNumberOfProfiles = 0;
BOOL bImePresent = FALSE;
m_original->GetProfileCount(&dwNumberOfProfiles, &bImePresent);
CInputSwitchControl_ModifyAnchor(dwNumberOfProfiles, &myRect);
}
return m_original->ShowInputSwitch(&myRect);
}
STDMETHODIMP SetCallback(IInputSwitchCallback* callback) override { return m_original->SetCallback(callback); }
STDMETHODIMP GetProfileCount(UINT* count, BOOL* bOutImePresent) override { return m_original->GetProfileCount(count, bOutImePresent); }
STDMETHODIMP GetCurrentProfile(INPUT_SWITCH_IDL_PROFILE_DATA* data) override { return m_original->GetCurrentProfile(data); }
STDMETHODIMP RegisterHotkeys() override { return m_original->RegisterHotkeys(); }
STDMETHODIMP ClickImeModeItem(INPUT_SWITCH_IDL_IME_CLICK_TYPE type, POINT point, const RECT* rect) override { return m_original->ClickImeModeItem(type, point, rect); }
STDMETHODIMP ForceHide() override { return m_original->ForceHide(); }
STDMETHODIMP ShowTouchKeyboardInputSwitch(const RECT* rect, INPUT_SWITCH_IDL_ALIGNMENT align, int a3, DWORD a4, INPUT_SWITCH_IDL_MODALITY a5) override { return m_original->ShowTouchKeyboardInputSwitch(rect, align, a3, a4, a5); }
STDMETHODIMP GetContextFlags(DWORD* flags) override { return m_original->GetContextFlags(flags); }
STDMETHODIMP SetContextOverrideMode(INPUT_SWITCH_IDL_CFOM mode) override { return m_original->SetContextOverrideMode(mode); }
STDMETHODIMP GetCurrentImeModeItem(INPUT_SWITCH_IDL_IME_MODE_ITEM_DATA* data) override { return m_original->GetCurrentImeModeItem(data); }
STDMETHODIMP ActivateInputProfile(const WCHAR* profile) override { return m_original->ActivateInputProfile(profile); }
STDMETHODIMP SetUserSid(const WCHAR* sid) override { return m_original->SetUserSid(sid); }
private:
Microsoft::WRL::ComPtr<IInputSwitchControl> m_original;
INPUT_SWITCH_IDL_CLIENT_TYPE m_type;
};
HRESULT CInputSwitchControlProxy_CreateInstance(IInputSwitchControl* original, REFIID riid, void** ppvObject)
{
Microsoft::WRL::ComPtr<CInputSwitchControlProxy> proxy;
RETURN_IF_FAILED(Microsoft::WRL::MakeAndInitialize<CInputSwitchControlProxy>(&proxy, original));
RETURN_HR(proxy.CopyTo(riid, ppvObject));
}
class CInputSwitchControlProxySV2 : public Microsoft::WRL::RuntimeClass<Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::ClassicCom>, IInputSwitchControlSV2>
{
public:
CInputSwitchControlProxySV2()
: m_type((INPUT_SWITCH_IDL_CLIENT_TYPE)-1)
{
}
HRESULT RuntimeClassInitialize(IInputSwitchControlSV2* original)
{
m_original = original;
return S_OK;
}
STDMETHODIMP Init(INPUT_SWITCH_IDL_CLIENT_TYPE type) override
{
m_type = type;
return m_original->Init(type == ISCT_IDL_DESKTOP && dwIMEStyle != ISCT_IDL_DESKTOP ? dwIMEStyle : type);
}
STDMETHODIMP ShowInputSwitch(const RECT* rect) override
{
RECT myRect = *rect;
if (m_type == ISCT_IDL_DESKTOP)
{
UINT dwNumberOfProfiles = 0;
BOOL bImePresent = FALSE;
m_original->GetProfileCount(&dwNumberOfProfiles, &bImePresent);
CInputSwitchControl_ModifyAnchor(dwNumberOfProfiles, &myRect);
}
return m_original->ShowInputSwitch(&myRect);
}
STDMETHODIMP SetCallback(IInputSwitchCallback* callback) override { return m_original->SetCallback(callback); }
STDMETHODIMP GetProfileCount(UINT* count, BOOL* bOutImePresent) override { return m_original->GetProfileCount(count, bOutImePresent); }
STDMETHODIMP GetCurrentProfile(INPUT_SWITCH_IDL_PROFILE_DATA* data) override { return m_original->GetCurrentProfile(data); }
STDMETHODIMP RegisterHotkeys() override { return m_original->RegisterHotkeys(); }
STDMETHODIMP ClickImeModeItem(INPUT_SWITCH_IDL_IME_CLICK_TYPE type, POINT point, const RECT* rect) override { return m_original->ClickImeModeItem(type, point, rect); }
STDMETHODIMP ClickImeModeItemWithAnchor(INPUT_SWITCH_IDL_IME_CLICK_TYPE type, IUnknown* anchor) override { return m_original->ClickImeModeItemWithAnchor(type, anchor); }
STDMETHODIMP ForceHide() override { return m_original->ForceHide(); }
STDMETHODIMP ShowTouchKeyboardInputSwitch(const RECT* rect, INPUT_SWITCH_IDL_ALIGNMENT align, int a3, DWORD a4, INPUT_SWITCH_IDL_MODALITY a5) override { return m_original->ShowTouchKeyboardInputSwitch(rect, align, a3, a4, a5); }
STDMETHODIMP GetContextFlags(DWORD* flags) override { return m_original->GetContextFlags(flags); }
STDMETHODIMP SetContextOverrideMode(INPUT_SWITCH_IDL_CFOM mode) override { return m_original->SetContextOverrideMode(mode); }
STDMETHODIMP GetCurrentImeModeItem(INPUT_SWITCH_IDL_IME_MODE_ITEM_DATA* data) override { return m_original->GetCurrentImeModeItem(data); }
STDMETHODIMP ActivateInputProfile(const WCHAR* profile) override { return m_original->ActivateInputProfile(profile); }
STDMETHODIMP SetUserSid(const WCHAR* sid) override { return m_original->SetUserSid(sid); }
private:
Microsoft::WRL::ComPtr<IInputSwitchControlSV2> m_original;
INPUT_SWITCH_IDL_CLIENT_TYPE m_type;
};
HRESULT CInputSwitchControlProxySV2_CreateInstance(IInputSwitchControlSV2* original, REFIID riid, void** ppvObject)
{
Microsoft::WRL::ComPtr<CInputSwitchControlProxySV2> proxy;
RETURN_IF_FAILED(Microsoft::WRL::MakeAndInitialize<CInputSwitchControlProxySV2>(&proxy, original));
RETURN_HR(proxy.CopyTo(riid, ppvObject));
}
================================================
FILE: ExplorerPatcher/InputSwitch.h
================================================
#pragma once
#include <Windows.h>
DEFINE_GUID(CLSID_InputSwitchControl, 0xb9bc2a50, 0x43c3, 0x41aa, 0xa0, 0x86, 0x5d, 0xb1, 0x4e, 0x18, 0x4b, 0xae);
DEFINE_GUID(IID_IInputSwitchControl, 0xb9bc2a50, 0x43c3, 0x41aa, 0xa0, 0x82, 0x5d, 0xb1, 0x4e, 0x18, 0x4b, 0xae);
typedef enum __MIDL___MIDL_itf_inputswitchserver_0000_0000_0001
{
ISCT_IDL_DESKTOP,
ISCT_IDL_TOUCHKEYBOARD,
ISCT_IDL_LOGONUI,
ISCT_IDL_UAC,
ISCT_IDL_SETTINGSPANE,
ISCT_IDL_OOBE,
ISCT_IDL_USEROOBE
} INPUT_SWITCH_IDL_CLIENT_TYPE;
typedef struct __MIDL___MIDL_itf_inputswitchserver_0000_0000_0002
{
int dummy; // We don't need its contents
} INPUT_SWITCH_IDL_PROFILE_DATA;
typedef struct __MIDL___MIDL_itf_inputswitchserver_0000_0000_0003
{
WCHAR* pszTooltip;
HICON hIcon;
BOOL fDisabled;
BOOL fHidden;
WCHAR* pszIconGlyph;
void* pUnk1; // @Note: Added in 22621.4974
} INPUT_SWITCH_IDL_IME_MODE_ITEM_DATA;
typedef enum __MIDL___MIDL_itf_inputswitchserver_0000_0000_0004
{
INPUT_SWITCH_IDL_IME_CLICK_TYPE_LEFT,
INPUT_SWITCH_IDL_IME_CLICK_TYPE_RIGHT,
INPUT_SWITCH_IDL_IME_CLICK_TYPE_LEFT_DISABLED
} INPUT_SWITCH_IDL_IME_CLICK_TYPE;
typedef enum __MIDL___MIDL_itf_inputswitchserver_0000_0000_0005
{
INPUT_SWITCH_IDL_MODALITY_STANDARDKEYBOARD = 0x1,
INPUT_SWITCH_IDL_MODALITY_SPLITKEYBOARD = 0x2,
INPUT_SWITCH_IDL_MODALITY_CLASSICKEYBOARD = 0x4,
INPUT_SWITCH_IDL_MODALITY_HANDWRITING = 0x8,
INPUT_SWITCH_IDL_MODALITY_HIDE = 0x10,
INPUT_SWITCH_IDL_MODALITY_ONEHANDEDKEYBOARD = 0x20,
} INPUT_SWITCH_IDL_MODALITY;
DEFINE_ENUM_FLAG_OPERATORS(INPUT_SWITCH_IDL_MODALITY);
typedef enum __MIDL___MIDL_itf_inputswitchserver_0000_0000_0006
{
INPUT_SWITCH_IDL_ALIGN_DEFAULT,
INPUT_SWITCH_IDL_ALIGN_RIGHT_EDGE,
INPUT_SWITCH_IDL_ALIGN_LEFT_EDGE,
} INPUT_SWITCH_IDL_ALIGNMENT;
typedef enum __MIDL___MIDL_itf_inputswitchserver_0000_0000_0008
{
INPUT_SWITCH_IDL_CFOM_NO_OVERRIDE,
INPUT_SWITCH_IDL_CFOM_DESKTOP,
INPUT_SWITCH_IDL_CFOM_IMMERSIVE,
} INPUT_SWITCH_IDL_CFOM;
interface IInputSwitchCallback;
#ifdef __cplusplus
MIDL_INTERFACE("b9bc2a50-43c3-41aa-a082-5db14e184bae")
IInputSwitchControl : IUnknown
{
virtual HRESULT STDMETHODCALLTYPE Init(INPUT_SWITCH_IDL_CLIENT_TYPE) = 0;
virtual HRESULT STDMETHODCALLTYPE SetCallback(IInputSwitchCallback*) = 0;
virtual HRESULT STDMETHODCALLTYPE ShowInputSwitch(const RECT*) = 0;
virtual HRESULT STDMETHODCALLTYPE GetProfileCount(UINT*, BOOL*) = 0;
virtual HRESULT STDMETHODCALLTYPE GetCurrentProfile(INPUT_SWITCH_IDL_PROFILE_DATA*) = 0;
virtual HRESULT STDMETHODCALLTYPE RegisterHotkeys() = 0;
virtual HRESULT STDMETHODCALLTYPE ClickImeModeItem(INPUT_SWITCH_IDL_IME_CLICK_TYPE, POINT, const RECT*) = 0;
virtual HRESULT STDMETHODCALLTYPE ForceHide() = 0;
virtual HRESULT STDMETHODCALLTYPE ShowTouchKeyboardInputSwitch(const RECT*, INPUT_SWITCH_IDL_ALIGNMENT, int, DWORD, INPUT_SWITCH_IDL_MODALITY) = 0;
virtual HRESULT STDMETHODCALLTYPE GetContextFlags(DWORD*) = 0;
virtual HRESULT STDMETHODCALLTYPE SetContextOverrideMode(INPUT_SWITCH_IDL_CFOM) = 0;
virtual HRESULT STDMETHODCALLTYPE GetCurrentImeModeItem(INPUT_SWITCH_IDL_IME_MODE_ITEM_DATA*) = 0;
virtual HRESULT STDMETHODCALLTYPE ActivateInputProfile(const WCHAR*) = 0;
virtual HRESULT STDMETHODCALLTYPE SetUserSid(const WCHAR*) = 0;
};
#else
typedef interface IInputSwitchControl IInputSwitchControl;
#endif
#ifdef __cplusplus
MIDL_INTERFACE("b9bc2a50-43c3-41aa-a082-5db14e184bae")
IInputSwitchControlSV2 : IUnknown
{
virtual HRESULT STDMETHODCALLTYPE Init(INPUT_SWITCH_IDL_CLIENT_TYPE) = 0;
virtual HRESULT STDMETHODCALLTYPE SetCallback(IInputSwitchCallback*) = 0;
virtual HRESULT STDMETHODCALLTYPE ShowInputSwitch(const RECT*) = 0;
virtual HRESULT STDMETHODCALLTYPE GetProfileCount(UINT*, BOOL*) = 0;
virtual HRESULT STDMETHODCALLTYPE GetCurrentProfile(INPUT_SWITCH_IDL_PROFILE_DATA*) = 0;
virtual HRESULT STDMETHODCALLTYPE RegisterHotkeys() = 0;
virtual HRESULT STDMETHODCALLTYPE ClickImeModeItem(INPUT_SWITCH_IDL_IME_CLICK_TYPE, POINT, const RECT*) = 0;
virtual HRESULT STDMETHODCALLTYPE ClickImeModeItemWithAnchor(INPUT_SWITCH_IDL_IME_CLICK_TYPE, IUnknown*) = 0;
virtual HRESULT STDMETHODCALLTYPE ForceHide() = 0;
virtual HRESULT STDMETHODCALLTYPE ShowTouchKeyboardInputSwitch(const RECT*, INPUT_SWITCH_IDL_ALIGNMENT, int, DWORD, INPUT_SWITCH_IDL_MODALITY) = 0;
virtual HRESULT STDMETHODCALLTYPE GetContextFlags(DWORD*) = 0;
virtual HRESULT STDMETHODCALLTYPE SetContextOverrideMode(INPUT_SWITCH_IDL_CFOM) = 0;
virtual HRESULT STDMETHODCALLTYPE GetCurrentImeModeItem(INPUT_SWITCH_IDL_IME_MODE_ITEM_DATA*) = 0;
virtual HRESULT STDMETHODCALLTYPE ActivateInputProfile(const WCHAR*) = 0;
virtual HRESULT STDMETHODCALLTYPE SetUserSid(const WCHAR*) = 0;
};
#else
typedef interface IInputSwitchControlSV2 IInputSwitchControlSV2;
#endif
#ifdef __cplusplus
extern "C" {
#endif
HRESULT CInputSwitchControlProxy_CreateInstance(IInputSwitchControl* original, REFIID riid, void** ppvObject);
HRESULT CInputSwitchControlProxySV2_CreateInstance(IInputSwitchControlSV2* original, REFIID riid, void** ppvObject);
#ifdef __cplusplus
}
#endif
================================================
FILE: ExplorerPatcher/Localization.cpp
================================================
#include "Localization.h"
#include <algorithm>
#include <vector>
#include "def.h"
extern "C"
{
EP_L10N_Language LangIDToEPLanguage(LANGID wLanguage)
{
EP_L10N_Language language = {};
language.id = wLanguage;
GetLocaleInfoW(wLanguage, LOCALE_SNAME, language.wszId, ARRAYSIZE(language.wszId));
GetLocaleInfoW(wLanguage, LOCALE_SLOCALIZEDDISPLAYNAME, language.wszDisplayName, ARRAYSIZE(language.wszDisplayName));
return language;
}
BOOL EP_L10N_ApplyPreferredLanguageForCurrentThread()
{
BOOL rv = FALSE;
HKEY hKey = nullptr;
RegCreateKeyExW(
HKEY_CURRENT_USER,
TEXT(REGPATH),
0,
nullptr,
REG_OPTION_NON_VOLATILE,
KEY_READ | KEY_WOW64_64KEY,
nullptr,
&hKey,
nullptr
);
if (hKey == nullptr || hKey == INVALID_HANDLE_VALUE)
{
hKey = nullptr;
}
if (hKey)
{
DWORD dwPreferredLanguage = 0;
DWORD dwSize = sizeof(dwPreferredLanguage);
LSTATUS lres = RegQueryValueExW(
hKey,
TEXT("Language"),
nullptr,
nullptr,
(LPBYTE)&dwPreferredLanguage,
&dwSize
);
if (lres == ERROR_SUCCESS && dwPreferredLanguage != 0)
{
EP_L10N_Language language = LangIDToEPLanguage((LANGID)dwPreferredLanguage);
rv = SetThreadPreferredUILanguages(MUI_LANGUAGE_NAME, language.wszId, nullptr);
}
else
{
rv = SetThreadPreferredUILanguages(MUI_LANGUAGE_NAME, nullptr, nullptr);
}
RegCloseKey(hKey);
}
return rv;
}
BOOL EP_L10N_GetCurrentUserLanguage(wchar_t* wszLanguage, int cch)
{
BOOL bOk = FALSE;
ULONG ulNumLanguages = 0;
ULONG cchLanguagesBuffer = 0;
if (GetUserPreferredUILanguages(MUI_LANGUAGE_NAME, &ulNumLanguages, nullptr, &cchLanguagesBuffer))
{
wchar_t* wszLanguagesBuffer = (wchar_t*)malloc(cchLanguagesBuffer * sizeof(wchar_t));
if (wszLanguagesBuffer)
{
if (GetUserPreferredUILanguages(MUI_LANGUAGE_NAME, &ulNumLanguages, wszLanguagesBuffer, &cchLanguagesBuffer))
{
wcscpy_s(wszLanguage, cch, wszLanguagesBuffer);
bOk = TRUE;
}
free(wszLanguagesBuffer);
}
}
if (!bOk)
{
wcscpy_s(wszLanguage, cch, L"en-US");
}
return TRUE;
}
BOOL EP_L10N_GetCurrentThreadLanguage(wchar_t* wszLanguage, int cch)
{
BOOL bOk = FALSE;
ULONG ulNumLanguages = 0;
ULONG cchLanguagesBuffer = 0;
if (GetThreadPreferredUILanguages(MUI_LANGUAGE_NAME, &ulNumLanguages, nullptr, &cchLanguagesBuffer))
{
wchar_t* wszLanguagesBuffer = (wchar_t*)malloc(cchLanguagesBuffer * sizeof(wchar_t));
if (wszLanguagesBuffer)
{
if (GetThreadPreferredUILanguages(MUI_LANGUAGE_NAME, &ulNumLanguages, wszLanguagesBuffer, &cchLanguagesBuffer))
{
wcscpy_s(wszLanguage, cch, wszLanguagesBuffer);
bOk = TRUE;
}
free(wszLanguagesBuffer);
}
}
if (!bOk)
{
wcscpy_s(wszLanguage, cch, L"en-US");
}
return TRUE;
}
void EP_L10N_EnumerateLanguages(HMODULE hModule, LPCWSTR lpType, LPCWSTR lpName, EP_L10N_EnumerateLanguagesProc_t pfnProc, void* data)
{
std::vector<EP_L10N_Language> languages;
// English (US) is our primary language
languages.push_back(LangIDToEPLanguage(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)));
// Add the rest below it
EnumResourceLanguagesW(hModule, lpType, lpName, [](HMODULE, LPCWSTR, LPCWSTR, WORD wLanguage, LONG_PTR lParam) -> BOOL
{
if (wLanguage != MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US))
{
EP_L10N_Language language = LangIDToEPLanguage(wLanguage);
((std::vector<EP_L10N_Language>*)lParam)->push_back(language);
}
return TRUE;
}, (LONG_PTR)&languages);
// Sort the non-primary languages by localized display name
std::sort(languages.begin() + 1, languages.end(), [](const EP_L10N_Language& a, const EP_L10N_Language& b) -> bool
{
return wcscmp(a.wszDisplayName, b.wszDisplayName) < 0;
});
// Call the callback for each language
for (const EP_L10N_Language& language : languages)
{
pfnProc(&language, data);
}
}
}
================================================
FILE: ExplorerPatcher/Localization.h
================================================
#pragma once
#include <Windows.h>
#ifdef __cplusplus
extern "C"
{
#endif
typedef struct EP_L10N_Language
{
LANGID id;
wchar_t wszId[LOCALE_NAME_MAX_LENGTH];
wchar_t wszDisplayName[LOCALE_NAME_MAX_LENGTH];
} EP_L10N_Language;
typedef void(*EP_L10N_EnumerateLanguagesProc_t)(const EP_L10N_Language* language, void* data);
BOOL EP_L10N_ApplyPreferredLanguageForCurrentThread();
BOOL EP_L10N_GetCurrentUserLanguage(wchar_t* wszLanguage, int cch);
BOOL EP_L10N_GetCurrentThreadLanguage(wchar_t* wszLanguage, int cch);
void EP_L10N_EnumerateLanguages(HMODULE hModule, LPCWSTR lpType, LPCWSTR lpName, EP_L10N_EnumerateLanguagesProc_t pfnProc, void* data);
#ifdef __cplusplus
}
#endif
================================================
FILE: ExplorerPatcher/SettingsMonitor.c
================================================
#include "SettingsMonitor.h"
DWORD WINAPI MonitorSettings(SettingsChangeParameters* params)
{
BOOL bShouldExit = FALSE;
HANDLE* handles = NULL;
while (TRUE)
{
handles = calloc(sizeof(HANDLE), params->size);
if (handles)
{
for (unsigned int i = 0; i < params->size; ++i)
{
if (i == 0)
{
if (params->settings[i].hEvent)
{
handles[i] = params->settings[i].hEvent;
continue;
}
else
{
free(handles);
free(params->settings);
free(params);
return 0;
}
}
params->settings[i].hEvent = CreateEventW(NULL, FALSE, FALSE, NULL);
if (!params->settings[i].hEvent)
{
free(handles);
free(params->settings);
free(params);
return 0;
}
handles[i] = params->settings[i].hEvent;
if (RegCreateKeyExW(
params->settings[i].origin,
params->settings[i].name,
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_READ,
NULL,
&(params->settings[i].hKey),
NULL
) != ERROR_SUCCESS)
{
free(handles);
free(params->settings);
free(params);
return 0;
}
if (RegNotifyChangeKeyValue(
params->settings[i].hKey,
FALSE,
REG_NOTIFY_CHANGE_LAST_SET,
params->settings[i].hEvent,
TRUE
) != ERROR_SUCCESS)
{
free(handles);
free(params->settings);
free(params);
return 0;
}
}
DWORD dwRes = WaitForMultipleObjects(
params->size,
handles,
FALSE,
INFINITE
);
if (dwRes != WAIT_FAILED)
{
unsigned int i = dwRes - WAIT_OBJECT_0;
if (i >= 1 && i < params->size)
{
params->settings[i].callback(params->settings[i].data);
}
else if (i == 0)
{
bShouldExit = TRUE;
}
for (unsigned int j = 1; j < params->size; ++j)
{
if (WaitForSingleObject(handles[j], 0) == WAIT_OBJECT_0)
{
params->settings[j].callback(params->settings[j].data);
}
}
}
free(handles);
for (unsigned int i = 1; i < params->size; ++i)
{
if (params->settings[i].hEvent)
{
CloseHandle(params->settings[i].hEvent);
}
if (params->settings[i].hKey)
{
RegCloseKey(params->settings[i].hKey);
}
}
if (bShouldExit)
{
break;
}
}
else
{
free(params->settings);
free(params);
return 0;
}
}
free(params->settings);
free(params);
return 0;
}
================================================
FILE: ExplorerPatcher/SettingsMonitor.h
================================================
#ifndef _H_SETTINGSMONITOR_H_
#define _H_SETTINGSMONITOR_H_
#include <Windows.h>
#include <Shlwapi.h>
#pragma comment(lib, "Shlwapi.lib")
#include <stdio.h>
typedef struct _Setting
{
HKEY origin;
wchar_t name[MAX_PATH];
HKEY hKey;
HANDLE hEvent;
void(__stdcall *callback)(void*);
void* data;
} Setting;
typedef struct _SettingsChangeParameters
{
Setting* settings;
DWORD size;
HANDLE hThread;
} SettingsChangeParameters;
DWORD WINAPI MonitorSettings(SettingsChangeParameters*);
#endif
================================================
FILE: ExplorerPatcher/ShellExperienceHostPatches.cpp
================================================
#include <windows.ui.xaml.h>
#include <wrl/client.h>
#include <wrl/implements.h>
#include <wrl/wrappers/corewrappers.h>
#include <wil/result_macros.h>
// ReSharper disable once CppUnusedIncludeDirective
#include "ClassicWinRtForwardDecl.h"
#include "def.h"
#include "hooking.h"
#include "osutility.h"
#include "SimpleBoxer.h"
#include "utility.h"
#include "valinet/hooking/iatpatch.h"
// We don't need logging here
#include "inc/PushNoWilResultMacrosLogging.h"
using namespace Microsoft::WRL;
namespace wf = ABI::Windows::Foundation;
namespace wfc = ABI::Windows::Foundation::Collections;
namespace wux = ABI::Windows::UI::Xaml;
EXTERN_C_START
void InjectShellExperienceHostFor22H2OrHigher();
void* memmem(void* haystack, size_t haystacklen, void* needle, size_t needlelen);
void InjectShellExperienceHost()
{
if (!IsWindows11())
{
return;
}
if (IsWindows11Version22H2OrHigher())
{
InjectShellExperienceHostFor22H2OrHigher();
return;
}
HKEY hKey;
if (RegOpenKeyW(HKEY_CURRENT_USER, _T(SEH_REGPATH), &hKey) != ERROR_SUCCESS)
{
return;
}
RegCloseKey(hKey);
HMODULE hQA = LoadLibraryW(L"Windows.UI.QuickActions.dll");
if (hQA)
{
PIMAGE_DOS_HEADER dosHeader = (PIMAGE_DOS_HEADER)hQA;
if (dosHeader->e_magic == IMAGE_DOS_SIGNATURE)
{
PIMAGE_NT_HEADERS64 ntHeader = (PIMAGE_NT_HEADERS64)((u_char*)dosHeader + dosHeader->e_lfanew);
if (ntHeader->Signature == IMAGE_NT_SIGNATURE)
{
PBYTE pSEHPatchArea = nullptr;
BYTE seh_pattern1[14] =
{
// mov al, 1
0xB0, 0x01,
// jmp + 2
0xEB, 0x02,
// xor al, al
0x32, 0xC0,
// add rsp, 0x20
0x48, 0x83, 0xC4, 0x20,
// pop rdi
0x5F,
// pop rsi
0x5E,
// pop rbx
0x5B,
// ret
0xC3
};
BYTE seh_off = 12;
BYTE seh_pattern2[5] =
{
// mov r8b, 3
0x41, 0xB0, 0x03,
// mov dl, 1
0xB2, 0x01
};
bool bTwice = false;
PIMAGE_SECTION_HEADER section = IMAGE_FIRST_SECTION(ntHeader);
for (unsigned int i = 0; i < ntHeader->FileHeader.NumberOfSections; ++i)
{
if (section->Characteristics & IMAGE_SCN_CNT_CODE)
{
if (section->SizeOfRawData && !bTwice)
{
PBYTE pSectionBegin = (PBYTE)hQA + section->VirtualAddress;
//DWORD dwOldProtect;
//VirtualProtect(pSectionBegin, section->SizeOfRawData, PAGE_EXECUTE_READWRITE, &dwOldProtect);
PBYTE pCandidate = nullptr;
while (true)
{
pCandidate = (PBYTE)memmem(
!pCandidate ? pSectionBegin : pCandidate,
!pCandidate ? section->SizeOfRawData : (uintptr_t)section->SizeOfRawData - (uintptr_t)(pCandidate - pSectionBegin),
seh_pattern1,
sizeof(seh_pattern1)
);
if (!pCandidate)
{
break;
}
PBYTE pCandidate2 = pCandidate - seh_off - sizeof(seh_pattern2);
if (pCandidate2 > (PBYTE)(UINT_PTR)section->VirtualAddress)
{
if (memmem(pCandidate2, sizeof(seh_pattern2), seh_pattern2, sizeof(seh_pattern2)))
{
if (!pSEHPatchArea)
{
pSEHPatchArea = pCandidate;
}
else
{
bTwice = true;
}
}
}
pCandidate += sizeof(seh_pattern1);
}
//VirtualProtect(pSectionBegin, section->SizeOfRawData, dwOldProtect, &dwOldProtect);
}
}
section++;
}
if (pSEHPatchArea && !bTwice)
{
DWORD dwOldProtect;
VirtualProtect(pSEHPatchArea, sizeof(seh_pattern1), PAGE_EXECUTE_READWRITE, &dwOldProtect);
pSEHPatchArea[2] = 0x90;
pSEHPatchArea[3] = 0x90;
VirtualProtect(pSEHPatchArea, sizeof(seh_pattern1), dwOldProtect, &dwOldProtect);
}
}
}
}
}
// On 22H2 builds, the Windows 10 flyouts for network and battery can be enabled
// by patching either of the following functions in ShellExperienceHost. I didn't
// see any differences when patching with any of the 3 methods, although
// `SharedUtilities::IsWindowsLite` seems to be invoked in more places, whereas `GetProductInfo`
// and `RtlGetDeviceFamilyInfoEnum` are only called in `FlightHelper::CalculateRepaintEnabled`
// and either seems to get the job done. YMMV
/*LSTATUS WINAPI SEH_RegGetValueW(HKEY hkey, LPCWSTR lpSubKey, LPCWSTR lpValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
{
if (!lstrcmpW(lpValue, L"UseLiteLayout")) { *(DWORD*)pvData = 1; return ERROR_SUCCESS; }
return RegGetValueW(hkey, lpSubKey, lpValue, dwFlags, pdwType, pvData, pcbData);
}*/
/*BOOL WINAPI SEH_RtlGetDeviceFamilyInfoEnum(INT64 u0, PDWORD u1, INT64 u2)
{
*u1 = 10;
return TRUE;
}*/
BOOL WINAPI SEH_GetProductInfo(DWORD dwOSMajorVersion, DWORD dwOSMinorVersion, DWORD dwSpMajorVersion, DWORD dwSpMinorVersion, PDWORD pdwReturnedProductType)
{
*pdwReturnedProductType = 119;
return TRUE;
}
static bool g_bQuickActionControlTemplatesPatched;
// Fix battery flyout crashing on 25951+
void HandleLoadedQuickActions(HMODULE hModule)
{
if (!hModule)
{
return;
}
static bool bPatched = false;
if (bPatched)
{
return;
}
bPatched = true;
PBYTE pSearch;
DWORD cbSearch;
if (TextSectionBeginAndSize(hModule, &pSearch, &cbSearch))
{
#if defined(_M_X64)
// Note: These patterns will break when the class sizes change!
PBYTE pfn = nullptr;
// Find source
// 48 89 45 50 BA 90 00 00 00 8D 4A E8 FF 15 ?? ?? ?? ?? 48 89 45 58 48 8B C8 E8 ?? ?? ?? ?? 48 8B F0
// ^^^^^^^^^^^^^^^^^^^^^^^ . ^^^^^^^^^^^
// ref new QuickActions::QuickActionTemplates();
// Ref: QuickActions::QuickActionTemplates::Instance::get()
PBYTE matchSource = (PBYTE)FindPattern(
pSearch, cbSearch,
"\x48\x89\x45\x50\xBA\x90\x00\x00\x00\x8D\x4A\xE8\xFF\x15\x00\x00\x00\x00\x48\x89\x45\x58\x48\x8B\xC8\xE8\x00\x00\x00\x00\x48\x8B\xF0",
"xxxxxxxxxxxxxx????xxxxxxxx????xxx"
);
if (matchSource)
{
pfn = matchSource + 25;
pfn += 5 + *(int*)(pfn + 1);
}
// Find target
// 48 8B D0 48 8B CB E8 ?? ?? ?? ?? 90 4D 85 ?? 74 10 49 8B ?? 49 8B ?? 48 8B 40 10 E8 ?? ?? ?? ?? 90 49 8B CC
// xxxxxxxxxxxxxx nop
// E8 ?? ?? ?? ?? 48 8B D3 48 8B CE E8 ?? ?? ?? ?? BA B8 00 00 00 8D 4A E8 FF 15 ?? ?? ?? ?? 48 89 45 ??
//
gitextract_7jbw90k9/ ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ └── config.yml │ └── workflows/ │ └── build.yml ├── .gitignore ├── .gitmodules ├── BuildDependenciesDebug.bat ├── BuildDependenciesRelease.bat ├── CHANGELOG.md ├── ExplorerPatcher/ │ ├── ArchiveMenu.c │ ├── ArchiveMenu.h │ ├── ExplorerPatcher.rc │ ├── ExplorerPatcher.vcxproj │ ├── ExplorerPatcher.vcxproj.filters │ ├── HideExplorerSearchBar.c │ ├── HideExplorerSearchBar.h │ ├── ImmersiveColor.h │ ├── ImmersiveFlyouts.c │ ├── ImmersiveFlyouts.h │ ├── InputSwitch.cpp │ ├── InputSwitch.h │ ├── Localization.cpp │ ├── Localization.h │ ├── RefreshedStyles.xbf │ ├── SettingsMonitor.c │ ├── SettingsMonitor.h │ ├── ShellExperienceHostPatches.cpp │ ├── StartMenu.c │ ├── StartMenu.h │ ├── StartMenuSettings.cpp │ ├── StartupSound.cpp │ ├── StartupSound.h │ ├── Taskbar10.cpp │ ├── TaskbarCenter.cpp │ ├── TaskbarCenter.h │ ├── TwinUIPatches.cpp │ ├── def.h │ ├── dllmain.c │ ├── dxgi_imp.cpp │ ├── dxgi_imp.h │ ├── fmemopen.c │ ├── fmemopen.h │ ├── getline.c │ ├── getline.h │ ├── hooking.h │ ├── inc/ │ │ ├── ClassicWinRtForwardDecl.h │ │ ├── ContainerPolicies.h │ │ ├── NativeString.h │ │ ├── PopNoWilResultMacrosLogging.h │ │ ├── PushNoWilResultMacrosLogging.h │ │ ├── RefCountedObject.h │ │ ├── ResultUtils.h │ │ ├── SimpleArray.h │ │ ├── SimpleBoxer.h │ │ └── memsafe.h │ ├── lvt.c │ ├── lvt.h │ ├── osutility.h │ ├── packages.config │ ├── queryversion.h │ ├── resource.h │ ├── symbols.c │ ├── symbols.h │ ├── updates.cpp │ ├── updates.h │ ├── utility.c │ └── utility.h ├── ExplorerPatcher.sln ├── FUNDING.yml ├── LICENSE ├── README.md ├── debug.h ├── ep_extra/ │ ├── README.md │ ├── ep_extra.rc │ ├── ep_extra.vcxproj │ ├── ep_extra.vcxproj.filters │ ├── main.asm │ ├── resource.h │ └── worker.c ├── ep_extra_valinet.win7alttab/ │ ├── README.md │ ├── Resource.rc │ ├── ep_extra_valinet.win7alttab.vcxproj │ ├── ep_extra_valinet.win7alttab.vcxproj.filters │ ├── main.c │ └── resource.h ├── ep_generate_release_description/ │ ├── ep_generate_release_description.c │ ├── ep_generate_release_description.vcxproj │ └── ep_generate_release_description.vcxproj.filters ├── ep_generate_release_name/ │ ├── ep_generate_release_name.c │ ├── ep_generate_release_name.vcxproj │ ├── ep_generate_release_name.vcxproj.filters │ └── resource.h ├── ep_gui/ │ ├── GUI.c │ ├── GUI.h │ ├── dllmain.cpp │ ├── ep_gui.vcxproj │ ├── pch.cpp │ ├── pch.h │ └── resources/ │ ├── EPSettingsResources.h │ ├── EPSharedResources.h │ ├── ep_gui.rc │ ├── lang/ │ │ └── ep_gui.en-US.rc │ ├── resource.h │ ├── settings.reg │ └── settings10.reg ├── ep_setup/ │ ├── ep_setup.c │ ├── ep_setup.vcxproj │ ├── ep_setup.vcxproj.filters │ ├── resources/ │ │ ├── ep_setup.rc │ │ ├── ep_setup_debug.rc │ │ ├── files/ │ │ │ ├── Windows.UI.ShellCommon/ │ │ │ │ ├── Windows.UI.ShellCommon.pri │ │ │ │ └── pris/ │ │ │ │ ├── Windows.UI.ShellCommon.ar-SA.pri │ │ │ │ ├── Windows.UI.ShellCommon.bg-BG.pri │ │ │ │ ├── Windows.UI.ShellCommon.ca-ES.pri │ │ │ │ ├── Windows.UI.ShellCommon.cs-CZ.pri │ │ │ │ ├── Windows.UI.ShellCommon.da-DK.pri │ │ │ │ ├── Windows.UI.ShellCommon.de-DE.pri │ │ │ │ ├── Windows.UI.ShellCommon.el-GR.pri │ │ │ │ ├── Windows.UI.ShellCommon.en-GB.pri │ │ │ │ ├── Windows.UI.ShellCommon.en-US.pri │ │ │ │ ├── Windows.UI.ShellCommon.es-ES.pri │ │ │ │ ├── Windows.UI.ShellCommon.es-MX.pri │ │ │ │ ├── Windows.UI.ShellCommon.et-EE.pri │ │ │ │ ├── Windows.UI.ShellCommon.eu-ES.pri │ │ │ │ ├── Windows.UI.ShellCommon.fi-FI.pri │ │ │ │ ├── Windows.UI.ShellCommon.fr-CA.pri │ │ │ │ ├── Windows.UI.ShellCommon.fr-FR.pri │ │ │ │ ├── Windows.UI.ShellCommon.gl-ES.pri │ │ │ │ ├── Windows.UI.ShellCommon.he-IL.pri │ │ │ │ ├── Windows.UI.ShellCommon.hr-HR.pri │ │ │ │ ├── Windows.UI.ShellCommon.hu-HU.pri │ │ │ │ ├── Windows.UI.ShellCommon.id-ID.pri │ │ │ │ ├── Windows.UI.ShellCommon.it-IT.pri │ │ │ │ ├── Windows.UI.ShellCommon.ja-JP.pri │ │ │ │ ├── Windows.UI.ShellCommon.ko-KR.pri │ │ │ │ ├── Windows.UI.ShellCommon.lt-LT.pri │ │ │ │ ├── Windows.UI.ShellCommon.lv-LV.pri │ │ │ │ ├── Windows.UI.ShellCommon.nb-NO.pri │ │ │ │ ├── Windows.UI.ShellCommon.nl-NL.pri │ │ │ │ ├── Windows.UI.ShellCommon.pl-PL.pri │ │ │ │ ├── Windows.UI.ShellCommon.pt-BR.pri │ │ │ │ ├── Windows.UI.ShellCommon.pt-PT.pri │ │ │ │ ├── Windows.UI.ShellCommon.ro-RO.pri │ │ │ │ ├── Windows.UI.ShellCommon.ru-RU.pri │ │ │ │ ├── Windows.UI.ShellCommon.sk-SK.pri │ │ │ │ ├── Windows.UI.ShellCommon.sl-SI.pri │ │ │ │ ├── Windows.UI.ShellCommon.sr-Latn-RS.pri │ │ │ │ ├── Windows.UI.ShellCommon.sv-SE.pri │ │ │ │ ├── Windows.UI.ShellCommon.th-TH.pri │ │ │ │ ├── Windows.UI.ShellCommon.tr-TR.pri │ │ │ │ ├── Windows.UI.ShellCommon.uk-UA.pri │ │ │ │ ├── Windows.UI.ShellCommon.vi-VN.pri │ │ │ │ ├── Windows.UI.ShellCommon.zh-CN.pri │ │ │ │ └── Windows.UI.ShellCommon.zh-TW.pri │ │ │ └── pnidui/ │ │ │ ├── ar-SA/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── bg-BG/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── ca-ES/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── cs-CZ/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── da-DK/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── de-DE/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── el-GR/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── en-GB/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── en-US/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── es-ES/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── es-MX/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── et-EE/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── eu-ES/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── fi-FI/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── fr-CA/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── fr-FR/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── gl-ES/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── he-IL/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── hr-HR/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── hu-HU/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── id-ID/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── it-IT/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── ja-JP/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── ko-KR/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── lt-LT/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── lv-LV/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── nb-NO/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── nl-NL/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── pl-PL/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── pt-BR/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── pt-PT/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── ro-RO/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── ru-RU/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── sk-SK/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── sl-SI/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── sr-Latn-RS/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── sv-SE/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── th-TH/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── tr-TR/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── uk-UA/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── vi-VN/ │ │ │ │ └── pnidui.dll.mui │ │ │ ├── zh-CN/ │ │ │ │ └── pnidui.dll.mui │ │ │ └── zh-TW/ │ │ │ └── pnidui.dll.mui │ │ ├── lang/ │ │ │ └── ep_setup.en-US.rc │ │ └── resource.h │ ├── rijndael-alg-fst.c │ └── rijndael-alg-fst.h ├── ep_setup_patch/ │ ├── ep_setup_patch.c │ ├── ep_setup_patch.vcxproj │ └── ep_setup_patch.vcxproj.filters ├── ep_startmenu/ │ ├── ep_sm_forwards.h │ ├── ep_sm_main.c │ ├── ep_sm_main_cpp.cpp │ ├── ep_startmenu.vcxproj │ └── ep_startmenu.vcxproj.filters ├── ep_weather_host/ │ ├── ep_weather.c │ ├── ep_weather.h │ ├── ep_weather_error_html.h │ ├── ep_weather_factory.c │ ├── ep_weather_factory.h │ ├── ep_weather_host.c │ ├── ep_weather_host.h │ ├── ep_weather_host.rc │ ├── ep_weather_host.vcxproj │ ├── ep_weather_host.vcxproj.filters │ ├── ep_weather_provider_google_html.h │ ├── ep_weather_provider_google_script.h │ ├── ep_weather_utility.h │ ├── packages.config │ └── resource.h ├── ep_weather_host_stub/ │ ├── ep_weather_host.idl │ ├── ep_weather_host_stub.def │ ├── ep_weather_host_stub.vcxproj │ └── ep_weather_host_stub.vcxproj.filters └── version.h
SYMBOL INDEX (1199 symbols across 66 files)
FILE: ExplorerPatcher/ArchiveMenu.c
function DWORD (line 3) | DWORD ArchiveMenuThread(ArchiveMenuThreadParams* params)
function LRESULT (line 81) | LRESULT CALLBACK ArchiveMenuWndProc(
FILE: ExplorerPatcher/ArchiveMenu.h
type ArchiveMenuThreadParams (line 27) | typedef struct _ArchiveMenuThreadParams
FILE: ExplorerPatcher/HideExplorerSearchBar.c
function HWND (line 3) | HWND FindChildWindow(
function VOID (line 42) | VOID HideExplorerSearchBar(HWND hWnd)
function LRESULT (line 97) | LRESULT CALLBACK HideExplorerSearchBarSubClass(
FILE: ExplorerPatcher/ImmersiveColor.h
function class (line 7) | class CImmersiveColor
function class (line 32) | class CImmersiveColorImpl
FILE: ExplorerPatcher/ImmersiveFlyouts.c
function InvokeActionCenter (line 3) | void InvokeActionCenter()
function HRESULT (line 59) | HRESULT InvokeFlyoutRect(BOOL bAction, DWORD dwWhich, __x_ABI_CWindows_C...
FILE: ExplorerPatcher/ImmersiveFlyouts.h
type interface (line 27) | typedef interface IExperienceManager
type IExperienceManagerVtbl (line 29) | typedef struct IExperienceManagerVtbl // : IInspectable
function interface (line 68) | interface IExperienceManager
type interface (line 78) | typedef interface IShellExperienceManagerFactory
type IShellExperienceManagerFactoryVtbl (line 80) | typedef struct IShellExperienceManagerFactoryVtbl // : IInspectable
function interface (line 117) | interface IShellExperienceManagerFactory
type interface (line 132) | typedef interface IActionCenterOrControlCenterExperienceManager
type IActionCenterOrControlCenterExperienceManagerVtbl (line 134) | typedef struct IActionCenterOrControlCenterExperienceManagerVtbl // : II...
function interface (line 181) | interface IActionCenterOrControlCenterExperienceManager
function HRESULT (line 197) | inline HRESULT InvokeFlyout(BOOL bAction, DWORD dwWhich)
FILE: ExplorerPatcher/InputSwitch.cpp
function HRESULT (line 17) | HRESULT CInputSwitchControl_ModifyAnchor(UINT dwNumberOfProfiles, RECT* ...
class CInputSwitchControlProxy (line 83) | class CInputSwitchControlProxy : public Microsoft::WRL::RuntimeClass<Mic...
method CInputSwitchControlProxy (line 86) | CInputSwitchControlProxy()
method HRESULT (line 91) | HRESULT RuntimeClassInitialize(IInputSwitchControl* original)
method STDMETHODIMP (line 97) | STDMETHODIMP Init(INPUT_SWITCH_IDL_CLIENT_TYPE type) override
method STDMETHODIMP (line 103) | STDMETHODIMP ShowInputSwitch(const RECT* rect) override
method STDMETHODIMP (line 116) | STDMETHODIMP SetCallback(IInputSwitchCallback* callback) override { re...
method STDMETHODIMP (line 117) | STDMETHODIMP GetProfileCount(UINT* count, BOOL* bOutImePresent) overri...
method STDMETHODIMP (line 118) | STDMETHODIMP GetCurrentProfile(INPUT_SWITCH_IDL_PROFILE_DATA* data) ov...
method STDMETHODIMP (line 119) | STDMETHODIMP RegisterHotkeys() override { return m_original->RegisterH...
method STDMETHODIMP (line 120) | STDMETHODIMP ClickImeModeItem(INPUT_SWITCH_IDL_IME_CLICK_TYPE type, PO...
method STDMETHODIMP (line 121) | STDMETHODIMP ForceHide() override { return m_original->ForceHide(); }
method STDMETHODIMP (line 122) | STDMETHODIMP ShowTouchKeyboardInputSwitch(const RECT* rect, INPUT_SWIT...
method STDMETHODIMP (line 123) | STDMETHODIMP GetContextFlags(DWORD* flags) override { return m_origina...
method STDMETHODIMP (line 124) | STDMETHODIMP SetContextOverrideMode(INPUT_SWITCH_IDL_CFOM mode) overri...
method STDMETHODIMP (line 125) | STDMETHODIMP GetCurrentImeModeItem(INPUT_SWITCH_IDL_IME_MODE_ITEM_DATA...
method STDMETHODIMP (line 126) | STDMETHODIMP ActivateInputProfile(const WCHAR* profile) override { ret...
method STDMETHODIMP (line 127) | STDMETHODIMP SetUserSid(const WCHAR* sid) override { return m_original...
function HRESULT (line 134) | HRESULT CInputSwitchControlProxy_CreateInstance(IInputSwitchControl* ori...
class CInputSwitchControlProxySV2 (line 141) | class CInputSwitchControlProxySV2 : public Microsoft::WRL::RuntimeClass<...
method CInputSwitchControlProxySV2 (line 144) | CInputSwitchControlProxySV2()
method HRESULT (line 149) | HRESULT RuntimeClassInitialize(IInputSwitchControlSV2* original)
method STDMETHODIMP (line 155) | STDMETHODIMP Init(INPUT_SWITCH_IDL_CLIENT_TYPE type) override
method STDMETHODIMP (line 161) | STDMETHODIMP ShowInputSwitch(const RECT* rect) override
method STDMETHODIMP (line 174) | STDMETHODIMP SetCallback(IInputSwitchCallback* callback) override { re...
method STDMETHODIMP (line 175) | STDMETHODIMP GetProfileCount(UINT* count, BOOL* bOutImePresent) overri...
method STDMETHODIMP (line 176) | STDMETHODIMP GetCurrentProfile(INPUT_SWITCH_IDL_PROFILE_DATA* data) ov...
method STDMETHODIMP (line 177) | STDMETHODIMP RegisterHotkeys() override { return m_original->RegisterH...
method STDMETHODIMP (line 178) | STDMETHODIMP ClickImeModeItem(INPUT_SWITCH_IDL_IME_CLICK_TYPE type, PO...
method STDMETHODIMP (line 179) | STDMETHODIMP ClickImeModeItemWithAnchor(INPUT_SWITCH_IDL_IME_CLICK_TYP...
method STDMETHODIMP (line 180) | STDMETHODIMP ForceHide() override { return m_original->ForceHide(); }
method STDMETHODIMP (line 181) | STDMETHODIMP ShowTouchKeyboardInputSwitch(const RECT* rect, INPUT_SWIT...
method STDMETHODIMP (line 182) | STDMETHODIMP GetContextFlags(DWORD* flags) override { return m_origina...
method STDMETHODIMP (line 183) | STDMETHODIMP SetContextOverrideMode(INPUT_SWITCH_IDL_CFOM mode) overri...
method STDMETHODIMP (line 184) | STDMETHODIMP GetCurrentImeModeItem(INPUT_SWITCH_IDL_IME_MODE_ITEM_DATA...
method STDMETHODIMP (line 185) | STDMETHODIMP ActivateInputProfile(const WCHAR* profile) override { ret...
method STDMETHODIMP (line 186) | STDMETHODIMP SetUserSid(const WCHAR* sid) override { return m_original...
function HRESULT (line 193) | HRESULT CInputSwitchControlProxySV2_CreateInstance(IInputSwitchControlSV...
FILE: ExplorerPatcher/InputSwitch.h
type INPUT_SWITCH_IDL_CLIENT_TYPE (line 8) | typedef enum __MIDL___MIDL_itf_inputswitchserver_0000_0000_0001
type INPUT_SWITCH_IDL_PROFILE_DATA (line 19) | typedef struct __MIDL___MIDL_itf_inputswitchserver_0000_0000_0002
type INPUT_SWITCH_IDL_IME_MODE_ITEM_DATA (line 24) | typedef struct __MIDL___MIDL_itf_inputswitchserver_0000_0000_0003
type INPUT_SWITCH_IDL_IME_CLICK_TYPE (line 34) | typedef enum __MIDL___MIDL_itf_inputswitchserver_0000_0000_0004
type INPUT_SWITCH_IDL_MODALITY (line 41) | typedef enum __MIDL___MIDL_itf_inputswitchserver_0000_0000_0005
type INPUT_SWITCH_IDL_ALIGNMENT (line 53) | typedef enum __MIDL___MIDL_itf_inputswitchserver_0000_0000_0006
type INPUT_SWITCH_IDL_CFOM (line 60) | typedef enum __MIDL___MIDL_itf_inputswitchserver_0000_0000_0008
type interface (line 89) | typedef interface IInputSwitchControl
type interface (line 113) | typedef interface IInputSwitchControlSV2
FILE: ExplorerPatcher/Localization.cpp
function EP_L10N_Language (line 11) | EP_L10N_Language LangIDToEPLanguage(LANGID wLanguage)
function BOOL (line 20) | BOOL EP_L10N_ApplyPreferredLanguageForCurrentThread()
function BOOL (line 65) | BOOL EP_L10N_GetCurrentUserLanguage(wchar_t* wszLanguage, int cch)
function BOOL (line 90) | BOOL EP_L10N_GetCurrentThreadLanguage(wchar_t* wszLanguage, int cch)
function EP_L10N_EnumerateLanguages (line 115) | void EP_L10N_EnumerateLanguages(HMODULE hModule, LPCWSTR lpType, LPCWSTR...
FILE: ExplorerPatcher/Localization.h
type EP_L10N_Language (line 10) | typedef struct EP_L10N_Language
FILE: ExplorerPatcher/SettingsMonitor.c
function DWORD (line 3) | DWORD WINAPI MonitorSettings(SettingsChangeParameters* params)
FILE: ExplorerPatcher/SettingsMonitor.h
type Setting (line 8) | typedef struct _Setting
type SettingsChangeParameters (line 17) | typedef struct _SettingsChangeParameters
FILE: ExplorerPatcher/ShellExperienceHostPatches.cpp
function InjectShellExperienceHost (line 32) | void InjectShellExperienceHost()
function BOOL (line 165) | BOOL WINAPI SEH_GetProductInfo(DWORD dwOSMajorVersion, DWORD dwOSMinorVe...
function HandleLoadedQuickActions (line 174) | void HandleLoadedQuickActions(HMODULE hModule)
function HRESULT (line 316) | HRESULT WINAPI NetworkUX_WindowsCreateStringReference(
function HRESULT (line 336) | HRESULT NetworkUX_PatchResourceDictionary()
function NetworkUX_App_LoadResourceDictionariesHook (line 438) | void NetworkUX_App_LoadResourceDictionariesHook()
function HandleLoadedNetworkUX (line 448) | void HandleLoadedNetworkUX(HMODULE hModule)
function HRESULT (line 509) | HRESULT WINAPI SEH_GetActivationFactoryByPCWSTR(PCWSTR activatableClassI...
function InjectShellExperienceHostFor22H2OrHigher (line 528) | void InjectShellExperienceHostFor22H2OrHigher()
FILE: ExplorerPatcher/StartMenu.c
function OpenStartOnMonitor (line 3) | void OpenStartOnMonitor(HMONITOR monitor)
function LRESULT (line 69) | LRESULT CALLBACK OpenStartOnCurentMonitorThreadHook(
function DWORD (line 141) | DWORD OpenStartOnCurentMonitorThread(OpenStartOnCurentMonitorThreadParam...
function DWORD (line 185) | DWORD OpenStartAtLogonThread(OpenStartAtLogonThreadParams* unused)
function DWORD (line 232) | DWORD WINAPI HookStartMenu(HookStartMenuParams* params)
function HRESULT (line 470) | static HRESULT STDMETHODCALLTYPE WindowsUdk_UI_Shell_ITaskbarSettings_No...
function ULONG (line 475) | static ULONG STDMETHODCALLTYPE WindowsUdk_UI_Shell_ITaskbarSettings_AddR...
function HRESULT (line 480) | static HRESULT STDMETHODCALLTYPE WindowsUdk_UI_Shell_ITaskbarSettings6_G...
type WindowsUdk_UI_Shell_ITaskbarSettings6 (line 532) | typedef struct instanceof_WindowsUdk_UI_Shell_ITaskbarSettings6 // : IIn...
function HRESULT (line 538) | static HRESULT STDMETHODCALLTYPE WindowsUdk_UI_Shell_ITaskbarSettings_Qu...
function HRESULT (line 547) | static HRESULT STDMETHODCALLTYPE WindowsUdk_UI_Shell_ITaskbarSettings_Ge...
function HRESULT (line 556) | static HRESULT STDMETHODCALLTYPE WindowsUdk_UI_Shell_ITaskbarSettings_Ge...
function HRESULT (line 565) | static HRESULT STDMETHODCALLTYPE WindowsUdk_UI_Shell_ITaskbarSettings_Ge...
function HRESULT (line 574) | static HRESULT STDMETHODCALLTYPE WindowsUdk_UI_Shell_ITaskbarSettings_Ge...
function HRESULT (line 583) | static HRESULT STDMETHODCALLTYPE WindowsUdk_UI_Shell_ITaskbarSettings_Ge...
type WindowsUdk_UI_Shell_ITaskbarSettings (line 635) | typedef struct instanceof_WindowsUdk_UI_Shell_ITaskbarSettings // : IIns...
function FindTokenByHMONITOR (line 641) | static unsigned __int64 FindTokenByHMONITOR(const StartMenuPositioningDa...
function BOOL (line 653) | BOOL NeedsRo_PositionStartMenuForMonitor(
function DWORD (line 818) | DWORD GetStartMenuPosition(t_SHRegGetValueFromHKCUHKLM SHRegGetValueFrom...
FILE: ExplorerPatcher/StartMenu.h
type interface (line 49) | typedef interface IImmersiveMonitorService
type IImmersiveMonitorServiceVtbl (line 51) | typedef struct IImmersiveMonitorServiceVtbl
function interface (line 117) | interface IImmersiveMonitorService
type interface (line 122) | typedef interface IImmersiveLauncher10RS
type IImmersiveLauncher10RSVtbl (line 124) | typedef struct IImmersiveLauncher10RSVtbl
function interface (line 175) | interface IImmersiveLauncher10RS
type DWORD (line 190) | typedef DWORD OpenStartOnCurentMonitorThreadParams;
type DWORD (line 193) | typedef DWORD OpenStartAtLogonThreadParams;
type HookStartMenuParams (line 196) | typedef struct _HookStartMenuParams
type interface (line 205) | typedef interface WindowsUdk_UI_Shell_TaskbarLayoutStatics
type interface (line 206) | typedef interface WindowsUdk_UI_Shell_TaskbarLayoutManager
type WindowsUdk_UI_Shell_TaskbarLayoutStaticsVtbl (line 214) | typedef struct WindowsUdk_UI_Shell_TaskbarLayoutStaticsVtbl // : IInspec...
function interface (line 250) | interface WindowsUdk_UI_Shell_TaskbarLayoutStatics // : IInspectable
type WindowsUdk_UI_Shell_TaskbarLayoutManagerVtbl (line 268) | typedef struct WindowsUdk_UI_Shell_TaskbarLayoutManagerVtbl // : IInspec...
function interface (line 335) | interface WindowsUdk_UI_Shell_TaskbarLayoutManager // : IInspectable
type MonitorListEntry (line 340) | typedef struct _MonitorListEntry
type StartMenuPositioningData (line 346) | typedef struct _StartMenuPositioningData
FILE: ExplorerPatcher/StartMenuSettings.cpp
function EPWilLogCallback (line 15) | static void EPWilLogCallback(wil::FailureInfo const &failure) noexcept
function InitializeWilLogCallback (line 25) | void InitializeWilLogCallback()
function GlobalStartData_GetPlacesFromRegistry (line 30) | static std::vector<winrt::guid> GlobalStartData_GetPlacesFromRegistry()
type ABI::WindowsInternal::Shell::CDSProperties (line 63) | namespace ABI::WindowsInternal::Shell::CDSProperties
type ExtendedReconciliationRequirements (line 104) | enum ExtendedReconciliationRequirements
function BOOL (line 109) | BOOL NeedsRo_SyncSettingsFromRegToCDS()
type ABI::WindowsUdk::ApplicationModel::AppExtensions (line 168) | namespace ABI::WindowsUdk::ApplicationModel::AppExtensions
type AppExtensionOptions (line 170) | enum AppExtensionOptions {}
class DummyExtensionFactory (line 184) | class DummyExtensionFactory : ABI::WindowsUdk::ApplicationModel::AppExte...
method HRESULT (line 187) | HRESULT QueryInterface(REFIID riid, void** ppvObject) override { retur...
method ULONG (line 188) | ULONG AddRef() override { return 1; }
method ULONG (line 189) | ULONG Release() override { return 1; }
method HRESULT (line 190) | HRESULT GetIids(ULONG* iidCount, IID** iids) override { return E_NOTIM...
method HRESULT (line 191) | HRESULT GetRuntimeClassName(HSTRING* className) override { return E_NO...
method HRESULT (line 192) | HRESULT GetTrustLevel(TrustLevel* trustLevel) override { return E_NOTI...
method HRESULT (line 195) | HRESULT IsExtensionAvailable(HSTRING, HSTRING, bool*) override { retur...
method HRESULT (line 196) | HRESULT IsExtensionAvailableWithOptions(HSTRING, HSTRING, ABI::Windows...
method HRESULT (line 197) | HRESULT GetInstance(HSTRING, HSTRING, IInspectable**) override { retur...
method HRESULT (line 198) | HRESULT GetInstanceWithOptions(HSTRING, HSTRING, ABI::WindowsUdk::Appl...
method HRESULT (line 199) | HRESULT GetFactory(HSTRING, HSTRING, IInspectable**) override { return...
method HRESULT (line 200) | HRESULT GetFactoryWithOptions(HSTRING, HSTRING, ABI::WindowsUdk::Appli...
function HRESULT (line 205) | HRESULT AppResolver_StartTileData_RoGetActivationFactory(HSTRING activat...
type ABI::Windows::Internal::ApplicationModel (line 215) | namespace ABI::Windows::Internal::ApplicationModel
type WindowManagement (line 217) | namespace WindowManagement
type WindowId (line 219) | struct WindowId
function HRESULT (line 670) | HRESULT StartTileData_Windows__Internal__ApplicationModel__StartPinnable...
function HRESULT (line 738) | HRESULT StartTileData_Windows__Internal__ApplicationModel__StartPinnable...
function HRESULT (line 786) | HRESULT StartTileData_Windows__Internal__ApplicationModel__StartPinnable...
function HRESULT (line 830) | HRESULT PatchStartPinnableSurface(HMODULE hModule, ABI::Windows::Interna...
type VerbGlyphs::SegoeMDL2Assets (line 903) | namespace VerbGlyphs::SegoeMDL2Assets
class EPStartPinUnpinTileVerb (line 909) | class EPStartPinUnpinTileVerb : public RuntimeClass<RuntimeClassFlags<Wi...
method EPStartPinUnpinTileVerb (line 912) | EPStartPinUnpinTileVerb() :
method HRESULT (line 917) | HRESULT RuntimeClassInitialize(
method STDMETHODIMP (line 976) | STDMETHODIMP get_VerbProviderId(HSTRING* out) override { RETURN_HR(m_v...
method STDMETHODIMP (line 977) | STDMETHODIMP get_GroupPath(HSTRING* out) override { RETURN_HR(m_groupP...
method STDMETHODIMP (line 978) | STDMETHODIMP get_CanonicalName(HSTRING* out) override { RETURN_HR(m_ca...
method STDMETHODIMP (line 979) | STDMETHODIMP get_DisplayName(HSTRING* out) override { RETURN_HR(m_disp...
method STDMETHODIMP (line 980) | STDMETHODIMP get_Glyph(HSTRING* out) override { RETURN_HR(m_glyph.Copy...
method STDMETHODIMP (line 981) | STDMETHODIMP get_GlyphFontFamily(HSTRING* out) override { RETURN_HR(m_...
method STDMETHODIMP (line 982) | STDMETHODIMP get_AccessKey(HSTRING* out) override { RETURN_HR(m_access...
method STDMETHODIMP (line 983) | STDMETHODIMP get_ShortcutText(HSTRING* out) override { RETURN_HR(m_sho...
method STDMETHODIMP (line 984) | STDMETHODIMP get_Flags(ABI::WindowsInternal::Shell::UnifiedTile::TileV...
method STDMETHODIMP (line 986) | STDMETHODIMP Execute(ABI::WindowsInternal::Shell::UnifiedTile::IVerbEx...
method STDMETHODIMP (line 1028) | STDMETHODIMP ExecuteAsync(ABI::WindowsInternal::Shell::UnifiedTile::IV...
method InternalExecuteAsync (line 1035) | winrt::Windows::Foundation::IAsyncOperation<bool> InternalExecuteAsync...
type ABI::Windows::Foundation::Collections (line 1055) | namespace ABI::Windows::Foundation::Collections
function HRESULT (line 1071) | HRESULT WindowsInternal__Shell__UnifiedTile__Private__UnifiedTilePinUnpi...
function HRESULT (line 1174) | HRESULT PatchUnifiedTilePinUnpinProvider(HMODULE hModule)
function PatchStartTileDataFurther (line 1275) | void PatchStartTileDataFurther(HMODULE hModule, BOOL bSMEH)
type CCacheShortcut (line 1288) | struct CCacheShortcut
method wchar_t (line 1290) | const wchar_t* GetAppID(const void* a2) const
function HRESULT (line 1301) | HRESULT AppResolver_CAppResolverCacheBuilder__AddUserPinnedShortcutToSta...
FILE: ExplorerPatcher/StartupSound.cpp
function BOOL (line 16) | BOOL AreLogonLogoffShutdownSoundsEnabled()
function DWORD (line 28) | DWORD GetLastErrorError()
function HRESULT (line 34) | HRESULT HRESULTFromLastErrorError()
function DWORD (line 43) | DWORD PlaySoundFileThreadProc(LPVOID pvData)
function HRESULT (line 50) | HRESULT PlaySoundFile(HANDLE* phThread, const WCHAR* pszPath)
type LOGONOFFSOUNDTYPE (line 111) | enum LOGONOFFSOUNDTYPE
function HRESULT (line 118) | HRESULT PlayLogonLogoffSound(HANDLE* phThread, LOGONOFFSOUNDTYPE type)
function IsSessionLocked (line 149) | bool IsSessionLocked()
function HRESULT (line 177) | HRESULT CLogonSound_PlayIfNecessaryHook(void* _this, LOGON_SOUND_CLIENT ...
function HRESULT (line 188) | HRESULT HookLogonSound()
function LRESULT (line 206) | LRESULT SHDefWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
class CSoundWnd (line 220) | class CSoundWnd
function BOOL (line 248) | BOOL CSoundWnd::Init()
function DWORD (line 255) | DWORD CSoundWnd::Release()
function LRESULT (line 263) | LRESULT CSoundWnd::s_WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM...
function LRESULT (line 272) | LRESULT CSoundWnd::v_WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM...
function DWORD (line 323) | DWORD CSoundWnd::s_CreateWindow(void* pvParam)
function DWORD (line 331) | DWORD CSoundWnd::s_ThreadProc(void* pvParam)
function BOOL (line 347) | BOOL InitSoundWindow()
function TermSoundWindow (line 359) | void TermSoundWindow()
function HRESULT (line 368) | HRESULT SHPlaySound(LPCWSTR pszSound, DWORD dwFlags)
FILE: ExplorerPatcher/StartupSound.h
type LOGON_SOUND_CLIENT (line 13) | enum LOGON_SOUND_CLIENT
FILE: ExplorerPatcher/Taskbar10.cpp
class EPTrayUIComponent (line 35) | class EPTrayUIComponent : public Microsoft::WRL::RuntimeClass<Microsoft:...
method STDMETHODIMP (line 38) | STDMETHODIMP InitializeWithTray(ITrayUIHost* host, ITrayUI** result) o...
function HRESULT (line 55) | HRESULT EPTrayUIComponent_CreateInstance(REFIID riid, void** ppvObject)
type WINDOWCOMPOSITIONATTRIB (line 64) | enum WINDOWCOMPOSITIONATTRIB
type tagWINDOWCOMPOSITIONATTRIBDATA (line 102) | struct tagWINDOWCOMPOSITIONATTRIBDATA
type ACCENT_STATE (line 109) | enum ACCENT_STATE
type ACCENT_POLICY (line 120) | struct ACCENT_POLICY
type ABI::WindowsUdk::UI::Themes (line 128) | namespace ABI::WindowsUdk::UI::Themes
type VisualTheme (line 130) | enum class VisualTheme
type TaskbarTheme (line 147) | struct TaskbarTheme
method IsHighContrast (line 153) | bool IsHighContrast() const
method IsDark (line 159) | bool IsDark() const
type D3D_FEATURE_LEVEL (line 166) | enum D3D_FEATURE_LEVEL : int
type COMPOSITION_CAPABILITY_INFO (line 168) | struct COMPOSITION_CAPABILITY_INFO
function NTSTATUS (line 179) | inline NTSTATUS NtDCompositionGetFrameStatistics(DCOMPOSITION_FRAME_STAT...
function ShouldApplyBlur (line 191) | bool ShouldApplyBlur()
function TaskbarTheme (line 198) | TaskbarTheme GetTaskbarTheme()
method IsHighContrast (line 153) | bool IsHighContrast() const
method IsDark (line 159) | bool IsDark() const
function DWORD (line 240) | DWORD GetTaskbarColor()
function UpdateWindowAccentProperties_PatchAttribData (line 261) | void UpdateWindowAccentProperties_PatchAttribData(WINDOWCOMPOSITIONATTRI...
FILE: ExplorerPatcher/TaskbarCenter.cpp
function HRESULT (line 24) | HRESULT TaskbarCenter_Center(HWND hWnd, HWND hWndTaskbar, RECT rc, BOOL ...
function BOOL (line 119) | BOOL TaskbarCenter_GetClientRectHook(HWND hWnd, LPRECT lpRect)
function BOOL (line 475) | BOOL TaskbarCenter_SHWindowsPolicy(REFIID riid)
FILE: ExplorerPatcher/TaskbarCenter.h
function BOOL (line 73) | inline BOOL TaskbarCenter_IsTaskbarHorizontal(HWND hWnd)
function BOOL (line 100) | inline BOOL TaskbarCenter_ShouldCenter(DWORD dwSetting)
function BOOL (line 105) | inline BOOL TaskbarCenter_ShouldStartBeCentered(DWORD dwSetting)
function BOOL (line 110) | inline BOOL TaskbarCenter_ShouldLeftAlignWhenSpaceConstrained(DWORD dwSe...
FILE: ExplorerPatcher/TwinUIPatches.cpp
type ContextMenuPaddingType (line 29) | enum ContextMenuPaddingType
type DPIToPPIHelpers (line 39) | namespace DPIToPPIHelpers
type ScaleType (line 41) | enum class ScaleType
type ScaleModifier (line 47) | enum class ScaleModifier
type ContextMenuRenderingData (line 54) | struct ContextMenuRenderingData
type ImmersiveContextMenuOptions (line 95) | enum ImmersiveContextMenuOptions
type EDGEUI_COMPONENT (line 112) | enum EDGEUI_COMPONENT
type DISMISSED_UI_FLAGS (line 125) | enum DISMISSED_UI_FLAGS
type EDGEUI_TRAYSTUCKPLACE (line 131) | enum EDGEUI_TRAYSTUCKPLACE
type IMMERSIVE_MONITOR_FILTER_FLAGS (line 164) | enum IMMERSIVE_MONITOR_FILTER_FLAGS
type IMMERSIVE_MONITOR_MOVE_DIRECTION (line 192) | enum IMMERSIVE_MONITOR_MOVE_DIRECTION
type IMMERSIVELAUNCHERSHOWMETHOD (line 220) | enum IMMERSIVELAUNCHERSHOWMETHOD
type IMMERSIVELAUNCHERSHOWFLAGS (line 232) | enum IMMERSIVELAUNCHERSHOWFLAGS
type IMMERSIVELAUNCHERDISMISSMETHOD (line 240) | enum IMMERSIVELAUNCHERDISMISSMETHOD
function BOOL (line 277) | inline BOOL IsBiDiLocale(LCID locale)
function BOOL (line 289) | BOOL Mirror_IsThreadRTL()
type ZBID (line 294) | enum ZBID : int
type ACCENT_STATE (line 295) | enum ACCENT_STATE : int
class CSingleViewShellExperience (line 297) | class CSingleViewShellExperience
type Border (line 304) | enum class Border
class SingleViewShellExperiencePersonality (line 299) | class SingleViewShellExperiencePersonality
class CSingleViewShellExperience (line 301) | class CSingleViewShellExperience
type Border (line 304) | enum class Border
class SingleViewShellExperiencePersonality (line 333) | class SingleViewShellExperiencePersonality
function HRESULT (line 351) | HRESULT CSingleViewShellExperience::SetPosition(const RECT* rect)
type ExperienceManagerUtils (line 356) | namespace ExperienceManagerUtils
function ScaleByDPI (line 358) | void ScaleByDPI(const ABI::Windows::Foundation::Size* size, int dpi, i...
class DECLSPEC_UUID (line 425) | class DECLSPEC_UUID
type LTCMITEMFLAGS (line 428) | enum LTCMITEMFLAGS
type LauncherTipMenuCommand (line 445) | struct LauncherTipMenuCommand
type LauncherTipShutdownMenuCommand (line 457) | struct LauncherTipShutdownMenuCommand
function HRESULT (line 476) | HRESULT STDMETHODCALLTYPE CLauncherTipContextMenu_CreateInstance_IClassF...
function LRESULT (line 504) | LRESULT CALLBACK CLauncherTipContextMenu_WndProc(HWND hWnd, UINT uMsg, W...
type ShowLauncherTipContextMenuParameters (line 557) | struct ShowLauncherTipContextMenuParameters
method ShowLauncherTipContextMenuParameters (line 564) | ShowLauncherTipContextMenuParameters(ILauncherTipContextMenu* _this, P...
function DWORD (line 573) | DWORD ShowLauncherTipContextMenu(LPVOID lpParams)
function HRESULT (line 848) | HRESULT CLauncherTipContextMenu_ShowLauncherTipContextMenuHook(ILauncher...
function ToggleLauncherTipContextMenu (line 958) | void ToggleLauncherTipContextMenu()
function LSTATUS (line 995) | LSTATUS twinuipcshell_RegGetValueW(
function HRESULT (line 1034) | HRESULT winrt_Windows_Internal_Shell_implementation_MeetAndChatManager_O...
function INT64 (line 1057) | INT64 twinui_pcshell_IsUndockedAssetAvailableHook(INT a1, INT64 a2, INT6...
function INT64 (line 1080) | INT64 twinui_pcshell_CMultitaskingViewManager__CreateXamlMTVHostHook(INT...
function HRESULT (line 1093) | HRESULT twinui_pcshell_PenMenuSystemTrayManager__GetDynamicSystemTrayHei...
function PBYTE (line 1114) | inline PBYTE GetTargetOfJzBeforeMe(PBYTE anchor)
function BOOL (line 1127) | BOOL Moment2PatchActionCenter(HMODULE hTwinuiPcshell, PBYTE pSearchBegin...
function BOOL (line 1205) | BOOL Moment2PatchControlCenter(HMODULE hTwinuiPcshell, PBYTE pSearchBegi...
function BOOL (line 1269) | BOOL Moment2PatchToastCenter(HMODULE hTwinuiPcshell, PBYTE pSearchBegin,...
function BOOL (line 1359) | BOOL Moment2PatchTaskView(HMODULE hTwinuiPcshell, PBYTE pSearchBegin, si...
function HardwareConfirmatorShellcode (line 1447) | void WINAPI HardwareConfirmatorShellcode(PBYTE pCoroInstance)
function BOOL (line 1488) | BOOL Moment2PatchHardwareConfirmator(HMODULE hHardwareConfirmator, PBYTE...
function HRESULT (line 1600) | HRESULT CStartExperienceManager_GetMonitorInformationHook(void* _this, C...
type DWMTRANSITION_TARGET (line 1671) | enum DWMTRANSITION_TARGET
function HRESULT (line 1689) | HRESULT CStartExperienceManager_OnViewUncloakingHook(void* eventHandler,...
function HRESULT (line 1783) | HRESULT CStartExperienceManager_OnViewUncloakedHook(void* eventHandler, ...
function HRESULT (line 1796) | HRESULT CStartExperienceManager_OnViewCloakingHook(void* eventHandler, C...
function HRESULT (line 1832) | HRESULT CStartExperienceManager_OnViewHiddenHook(void* eventHandler, CSi...
function BOOL (line 1845) | BOOL FixStartMenuAnimation(HMODULE hTwinuiPcshell, PBYTE pSearchBegin, s...
class RoVariant (line 2507) | class RoVariant
type States (line 2509) | enum States
method StateHasRefcount (line 2517) | static bool StateHasRefcount(HRESULT hrState)
class Accessor (line 2522) | class Accessor
method HRESULT (line 2532) | HRESULT VerifyPV() const
method Accessor (line 2542) | Accessor(IInspectable* pI, HRESULT hr) : _pI(pI), _hrState(hr) {}
method Accessor (line 2543) | Accessor* operator->() { return this; }
method HRESULT (line 2578) | HRESULT GetInspectable(IInspectable** value) const
class OutRef (line 2635) | class OutRef
method OutRef (line 2641) | OutRef(RoVariant* pOwner) : _pOwner(pOwner), _pI(nullptr) {}
method RoVariant (line 2651) | RoVariant() = default;
method RoVariant (line 2657) | RoVariant(IInspectable* pI, bool fAddRefInspectable, bool attach)
method RoVariant (line 2693) | RoVariant(IInspectable* pI, bool attach)
method RoVariant (line 2707) | RoVariant& operator=(RoVariant other)
method Swap (line 2713) | void Swap(RoVariant& other)
method IInspectable (line 2725) | IInspectable* Get() const { return _pI; }
method Attach (line 2729) | void Attach(IInspectable* pI)
method Accessor (line 2735) | Accessor operator*() const { return Accessor(_pI, _hrState); }
method HRESULT (line 2532) | HRESULT VerifyPV() const
method Accessor (line 2542) | Accessor(IInspectable* pI, HRESULT hr) : _pI(pI), _hrState(hr) {}
method Accessor (line 2543) | Accessor* operator->() { return this; }
method HRESULT (line 2578) | HRESULT GetInspectable(IInspectable** value) const
method Accessor (line 2736) | Accessor operator->() const { return Accessor(_pI, _hrState); }
method HRESULT (line 2532) | HRESULT VerifyPV() const
method Accessor (line 2542) | Accessor(IInspectable* pI, HRESULT hr) : _pI(pI), _hrState(hr) {}
method Accessor (line 2543) | Accessor* operator->() { return this; }
method HRESULT (line 2578) | HRESULT GetInspectable(IInspectable** value) const
method OutRef (line 2737) | OutRef operator&() { return ReleaseAndGetAddressOf(); }
method OutRef (line 2641) | OutRef(RoVariant* pOwner) : _pOwner(pOwner), _pI(nullptr) {}
type USE_INSTEAD_ReleaseAndGetAddressOf (line 2739) | struct USE_INSTEAD_ReleaseAndGetAddressOf
method USE_INSTEAD_ReleaseAndGetAddressOf (line 2743) | USE_INSTEAD_ReleaseAndGetAddressOf GetAddressOf() { return USE_INSTEAD...
method OutRef (line 2744) | OutRef ReleaseAndGetAddressOf() { return OutRef(this); }
method OutRef (line 2641) | OutRef(RoVariant* pOwner) : _pOwner(pOwner), _pI(nullptr) {}
method RoVariant (line 2747) | static RoVariant Wrap(IInspectable* pI) { return RoVariant(pI, false, ...
type ABI::Windows::UI::Xaml (line 2752) | namespace ABI::Windows::UI::Xaml
type HorizontalAlignment (line 2754) | enum HorizontalAlignment
type VerticalAlignment (line 2762) | enum VerticalAlignment
function HRESULT (line 2776) | HRESULT CJumpViewExperienceManager_CalcWindowPosition(
function HRESULT (line 2862) | HRESULT CJumpViewExperienceManager_GetMonitorInformation(void* _this, PO...
function HRESULT (line 2888) | HRESULT CJumpViewExperienceManager_EnsureWindowPositionHook(void* _this,...
function BOOL (line 2946) | BOOL FixJumpViewPositioning(HMODULE hTwinuiPcshell, PBYTE pSearchBegin, ...
function TryToFindTwinuiPCShellOffsets (line 3142) | void TryToFindTwinuiPCShellOffsets(DWORD* pOffsets)
function RunTwinUIPCShellPatches (line 3512) | void RunTwinUIPCShellPatches(symbols_addr* symbols_PTRS)
FILE: ExplorerPatcher/dllmain.c
type OrbInfo (line 166) | typedef struct _OrbInfo
function HWND (line 239) | HWND GetMonitorInfoFromPointForTaskbarFlyoutActivation(POINT ptCursor, D...
function POINT (line 290) | POINT GetDefaultWinXPosition(BOOL bUseRcWork, BOOL* lpBottom, BOOL* lpRi...
function BOOL (line 411) | BOOL TerminateShellExperienceHost()
function DWORD (line 467) | DWORD CheckForegroundThread(DWORD dwMode)
function LaunchNetworkTargets (line 506) | void LaunchNetworkTargets(DWORD dwTarget)
function FixUpCenteredTaskbar (line 591) | void FixUpCenteredTaskbar()
function LRESULT (line 623) | LRESULT CALLBACK EP_Service_Window_WndProc(
function DWORD (line 667) | DWORD EP_ServiceWindowThread(DWORD unused)
function BOOL (line 741) | BOOL CALLBACK ToggleImmersiveCallback(HWND hWnd, LPARAM lParam)
function BOOL (line 754) | BOOL ToggleHelp()
function BOOL (line 759) | BOOL ToggleRunDialog()
function BOOL (line 764) | BOOL ToggleSystemProperties()
function BOOL (line 769) | BOOL FocusSystray()
function BOOL (line 774) | BOOL TriggerAeroShake()
function BOOL (line 779) | BOOL PeekDesktop()
function BOOL (line 784) | BOOL ToggleEmojiPanel()
function BOOL (line 789) | BOOL ShowDictationPanel()
function BOOL (line 794) | BOOL ToggleClipboardViewer()
function BOOL (line 799) | BOOL ToggleSearch()
function BOOL (line 804) | BOOL ToggleTaskView()
function BOOL (line 809) | BOOL ToggleWidgetsPanel()
function BOOL (line 814) | BOOL ToggleMainClockFlyout()
function BOOL (line 819) | BOOL ToggleNotificationsFlyout()
function BOOL (line 824) | BOOL ToggleActionCenter()
function HRESULT (line 835) | HRESULT WINAPI windowsudkshellcommon_SLGetWindowsInformationDWORDHook(PC...
type HRESULT (line 850) | typedef HRESULT(*ImmersiveContextMenuHelper_ApplyOwnerDrawToMenu_t)(HMEN...
type LRESULT (line 854) | typedef LRESULT(*CImmersiveContextMenuOwnerDrawHelper_s_ContextMenuWndPr...
function BOOL (line 861) | BOOL VnPatchIAT_NonInline(HMODULE hMod, const char* libName, const char*...
function ReportSuccessfulAnimationPatching (line 866) | void ReportSuccessfulAnimationPatching()
type interface (line 902) | typedef interface ITaskGroup
type ITaskGroupVtbl (line 904) | typedef struct ITaskGroupVtbl
function interface (line 944) | interface ITaskGroup
type WINDOWMATCHCONFIDENCE (line 949) | typedef enum tagWINDOWMATCHCONFIDENCE
function HRESULT (line 960) | HRESULT STDMETHODCALLTYPE CTaskGroup_DoesWindowMatchHook(ITaskGroup* pTa...
type interface (line 987) | typedef interface ITaskBtnGroup
type ITaskBtnGroupVtbl (line 989) | typedef struct ITaskBtnGroupVtbl
function interface (line 1047) | interface ITaskBtnGroup
type TBGROUPTYPE (line 1052) | typedef enum eTBGROUPTYPE
function CTaskBtnGroup_GetIdealSpanHook (line 1063) | int STDMETHODCALLTYPE CTaskBtnGroup_GetIdealSpanHook(ITaskBtnGroup* pTas...
function Win10TaskbarHooks_ConditionalPatchITaskGroupVtbl (line 1083) | void Win10TaskbarHooks_ConditionalPatchITaskGroupVtbl(ITaskGroupVtbl* pV...
function Win10TaskbarHooks_ConditionalPatchITaskBtnGroupVtbl (line 1100) | void Win10TaskbarHooks_ConditionalPatchITaskBtnGroupVtbl(ITaskBtnGroupVt...
function HRESULT (line 1117) | HRESULT explorer_QISearch(void* that, LPCQITAB pqit, REFIID riid, void**...
function Win10TaskbarHooks_PatchEPTaskbarVtables (line 1136) | void Win10TaskbarHooks_PatchEPTaskbarVtables(HMODULE hModule)
function UpdateStartMenuPositioning (line 1156) | void UpdateStartMenuPositioning(LPARAM loIsShouldInitializeArray_hiIsSho...
function FindTaskbarLayoutTokenByHMONITOR (line 1208) | __declspec(dllexport) unsigned __int64 FindTaskbarLayoutTokenByHMONITOR(...
function UpdateStartMenuPositioning (line 1220) | void UpdateStartMenuPositioning(LPARAM loIsShouldInitializeArray_hiIsSho...
function LRESULT (line 1228) | LRESULT CALLBACK FixTaskbarAutohide_WndProc(
function DWORD (line 1250) | DWORD FixTaskbarAutohide(DWORD unused)
function ForceEnableXamlSounds (line 1314) | void ForceEnableXamlSounds(HMODULE hWindowsUIXaml)
function BOOL (line 1376) | BOOL IsXamlSoundsEnabled()
function EnsureXAML (line 1408) | void EnsureXAML()
function HRESULT (line 1492) | HRESULT WINAPI ICoreWindow5_get_DispatcherQueueHook(void* _this, void** ...
function HMODULE (line 1498) | HMODULE __fastcall Windows11v22H2_combase_LoadLibraryExW(LPCWSTR lpLibFi...
function HMODULE (line 1545) | HMODULE __fastcall combase_LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE ...
function HandleTaskbarCornerInteraction (line 1560) | int HandleTaskbarCornerInteraction(HWND hWnd, UINT uMsg, WPARAM wParam, ...
function INT64 (line 1630) | INT64 ReBarWindow32SubclassProc(_In_ HWND hWnd, _In_ UINT uMsg, _In_ WPA...
function HMENU (line 1667) | HMENU explorer_LoadMenuW(HINSTANCE hInstance, LPCWSTR lpMenuName)
function BOOL (line 1720) | BOOL IsPointOnEmptyAreaOfNewTaskbar(POINT pt)
function LRESULT (line 1857) | LRESULT CALLBACK Shell_TrayWndMouseProc(
function INT64 (line 1923) | INT64 Shell_TrayWndSubclassProc(
function LSTATUS (line 2225) | LSTATUS sndvolsso_RegGetValueW(
type interface (line 2267) | typedef interface Win32Clock
type Win32ClockVtbl (line 2269) | typedef struct Win32ClockVtbl
function interface (line 2293) | interface Win32Clock
function DWORD (line 2297) | DWORD ShouldShowLegacyClockExperience()
function BOOL (line 2313) | BOOL ShowLegacyClockExperience(HWND hWnd)
function INT64 (line 2338) | INT64 ClockButtonSubclassProc(
function BOOL (line 2388) | BOOL CheckIfImmersiveContextMenu(
function RemoveOwnerDrawFromMenu (line 2404) | void RemoveOwnerDrawFromMenu(int level, HMENU hMenu)
function BOOL (line 2423) | BOOL CheckIfMenuContainsOwnPropertiesItem(HMENU hMenu)
function HookImmersiveMenuFunctions (line 2481) | static void HookImmersiveMenuFunctions(
function UINT (line 2735) | UINT GetTaskbarLocationAndSize(POINT ptCursor, RECT* rc)
function PopupMenuAdjustCoordinatesAndFlags (line 2771) | void PopupMenuAdjustCoordinatesAndFlags(int* x, int* y, UINT* uFlags)
function INT64 (line 2798) | INT64 OwnerDrawSubclassProc(
function BOOL (line 2816) | BOOL explorer_TrackPopupMenuExHook(
function BOOL (line 2893) | BOOL pnidui_TrackPopupMenuHook(
function BOOL (line 2953) | BOOL sndvolsso_TrackPopupMenuExHook(
function PatchSndvolsso (line 3042) | void PatchSndvolsso()
function BOOL (line 3064) | BOOL stobject_TrackPopupMenuExHook(
function BOOL (line 3125) | BOOL stobject_TrackPopupMenuHook(
function BOOL (line 3188) | BOOL bthprops_TrackPopupMenuExHook(
function BOOL (line 3249) | BOOL inputswitch_TrackPopupMenuExHook(
function BOOL (line 3302) | BOOL twinui_TrackPopupMenuHook(
function BOOL (line 3361) | BOOL WINAPI DisableImmersiveMenus_SystemParametersInfoW(
function BOOL (line 3379) | inline BOOL IsRibbonEnabled(HWND hWnd)
function BOOL (line 3384) | inline BOOL ShouldApplyMica(HWND hWnd)
function HRESULT (line 3390) | HRESULT ApplyMicaToExplorerTitlebar(HWND hWnd, DWORD_PTR bMicaEffectOnTi...
function LRESULT (line 3417) | LRESULT RebarWindow32MicaTitlebarSubclassproc(HWND hWnd, UINT uMsg, WPAR...
function LRESULT (line 3430) | LRESULT ExplorerMicaTitlebarSubclassProc(HWND hWnd, UINT uMsg, WPARAM wP...
function LRESULT (line 3472) | LRESULT CALLBACK HideIconAndTitleInExplorerSubClass(HWND hWnd, UINT uMsg...
function HRESULT (line 3491) | HRESULT uxtheme_DwmExtendFrameIntoClientAreaHook(HWND hWnd, MARGINS* m)
function HWND (line 3509) | HWND WINAPI explorerframe_SHCreateWorkerWindowHook(
function LSTATUS (line 3582) | LSTATUS stobject_RegGetValueW(
function HRESULT (line 3616) | HRESULT stobject_CoCreateInstanceHook(
function HRESULT (line 3714) | HRESULT pnidui_CoCreateInstanceHook(
type ClockButton_ToggleFlyoutCallback_Params (line 3818) | typedef struct _ClockButton_ToggleFlyoutCallback_Params
function ClockButton_ToggleFlyoutCallback (line 3824) | void ClockButton_ToggleFlyoutCallback(
function BOOL (line 3834) | BOOL InvokeClockFlyout()
function LRESULT (line 3977) | LRESULT explorer_SendMessageW(HWND hWndx, UINT uMsg, WPARAM wParam, LPAR...
function DWORD (line 4020) | DWORD ShouldShowWidgetsInsteadOfCortana()
function __int64 (line 4038) | __int64 Widgets_OnClickHook(__int64 a1, __int64 a2)
function HRESULT (line 4056) | HRESULT WINAPI Widgets_GetTooltipTextHook(__int64 a1, __int64 a2, __int6...
function stub1 (line 4093) | void stub1(void* i)
function BOOL (line 4098) | BOOL explorer_DeleteMenu(HMENU hMenu, UINT uPosition, UINT uFlags)
function RecomputeWeatherFlyoutLocation (line 4113) | void RecomputeWeatherFlyoutLocation(HWND hWnd)
function SIZE (line 4195) | SIZE WINAPI PeopleButton_CalculateMinimumSizeHook(void* _this, SIZE* pSz)
function PeopleBand_MulDivHook (line 4339) | int PeopleBand_MulDivHook(int nNumber, int nNumerator, int nDenominator)
function HRESULT (line 4417) | HRESULT STDAPICALLTYPE PeopleBand_DrawTextWithGlowHook(
function PeopleButton_ShowTooltipHook (line 4857) | void WINAPI PeopleButton_ShowTooltipHook(__int64 _this, unsigned __int8 ...
function __int64 (line 4923) | __int64 PeopleButton_OnClickHook(__int64 a1, __int64 a2)
function INT64 (line 4972) | INT64 PeopleButton_SubclassProc(
function BOOL (line 4999) | BOOL explorer_SetChildWindowNoActivateHook(HWND hWnd)
function DWORD (line 5142) | DWORD GetTaskbarSd()
function INT64 (line 5159) | INT64 ShowDesktopSubclassProc(
function DWORD (line 5230) | DWORD SignalShellReady(DWORD wait)
function sws_ReadSettings (line 5282) | void sws_ReadSettings(sws_WindowSwitcher* sws)
function DWORD (line 5512) | DWORD WindowSwitcher(DWORD unused)
function LoadSettings (line 5624) | void WINAPI LoadSettings(LPARAM lParam)
function Explorer_RefreshClockHelper (line 6836) | void Explorer_RefreshClockHelper(HWND hClockButton)
function Explorer_RefreshClock (line 6853) | void Explorer_RefreshClock(int unused)
function UpdateSearchBox (line 6891) | void UpdateSearchBox()
function Explorer_RefreshUI (line 6927) | void WINAPI Explorer_RefreshUI(int src)
function Explorer_TogglePeopleButton (line 7051) | void Explorer_TogglePeopleButton(int unused)
function Explorer_ToggleTouchpad (line 7069) | void Explorer_ToggleTouchpad(int unused)
function HWND (line 7104) | HWND CreateWindowExWHook(
function LONG_PTR (line 7204) | LONG_PTR SetWindowLongPtrWHook(
function HRESULT (line 7264) | HRESULT explorer_SetWindowThemeHook(
function HRESULT (line 7279) | HRESULT explorer_DrawThemeBackground(
function HRESULT (line 7397) | HRESULT explorer_CloseThemeData(HTHEME hTheme)
function HTHEME (line 7417) | HTHEME explorer_OpenThemeDataForDpi(
function HRESULT (line 7463) | HRESULT explorer_GetThemeMetric(
function HRESULT (line 7496) | HRESULT explorer_GetThemeMargins(
function HRESULT (line 7609) | HRESULT explorer_DrawThemeTextEx(
function ExplorerFrame_CompareStringOrdinal (line 7690) | int ExplorerFrame_CompareStringOrdinal(const WCHAR* a1, int a2, const WC...
type interface (line 7736) | typedef interface EnumExplorerCommand
type EnumExplorerCommandVtbl (line 7738) | typedef struct EnumExplorerCommandVtbl
function interface (line 7763) | interface EnumExplorerCommand
type interface (line 7768) | typedef interface UICommand UICommand;
type UICommandVtbl (line 7770) | typedef struct UICommandVtbl
function interface (line 7816) | interface UICommand
function HRESULT (line 7832) | HRESULT shell32_UICommand_InvokeHook(UICommand* _this, void* a2, void* a3)
function BOOL (line 7870) | BOOL explorer_ShellExecuteExW(SHELLEXECUTEINFOW* pExecInfo)
function HINSTANCE (line 7892) | HINSTANCE explorer_ShellExecuteW(
type Shell32ClassFactoryEntry (line 7947) | typedef struct {
type EPCategorizer (line 7955) | typedef struct _EPCategorizer
function HRESULT (line 7966) | HRESULT STDMETHODCALLTYPE EPCategorizer_ICategorizer_QueryInterface(ICat...
function ULONG (line 7987) | ULONG STDMETHODCALLTYPE EPCategorizer_ICategorizer_AddRef(ICategorizer* ...
function ULONG (line 7992) | ULONG STDMETHODCALLTYPE EPCategorizer_ICategorizer_Release(ICategorizer*...
function HRESULT (line 8013) | HRESULT STDMETHODCALLTYPE EPCategorizer_ICategorizer_GetDescription(ICat...
function HRESULT (line 8020) | HRESULT STDMETHODCALLTYPE EPCategorizer_ICategorizer_GetCategory(ICatego...
function HRESULT (line 8059) | HRESULT STDMETHODCALLTYPE EPCategorizer_ICategorizer_GetCategoryInfo(ICa...
function HRESULT (line 8069) | HRESULT STDMETHODCALLTYPE EPCategorizer_ICategorizer_CompareCategory(ICa...
function HRESULT (line 8110) | HRESULT STDMETHODCALLTYPE EPCategorizer_IShellExtInit_QueryInterface(ISh...
function ULONG (line 8115) | ULONG STDMETHODCALLTYPE EPCategorizer_IShellExtInit_AddRef(IShellExtInit...
function ULONG (line 8120) | ULONG STDMETHODCALLTYPE EPCategorizer_IShellExtInit_Release(IShellExtIni...
function HRESULT (line 8125) | HRESULT STDMETHODCALLTYPE EPCategorizer_IShellExtInit_Initialize(IShellE...
function HRESULT (line 8153) | HRESULT shell32_DriveTypeCategorizer_CreateInstanceHook(IUnknown* pUnkOu...
function HRESULT (line 8199) | HRESULT ExplorerFrame_CoCreateInstanceHook(REFCLSID rclsid, LPUNKNOWN pU...
function HRESULT (line 8214) | HRESULT shell32_CoCreateInstanceHook(REFCLSID rclsid, LPUNKNOWN pUnkOute...
function HACCEL (line 8224) | HACCEL WINAPI ExplorerFrame_LoadAcceleratorsW(HINSTANCE hInstance, LPCWS...
function FixTIFEBreakagesForLegacyControlInterfaces (line 8245) | void FixTIFEBreakagesForLegacyControlInterfaces(PBYTE pSearchBegin, size...
function HRESULT (line 8388) | __declspec(dllexport) HRESULT explorer_CoCreateInstanceHook(REFCLSID rcl...
function LSTATUS (line 8476) | LSTATUS explorer_RegCreateKeyExW(
function LSTATUS (line 8500) | LSTATUS explorer_SHGetValueW(HKEY hkey, LPCWSTR pszSubKey, LPCWSTR pszVa...
function IStream (line 8514) | IStream* explorer_OpenRegStream(HKEY hkey, PCWSTR pszSubkey, PCWSTR pszV...
function LSTATUS (line 8528) | LSTATUS explorer_RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOpti...
function LSTATUS (line 8542) | LSTATUS explorer_RegSetValueExW(
function LSTATUS (line 8564) | LSTATUS explorer_RegGetValueW(
function HRESULT (line 8614) | HRESULT WINAPI explorer_SHCreateStreamOnModuleResourceWHook(
function BOOL (line 8722) | BOOL explorer_SetRect(LPRECT lprc, int xLeft, int yTop, int xRight, int ...
function BOOL (line 8807) | BOOL explorer_RegisterHotkeyHook(HWND hWnd, int id, UINT fsModifiers, UI...
function BOOL (line 8850) | BOOL twinui_RegisterHotkeyHook(HWND hWnd, int id, UINT fsModifiers, UINT...
function HRESULT (line 8864) | HRESULT explorer_DwmUpdateThumbnailPropertiesHook(HTHUMBNAIL hThumbnailI...
function BOOL (line 8876) | BOOL WINAPI explorer_SetWindowCompositionAttribute(HWND hWnd, WINCOMPATT...
function BOOL (line 8897) | BOOL SHELL32_CanDisplayWin8CopyDialogHook()
function LSTATUS (line 8912) | LSTATUS shell32_RegCreateKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD Reser...
function LSTATUS (line 8929) | LSTATUS shell32_RegSetValueExW(HKEY hKey, LPCWSTR lpValueName, DWORD Res...
function BOOL (line 8942) | BOOL shell32_DeleteMenu(HMENU hMenu, UINT uPosition, UINT uFlags)
function BOOL (line 8948) | BOOL shell32_TrackPopupMenu(HMENU hMenu, UINT uFlags, int x, int y, int ...
function patched_GetSystemMetrics (line 8974) | int patched_GetSystemMetrics(int nIndex)
function HWND (line 8999) | HWND Windows11v22H2_explorer_CreateWindowExW(DWORD dwExStyle, LPCWSTR lp...
function explorerframe_GetSystemMetricsForDpi (line 9008) | int explorerframe_GetSystemMetricsForDpi(int nIndex, UINT dpi)
function PatchAddressBarSizing (line 9014) | static void PatchAddressBarSizing(PBYTE pSearchBegin, size_t cbSearch)
function WORD (line 9384) | WORD explorer_TileWindows(
function WORD (line 9395) | WORD explorer_CascadeWindows(
function HWND (line 9410) | HWND user32_NtUserFindWindowExHook(HWND hWndParent, HWND hWndChildAfter,...
type RTL_FEATURE_CONFIGURATION (line 9424) | struct RTL_FEATURE_CONFIGURATION {
type RTL_FEATURE_CONFIGURATION (line 9437) | struct RTL_FEATURE_CONFIGURATION
function RtlQueryFeatureConfigurationHook (line 9438) | int RtlQueryFeatureConfigurationHook(UINT32 featureId, int sectionType, ...
function DWORD (line 9513) | DWORD InjectBasicFunctions(BOOL bIsExplorer, BOOL bInstall)
function BOOL (line 9722) | BOOL PeopleBand_IsOS(DWORD dwOS)
function BOOL (line 9728) | BOOL explorer_IsOS(DWORD dwOS)
function TryToFindExplorerOffsets (line 9757) | void TryToFindExplorerOffsets(HANDLE hExplorer, PBYTE pSearchBegin, size...
type CCacheShortcut (line 9920) | typedef struct CCacheShortcut CCacheShortcut;
function PatchAppResolver (line 9924) | static void PatchAppResolver()
function PatchStartTileData (line 9988) | static void PatchStartTileData(BOOL bSMEH)
type CrashCounterSettings (line 10018) | typedef struct CrashCounterSettings
function GetCrashCounterSettings (line 10026) | void GetCrashCounterSettings(CrashCounterSettings* out)
function BOOL (line 10050) | BOOL IsCrashCounterEnabled()
function HRESULT (line 10057) | HRESULT InformUserAboutCrashCallback(HWND hwnd, UINT msg, WPARAM wParam,...
function DWORD (line 10126) | DWORD InformUserAboutCrash(LPVOID unused)
function DWORD (line 10221) | DWORD WINAPI ClearCrashCounter(INT64 timeout)
function BOOL (line 10229) | BOOL CrashCounterHandleEntryPoint()
function BOOL (line 10256) | BOOL CheckExplorerSymbols(symbols_addr* symbols_PTRS)
function WCHAR (line 10269) | const WCHAR* GetTaskbarDllChecked(symbols_addr* symbols_PTRS)
type EP_TASKBAR_FEATURES (line 10289) | typedef enum _EP_TASKBAR_FEATURES
function EP_TASKBAR_FEATURES (line 10303) | EP_TASKBAR_FEATURES GetEPTaskbarFeatures()
function HMODULE (line 10331) | HMODULE PrepareAlternateTaskbarImplementation(symbols_addr* symbols_PTRS...
type SSOEntry (line 10454) | typedef struct SSOEntry
function PatchStobject (line 10462) | void PatchStobject(HANDLE hStobject)
function LSTATUS (line 10544) | LSTATUS pnidui_RegGetValueW(HKEY hkey, LPCWSTR lpSubKey, LPCWSTR lpValue...
function PatchPnidui (line 10555) | void PatchPnidui(HMODULE hPnidui)
function BOOL (line 10578) | BOOL STDAPICALLTYPE explorer_SHCreateThread(
function DWORD (line 10593) | DWORD Inject(BOOL bIsExplorer)
function VisibilityChangedEventArguments_GetVisible (line 11580) | char VisibilityChangedEventArguments_GetVisible(__int64 a1)
function StartMenu_LoadSettings (line 11604) | void StartMenu_LoadSettings(BOOL bRestartIfChanged)
function INT64 (line 11865) | INT64 StartDocked_LauncherFrame_OnVisibilityChangedHook(void* _this, INT...
function INT64 (line 11887) | INT64 StartDocked_SystemListPolicyProvider_GetMaximumFrequentAppsHook(vo...
function INT64 (line 11894) | INT64 StartUI_SystemListPolicyProvider_GetMaximumFrequentAppsHook(void* ...
function INT64 (line 11901) | INT64 StartDocked_StartSizingFrame_StartSizingFrameHook(void* _this)
type Parser_XamlBufferType (line 11926) | typedef enum Parser_XamlBufferType
type Parser_XamlBuffer (line 11933) | typedef struct Parser_XamlBuffer
function BOOL (line 11940) | static BOOL StartMenu_FillParserBuffer(Parser_XamlBuffer* pBuffer, int r...
function HRESULT (line 11959) | HRESULT CCoreServices_TryLoadXamlResourceHelperHook(void* _this, void* p...
function BOOL (line 11983) | static BOOL StartMenu_FixContextMenuXbfHijackMethod()
function StartUI_UserTileView_AppendMenuFlyoutItemCommandHook (line 12042) | void StartUI_UserTileView_AppendMenuFlyoutItemCommandHook(void* _this, v...
function StartMenu_FixUserTileMenu (line 12053) | static void StartMenu_FixUserTileMenu(PBYTE pSearchBegin, size_t cbSearch)
function LSTATUS (line 12101) | LSTATUS StartUI_RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptio...
function LSTATUS (line 12115) | LSTATUS StartUI_RegQueryValueExW(HKEY hKey, LPCWSTR lpValueName, LPDWORD...
function LSTATUS (line 12132) | LSTATUS StartUI_RegCloseKey(HKEY hKey)
function Start_SetWindowRgn (line 12141) | int Start_SetWindowRgn(HWND hWnd, HRGN hRgn, BOOL bRedraw)
function SetupMessage (line 12310) | int WINAPI SetupMessage(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UI...
function Setup_Regsvr32 (line 12344) | void Setup_Regsvr32(BOOL bInstall)
function HRESULT (line 12404) | HRESULT WINAPI _DllRegisterServer()
function HRESULT (line 12576) | HRESULT WINAPI _DllUnregisterServer()
function HRESULT (line 12720) | HRESULT WINAPI _DllCanUnloadNow()
function DWORD (line 12725) | DWORD InjectStartMenu()
function IsUserOOBE (line 12951) | bool IsUserOOBE()
function IsCredentialReset (line 12964) | bool IsCredentialReset()
function IsUserOOBEOrCredentialReset (line 12977) | bool IsUserOOBEOrCredentialReset()
function HRESULT (line 12986) | HRESULT EntryPoint(DWORD dwMethod)
function HRESULT (line 13123) | __declspec(dllexport) HRESULT DXGIDeclareAdapterRemovalSupport()
function HRESULT (line 13129) | __declspec(dllexport) HRESULT CreateDXGIFactory1(void* p1, void** p2)
function HRESULT (line 13135) | HRESULT InjectStartFromExplorer()
function HRESULT (line 13148) | HRESULT WINAPI _DllGetClassObject(
function BOOL (line 13157) | BOOL WINAPI DllMain(
function ZZGUI (line 13180) | __declspec(dllexport) int ZZGUI(HWND hWnd, HINSTANCE hInstance, LPSTR lp...
FILE: ExplorerPatcher/dxgi_imp.cpp
function EXTERN_C_START (line 5) | EXTERN_C_START
function HRESULT (line 22) | HRESULT WINAPI ApplyCompatResolutionQuirking(UINT* p1, UINT* p2)
function HRESULT (line 28) | HRESULT WINAPI CompatString(const char* p1, DWORD* p2, char* p3, bool p4)
function HRESULT (line 34) | HRESULT WINAPI CompatValue(const char* p1, UINT64* p2)
function HRESULT (line 40) | HRESULT WINAPI CreateDXGIFactory(REFIID p1, void** p2)
function HRESULT (line 46) | HRESULT WINAPI CreateDXGIFactory1Original(REFIID p1, void** p2)
function HRESULT (line 52) | HRESULT WINAPI CreateDXGIFactory2(UINT p1, REFIID p2, void** p3)
function HRESULT (line 58) | HRESULT WINAPI DXGID3D10CreateDevice()
function HRESULT (line 64) | HRESULT WINAPI DXGID3D10CreateLayeredDevice()
function HRESULT (line 70) | HRESULT WINAPI DXGID3D10GetLayeredDeviceSize()
function HRESULT (line 76) | HRESULT WINAPI DXGID3D10RegisterLayers()
function HRESULT (line 82) | HRESULT WINAPI DXGIDeclareAdapterRemovalSupportOriginal()
function HRESULT (line 88) | HRESULT WINAPI DXGIDumpJournal(void* p1)
function HRESULT (line 94) | HRESULT WINAPI DXGIGetDebugInterface1(UINT p1, REFIID p2, void** p3)
function HRESULT (line 100) | HRESULT WINAPI DXGIReportAdapterConfiguration(void* p1)
function HRESULT (line 106) | HRESULT WINAPI PIXBeginCapture(UINT p1, void* p2)
function HRESULT (line 112) | HRESULT WINAPI PIXEndCapture()
function HRESULT (line 118) | HRESULT WINAPI PIXGetCaptureState()
function HRESULT (line 124) | HRESULT WINAPI SetAppCompatStringPointer(SIZE_T p1, const char* p2)
function HRESULT (line 130) | HRESULT WINAPI UpdateHMDEmulationStatus(bool p1)
FILE: ExplorerPatcher/fmemopen.c
function FILE (line 19) | FILE* fmemopen(void* buf, size_t len, const char* type)
FILE: ExplorerPatcher/getline.c
function getdelim (line 31) | ssize_t
function getline (line 74) | ssize_t
FILE: ExplorerPatcher/getline.h
type SSIZE_T (line 6) | typedef SSIZE_T ssize_t;
FILE: ExplorerPatcher/hooking.h
type funchook_t (line 11) | typedef struct funchook funchook_t;
function funchook_t (line 13) | inline funchook_t* funchook_create(void)
function funchook_uninstall (line 18) | inline int funchook_uninstall(
function funchook_destroy (line 26) | inline int funchook_destroy(funchook_t* _this)
function funchook_prepare (line 31) | inline int funchook_prepare(
function funchook_install (line 41) | inline int funchook_install(
FILE: ExplorerPatcher/inc/ClassicWinRtForwardDecl.h
function namespace (line 8) | namespace ABI { namespace Windows { namespace Foundation {
function namespace (line 33) | namespace ABI { namespace Windows { namespace Foundation {
function namespace (line 58) | namespace ABI { namespace Windows { namespace Foundation {
FILE: ExplorerPatcher/inc/ContainerPolicies.h
function class (line 25) | class CTContainer_PolicyNewMem
function class (line 35) | class CTContainer_PolicyCoTaskMem
function class (line 44) | class CTContainer_PolicyLocalMem
function BOOL (line 52) | static BOOL DestroyMem(void* p)
function HRESULT (line 67) | static HRESULT ReallocArray(T* pv, size_t cItems, T** ppv)
function HRESULT (line 82) | static HRESULT ReallocArray(T* pv, size_t cItems, T** ppv)
FILE: ExplorerPatcher/inc/NativeString.h
function namespace (line 8) | namespace Windows::Internal
function ElementType (line 50) | static ElementType* Realloc(ElementType* p, size_t bytes)
function Free (line 55) | static void Free(ElementType* p)
function ElementType (line 70) | static ElementType* Realloc(ElementType* p, size_t bytes)
function Free (line 75) | static void Free(ElementType* p)
function HRESULT (line 108) | HRESULT Initialize(const WCHAR* psz, const size_t cch)
function HRESULT (line 113) | HRESULT Initialize(const WCHAR* psz)
function HRESULT (line 118) | HRESULT Initialize(const NativeString& other)
function HRESULT (line 123) | HRESULT Initialize(HINSTANCE hInstance, UINT uId, WORD wLanguage)
function HRESULT (line 139) | HRESULT Initialize(HINSTANCE hInstance, UINT uId)
function HRESULT (line 144) | HRESULT Initialize(HKEY hKey, const WCHAR* pszValueName)
function HRESULT (line 149) | HRESULT Initialize(HKEY hKey, const WCHAR* pszSubKey, const WCHAR* pszVa...
function HRESULT (line 161) | HRESULT InitializeNoExpand(HKEY hKey, const WCHAR* pszValueName)
function HRESULT (line 166) | HRESULT InitializeNoExpand(HKEY hKey, const WCHAR* pszSubKey, const WCHA...
function HRESULT (line 178) | HRESULT InitializeFormat(const WCHAR* pszFormat, va_list argList)
function HRESULT (line 197) | HRESULT InitializeFormat(const WCHAR* pszFormat, ...)
function HRESULT (line 204) | HRESULT InitializeResFormat(HINSTANCE hInstance, UINT uId, ...)
function HRESULT (line 217) | HRESULT InitializeMessage(const WCHAR* pszFormat, va_list argList)
function HRESULT (line 227) | HRESULT InitializeMessage(const WCHAR* pszFormat, ...)
function HRESULT (line 234) | HRESULT InitializeResMessage(HINSTANCE hInstance, UINT uId, ...)
function Free (line 252) | void Free()
function Attach (line 257) | void Attach(WCHAR* psz)
function Attach (line 262) | void Attach(WCHAR* psz, const size_t cch)
function WCHAR (line 267) | WCHAR* Detach()
function HRESULT (line 272) | HRESULT DetachInitializeIfEmpty(WCHAR** ppsz)
function WCHAR (line 290) | WCHAR** FreeAndGetAddressOf()
function HRESULT (line 295) | HRESULT CopyTo(WCHAR** ppszDest) const
function HRESULT (line 315) | HRESULT CopyTo(WCHAR* pszDest, size_t cchDest) const
function WCHAR (line 326) | const WCHAR* Get() const
function WCHAR (line 331) | const WCHAR* GetNonNull() const
function GetCount (line 336) | size_t GetCount()
function CompareOrdinal (line 361) | int CompareOrdinal(const WCHAR* psz, const size_t cch) const
function CompareOrdinal (line 366) | int CompareOrdinal(const WCHAR* psz) const
function CompareOrdinal (line 371) | int CompareOrdinal(const NativeString& other) const
function CompareOrdinalIgnoreCase (line 376) | int CompareOrdinalIgnoreCase(const WCHAR* psz, const size_t cch) const
function CompareOrdinalIgnoreCase (line 381) | int CompareOrdinalIgnoreCase(const WCHAR* psz) const
function CompareOrdinalIgnoreCase (line 386) | int CompareOrdinalIgnoreCase(const NativeString& other) const
function HRESULT (line 391) | HRESULT Concat(const WCHAR* psz, const size_t cch)
function HRESULT (line 396) | HRESULT Concat(WCHAR c)
function HRESULT (line 401) | HRESULT Concat(const WCHAR* psz)
function HRESULT (line 406) | HRESULT Concat(const NativeString& other)
function HRESULT (line 411) | HRESULT Concat(HINSTANCE hInstance, UINT uId, WORD wLanguage)
function HRESULT (line 427) | HRESULT Concat(HINSTANCE hInstance, UINT uId)
function HRESULT (line 432) | HRESULT ConcatFormat(const WCHAR* pszFormat, va_list argList)
function HRESULT (line 447) | HRESULT ConcatFormat(const WCHAR* pszFormat, ...)
function RemoveAt (line 454) | bool RemoveAt(size_t iElem, size_t cchElem)
function TrimStart (line 459) | bool TrimStart(const WCHAR* pszTrim)
function TrimEnd (line 464) | bool TrimEnd(const WCHAR* pszTrim)
function TrimWhitespace (line 491) | bool TrimWhitespace()
function ReplaceChars (line 498) | void ReplaceChars(const WCHAR wcFind, const WCHAR wcReplace)
function HRESULT (line 549) | HRESULT EnsureCapacity(size_t cchDesired)
function HRESULT (line 563) | HRESULT _EnsureCapacity(size_t cchDesired)
function _IsOnlyWhitespace (line 618) | bool _IsOnlyWhitespace() const
function HRESULT (line 633) | HRESULT _Initialize(const WCHAR* psz, size_t cch)
function HRESULT (line 701) | HRESULT _InitializeFromRegistry(HKEY hKey, const WCHAR* pszValueName, bo...
function _GetCount (line 772) | size_t _GetCount()
function WCHAR (line 785) | const WCHAR* _Get() const
function HRESULT (line 790) | HRESULT _Concat(const WCHAR c)
function HRESULT (line 796) | HRESULT _Concat(const WCHAR* psz, const size_t cch)
function HRESULT (line 812) | HRESULT _ConcatMayTruncate(const WCHAR* psz, size_t cchMaxCapacity)
function _RemoveAt (line 829) | bool _RemoveAt(size_t iElem, size_t cchElem)
function _TrimStart (line 850) | bool _TrimStart(const WCHAR* pszTrim)
function _TrimEnd (line 873) | bool _TrimEnd(const WCHAR* pszTrim)
function _Free (line 896) | void _Free()
function _Attach (line 907) | void _Attach(WCHAR* psz)
function _Attach (line 918) | void _Attach(WCHAR* psz, const size_t cch)
function WCHAR (line 930) | WCHAR* _Detach()
function WCHAR (line 939) | WCHAR** _FreeAndGetAddressOf()
type Windows (line 961) | typedef Windows::Internal::NativeString<Windows::Internal::CoTaskMemPoli...
FILE: ExplorerPatcher/inc/RefCountedObject.h
function public (line 6) | public T
FILE: ExplorerPatcher/inc/ResultUtils.h
function HRESULT (line 5) | inline HRESULT ResultFromWin32(__in DWORD dwErr)
function HRESULT (line 10) | inline HRESULT ResultFromLastError()
function HRESULT (line 15) | inline HRESULT ResultFromKnownLastError()
function HRESULT (line 21) | inline HRESULT ResultFromWin32Bool(BOOL b)
function HRESULT (line 26) | inline HRESULT ResultFromWin32Count(UINT cchResult, UINT cchBuffer)
FILE: ExplorerPatcher/inc/SimpleArray.h
function class (line 18) | class CSimpleArrayCaseInsensitiveOrdinalStringCompareHelper
function class (line 27) | class CSimpleArrayUserDefaultLocaleCaseInsensitiveCompareHelper
function T (line 72) | const T& operator[](size_t iElem) const { return _parray[iElem]; }
function HRESULT (line 74) | HRESULT GetAt(size_t iElem, T& tOut) const
function T (line 85) | T* GetData() const { return _parray; }
function T (line 86) | T* begin() { return _parray; }
function T (line 87) | T* begin() const { return _parray; }
function T (line 88) | T* end() { return _parray + _celem; }
function T (line 89) | T* end() const { return _parray + _celem; }
function HRESULT (line 111) | HRESULT BinarySearch(const T& t, size_t* piElem) const
function HRESULT (line 246) | HRESULT InsertAt(T&& t, size_t iElem)
function HRESULT (line 251) | HRESULT SetAtIndex(size_t iElem, const T& t)
function HRESULT (line 256) | HRESULT SetAtIndex(size_t iElem, T&& t)
function HRESULT (line 280) | HRESULT RemoveAt(size_t iElem)
function RemoveAll (line 292) | void RemoveAll()
function TransferData (line 308) | void TransferData(CTSimpleArray* other)
function Attach (line 321) | void Attach(T* parray, size_t celem)
function HRESULT (line 334) | HRESULT Sort()
function HRESULT (line 395) | HRESULT _MakeRoomAt(size_t iElem)
function HRESULT (line 604) | HRESULT RemoveAndReleaseAt(size_t iElem)
function RemoveAndReleaseAll (line 619) | void RemoveAndReleaseAll()
FILE: ExplorerPatcher/inc/SimpleBoxer.h
function namespace (line 8) | namespace ABI { namespace Windows { namespace Foundation {
function namespace (line 28) | namespace SimpleBoxer
function STDMETHODIMP (line 57) | STDMETHODIMP GetTrustLevel(TrustLevel* trustLvl) override
function STDMETHODIMP (line 65) | STDMETHODIMP get_Value(T* value) override
function STDMETHODIMP (line 73) | STDMETHODIMP get_Type(ABI::Windows::Foundation::PropertyType* value) ove...
function STDMETHODIMP (line 78) | STDMETHODIMP get_IsNumericScalar(boolean* value) override
function STDMETHODIMP (line 84) | STDMETHODIMP GetUInt8(BYTE* value) override { return _ToScalar<BYTE>(val...
function STDMETHODIMP (line 85) | STDMETHODIMP GetInt16(INT16* value) override { return _ToScalar<INT16>(v...
function STDMETHODIMP (line 86) | STDMETHODIMP GetUInt16(UINT16* value) override { return _ToScalar<UINT16...
function STDMETHODIMP (line 87) | STDMETHODIMP GetInt32(INT32* value) override { return _ToScalar<INT32>(v...
function STDMETHODIMP (line 88) | STDMETHODIMP GetUInt32(UINT32* value) override { return _ToScalar<UINT32...
function STDMETHODIMP (line 89) | STDMETHODIMP GetInt64(INT64* value) override { return _ToScalar<INT64>(v...
function STDMETHODIMP (line 90) | STDMETHODIMP GetUInt64(UINT64* value) override { return _ToScalar<UINT64...
function STDMETHODIMP (line 92) | STDMETHODIMP GetSingle(FLOAT* value) override { *value = {}; return E_NO...
function STDMETHODIMP (line 93) | STDMETHODIMP GetDouble(DOUBLE* value) override { *value = {}; return E_N...
function STDMETHODIMP (line 94) | STDMETHODIMP GetChar16(WCHAR* value) override { *value = {}; return E_NO...
function STDMETHODIMP (line 95) | STDMETHODIMP GetBoolean(boolean* value) override { *value = {}; return E...
function STDMETHODIMP (line 96) | STDMETHODIMP GetString(HSTRING* value) override { *value = {}; return E_...
function STDMETHODIMP (line 97) | STDMETHODIMP GetGuid(GUID* value) override { *value = {}; return E_NOTIM...
function STDMETHODIMP (line 98) | STDMETHODIMP GetDateTime(ABI::Windows::Foundation::DateTime* value) over...
function STDMETHODIMP (line 99) | STDMETHODIMP GetTimeSpan(ABI::Windows::Foundation::TimeSpan* value) over...
function STDMETHODIMP (line 100) | STDMETHODIMP GetPoint(ABI::Windows::Foundation::Point* value) override {...
function STDMETHODIMP (line 101) | STDMETHODIMP GetSize(ABI::Windows::Foundation::Size* value) override { *...
function STDMETHODIMP (line 102) | STDMETHODIMP GetRect(ABI::Windows::Foundation::Rect* value) override { *...
function STDMETHODIMP (line 103) | STDMETHODIMP GetUInt8Array(UINT32* valueLength, BYTE** value) override {...
function STDMETHODIMP (line 104) | STDMETHODIMP GetInt16Array(UINT32* valueLength, INT16** value) override ...
function STDMETHODIMP (line 105) | STDMETHODIMP GetUInt16Array(UINT32* valueLength, UINT16** value) overrid...
function STDMETHODIMP (line 106) | STDMETHODIMP GetInt32Array(UINT32* valueLength, INT32** value) override ...
function STDMETHODIMP (line 107) | STDMETHODIMP GetUInt32Array(UINT32* valueLength, UINT32** value) overrid...
function STDMETHODIMP (line 108) | STDMETHODIMP GetInt64Array(UINT32* valueLength, INT64** value) override ...
function STDMETHODIMP (line 109) | STDMETHODIMP GetUInt64Array(UINT32* valueLength, UINT64** value) overrid...
function STDMETHODIMP (line 110) | STDMETHODIMP GetSingleArray(UINT32* valueLength, FLOAT** value) override...
function STDMETHODIMP (line 111) | STDMETHODIMP GetDoubleArray(UINT32* valueLength, DOUBLE** value) overrid...
function STDMETHODIMP (line 112) | STDMETHODIMP GetChar16Array(UINT32* valueLength, WCHAR** value) override...
function STDMETHODIMP (line 113) | STDMETHODIMP GetBooleanArray(UINT32* valueLength, boolean** value) overr...
function STDMETHODIMP (line 114) | STDMETHODIMP GetStringArray(UINT32* valueLength, HSTRING** value) overri...
function STDMETHODIMP (line 115) | STDMETHODIMP GetInspectableArray(UINT32* valueLength, IInspectable*** va...
function STDMETHODIMP (line 116) | STDMETHODIMP GetGuidArray(UINT32* valueLength, GUID** value) override { ...
function STDMETHODIMP (line 117) | STDMETHODIMP GetDateTimeArray(UINT32* valueLength, ABI::Windows::Foundat...
function STDMETHODIMP (line 118) | STDMETHODIMP GetTimeSpanArray(UINT32* valueLength, ABI::Windows::Foundat...
function STDMETHODIMP (line 119) | STDMETHODIMP GetPointArray(UINT32* valueLength, ABI::Windows::Foundation...
function STDMETHODIMP (line 120) | STDMETHODIMP GetSizeArray(UINT32* valueLength, ABI::Windows::Foundation:...
function STDMETHODIMP (line 121) | STDMETHODIMP GetRectArray(UINT32* valueLength, ABI::Windows::Foundation:...
function HRESULT (line 146) | static HRESULT Create(const T& value, IInspectable** ppPropertyValue)
function HRESULT (line 158) | static HRESULT Create(
function HRESULT (line 239) | HRESULT Create(const wchar_t (&value)[N], IInspectable** ppPropertyValue)
function HRESULT (line 278) | static HRESULT Create(const wchar_t* value, IInspectable** ppPropertyValue)
function HRESULT (line 291) | static HRESULT Create(
function HRESULT (line 312) | static HRESULT Create(const T& value, IInspectable** ppPropertyValue)
function HRESULT (line 392) | inline HRESULT UnboxValue(IInspectable* pBoxed, HSTRING* pValue)
function namespace (line 522) | namespace SimpleStringer
FILE: ExplorerPatcher/inc/memsafe.h
function HRESULT (line 77) | HRESULT _AllocBytes(_In_opt_ HANDLE hHeap, _In_ DWORD dwFlags, _In_ size...
function HRESULT (line 83) | HRESULT _ReallocBytes(_In_opt_ HANDLE hHeap, _In_ DWORD dwFlags, _In_opt...
function HRESULT (line 89) | HRESULT _AllocArray(_In_opt_ HANDLE hHeap, _In_ DWORD dwFlags, _In_ size...
function HRESULT (line 102) | HRESULT _ReallocArray(_In_opt_ HANDLE hHeap, _In_ DWORD dwFlags, _In_opt...
function HRESULT (line 117) | HRESULT _AllocStringWorker(_In_opt_ HANDLE hHeap, _In_ DWORD dwFlags, _I...
function HRESULT (line 141) | HRESULT _AllocString(_In_opt_ HANDLE hHeap, _In_ DWORD dwFlags, _In_ PCW...
function HRESULT (line 148) | HRESULT _AllocStringLen(_In_opt_ HANDLE hHeap, _In_ DWORD dwFlags, _In_r...
function HRESULT (line 156) | HRESULT _AllocStringDoubleNullTerminate(_In_opt_ HANDLE hHeap, _In_ DWOR...
function HRESULT (line 163) | HRESULT _AllocStringOpt(_In_opt_ HANDLE hHeap, _In_ DWORD dwFlags, _In_o...
function class (line 182) | class CTCoAllocPolicy
function HRESULT (line 225) | static HRESULT Realloc(_In_opt_ HANDLE /*hHeap*/, _In_ DWORD dwFlags, _I...
function HRESULT (line 274) | HRESULT CoAllocBytes(_In_ DWORD dwFlags, _In_ size_t cb, _Outptr_result_...
function HRESULT (line 280) | HRESULT CoReallocBytes(_In_ DWORD dwFlags, _In_opt_ T *pv, _In_ size_t c...
function HRESULT (line 286) | HRESULT CoAllocObject(_In_ DWORD dwFlags, _Outptr_result_buffer_(1) _On_...
function HRESULT (line 292) | HRESULT CoAllocArray(_In_ DWORD dwFlags, _In_ size_t cItems, _Outptr_res...
function HRESULT (line 298) | HRESULT CoReallocArray(_In_ DWORD dwFlags, _In_opt_ T *pv, _In_ size_t c...
function HRESULT (line 306) | HRESULT CoAllocBytes(_In_ size_t cb, _Outptr_result_bytebuffer_(cb) _On_...
function HRESULT (line 312) | HRESULT CoReallocBytes(_In_opt_ T *pv, _In_ size_t cb, _Outptr_result_by...
function HRESULT (line 324) | HRESULT CoAllocArray(_In_ size_t cItems, _Outptr_result_buffer_(cItems) ...
function HRESULT (line 330) | HRESULT CoReallocArray(_In_opt_ T *pv, _In_ size_t cItems, _Outptr_resul...
function HRESULT (line 337) | inline HRESULT CoAllocString(_In_ PCWSTR pszSource, _Outptr_result_nullo...
function HRESULT (line 342) | inline HRESULT CoAllocStringLen( _In_reads_or_z_opt_(cch) PCNZWCH pszSou...
function HRESULT (line 347) | inline HRESULT CoAllocStringDoubleNullTerminate(_In_ PCWSTR pszSource, _...
function HRESULT (line 352) | inline HRESULT CoAllocStringOpt(_In_opt_ PCWSTR pszSource, _Outptr_resul...
function class (line 361) | class CTLocalAllocPolicy
function HRESULT (line 371) | static HRESULT Realloc(_In_opt_ HANDLE hHeap, _In_ DWORD dwFlags, _In_op...
function HRESULT (line 387) | HRESULT LocalAllocBytes(_In_ DWORD dwFlags, _In_ size_t cb, _Outptr_resu...
function HRESULT (line 393) | HRESULT LocalReallocBytes(_In_ DWORD dwFlags, _In_opt_ T *pv, _In_ size_...
function HRESULT (line 399) | HRESULT LocalAllocObject(_In_ DWORD dwFlags, _Outptr_result_buffer_(1) _...
function HRESULT (line 405) | HRESULT LocalAllocArray(_In_ DWORD dwFlags, _In_ size_t cItems, _Outptr_...
function HRESULT (line 411) | HRESULT LocalReallocArray(_In_ DWORD dwFlags, _In_opt_ T *pv, _In_ size_...
function HRESULT (line 419) | HRESULT LocalAllocBytes(_In_ size_t cb, _Outptr_result_bytebuffer_(cb) _...
function HRESULT (line 425) | HRESULT LocalReallocBytes(_In_opt_ T *pv, _In_ size_t cb, _Outptr_result...
function HRESULT (line 437) | HRESULT LocalAllocArray(_In_ size_t cItems, _Outptr_result_buffer_(cItem...
function HRESULT (line 443) | HRESULT LocalReallocArray(_In_opt_ T *pv, _In_ size_t cItems, _Outptr_re...
function HRESULT (line 450) | inline HRESULT LocalAllocString(_In_ PCWSTR pszSource, _Outptr_result_nu...
function HRESULT (line 455) | inline HRESULT LocalAllocStringLen( _In_reads_or_z_opt_(cch) PCNZWCH psz...
function HRESULT (line 460) | inline HRESULT LocalAllocStringDoubleNullTerminate(_In_ PCWSTR pszSource...
function HRESULT (line 465) | inline HRESULT LocalAllocStringOpt(_In_opt_ PCWSTR pszSource, _Outptr_re...
function class (line 474) | class CTHeapAllocPolicy
function HRESULT (line 483) | static HRESULT Realloc(_In_ HANDLE hHeap, _In_ DWORD dwFlags, _In_opt_ v...
function HRESULT (line 497) | HRESULT HeapAllocBytes(_In_ HANDLE hHeap, _In_ DWORD dwFlags, _In_ size_...
function HRESULT (line 503) | HRESULT HeapReallocBytes(_In_ HANDLE hHeap, _In_ DWORD dwFlags, _In_opt_...
function HRESULT (line 509) | HRESULT HeapAllocObject(_In_ HANDLE hHeap, _In_ DWORD dwFlags, _Outptr_r...
function HRESULT (line 515) | HRESULT HeapAllocArray(_In_ HANDLE hHeap, _In_ DWORD dwFlags, _In_ size_...
function HRESULT (line 521) | HRESULT HeapReallocArray(_In_ HANDLE hHeap, _In_ DWORD dwFlags, _In_opt_...
function HRESULT (line 529) | HRESULT HeapAllocBytes(_In_ size_t cb, _Outptr_result_bytebuffer_(cb) _O...
function HRESULT (line 535) | HRESULT HeapReallocBytes(_In_opt_ T *pv, _In_ size_t cb, _Outptr_result_...
function HRESULT (line 547) | HRESULT HeapAllocArray(_In_ size_t cItems, _Outptr_result_buffer_(cItems...
function HRESULT (line 553) | HRESULT HeapReallocArray(_In_opt_ T *pv, _In_ size_t cItems, _Outptr_res...
function HRESULT (line 560) | inline HRESULT HeapAllocString(_In_ HANDLE hHeap, _In_ DWORD dwFlags, _I...
function HRESULT (line 565) | inline HRESULT HeapAllocStringLen(_In_ HANDLE hHeap, _In_ DWORD dwFlags,...
function HRESULT (line 570) | inline HRESULT HeapAllocStringDoubleNullTerminate(_In_ HANDLE hHeap, _In...
function HRESULT (line 575) | inline HRESULT HeapAllocStringOpt(_In_ HANDLE hHeap, _In_ DWORD dwFlags,...
function HRESULT (line 582) | inline HRESULT HeapAllocString(_In_ PCWSTR pszSource, _Outptr_result_nul...
function HRESULT (line 587) | inline HRESULT HeapAllocStringLen(_In_reads_opt_(cch) PCNZWCH pszSource,...
function HRESULT (line 592) | inline HRESULT HeapAllocStringDoubleNullTerminate(_In_ PCWSTR pszSource,...
function HRESULT (line 597) | inline HRESULT HeapAllocStringOpt(_In_opt_ PCWSTR pszSource, _Outptr_res...
function class (line 606) | class CTGlobalAllocPolicy
function HRESULT (line 616) | static HRESULT Realloc(_In_opt_ HANDLE hHeap, _In_ DWORD dwFlags, _In_op...
function HRESULT (line 632) | HRESULT GlobalAllocBytes(_In_ DWORD dwFlags, _In_ size_t cb, _Outptr_res...
function HRESULT (line 638) | HRESULT GlobalReallocBytes(_In_ DWORD dwFlags, _In_opt_ T *pv, _In_ size...
function HRESULT (line 644) | HRESULT GlobalAllocObject(_In_ DWORD dwFlags, _Outptr_result_buffer_(1) ...
function HRESULT (line 650) | HRESULT GlobalAllocArray(_In_ DWORD dwFlags, _In_ size_t cItems, _Outptr...
function HRESULT (line 656) | HRESULT GlobalReallocArray(_In_ DWORD dwFlags, _In_opt_ T *pv, _In_ size...
function HRESULT (line 664) | HRESULT GlobalAllocBytes(_In_ size_t cb, _Outptr_result_bytebuffer_(cb) ...
function HRESULT (line 670) | HRESULT GlobalReallocBytes(_In_opt_ T *pv, _In_ size_t cb, _Outptr_resul...
function HRESULT (line 682) | HRESULT GlobalAllocArray(_In_ size_t cItems, _Outptr_result_buffer_(cIte...
function HRESULT (line 688) | HRESULT GlobalReallocArray(_In_opt_ T *pv, _In_ size_t cItems, _Outptr_r...
function HRESULT (line 695) | inline HRESULT GlobalAllocString(_In_ PCWSTR pszSource, _Outptr_result_n...
function HRESULT (line 700) | inline HRESULT GlobalAllocStringLen( _In_reads_or_z_opt_(cch) PCNZWCH ps...
function HRESULT (line 705) | inline HRESULT GlobalAllocStringDoubleNullTerminate(_In_ PCWSTR pszSourc...
function HRESULT (line 710) | inline HRESULT GlobalAllocStringOpt(_In_opt_ PCWSTR pszSource, _Outptr_r...
FILE: ExplorerPatcher/lvt.c
function Windows_UI_Xaml_IDependencyObject (line 3) | Windows_UI_Xaml_IDependencyObject* LVT_FindChildByClassName(Windows_UI_X...
function Windows_UI_Xaml_IDependencyObject (line 46) | Windows_UI_Xaml_IDependencyObject* LVT_FindChildByName(Windows_UI_Xaml_I...
function LVT_StartUI_EnableRoundedCorners (line 95) | void LVT_StartUI_EnableRoundedCorners(HWND hWnd, DWORD dwReceipe, DWORD ...
function LVT_StartDocked_120DPIHack (line 520) | void LVT_StartDocked_120DPIHack(int maxHeight)
function LVT_StartDocked_DisableRecommendedSection (line 594) | void LVT_StartDocked_DisableRecommendedSection(HWND hWnd, BOOL bApply, R...
function HRESULT (line 847) | HRESULT IsThreadCoreWindowVisible(BOOL* bIsVisible)
FILE: ExplorerPatcher/lvt.h
type Windows_UI_Xaml_CornerRadius (line 17) | typedef struct _Windows_UI_Xaml_CornerRadius
type Windows_UI_Xaml_Thickness (line 25) | typedef struct _Windows_UI_Xaml_Thickness
type Windows_UI_Xaml_Visibility (line 33) | typedef enum _Windows_UI_Xaml_Visibility
type interface (line 44) | typedef interface Windows_UI_Xaml_IWindowStatics
type Windows_UI_Xaml_IWindowStatics_Vtbl (line 46) | typedef struct Windows_UI_Xaml_IWindowStatics_Vtbl
function interface (line 83) | interface Windows_UI_Xaml_IWindowStatics // : IInspectable
type interface (line 91) | typedef interface Windows_UI_Xaml_Core_ICoreWindow
type Windows_UI_Xaml_Core_ICoreWindow_Vtbl (line 93) | typedef struct Windows_UI_Xaml_Core_ICoreWindow_Vtbl
function interface (line 165) | interface Windows_UI_Xaml_Core_ICoreWindow // : IInspectable
type interface (line 173) | typedef interface Windows_UI_Xaml_IWindow
type Windows_UI_Xaml_IWindow_Vtbl (line 175) | typedef struct Windows_UI_Xaml_IWindow_Vtbl
function interface (line 228) | interface Windows_UI_Xaml_IWindow // : IInspectable
type interface (line 239) | typedef interface Windows_UI_Xaml_IDependencyObject
type Windows_UI_Xaml_IDependencyObject_Vtbl (line 241) | typedef struct Windows_UI_Xaml_IDependencyObject_Vtbl
function interface (line 283) | interface Windows_UI_Xaml_IDependencyObject // : IInspectable
type interface (line 294) | typedef interface Windows_UI_Xaml_IVisualTreeHelperStatics
type Windows_UI_Xaml_IVisualTreeHelperStatics_Vtbl (line 296) | typedef struct Windows_UI_Xaml_IVisualTreeHelperStatics_Vtbl
function interface (line 359) | interface Windows_UI_Xaml_IVisualTreeHelperStatics // : IInspectable
type interface (line 370) | typedef interface Windows_UI_Xaml_IFrameworkElement
type Windows_UI_Xaml_IFrameworkElement_Vtbl (line 372) | typedef struct Windows_UI_Xaml_IFrameworkElement_Vtbl
function interface (line 502) | interface Windows_UI_Xaml_IFrameworkElement // : IInspectable
type interface (line 513) | typedef interface Windows_UI_Xaml_Controls_IGrid2
type Windows_UI_Xaml_Controls_IGrid2_Vtbl (line 515) | typedef struct Windows_UI_Xaml_Controls_IGrid2_Vtbl
function interface (line 573) | interface Windows_UI_Xaml_Controls_IGrid2 // : IInspectable
type interface (line 584) | typedef interface Windows_UI_Xaml_Controls_IBorder
type Windows_UI_Xaml_Controls_IBorder_Vtbl (line 586) | typedef struct Windows_UI_Xaml_Controls_IBorder_Vtbl
function interface (line 662) | interface Windows_UI_Xaml_Controls_IBorder // : IInspectable
type interface (line 673) | typedef interface Windows_UI_Xaml_Controls_IControl
type Windows_UI_Xaml_Controls_IControl_Vtbl (line 675) | typedef struct Windows_UI_Xaml_Controls_IControl_Vtbl
function interface (line 832) | interface Windows_UI_Xaml_Controls_IControl // : IInspectable
type interface (line 843) | typedef interface Windows_UI_Xaml_IUIElement
type Windows_UI_Xaml_IUIElement_Vtbl (line 845) | typedef struct Windows_UI_Xaml_IUIElement_Vtbl
function interface (line 932) | interface Windows_UI_Xaml_IUIElement // : IInspectable
type interface (line 943) | typedef interface Windows_UI_Xaml_Controls_ICanvasStatics
type Windows_UI_Xaml_Controls_ICanvasStatics_Vtbl (line 945) | typedef struct Windows_UI_Xaml_Controls_ICanvasStatics_Vtbl
function interface (line 1019) | interface Windows_UI_Xaml_Controls_ICanvasStatics // : IInspectable
FILE: ExplorerPatcher/osutility.h
function InitializeGlobalVersionAndUBR (line 30) | inline void InitializeGlobalVersionAndUBR()
function BOOL (line 35) | inline BOOL IsWindows11()
function BOOL (line 42) | inline BOOL IsDwmExtendFrameIntoClientAreaBrokenInThisBuild()
function HRESULT (line 55) | inline HRESULT SetMicaMaterialForThisWindow(HWND hWnd, BOOL bApply)
function BOOL (line 63) | inline BOOL IsWindows11Version22H2OrHigher()
function BOOL (line 69) | inline BOOL IsWindows11Version23H2OrHigher()
function BOOL (line 75) | inline BOOL IsWindows11BuildHigherThan25158()
function BOOL (line 81) | inline BOOL IsWindows11Build25346OrHigher()
function BOOL (line 87) | inline BOOL IsWindows11Version22H2Build1413OrHigher()
function BOOL (line 94) | inline BOOL IsWindows11Version22H2Build2134OrHigher()
FILE: ExplorerPatcher/queryversion.h
function QueryVersionInfo (line 6) | inline void QueryVersionInfo(HMODULE hModule, WORD Resource, DWORD* dwLe...
FILE: ExplorerPatcher/symbols.c
function BOOL (line 51) | BOOL CheckVersion(HKEY hKey, DWORD dwVersion)
function SaveVersion (line 62) | void SaveVersion(HKEY hKey, DWORD dwVersion)
function BOOL (line 67) | static BOOL ProcessExplorerSymbols(char* pszSettingsPath, DWORD* pOffsets)
function BOOL (line 147) | static BOOL ProcessTwinuiPcshellSymbols(char* pszSettingsPath, DWORD* pO...
function BOOL (line 231) | static BOOL ProcessStartDockedSymbols(char* pszSettingsPath, DWORD* pOff...
function BOOL (line 309) | static BOOL ProcessStartUISymbols(char* pszSettingsPath, DWORD* pOffsets)
function DWORD (line 393) | DWORD DownloadSymbols(DownloadSymbolsParams* params)
function LoadSymbolsResult (line 617) | LoadSymbolsResult LoadSymbols(symbols_addr* symbols_PTRS)
FILE: ExplorerPatcher/symbols.h
type symbols_addr (line 56) | typedef struct symbols_addr
type LoadSymbolsResult (line 65) | typedef struct _LoadSymbolsResult
function BOOL (line 74) | inline BOOL NeedToDownloadSymbols(const LoadSymbolsResult* pLoadResult)
type DownloadSymbolsParams (line 82) | typedef struct _DownloadSymbolsParams
function BOOL (line 92) | inline BOOL IsBuild(RTL_OSVERSIONINFOW rovi, DWORD32 ubr, DWORD BuildNum...
FILE: ExplorerPatcher/updates.cpp
function HRESULT (line 12) | static HRESULT String2IXMLDocument(const wchar_t* pwszData, ABI::Windows...
class CToastData (line 43) | class CToastData : public RuntimeClass<RuntimeClassFlags<ClassicCom>, IT...
method CToastData (line 46) | CToastData(IToastNotifier* notifier, IToastNotificationFactory* notifF...
method HideToast (line 51) | void HideToast()
method HideAndShowToast (line 66) | void HideAndShowToast(IXmlDocument* inputXml)
method HRESULT (line 87) | HRESULT UpdateDownloadProgress(SIZE_T downloaded, SIZE_T total)
method STDMETHODIMP (line 161) | STDMETHODIMP Invoke(IToastNotification* sender, IInspectable* argsInsp...
type IsUpdateAvailableParameters (line 194) | struct IsUpdateAvailableParameters
function BOOL (line 200) | BOOL IsUpdateAvailableHelper(
function BOOL (line 819) | BOOL IsUpdateAvailable(LPCWSTR wszDataStore, char* szCheckAgainst, BOOL*...
function BOOL (line 938) | BOOL UpdateProduct(LPCWSTR wszDataStore, CToastData* toastData, BOOL bNo...
function BOOL (line 1037) | BOOL ShowUpdateSuccessNotification(HMODULE hModule, CToastData* toastData)
function BOOL (line 1084) | BOOL InstallUpdatesIfAvailable(
function DWORD (line 1296) | DWORD CheckForUpdatesThread(LPVOID params)
FILE: ExplorerPatcher/utility.c
function printf_guid (line 8) | void printf_guid(GUID guid)
function LRESULT (line 17) | LRESULT CALLBACK BalloonWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPAR...
function ZZTestBalloon (line 46) | __declspec(dllexport) int CALLBACK ZZTestBalloon(HWND hWnd, HINSTANCE hI...
function ZZTestToast (line 97) | __declspec(dllexport) int CALLBACK ZZTestToast(HWND hWnd, HINSTANCE hIns...
function ZZLaunchExplorer (line 142) | __declspec(dllexport) int CALLBACK ZZLaunchExplorer(HWND hWnd, HINSTANCE...
function ZZLaunchExplorerDelayed (line 174) | __declspec(dllexport) int CALLBACK ZZLaunchExplorerDelayed(HWND hWnd, HI...
function ZZRestartExplorer (line 181) | __declspec(dllexport) int CALLBACK ZZRestartExplorer(HWND hWnd, HINSTANC...
function ComputeFileHash (line 216) | int ComputeFileHash(LPCWSTR filename, LPSTR hash, DWORD dwHash)
function ComputeFileHash2 (line 328) | int ComputeFileHash2(HMODULE hModule, LPCWSTR filename, LPSTR hash, DWOR...
function GetHardcodedHash (line 355) | void GetHardcodedHash(LPCWSTR wszPath, LPSTR hash, DWORD dwHash)
function LaunchPropertiesGUI (line 385) | void LaunchPropertiesGUI(HMODULE hModule)
function BOOL (line 422) | BOOL SystemShutdown(BOOL reboot)
function HRESULT (line 461) | HRESULT FindDesktopFolderView(REFIID riid, void** ppv)
function HRESULT (line 519) | HRESULT GetDesktopAutomationObject(REFIID riid, void** ppv)
function HRESULT (line 538) | HRESULT ShellExecuteFromExplorer(
function ToggleTaskbarAutohide (line 599) | void ToggleTaskbarAutohide()
function LSTATUS (line 615) | LSTATUS RegisterDWMService(DWORD dwDesiredState, DWORD dwOverride)
function WCHAR (line 732) | WCHAR* StrReplaceAllW(const WCHAR* s, const WCHAR* oldW, const WCHAR* ne...
function HRESULT (line 763) | HRESULT getEngineGuid(LPCTSTR extension, GUID* guidBuffer)
function ULONG (line 840) | ULONG STDMETHODCALLTYPE ep_static_AddRefRelease(void* _this)
function HRESULT (line 845) | HRESULT STDMETHODCALLTYPE IActiveScriptSite_QueryInterface(void* _this, ...
function HRESULT (line 859) | HRESULT STDMETHODCALLTYPE IActiveScriptSiteWindow_QueryInterface(void* _...
function HRESULT (line 864) | HRESULT STDMETHODCALLTYPE IActiveScriptSite_GetLCID(void* _this, LCID* p...
function HRESULT (line 870) | HRESULT STDMETHODCALLTYPE IActiveScriptSite_GetItemInfo(void* _this, LPC...
function HRESULT (line 875) | HRESULT STDMETHODCALLTYPE IActiveScriptSite_GetDocVersionString(void* _t...
function HRESULT (line 881) | HRESULT STDMETHODCALLTYPE IActiveScriptSite_OnScriptTerminate(void* _thi...
function HRESULT (line 886) | HRESULT STDMETHODCALLTYPE IActiveScriptSite_OnStateChange(void* _this, S...
function HRESULT (line 891) | HRESULT STDMETHODCALLTYPE IActiveScriptSite_OnScriptError(void* _this, I...
function HRESULT (line 929) | HRESULT STDMETHODCALLTYPE IActiveScriptSite_OnEnterScript(void* _this)
function HRESULT (line 934) | HRESULT STDMETHODCALLTYPE IActiveScriptSite_OnLeaveScript(void* _this)
function HRESULT (line 939) | HRESULT STDMETHODCALLTYPE IActiveScriptSiteWindow_GetWindow(void* _this,...
function HRESULT (line 945) | HRESULT STDMETHODCALLTYPE IActiveScriptSiteWindow_EnableModeless(void* _...
type CSimpleScriptSite (line 972) | typedef struct _CSimpleScriptSite
function LRESULT (line 984) | static LRESULT CALLBACK InputBoxProc(int nCode, WPARAM wParam, LPARAM lP...
function HRESULT (line 1000) | HRESULT InputBox(BOOL bPassword, HWND hWnd, LPCWSTR wszPrompt, LPCWSTR w...
function BOOL (line 1130) | BOOL PleaseWait_UpdateTimeout(int timeout)
function VOID (line 1141) | VOID CALLBACK PleaseWait_TimerProc(HWND hWnd, UINT uMsg, UINT idEvent, D...
function LRESULT (line 1161) | LRESULT CALLBACK PleaseWait_HookProc(int code, WPARAM wParam, LPARAM lPa...
function BOOL (line 1194) | BOOL DownloadAndInstallWebView2Runtime()
function BOOL (line 1281) | BOOL DownloadFile(LPCWSTR wszURL, DWORD dwSize, LPCWSTR wszPath)
function BOOL (line 1338) | BOOL IsConnectedToInternet()
function BOOL (line 1374) | BOOL DoesOSBuildSupportSpotlight()
function BOOL (line 1379) | BOOL IsSpotlightEnabled()
function SpotlightHelper (line 1388) | void SpotlightHelper(DWORD dwOp, HWND hWnd, HMENU hMenu, LPPOINT pPt)
function BOOL (line 1532) | BOOL ExtractMonitorByIndex(HMONITOR hMonitor, HDC hDC, LPRECT lpRect, Mo...
function HRESULT (line 1548) | HRESULT SHRegGetBOOLWithREGSAM(HKEY key, LPCWSTR subKey, LPCWSTR value, ...
function HRESULT (line 1587) | HRESULT SHRegGetDWORD(HKEY hkey, const WCHAR* pwszSubKey, const WCHAR* p...
function BOOL (line 1597) | BOOL GetLogonSid(PSID* ppsid)
function BOOL (line 1645) | BOOL PrepareSecurityDescriptor(PSID pMainSid, DWORD dwMainPermissions, P...
FILE: ExplorerPatcher/utility.h
type StuckRectsData (line 69) | typedef struct _StuckRectsData
type interface (line 91) | typedef interface ITrayUIHost
type interface (line 93) | typedef interface ITrayUI ITrayUI;
type HRESULT (line 107) | typedef HRESULT(*TrayUI_CreateInstance_t)(ITrayUIHost* host, REFIID riid...
function FileExistsW (line 111) | inline int FileExistsW(wchar_t* file)
type LSTATUS (line 145) | typedef LSTATUS(*t_SHRegGetValueFromHKCUHKLM)(
function LSTATUS (line 155) | inline LSTATUS SHRegGetValueFromHKCUHKLMWithOpt(
type IMMERSIVE_COLOR_TYPE (line 247) | typedef enum IMMERSIVE_COLOR_TYPE
type IMMERSIVE_COLOR_PREFERENCE (line 254) | typedef struct IMMERSIVE_COLOR_PREFERENCE
type IMMERSIVE_HC_CACHE_MODE (line 260) | typedef enum IMMERSIVE_HC_CACHE_MODE
type HRESULT (line 275) | typedef HRESULT(*GetUserColorPreference_t)(IMMERSIVE_COLOR_PREFERENCE*, ...
type DWORD (line 278) | typedef DWORD(*GetColorFromPreference_t)(const IMMERSIVE_COLOR_PREFERENC...
function BOOL (line 317) | inline BOOL IsHighContrast()
function WCHAR (line 328) | static inline WCHAR* rand_string(WCHAR* str, size_t size)
function milliseconds_now (line 342) | inline long long milliseconds_now() {
function BOOL (line 355) | inline BOOL IsAppRunningAsAdminMode()
function BOOL (line 400) | inline BOOL IsDesktopWindowAlreadyPresent()
function RM_UNIQUE_PROCESS (line 406) | inline RM_UNIQUE_PROCESS GetExplorerApplication()
function DWORD (line 446) | inline DWORD WINAPI BeginExplorerRestart(LPVOID lpUnused)
function FinishExplorerRestart (line 467) | inline void FinishExplorerRestart()
function BOOL (line 479) | inline BOOL ExitExplorer()
function StartExplorerWithDelay (line 485) | inline void StartExplorerWithDelay(int delay, HANDLE userToken)
function StartExplorer (line 534) | inline void StartExplorer()
function BOOL (line 598) | inline BOOL IncrementDLLReferenceCount(HINSTANCE hinst)
function BOOL (line 610) | inline BOOL SectionBeginAndSizeEx64(
function BOOL (line 632) | inline BOOL SectionBeginAndSizePEFileEx64(
function BOOL (line 654) | inline BOOL SectionBeginAndSize(HMODULE hModule, const char* pszSectionN...
function BOOL (line 672) | inline BOOL SectionBeginAndSizePEFile(
type EP_IMAGE_CHPE_RANGE_ENTRY (line 691) | typedef struct _EP_IMAGE_CHPE_RANGE_ENTRY
type EP_IMAGE_ARM64EC_METADATA (line 705) | typedef struct _EP_IMAGE_ARM64EC_METADATA
function BOOL (line 730) | inline BOOL GetChpeRanges64(
function BOOL (line 774) | inline BOOL GetChpeRangesPEFile64(
type EP_ChpeCodeRangeType (line 837) | typedef enum _EP_ChpeCodeRangeType
function BOOL (line 845) | inline BOOL TextSectionBeginAndSize(HMODULE hModule, PBYTE* beginSection...
function BOOL (line 892) | inline BOOL TextSectionBeginAndSizePEFile(PBYTE pFileBase, DWORD fileSiz...
function BOOL (line 943) | __forceinline BOOL TextSectionBeginAndSize(HMODULE hModule, PBYTE* begin...
function BOOL (line 948) | __forceinline BOOL TextSectionBeginAndSizePEFile(PBYTE pFileBase, DWORD ...
function BOOL (line 954) | __forceinline BOOL RDataSectionBeginAndSize(HMODULE hModule, PBYTE* begi...
function BOOL (line 959) | __forceinline BOOL RDataSectionBeginAndSizePEFile(PBYTE pFileBase, DWORD...
function BOOL (line 967) | inline BOOL FollowJump(PBYTE pInstr, BYTE shortOpcode, BYTE longOpcodeEx...
function BOOL (line 986) | inline BOOL FollowJnz(PBYTE pInstr, PBYTE* pTarget, DWORD* pInstrSize)
function BOOL (line 991) | inline BOOL FollowJz(PBYTE pInstr, PBYTE* pTarget, DWORD* pInstrSize)
function DWORD (line 1000) | __forceinline DWORD ARM64_ReadBits(DWORD value, int h, int l)
function ARM64_SignExtend (line 1005) | __forceinline int ARM64_SignExtend(DWORD value, int numBits)
function ARM64_ReadBitsSignExtend (line 1013) | __forceinline int ARM64_ReadBitsSignExtend(DWORD insn, int h, int l)
function BOOL (line 1018) | __forceinline BOOL ARM64_IsInRange(int value, int bitCount)
function UINT_PTR (line 1025) | __forceinline UINT_PTR ARM64_Align(UINT_PTR value, UINT_PTR alignment)
function BOOL (line 1030) | __forceinline BOOL ARM64_IsCBZW(DWORD insn) { return ARM64_ReadBits(insn...
function BOOL (line 1031) | __forceinline BOOL ARM64_IsCBNZW(DWORD insn) { return ARM64_ReadBits(ins...
function BOOL (line 1032) | __forceinline BOOL ARM64_IsTBZ(DWORD insn) { return ARM64_ReadBits(insn,...
function BOOL (line 1033) | __forceinline BOOL ARM64_IsTBNZ(DWORD insn) { return ARM64_ReadBits(insn...
function BOOL (line 1034) | __forceinline BOOL ARM64_IsBL(DWORD insn) { return ARM64_ReadBits(insn, ...
function BOOL (line 1035) | __forceinline BOOL ARM64_IsADRP(DWORD insn) { return (ARM64_ReadBits(ins...
function BOOL (line 1036) | __forceinline BOOL ARM64_IsMOVZW(DWORD insn) { return ARM64_ReadBits(ins...
function BOOL (line 1037) | __forceinline BOOL ARM64_IsSTRBIMM(DWORD insn) { return ARM64_ReadBits(i...
function DWORD (line 1039) | __forceinline DWORD* ARM64_FollowCBNZW(DWORD* pInsnCBNZW)
function DWORD (line 1048) | __forceinline DWORD* ARM64_FollowBL(DWORD* pInsnBL)
function DWORD (line 1057) | __forceinline DWORD ARM64_MakeB(int imm26)
function DWORD (line 1064) | __forceinline DWORD ARM64_MakeBL(int imm26)
function DWORD (line 1071) | __forceinline DWORD ARM64_CBZWToB(DWORD insnCBZW)
function DWORD (line 1079) | __forceinline DWORD ARM64_CBNZWToB(DWORD insnCBNZW)
function DWORD (line 1087) | __forceinline DWORD ARM64_TBZToB(DWORD insnTBZ)
function DWORD (line 1095) | __forceinline DWORD ARM64_TBNZToB(DWORD insnTBNZ)
function DWORD (line 1103) | __forceinline DWORD ARM64_DecodeADD(DWORD insnADD)
function DWORD (line 1110) | __forceinline DWORD ARM64_DecodeSTRBIMM(DWORD insnSTRBIMM)
function DWORD (line 1118) | __forceinline DWORD ARM64_DecodeLDRBIMM(DWORD insnLDRBIMM)
function UINT_PTR (line 1126) | inline UINT_PTR ARM64_DecodeADRL(UINT_PTR offset, DWORD insnADRP, DWORD ...
function BOOL (line 1144) | inline BOOL WINAPI PatchContextMenuOfNewMicrosoftIME(BOOL* bFound)
type MonitorOverrideData (line 1247) | typedef struct _MonitorOverrideData
function BOOL (line 1258) | inline BOOL MaskCompare(PVOID pBuffer, LPCSTR lpPattern, LPCSTR lpMask)
function PVOID (line 1269) | inline __declspec(noinline) PVOID FindPatternHelper(PVOID pBase, SIZE_T ...
function PVOID (line 1282) | inline PVOID FindPattern(PVOID pBase, SIZE_T dwSize, LPCSTR lpPattern, L...
function UINT_PTR (line 1288) | inline UINT_PTR FileOffsetToRVA(PBYTE pBase, UINT_PTR offset)
function UINT_PTR (line 1301) | inline UINT_PTR RVAToFileOffset(PBYTE pBase, UINT_PTR rva)
function HMODULE (line 1314) | inline HMODULE LoadGuiModule()
function BOOL (line 1323) | inline BOOL DoesWindows10StartMenuExist()
function BOOL (line 1342) | inline BOOL IsStockWindows10TaskbarAvailable()
function WCHAR (line 1351) | inline const WCHAR* PickTaskbarDll()
function BOOL (line 1394) | inline BOOL DoesTaskbarDllExist()
function AdjustTaskbarStyleValue (line 1408) | inline void AdjustTaskbarStyleValue(DWORD* pdwValue)
FILE: ep_extra/worker.c
function done (line 10) | void done() {
function BOOL (line 62) | BOOL WINAPI DllMain(
FILE: ep_extra_valinet.win7alttab/main.c
function HRESULT (line 14) | HRESULT AltTab_DwmpActivateLivePreview(int s, HWND hWnd, int c, int d) {
function AltTab_LoadStringW (line 18) | int AltTab_LoadStringW(HINSTANCE hInstance, UINT uID, LPWSTR lpBuffer, i...
function HTHEME (line 32) | HTHEME AltTab_OpenThemeData(HWND hwnd, LPCWSTR pszClassList) {
function HRESULT (line 37) | HRESULT AltTab_DrawThemeTextEx(HTHEME hTheme, HDC hdc, int iPartId, int ...
function BOOL (line 45) | BOOL AltTab_IsWindowEnabled(HWND hWnd) {
function HRESULT (line 56) | HRESULT AltTab_DwmExtendFrameIntoClientArea(HWND hWnd, const MARGINS* pM...
function BOOL (line 62) | BOOL AltTab_PostMessageW(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPa...
function clean (line 69) | __declspec(dllexport) void clean() {
function setup (line 74) | __declspec(dllexport) int setup() {
function BOOL (line 101) | BOOL WINAPI DllMain(
FILE: ep_generate_release_description/ep_generate_release_description.c
function main (line 7) | int main(int argc, char** argv)
FILE: ep_generate_release_name/ep_generate_release_name.c
function main (line 3) | int main(int argc, char** argv)
FILE: ep_gui/GUI.c
function LSTATUS (line 16) | LSTATUS SetPolicy(HKEY hKey, LPCWSTR wszPolicyPath, LPCWSTR wszPolicyNam...
function GUI_DeleteWeatherFolder (line 50) | int GUI_DeleteWeatherFolder()
function BOOL (line 79) | BOOL GUI_Internal_DeleteWeatherFolder(int* res)
function PlayHelpMessage (line 110) | void PlayHelpMessage(GUI* _this)
function NTSTATUS (line 159) | NTSTATUS NTAPI hookRtlQueryElevationFlags(DWORD* pFlags)
function LONG (line 167) | LONG NTAPI OnVex(PEXCEPTION_POINTERS ExceptionInfo)
function BOOL (line 190) | BOOL IsColorSchemeChangeMessage(LPARAM lParam)
function LSTATUS (line 200) | LSTATUS GUI_Internal_RegSetValueExW(
function LSTATUS (line 527) | LSTATUS GUI_RegSetValueExW(
function LSTATUS (line 540) | LSTATUS GUI_Internal_RegQueryValueExW(
function LSTATUS (line 739) | LSTATUS GUI_RegCreateKeyExW(
function LSTATUS (line 759) | LSTATUS GUI_RegOpenKeyExW(
function LSTATUS (line 787) | LSTATUS GUI_RegQueryValueExW(
function GUI_SetSection (line 812) | static void GUI_SetSection(GUI* _this, BOOL bCheckEnablement, int dwSect...
function GUI_SubstituteLocalizedString (line 868) | static void GUI_SubstituteLocalizedString(wchar_t* str, size_t cch)
function GUI_EnumerateLanguagesCallback (line 910) | static void GUI_EnumerateLanguagesCallback(const EP_L10N_Language* langu...
function GUI_PopulateLanguageSelectorMenu (line 926) | static void GUI_PopulateLanguageSelectorMenu(HMENU hMenu)
function GUI_UpdateLanguages (line 955) | static void GUI_UpdateLanguages()
function DWORD (line 962) | static DWORD GUI_GetTaskbarStyle(BOOL bAdjust)
function GUI_RemoveChoiceEntry (line 974) | static void GUI_RemoveChoiceEntry(HMENU hMenu, UINT value)
function BOOL (line 988) | static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
function LRESULT (line 3399) | static LRESULT CALLBACK GUI_WindowProc(HWND hWnd, UINT uMsg, WPARAM wPar...
function ZZGUI (line 3894) | __declspec(dllexport) int ZZGUI(HWND hWnd, HINSTANCE hInstance, LPSTR lp...
FILE: ep_gui/GUI.h
type GUI (line 64) | typedef struct _GUI
FILE: ep_gui/dllmain.cpp
function BOOL (line 8) | BOOL WINAPI DllMain(
FILE: ep_setup/ep_setup.c
function BOOL (line 22) | BOOL SetupShortcut(BOOL bInstall, WCHAR* wszPath, WCHAR* wszArguments)
function BOOL (line 122) | BOOL SetupUninstallEntry(BOOL bInstall, WCHAR* wszPath)
type MemoryBuffer (line 304) | typedef struct
function MemoryBuffer_Destroy (line 311) | void MemoryBuffer_Destroy(MemoryBuffer** mem)
function voidpf (line 322) | voidpf ZCALLBACK MemOpenFile(voidpf opaque, const void* filename, int mode)
function uLong (line 328) | uLong ZCALLBACK MemReadFile(voidpf opaque, voidpf stream, void* buf, uLo...
function uLong (line 347) | uLong ZCALLBACK MemWriteFile(voidpf opaque, voidpf stream, const void* b...
function ZPOS64_T (line 352) | ZPOS64_T ZCALLBACK MemTellFile(voidpf opaque, voidpf stream)
function MemSeekFile (line 358) | long ZCALLBACK MemSeekFile(voidpf opaque, voidpf stream, ZPOS64_T offset...
function MemCloseFile (line 387) | int ZCALLBACK MemCloseFile(voidpf opaque, voidpf stream)
function MemErrorFile (line 392) | int ZCALLBACK MemErrorFile(voidpf opaque, voidpf stream)
function FillMemoryFileIOFunctions (line 397) | void FillMemoryFileIOFunctions(zlib_filefunc64_def* pFileFunc, MemoryBuf...
function unzFile (line 419) | unzFile LoadZipFileFromResources(MemoryBuffer** outMem)
function BOOL (line 490) | BOOL StageFileForCleanup(const WCHAR* wszProblematicFilePath)
function BOOL (line 510) | __declspec(noinline) BOOL InstallResourceHelper(BOOL bInstall, HMODULE h...
function BOOL (line 597) | __declspec(noinline) BOOL InstallResource(BOOL bInstall, HMODULE hInstan...
function WCHAR (line 623) | const WCHAR* GetSystemLanguages()
function BOOL (line 643) | BOOL SystemHasLanguageInstalled(const WCHAR* languages, const char* lang...
type LanguageCodeTreatment (line 658) | typedef enum LanguageCodeTreatment
function BOOL (line 665) | __declspec(noinline) BOOL ExtractDirectory(unzFile zipFile, const char* ...
function BOOL (line 789) | BOOL DeleteResource(LPCWSTR pwszDirectory, LPCWSTR pwszFileName)
function ProcessTaskbarDlls (line 832) | void ProcessTaskbarDlls(BOOL* bInOutOk, BOOL bInstall, BOOL bExtractMode...
function BOOL (line 843) | BOOL RemoveDirectoryRecursive(const WCHAR* wszDirectoryPath)
function wWinMain (line 898) | int WINAPI wWinMain(
FILE: ep_setup/rijndael-alg-fst.c
function rijndaelKeySetupEnc (line 730) | __forceinline int rijndaelKeySetupEnc(u32 rk[/*4*(Nr + 1)*/], const u8 c...
function rijndaelKeySetupDec (line 816) | __forceinline int rijndaelKeySetupDec(u32 rk[/*4*(Nr + 1)*/], const u8 c...
function rijndaelEncrypt (line 856) | __forceinline void rijndaelEncrypt(const u32 rk[/*4*(Nr + 1)*/], int Nr,...
function rijndaelDecrypt (line 1037) | __forceinline void rijndaelDecrypt(const u32 rk[/*4*(Nr + 1)*/], int Nr,...
function rijndaelEncryptRound (line 1220) | void rijndaelEncryptRound(const u32 rk[/*4*(Nr + 1)*/], int Nr, u8 block...
function rijndaelDecryptRound (line 1313) | void rijndaelDecryptRound(const u32 rk[/*4*(Nr + 1)*/], int Nr, u8 block...
FILE: ep_setup/rijndael-alg-fst.h
type u8 (line 33) | typedef unsigned char u8;
type u16 (line 34) | typedef unsigned short u16;
type u32 (line 35) | typedef unsigned int u32;
FILE: ep_setup_patch/ep_setup_patch.c
function wWinMain (line 6) | int WINAPI wWinMain(
FILE: ep_startmenu/ep_sm_main.c
function BOOL (line 27) | BOOL GetStartUIName(WCHAR* out, int cch)
function BOOL (line 55) | BOOL GetStartShowClassicMode()
function PatchXamlMetaDataProviderGuid (line 69) | void PatchXamlMetaDataProviderGuid()
function Init (line 99) | void Init()
function wchar_t (line 176) | wchar_t* GetCmdArguments(int* a1)
function HRESULT (line 204) | HRESULT GetActivationFactoryByPCWSTR(PCWSTR activatableClassId, REFIID r...
function BOOL (line 250) | BOOL WINAPI DllMain(
FILE: ep_startmenu/ep_sm_main_cpp.cpp
type ABI::Windows::ApplicationModel::Resources::Core::Internal (line 10) | namespace ABI::Windows::ApplicationModel::Resources::Core::Internal
function HRESULT (line 36) | HRESULT LoadOurShellCommonPri()
function HRESULT (line 77) | HRESULT GetActivationFactoryByPCWSTR_InStartUI(PCWSTR activatableClassId...
function HRESULT (line 101) | HRESULT GetActivationFactoryByPCWSTR_InJumpViewUI(PCWSTR activatableClas...
FILE: ep_weather_host/ep_weather.c
function HRESULT (line 20) | HRESULT WINAPI _DllRegisterServer()
function HRESULT (line 187) | HRESULT WINAPI _DllUnregisterServer()
function HRESULT (line 261) | HRESULT WINAPI _DllCanUnloadNow()
function HRESULT (line 271) | HRESULT WINAPI _DllGetClassObject(
function BOOL (line 295) | BOOL WINAPI DllMain(
FILE: ep_weather_host/ep_weather_error_html.h
function n (line 15) | n\
FILE: ep_weather_host/ep_weather_factory.c
function ULONG (line 4) | ULONG STDMETHODCALLTYPE epw_factory_AddRef(IClassFactory* _this)
function ULONG (line 9) | ULONG STDMETHODCALLTYPE epw_factory_Release(IClassFactory* _this)
function HRESULT (line 14) | HRESULT STDMETHODCALLTYPE epw_factory_QueryInterface(
function HRESULT (line 31) | HRESULT STDMETHODCALLTYPE epw_factory_LockServer(
function HRESULT (line 48) | HRESULT STDMETHODCALLTYPE epw_factory_CreateInstance(
FILE: ep_weather_host/ep_weather_factory.h
type interface (line 21) | typedef interface IEPWeatherFactory
FILE: ep_weather_host/ep_weather_host.c
function HRESULT (line 12) | HRESULT STDMETHODCALLTYPE epw_Weather_static_Stub(void* _this)
function ULONG (line 17) | ULONG STDMETHODCALLTYPE epw_Weather_static_AddRefRelease(void* _this)
function DWORD (line 22) | static DWORD epw_Weather_ReleaseBecauseClientDiedThread(EPWeather* _this)
function epw_Weather_SetTextScaleFactorFromRegistry (line 29) | static void epw_Weather_SetTextScaleFactorFromRegistry(EPWeather* _this,...
function HRESULT (line 60) | HRESULT STDMETHODCALLTYPE INetworkListManagerEvents_QueryInterface(Gener...
function HRESULT (line 73) | HRESULT STDMETHODCALLTYPE INetworkListManagerEvents_ConnectivityChanged(...
function GenericObjectWithThis (line 98) | GenericObjectWithThis* GenericObjectWithThis_MakeAndInitialize(IUnknownV...
function ULONG (line 115) | ULONG STDMETHODCALLTYPE GenericObjectWithThis_AddRef(GenericObjectWithTh...
function ULONG (line 123) | ULONG STDMETHODCALLTYPE GenericObjectWithThis_Release(GenericObjectWithT...
function HRESULT (line 137) | HRESULT STDMETHODCALLTYPE ICoreWebView2EnvironmentOptions_QueryInterface...
function HRESULT (line 150) | HRESULT STDMETHODCALLTYPE ICoreWebView2CreateCoreWebView2EnvironmentComp...
function HRESULT (line 163) | HRESULT STDMETHODCALLTYPE ICoreWebView2CreateCoreWebView2ControllerCompl...
function HRESULT (line 176) | HRESULT STDMETHODCALLTYPE ICoreWebView2NavigationStartingEventHandler_Qu...
function HRESULT (line 189) | HRESULT STDMETHODCALLTYPE ICoreWebView2NavigationCompletedEventHandler_Q...
function HRESULT (line 202) | HRESULT STDMETHODCALLTYPE ICoreWebView2PermissionRequestedEventHandler_Q...
function HRESULT (line 215) | HRESULT STDMETHODCALLTYPE ICoreWebView2CallDevToolsProtocolMethodComplet...
function HRESULT (line 229) | HRESULT STDMETHODCALLTYPE ICoreWebView2ExecuteScriptCompletedHandler_Que...
function HRESULT (line 242) | HRESULT STDMETHODCALLTYPE ICoreWebView2_get_AdditionalBrowserArguments(I...
function HRESULT (line 252) | HRESULT STDMETHODCALLTYPE ICoreWebView2_get_Language(ICoreWebView2Enviro...
function HRESULT (line 262) | HRESULT STDMETHODCALLTYPE ICoreWebView2_get_TargetCompatibleBrowserVersi...
function HRESULT (line 272) | HRESULT STDMETHODCALLTYPE ICoreWebView2_get_AllowSingleSignOnUsingOSPrim...
function HRESULT (line 278) | HRESULT STDMETHODCALLTYPE ICoreWebView2_CreateCoreWebView2EnvironmentCom...
function HRESULT (line 288) | HRESULT STDMETHODCALLTYPE _epw_Weather_NavigateToError(EPWeather* _this)
function HRESULT (line 329) | HRESULT STDMETHODCALLTYPE _epw_Weather_NavigateToProvider(EPWeather* _this)
function HRESULT (line 366) | HRESULT STDMETHODCALLTYPE _epw_Weather_ExecuteDataScript(EPWeather* _this)
function HRESULT (line 413) | HRESULT STDMETHODCALLTYPE _ep_Weather_StartResize(EPWeather* _this)
function HRESULT (line 420) | HRESULT STDMETHODCALLTYPE _ep_Weather_ReboundBrowser(EPWeather* _this, L...
function HRESULT (line 445) | HRESULT STDMETHODCALLTYPE ICoreWebView2_CreateCoreWebView2ControllerComp...
function HRESULT (line 518) | HRESULT STDMETHODCALLTYPE ICoreWebView2_CallDevToolsProtocolMethodComple...
function HRESULT (line 542) | HRESULT STDMETHODCALLTYPE ICoreWebView2_NavigationStarting(GenericObject...
function HRESULT (line 559) | HRESULT STDMETHODCALLTYPE ICoreWebView2_NavigationCompleted(GenericObjec...
function HRESULT (line 591) | HRESULT STDMETHODCALLTYPE ICoreWebView2_ExecuteScriptCompleted(GenericOb...
function HRESULT (line 783) | HRESULT STDMETHODCALLTYPE ICoreWebView2_PermissionRequested(GenericObjec...
function ULONG (line 796) | ULONG STDMETHODCALLTYPE epw_Weather_AddRef(EPWeather* _this)
function ULONG (line 803) | ULONG STDMETHODCALLTYPE epw_Weather_Release(EPWeather* _this)
function HRESULT (line 890) | HRESULT STDMETHODCALLTYPE epw_Weather_QueryInterface(EPWeather* _this, R...
function HRESULT (line 903) | HRESULT STDMETHODCALLTYPE epw_Weather_About(EPWeather* _this, HWND hWnd)
function LRESULT (line 930) | LRESULT CALLBACK epw_Weather_WindowProc(_In_ HWND hWnd, _In_ UINT uMsg, ...
function HRESULT (line 1264) | HRESULT STDMETHODCALLTYPE epw_Weather_IsDarkMode(EPWeather* _this, LONG6...
function HRESULT (line 1280) | HRESULT STDMETHODCALLTYPE epw_Weather_SetDarkMode(EPWeather* _this, LONG...
function HRESULT (line 1305) | HRESULT STDMETHODCALLTYPE epw_Weather_SetGeolocationMode(EPWeather* _thi...
function HRESULT (line 1312) | HRESULT STDMETHODCALLTYPE epw_Weather_SetWindowCornerPreference(EPWeathe...
function HRESULT (line 1323) | HRESULT STDMETHODCALLTYPE epw_Weather_SetDevMode(EPWeather* _this, LONG6...
function HRESULT (line 1333) | HRESULT STDMETHODCALLTYPE epw_Weather_SetIconPack(EPWeather* _this, LONG...
function HRESULT (line 1343) | HRESULT STDMETHODCALLTYPE epw_Weather_SetZoomFactor(EPWeather* _this, LO...
function HRESULT (line 1350) | HRESULT STDMETHODCALLTYPE epw_Weather_GetLastUpdateTime(EPWeather* _this...
function DWORD (line 1356) | DWORD WINAPI epw_Weather_MainThread(EPWeather* _this)
function HRESULT (line 1644) | HRESULT STDMETHODCALLTYPE epw_Weather_Initialize(EPWeather* _this, WCHAR...
function HRESULT (line 1772) | HRESULT STDMETHODCALLTYPE epw_Weather_Show(EPWeather* _this)
function HRESULT (line 1788) | HRESULT STDMETHODCALLTYPE epw_Weather_Hide(EPWeather* _this)
function HRESULT (line 1800) | HRESULT STDMETHODCALLTYPE epw_Weather_GetWindowHandle(EPWeather* _this, ...
function HRESULT (line 1806) | HRESULT STDMETHODCALLTYPE epw_Weather_LockData(EPWeather* _this)
function HRESULT (line 1820) | HRESULT STDMETHODCALLTYPE epw_Weather_GetDataSizes(EPWeather* _this, LPD...
function HRESULT (line 1829) | HRESULT STDMETHODCALLTYPE epw_Weather_GetData(EPWeather* _this, DWORD cb...
function HRESULT (line 1850) | HRESULT STDMETHODCALLTYPE epw_Weather_GetTitle(EPWeather* _this, DWORD c...
function HRESULT (line 1875) | HRESULT STDMETHODCALLTYPE epw_Weather_UnlockData(EPWeather* _this)
function HRESULT (line 1884) | HRESULT STDMETHODCALLTYPE epw_Weather_IsInitialized(EPWeather* _this, BO...
function HRESULT (line 1890) | HRESULT STDMETHODCALLTYPE epw_Weather_SetNotifyWindow(EPWeather* _this, ...
function HRESULT (line 1895) | HRESULT STDMETHODCALLTYPE epw_Weather_SetTemperatureUnit(EPWeather* _thi...
function HRESULT (line 1905) | HRESULT STDMETHODCALLTYPE epw_Weather_SetUpdateSchedule(EPWeather* _this...
function HRESULT (line 1920) | HRESULT STDMETHODCALLTYPE epw_Weather_SetTerm(EPWeather* _this, DWORD cb...
function HRESULT (line 1933) | HRESULT STDMETHODCALLTYPE epw_Weather_SetLanguage(EPWeather* _this, DWOR...
function HRESULT (line 1946) | HRESULT STDMETHODCALLTYPE epw_Weather_SetIconSize(EPWeather* _this, LONG...
function HRESULT (line 1959) | HRESULT STDMETHODCALLTYPE epw_Weather_GetIconSize(EPWeather* _this, LONG...
FILE: ep_weather_host/ep_weather_host.h
type GenericObjectWithThis (line 35) | typedef struct _GenericObjectWithThis GenericObjectWithThis;
type interface (line 38) | typedef interface EPWeather
function DWORD (line 170) | static inline DWORD epw_Weather_GetTextScaleFactor(EPWeather* _this) { r...
function DWORD (line 171) | static inline DWORD epw_Weather_GetZoomFactor(EPWeather* _this) { return...
function DWORD (line 172) | static inline DWORD epw_Weather_GetStyle(EPWeather* _this) { SetLastErro...
function DWORD (line 173) | static inline DWORD epw_Weather_HasMenuBar(EPWeather* _this) { return 0; }
function DWORD (line 174) | static inline DWORD epw_Weather_GetExtendedStyle(EPWeather* _this) { Set...
type GenericObjectWithThis (line 205) | typedef struct _GenericObjectWithThis {
FILE: ep_weather_host/ep_weather_provider_google_script.h
function n (line 17) | n\
function n (line 35) | n\
function function (line 274) | function ep_weather_part0() {\n\
FILE: ep_weather_host/ep_weather_utility.h
function BOOL (line 14) | inline BOOL IsColorSchemeChangeMessage(LPARAM lParam)
function BOOL (line 24) | inline BOOL IsHighContrast()
Condensed preview — 228 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,270K chars).
[
{
"path": ".github/ISSUE_TEMPLATE/bug_report.yml",
"chars": 4793,
"preview": "name: Bug report\ndescription: Report the issue you have with ExplorerPatcher here\nlabels:\n - bug\nbody:\n - type: markdo"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 653,
"preview": "blank_issues_enabled: false\ncontact_links:\n - name: Questions\n about: Ask questions and receive support here\n url"
},
{
"path": ".github/workflows/build.yml",
"chars": 11034,
"preview": "# references:\r\n# https://trstringer.com/github-actions-multiline-strings/\r\n# https://trstringer.com/github-actions-creat"
},
{
"path": ".gitignore",
"chars": 6069,
"preview": "ep_private.h\n.idea/\nep_taskbar*/\nb*.bat\nc*.bat\nbuild/\n*.dll\n*.exe\n\n## Ignore Visual Studio temporary files, build result"
},
{
"path": ".gitmodules",
"chars": 453,
"preview": "[submodule \"libs/libvalinet\"]\n\tpath = libs/libvalinet\n\turl = https://github.com/valinet/libvalinet\n[submodule \"libs/sws\""
},
{
"path": "BuildDependenciesDebug.bat",
"chars": 734,
"preview": "rmdir /s /q libs\\zlib\\build\r\n\r\nif \"%VSINSTALLDIR:~-1%\"==\"\\\" (\r\n set \"EP_VSINSTALLDIR=%VSINSTALLDIR:~0,-1%\"\r\n) else (\r"
},
{
"path": "BuildDependenciesRelease.bat",
"chars": 738,
"preview": "rmdir /s /q libs\\zlib\\build\r\n\r\nif \"%VSINSTALLDIR:~-1%\"==\"\\\" (\r\n set \"EP_VSINSTALLDIR=%VSINSTALLDIR:~0,-1%\"\r\n) else (\r"
},
{
"path": "CHANGELOG.md",
"chars": 90213,
"preview": "# Explorer Patcher Change log\n\nThis document includes the same release notes as in the [Releases](https://github.com/val"
},
{
"path": "ExplorerPatcher/ArchiveMenu.c",
"chars": 5154,
"preview": "#include \"ArchiveMenu.h\"\r\n\r\nDWORD ArchiveMenuThread(ArchiveMenuThreadParams* params)\r\n{\r\n Sleep(1000);\r\n printf(\"S"
},
{
"path": "ExplorerPatcher/ArchiveMenu.h",
"chars": 1683,
"preview": "#ifndef _H_ARCHIVEMENU_H_\r\n#define _H_ARCHIVEMENU_H_\r\n#include <initguid.h>\r\n#include <Windows.h>\r\n#include <Shlobj_core"
},
{
"path": "ExplorerPatcher/ExplorerPatcher.vcxproj",
"chars": 18318,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/ms"
},
{
"path": "ExplorerPatcher/ExplorerPatcher.vcxproj.filters",
"chars": 9750,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
},
{
"path": "ExplorerPatcher/HideExplorerSearchBar.c",
"chars": 2410,
"preview": "#include \"HideExplorerSearchBar.h\"\r\n\r\nHWND FindChildWindow(\r\n HWND hwndParent,\r\n wchar_t* lpszClass\r\n)\r\n{\r\n HWN"
},
{
"path": "ExplorerPatcher/HideExplorerSearchBar.h",
"chars": 670,
"preview": "#ifndef _H_HIDEEXPLORERSEARCHBAR_H_\r\n#define _H_HIDEEXPLORERSEARCHBAR_H_\r\n#include <Windows.h>\r\n#include <commctrl.h>\r\n#"
},
{
"path": "ExplorerPatcher/ImmersiveColor.h",
"chars": 1101,
"preview": "#pragma once\r\n\r\n#include <Windows.h>\r\n\r\n#include \"utility.h\"\r\n\r\nclass CImmersiveColor\r\n{\r\npublic:\r\n static DWORD Get"
},
{
"path": "ExplorerPatcher/ImmersiveFlyouts.c",
"chars": 5811,
"preview": "#include \"ImmersiveFlyouts.h\"\r\n\r\nvoid InvokeActionCenter()\r\n{\r\n HRESULT hr = S_OK;\r\n IUnknown* pImmersiveShell = N"
},
{
"path": "ExplorerPatcher/ImmersiveFlyouts.h",
"chars": 6159,
"preview": "#ifndef _H_IMMERSIVEFLYOUTS_H_\r\n#define _H_IMMERSIVEFLYOUTS_H_\r\n#include <Windows.h>\r\n#include <roapi.h>\r\n#include \"util"
},
{
"path": "ExplorerPatcher/InputSwitch.cpp",
"chars": 9123,
"preview": "#include \"InputSwitch.h\"\r\n\r\n#include <shellscalingapi.h>\r\n#include <wrl/implements.h>\r\n#include <wil/result_macros.h>\r\n"
},
{
"path": "ExplorerPatcher/InputSwitch.h",
"chars": 5341,
"preview": "#pragma once\r\n\r\n#include <Windows.h>\r\n\r\nDEFINE_GUID(CLSID_InputSwitchControl, 0xb9bc2a50, 0x43c3, 0x41aa, 0xa0, 0x86, 0"
},
{
"path": "ExplorerPatcher/Localization.cpp",
"chars": 4525,
"preview": "#include \"Localization.h\"\r\n\r\n#include <algorithm>\r\n#include <vector>\r\n\r\n#include \"def.h\"\r\n\r\nextern \"C\"\r\n{\r\n\r\nEP_L10N_La"
},
{
"path": "ExplorerPatcher/Localization.h",
"chars": 722,
"preview": "#pragma once\r\n\r\n#include <Windows.h>\r\n\r\n#ifdef __cplusplus\r\nextern \"C\"\r\n{\r\n#endif\r\n\r\ntypedef struct EP_L10N_Language\r\n{"
},
{
"path": "ExplorerPatcher/SettingsMonitor.c",
"chars": 2508,
"preview": "#include \"SettingsMonitor.h\"\r\n\r\nDWORD WINAPI MonitorSettings(SettingsChangeParameters* params)\r\n{\r\n\tBOOL bShouldExit = F"
},
{
"path": "ExplorerPatcher/SettingsMonitor.h",
"chars": 546,
"preview": "#ifndef _H_SETTINGSMONITOR_H_\r\n#define _H_SETTINGSMONITOR_H_\r\n#include <Windows.h>\r\n#include <Shlwapi.h>\r\n#pragma commen"
},
{
"path": "ExplorerPatcher/ShellExperienceHostPatches.cpp",
"chars": 23352,
"preview": "#include <windows.ui.xaml.h>\n\n#include <wrl/client.h>\n#include <wrl/implements.h>\n#include <wrl/wrappers/corewrappers.h"
},
{
"path": "ExplorerPatcher/StartMenu.c",
"chars": 30498,
"preview": "#include \"StartMenu.h\"\r\n\r\nvoid OpenStartOnMonitor(HMONITOR monitor)\r\n{\r\n HRESULT hr = S_OK;\r\n IUnknown* pImmersive"
},
{
"path": "ExplorerPatcher/StartMenu.h",
"chars": 11778,
"preview": "#ifndef _H_STARTMENU_H_\r\n#define _H_STARTMENU_H_\r\n#include <initguid.h>\r\n#include <Windows.h>\r\n#include <windowsx.h>\r\n#i"
},
{
"path": "ExplorerPatcher/StartMenuSettings.cpp",
"chars": 60978,
"preview": "#include \"utility.h\"\r\n#include \"hooking.h\"\r\n\r\n#include <windows.h>\r\n#include <windows.system.h>\r\n#include <windows.ui.s"
},
{
"path": "ExplorerPatcher/StartupSound.cpp",
"chars": 11028,
"preview": "#include \"StartupSound.h\"\r\n\r\n#include <Shlwapi.h>\r\n#pragma comment(lib, \"Shlwapi.lib\")\r\n#include <stdio.h>\r\n#include <s"
},
{
"path": "ExplorerPatcher/StartupSound.h",
"chars": 805,
"preview": "#ifndef _H_STARTUPSOUND_H_\r\n#define _H_STARTUPSOUND_H_\r\n#include <initguid.h>\r\n#include <Windows.h>\r\n\r\nDEFINE_GUID(__uui"
},
{
"path": "ExplorerPatcher/Taskbar10.cpp",
"chars": 9966,
"preview": "#include \"utility.h\"\r\n#include \"ImmersiveColor.h\"\r\n\r\n#include <dcomptypes.h>\r\n\r\n#include <wrl/implements.h>\r\n#include <"
},
{
"path": "ExplorerPatcher/TaskbarCenter.cpp",
"chars": 18400,
"preview": "#include \"TaskbarCenter.h\"\r\n\r\n#include \"../ep_weather_host/ep_weather_host_h.h\"\r\n#include <intrin.h>\r\n\r\nextern \"C\"\r\n{\r\n\r"
},
{
"path": "ExplorerPatcher/TaskbarCenter.h",
"chars": 4538,
"preview": "#pragma once\r\n\r\n#include <initguid.h>\r\n#include <Windows.h>\r\n#include <oleacc.h>\r\n#include <tchar.h>\r\n#pragma comment(li"
},
{
"path": "ExplorerPatcher/TwinUIPatches.cpp",
"chars": 140151,
"preview": "#include <Windows.h>\n#include <Shlwapi.h>\n#include <ShellScalingApi.h>\n#include <initguid.h>\n#include <knownfolders.h>\n"
},
{
"path": "ExplorerPatcher/def.h",
"chars": 1157,
"preview": "#ifndef _H_DEF_H_\r\n#define _H_DEF_H_\r\n#define APPID L\"Microsoft.Windows.Explorer\"\r\n#define REGPATH \"Software\\\\ExplorerPa"
},
{
"path": "ExplorerPatcher/dllmain.c",
"chars": 431264,
"preview": "#if WITH_MAIN_PATCHER\n#include \"hooking.h\"\n#endif\n#include <initguid.h>\n#include <stdio.h>\n#include <stdbool.h>\n#include"
},
{
"path": "ExplorerPatcher/dxgi_imp.cpp",
"chars": 4701,
"preview": "#include \"dxgi_imp.h\"\r\n\r\n#include <Windows.h>\r\n\r\nEXTERN_C_START\r\n\r\nvoid* SetupRealDXGIImportFunction(const char* pszName"
},
{
"path": "ExplorerPatcher/dxgi_imp.h",
"chars": 1540,
"preview": "#pragma once\r\n\r\n#include <Windows.h>\r\n\r\nEXTERN_C_START\r\n\r\n__declspec(dllexport) HRESULT WINAPI ApplyCompatResolutionQui"
},
{
"path": "ExplorerPatcher/fmemopen.c",
"chars": 1390,
"preview": "/*\r\n * Copyright (c) 2017 Joachim Nilsson <troglobit@gmail.com>\r\n *\r\n * Permission to use, copy, modify, and/or distrib"
},
{
"path": "ExplorerPatcher/fmemopen.h",
"chars": 295,
"preview": "#ifndef _H_FMEMOPEN_H_\r\n#define _H_FMEMOPEN_H_\r\n#include <stdio.h>\r\n#include <io.h>\r\n#include <fcntl.h>\r\n#include <windo"
},
{
"path": "ExplorerPatcher/getline.c",
"chars": 2477,
"preview": "/*-\r\n * Copyright (c) 2011 The NetBSD Foundation, Inc.\r\n * All rights reserved.\r\n *\r\n * This code is derived from softwa"
},
{
"path": "ExplorerPatcher/getline.h",
"chars": 352,
"preview": "#ifndef _H_GETLINE_H_\r\n#define _H_GETLINE_H_\r\n#include <stdio.h>\r\n#include <stdlib.h>\r\n#include <BaseTsd.h>\r\ntypedef SSI"
},
{
"path": "ExplorerPatcher/hooking.h",
"chars": 971,
"preview": "#ifndef _H_HOOKING_H_\r\n#define _H_HOOKING_H_\r\n\r\n#ifdef __cplusplus\r\nextern \"C\"\r\n{\r\n#endif\r\n\r\n#include <KNSoft/SlimDetour"
},
{
"path": "ExplorerPatcher/inc/ClassicWinRtForwardDecl.h",
"chars": 3826,
"preview": "#pragma once\r\n\r\n// Define Windows.Foundation.IReference`1<Windows.UI.Text.FontWeight>\r\n\r\n#ifndef DEF___FIReference_1_Win"
},
{
"path": "ExplorerPatcher/inc/ContainerPolicies.h",
"chars": 1428,
"preview": "#pragma once\r\n\r\n#include <Windows.h>\r\n\r\n#include <memsafe.h>\r\n\r\ntemplate<typename T>\r\nclass CTContainer_PolicyUnOwned\r\n"
},
{
"path": "ExplorerPatcher/inc/NativeString.h",
"chars": 29742,
"preview": "#pragma once\r\n\r\n#include <intsafe.h>\r\n#include <strsafe.h>\r\n\r\n#include \"ResultUtils.h\"\r\n\r\nnamespace Windows::Internal\r\n"
},
{
"path": "ExplorerPatcher/inc/PopNoWilResultMacrosLogging.h",
"chars": 439,
"preview": "// ReSharper disable once CppMissingIncludeGuard\r\n#pragma pop_macro(\"RETURN_IF_NTSTATUS_FAILED\")\r\n#pragma pop_macro(\"RET"
},
{
"path": "ExplorerPatcher/inc/PushNoWilResultMacrosLogging.h",
"chars": 1255,
"preview": "// ReSharper disable once CppMissingIncludeGuard\r\n#pragma push_macro(\"RETURN_IF_FAILED\")\r\n#pragma push_macro(\"RETURN_IF_"
},
{
"path": "ExplorerPatcher/inc/RefCountedObject.h",
"chars": 1021,
"preview": "#pragma once\r\n\r\n#include <wrl/client.h>\r\n\r\ntemplate <typename T>\r\nclass CRefCountedObject : public IUnknown, public T\r\n{"
},
{
"path": "ExplorerPatcher/inc/ResultUtils.h",
"chars": 643,
"preview": "#pragma once\r\n\r\n#include <Windows.h>\r\n\r\ninline HRESULT ResultFromWin32(__in DWORD dwErr)\r\n{\r\n return HRESULT_FROM_WI"
},
{
"path": "ExplorerPatcher/inc/SimpleArray.h",
"chars": 18452,
"preview": "#pragma once\r\n\r\n#include <Windows.h>\r\n#include <type_traits>\r\n\r\n#include \"ContainerPolicies.h\"\r\n\r\ntemplate <typename T>"
},
{
"path": "ExplorerPatcher/inc/SimpleBoxer.h",
"chars": 21335,
"preview": "#pragma once\r\n\r\n// Define Windows.Foundation.IReference`1<String>\r\n\r\n#ifndef DEF___FIReference_1_HSTRING_USE\r\n#define DE"
},
{
"path": "ExplorerPatcher/inc/memsafe.h",
"chars": 27059,
"preview": "// Downloaded from:\r\n// https://github.com/namealt/winsdk10/blob/d1acc505c51b11a6ceafb0f93c9dc584b8b4a9d3/Include/10.0.1"
},
{
"path": "ExplorerPatcher/lvt.c",
"chars": 65442,
"preview": "#include \"lvt.h\"\r\n\r\nWindows_UI_Xaml_IDependencyObject* LVT_FindChildByClassName(Windows_UI_Xaml_IDependencyObject* pRoot"
},
{
"path": "ExplorerPatcher/lvt.h",
"chars": 38203,
"preview": "#ifndef _H_LVT_H_\r\n#define _H_LVT_H_\r\n#include <initguid.h>\r\n#include <Windows.h>\r\n#include <inspectable.h>\r\n#include <r"
},
{
"path": "ExplorerPatcher/osutility.h",
"chars": 3788,
"preview": "#ifndef _H_OSUTILITY_H_\r\n#define _H_OSUTILITY_H_\r\n#include <Windows.h>\r\n#include <dwmapi.h>\r\n#include <valinet/utility/o"
},
{
"path": "ExplorerPatcher/packages.config",
"chars": 264,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n <package id=\"KNSoft.SlimDetours\" version=\"1.1.4-beta\" targetFrame"
},
{
"path": "ExplorerPatcher/queryversion.h",
"chars": 1130,
"preview": "#ifndef _H_QUERYVERSION_H_\r\n#define _H_QUERYVERSION_H_\r\n#include <Windows.h>\r\n#pragma comment(lib, \"Version.lib\")\r\n\r\ninl"
},
{
"path": "ExplorerPatcher/resource.h",
"chars": 1155,
"preview": "//{{NO_DEPENDENCIES}}\r\n// Microsoft Visual C++ generated include file.\r\n// Used by ExplorerPatcher.rc\r\n//\r\n#define IDS_P"
},
{
"path": "ExplorerPatcher/symbols.c",
"chars": 30610,
"preview": "#include <stdio.h>\r\n#include \"symbols.h\"\r\n\r\nconst char* explorer_SN[EXPLORER_SB_CNT] = {\r\n EXPLORER_SB_0,\r\n EXPLOR"
},
{
"path": "ExplorerPatcher/symbols.h",
"chars": 3586,
"preview": "#ifndef _H_SYMBOLS_H_\r\n#define _H_SYMBOLS_H_\r\n#include <Windows.h>\r\n\r\n#ifndef __cplusplus\r\n#define _LIBVALINET_INCLUDE_U"
},
{
"path": "ExplorerPatcher/updates.cpp",
"chars": 59277,
"preview": "#include \"updates.h\"\r\n\r\n#include <Shlwapi.h>\r\n#pragma comment(lib, \"Shlwapi.lib\")\r\n\r\n#include <string>\r\n\r\n#include <wil"
},
{
"path": "ExplorerPatcher/updates.h",
"chars": 1240,
"preview": "#ifndef _H_UPDATES_H_\r\n#define _H_UPDATES_H_\r\n#include <Windows.h>\r\n#include <stdio.h>\r\n#include <Wininet.h>\r\n#pragma co"
},
{
"path": "ExplorerPatcher/utility.c",
"chars": 58082,
"preview": "#include \"utility.h\"\r\n#include <Wininet.h>\r\n#pragma comment(lib, \"Wininet.lib\")\r\n\r\nRTL_OSVERSIONINFOW global_rovi;\r\nDWOR"
},
{
"path": "ExplorerPatcher/utility.h",
"chars": 43500,
"preview": "#ifndef _H_UTILITY_H_\n#define _H_UTILITY_H_\n#if __has_include(\"ep_private.h\")\n//#define USE_PRIVATE_INTERFACES\n#endif\n#i"
},
{
"path": "ExplorerPatcher.sln",
"chars": 13015,
"preview": "\r\nMicrosoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio Version 17\r\nVisualStudioVersion = 17.0.3"
},
{
"path": "FUNDING.yml",
"chars": 144,
"preview": "custom: ['https://www.paypal.com/donate?business=valentingabrielradu%40gmail.com&no_recurring=0&item_name=ExplorerPatche"
},
{
"path": "LICENSE",
"chars": 18092,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 2, June 1991\n\n Copyright (C) 1989, 1991 Fr"
},
{
"path": "README.md",
"chars": 2535,
"preview": "# ExplorerPatcher\n\nThis project aims to enhance the working environment on Windows.\n\n## How to?\n\n1. Download the latest "
},
{
"path": "debug.h",
"chars": 67,
"preview": "#define _CRTDBG_MAP_ALLOC\r\n#include <stdlib.h>\r\n#include <crtdbg.h>"
},
{
"path": "ep_extra/README.md",
"chars": 754,
"preview": "# ExplorerPatcher Custom Libraries Chainloader\n\nExplorerPatcher has a simple, built-in mechanism that allows users to lo"
},
{
"path": "ep_extra/ep_extra.rc",
"chars": 2303,
"preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
},
{
"path": "ep_extra/ep_extra.vcxproj",
"chars": 8693,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/ms"
},
{
"path": "ep_extra/ep_extra.vcxproj.filters",
"chars": 1314,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
},
{
"path": "ep_extra/main.asm",
"chars": 202,
"preview": "EXTERN worker : PROC\n\n.CODE\n\nep_extra_EntryPoint PROC EXPORT\n PUSH RBP\n MOV RBP, RSP\n SUB RSP, 30H\n CALL worker\n CM"
},
{
"path": "ep_extra/resource.h",
"chars": 388,
"preview": "//{{NO_DEPENDENCIES}}\n// Microsoft Visual C++ generated include file.\n// Used by ep_extra.rc\n\n// Next default values for"
},
{
"path": "ep_extra/worker.c",
"chars": 2380,
"preview": "#include <Windows.h>\n#include <Shlwapi.h>\n#pragma comment(lib, \"Shlwapi.lib\")\n#include <stdio.h>\n\nHMODULE hModule = NULL"
},
{
"path": "ep_extra_valinet.win7alttab/README.md",
"chars": 518,
"preview": "# ExplorerPatcher Windows 7 Alt-Tab Module\n\nThis module patches the Windows 7 genuine Alt-Tab implementation to work on "
},
{
"path": "ep_extra_valinet.win7alttab/Resource.rc",
"chars": 2329,
"preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
},
{
"path": "ep_extra_valinet.win7alttab/ep_extra_valinet.win7alttab.vcxproj",
"chars": 8008,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/ms"
},
{
"path": "ep_extra_valinet.win7alttab/ep_extra_valinet.win7alttab.vcxproj.filters",
"chars": 1711,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
},
{
"path": "ep_extra_valinet.win7alttab/main.c",
"chars": 4787,
"preview": "#include <initguid.h>\n#include <Windows.h>\n#include \"../libs/libvalinet/valinet/hooking/iatpatch.h\"\n#include \"../libs/sw"
},
{
"path": "ep_extra_valinet.win7alttab/resource.h",
"chars": 388,
"preview": "//{{NO_DEPENDENCIES}}\n// Microsoft Visual C++ generated include file.\n// Used by Resource.rc\n\n// Next default values for"
},
{
"path": "ep_generate_release_description/ep_generate_release_description.c",
"chars": 2684,
"preview": "#include <Windows.h>\r\n#include <stdio.h>\r\n#include \"../ExplorerPatcher/queryversion.h\"\r\n#define FILE_NAME \"CHANGELOG.md\""
},
{
"path": "ep_generate_release_description/ep_generate_release_description.vcxproj",
"chars": 8068,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/ms"
},
{
"path": "ep_generate_release_description/ep_generate_release_description.vcxproj.filters",
"chars": 1534,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
},
{
"path": "ep_generate_release_name/ep_generate_release_name.c",
"chars": 459,
"preview": "#include \"../ExplorerPatcher/queryversion.h\"\r\n\r\nint main(int argc, char** argv)\r\n{\r\n SetConsoleOutputCP(CP_UTF8);\r\n\r\n"
},
{
"path": "ep_generate_release_name/ep_generate_release_name.vcxproj",
"chars": 7931,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/ms"
},
{
"path": "ep_generate_release_name/ep_generate_release_name.vcxproj.filters",
"chars": 1305,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
},
{
"path": "ep_generate_release_name/resource.h",
"chars": 402,
"preview": "//{{NO_DEPENDENCIES}}\r\n// Microsoft Visual C++ generated include file.\r\n// Used by ep_setup.rc\r\n\r\n// Next default values"
},
{
"path": "ep_gui/GUI.c",
"chars": 183556,
"preview": "#include <initguid.h>\nDEFINE_GUID(LiveSetting_Property_GUID, 0xc12bcd8e, 0x2a8e, 0x4950, 0x8a, 0xe7, 0x36, 0x25, 0x11, 0"
},
{
"path": "ep_gui/GUI.h",
"chars": 2904,
"preview": "#ifndef _H_GUI_H_\n#define _H_GUI_H_\n#define _CRTDBG_MAP_ALLOC\n#include <stdlib.h>\n#include <crtdbg.h>\n#pragma comment(li"
},
{
"path": "ep_gui/dllmain.cpp",
"chars": 554,
"preview": "#include <Windows.h>\r\n\r\nextern \"C\"\r\n{\r\n\r\nHMODULE hModule = nullptr;\r\n\r\nBOOL WINAPI DllMain(\r\n _In_ HINSTANCE hinstDL"
},
{
"path": "ep_gui/ep_gui.vcxproj",
"chars": 8241,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/ms"
},
{
"path": "ep_gui/pch.cpp",
"chars": 19,
"preview": "#include \"pch.h\"\r\n"
},
{
"path": "ep_gui/pch.h",
"chars": 15,
"preview": "#pragma once\r\n"
},
{
"path": "ep_gui/resources/EPSettingsResources.h",
"chars": 13110,
"preview": "#pragma once\r\n\r\n// 1001 - 2200\r\n\r\n#define IDS_TB 1001\r\n#define IDS_TB_STYLE 1002\r\n#define IDS_TB_STYLE_0 1003\r\n#define "
},
{
"path": "ep_gui/resources/EPSharedResources.h",
"chars": 1050,
"preview": "#pragma once\r\n\r\n// 301-350\r\n\r\n#define IDS_UPDATES_CHECKING_T 301\r\n#define IDS_UPDATES_AVAILABLE_T 302\r\n#define IDS_UPDA"
},
{
"path": "ep_gui/resources/ep_gui.rc",
"chars": 2815,
"preview": "// Microsoft Visual C++ generated resource script.\r\n//\r\n#include \"resource.h\"\r\n\r\n#define APSTUDIO_READONLY_SYMBOLS\r\n////"
},
{
"path": "ep_gui/resources/lang/ep_gui.en-US.rc",
"chars": 26772,
"preview": "#include \"resources/resource.h\"\r\n#include \"winres.h\"\r\n\r\nLANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US\r\n\r\nSTRINGTABLE\r\nBEGIN"
},
{
"path": "ep_gui/resources/resource.h",
"chars": 635,
"preview": "//{{NO_DEPENDENCIES}}\r\n// Microsoft Visual C++ generated include file.\r\n// Used by ep_gui.rc\r\n//\r\n#define IDR_REGISTRY1 "
},
{
"path": "ep_gui/resources/settings.reg",
"chars": 19808,
"preview": "Windows Registry Editor Version 5.00\r\n\r\n\r\n;M Settings\r\n;q\r\n\r\n;T %R:1001%\r\n[HKEY_CURRENT_USER\\Software\\ExplorerPatcher]\r"
},
{
"path": "ep_gui/resources/settings10.reg",
"chars": 14811,
"preview": "Windows Registry Editor Version 5.00\r\n\r\n\r\n;M Settings\r\n;q\r\n\r\n;T %R:1001%\r\n[HKEY_CURRENT_USER\\Software\\ExplorerPatcher]\r"
},
{
"path": "ep_setup/ep_setup.c",
"chars": 66711,
"preview": "#include <Windows.h>\r\n#pragma comment(linker,\"\\\"/manifestdependency:type='win32' \\\r\nname='Microsoft.Windows.Common-Contr"
},
{
"path": "ep_setup/ep_setup.vcxproj",
"chars": 24809,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/ms"
},
{
"path": "ep_setup/ep_setup.vcxproj.filters",
"chars": 2310,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
},
{
"path": "ep_setup/resources/ep_setup.rc",
"chars": 2758,
"preview": "// Microsoft Visual C++ generated resource script.\r\n//\r\n#include \"resource.h\"\r\n\r\n#define APSTUDIO_READONLY_SYMBOLS\r\n////"
},
{
"path": "ep_setup/resources/ep_setup_debug.rc",
"chars": 2768,
"preview": "// Microsoft Visual C++ generated resource script.\r\n//\r\n#include \"resource.h\"\r\n\r\n#define APSTUDIO_READONLY_SYMBOLS\r\n////"
},
{
"path": "ep_setup/resources/lang/ep_setup.en-US.rc",
"chars": 1447,
"preview": "#include \"resources/resource.h\"\r\n#include \"winres.h\"\r\n\r\nLANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US\r\n\r\nSTRINGTABLE\r\nBEGIN"
},
{
"path": "ep_setup/resources/resource.h",
"chars": 770,
"preview": "//{{NO_DEPENDENCIES}}\r\n// Microsoft Visual C++ generated include file.\r\n// Used by ep_setup.rc\r\n//\r\n#define IDR_EP_ZIP "
},
{
"path": "ep_setup/rijndael-alg-fst.c",
"chars": 65128,
"preview": "/**\r\n * rijndael-alg-fst.c\r\n *\r\n * @version 3.0 (December 2000)\r\n *\r\n * Optimised ANSI C code for the Rijndael cipher (n"
},
{
"path": "ep_setup/rijndael-alg-fst.h",
"chars": 2010,
"preview": "/**\r\n * rijndael-alg-fst.h\r\n *\r\n * @version 3.0 (December 2000)\r\n *\r\n * Optimised ANSI C code for the Rijndael cipher (n"
},
{
"path": "ep_setup_patch/ep_setup_patch.c",
"chars": 1612,
"preview": "#include <Windows.h>\r\n#include <Shlwapi.h>\r\n#pragma comment(lib, \"Shlwapi.lib\")\r\n#include \"../ExplorerPatcher/utility.h\""
},
{
"path": "ep_setup_patch/ep_setup_patch.vcxproj",
"chars": 8492,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/ms"
},
{
"path": "ep_setup_patch/ep_setup_patch.vcxproj.filters",
"chars": 1401,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
},
{
"path": "ep_startmenu/ep_sm_forwards.h",
"chars": 42278,
"preview": "#ifndef _H_EP_SM_FORWARDS\r\n#define _H_EP_SM_FORWARDS\r\n#pragma comment(linker, \"/export:?<Dispose>@Exception@Platform@@UE"
},
{
"path": "ep_startmenu/ep_sm_main.c",
"chars": 9383,
"preview": "#include <Windows.h>\r\n#include <initguid.h>\r\n// #include <valinet/hooking/iatpatch.h>\r\n#include <valinet/utility/memmem."
},
{
"path": "ep_startmenu/ep_sm_main_cpp.cpp",
"chars": 4547,
"preview": "#include <Windows.h>\r\n#include <ShlObj_core.h>\r\n#include <strsafe.h>\r\n#include <windows.foundation.h>\r\n#include <windows"
},
{
"path": "ep_startmenu/ep_startmenu.vcxproj",
"chars": 12691,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/ms"
},
{
"path": "ep_startmenu/ep_startmenu.vcxproj.filters",
"chars": 1274,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
},
{
"path": "ep_weather_host/ep_weather.c",
"chars": 8049,
"preview": "#include \"ep_weather.h\"\n#include \"ep_weather_factory.h\"\n#include \"ep_weather_host.h\"\n\nHMODULE epw_hModule;\nDWORD epw_Out"
},
{
"path": "ep_weather_host/ep_weather.h",
"chars": 2975,
"preview": "#ifndef _H_AS_H_\r\n#define _H_AS_H_\r\n#include <initguid.h>\r\n#include <Windows.h>\r\n#include <tchar.h>\r\n#include <Shlwapi.h"
},
{
"path": "ep_weather_host/ep_weather_error_html.h",
"chars": 1366,
"preview": "#ifndef _H_EP_WEATHER_ERROR_HTML_H_\r\n#define _H_EP_WEATHER_ERROR_HTML_H_\r\n#include <Windows.h>\r\n#include <tchar.h>\r\n#def"
},
{
"path": "ep_weather_host/ep_weather_factory.c",
"chars": 2094,
"preview": "#include \"ep_weather_factory.h\"\r\n#include \"ep_weather_host.h\"\r\n\r\nULONG STDMETHODCALLTYPE epw_factory_AddRef(IClassFactor"
},
{
"path": "ep_weather_host/ep_weather_factory.h",
"chars": 1150,
"preview": "#ifndef _H_AS_FACTORY_H_\r\n#define _H_AS_FACTORY_H_\r\n#include \"ep_weather.h\"\r\nULONG STDMETHODCALLTYPE epw_factory_AddRef("
},
{
"path": "ep_weather_host/ep_weather_host.c",
"chars": 79543,
"preview": "#include \"ep_weather_host.h\"\n#include \"ep_weather_provider_google_html.h\"\n#include \"ep_weather_provider_google_script.h\""
},
{
"path": "ep_weather_host/ep_weather_host.h",
"chars": 16977,
"preview": "#ifndef _H_AS_SERVICE_P_H_\r\n#define _H_AS_SERVICE_P_H_\r\n#include \"ep_weather.h\"\r\n#include \"ep_weather_utility.h\"\r\n#inclu"
},
{
"path": "ep_weather_host/ep_weather_host.rc",
"chars": 2401,
"preview": "// Microsoft Visual C++ generated resource script.\r\n//\r\n#include \"resource.h\"\r\n\r\n#define APSTUDIO_READONLY_SYMBOLS\r\n////"
},
{
"path": "ep_weather_host/ep_weather_host.vcxproj",
"chars": 17817,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/ms"
},
{
"path": "ep_weather_host/ep_weather_host.vcxproj.filters",
"chars": 2673,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
},
{
"path": "ep_weather_host/ep_weather_provider_google_html.h",
"chars": 1362,
"preview": "#ifndef _H_EP_WEATHER_PROVIDER_GOOGLE_HTML_H_\r\n#define _H_EP_WEATHER_PROVIDER_GOOGLE_HTML_H_\r\n#include <Windows.h>\r\n#def"
},
{
"path": "ep_weather_host/ep_weather_provider_google_script.h",
"chars": 25048,
"preview": "#ifndef _H_EP_WEATHER_PROVIDER_GOOGLE_SCRIPT_H_\r\n#define _H_EP_WEATHER_PROVIDER_GOOGLE_SCRIPT_H_\r\n#include <Windows.h>\r\n"
},
{
"path": "ep_weather_host/ep_weather_utility.h",
"chars": 1047,
"preview": "#ifndef _H_EP_WEATHER_UTILITY_H_\r\n#define _H_EP_WEATHER_UTILITY_H_\r\n#include <Windows.h>\r\n#include <stdint.h>\r\n#include "
},
{
"path": "ep_weather_host/packages.config",
"chars": 154,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<packages>\r\n <package id=\"Microsoft.Web.WebView2\" version=\"1.0.3405.78\" target"
},
{
"path": "ep_weather_host/resource.h",
"chars": 409,
"preview": "//{{NO_DEPENDENCIES}}\r\n// Microsoft Visual C++ generated include file.\r\n// Used by ep_weather_host.rc\r\n\r\n// Next default"
},
{
"path": "ep_weather_host_stub/ep_weather_host.idl",
"chars": 2374,
"preview": "import \"oaidl.idl\";\r\nimport \"ocidl.idl\";\r\nimport \"unknwn.idl\";\r\n\r\n[\r\n\tobject,\r\n\tuuid(CDBF3734-F847-4F1B-B953-A605434DC1E"
},
{
"path": "ep_weather_host_stub/ep_weather_host_stub.def",
"chars": 290,
"preview": "LIBRARY ep_weather_host_stub.dll\r\nDESCRIPTION 'ExplorerPatcher Weather Stub DLL'\r\nEXPORTS DllGetClassOb"
},
{
"path": "ep_weather_host_stub/ep_weather_host_stub.vcxproj",
"chars": 16685,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/ms"
},
{
"path": "ep_weather_host_stub/ep_weather_host_stub.vcxproj.filters",
"chars": 1564,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
},
{
"path": "version.h",
"chars": 747,
"preview": "#define VER_MAJOR 26100\r\n#define VER_MINOR 4946\r\n#define VER_BUILD_HI 69\r\n#define VER_BUILD_LO 6\r\n#define VER_FLAGS "
}
]
// ... and 89 more files (download for full content)
About this extraction
This page contains the full source code of the valinet/ExplorerPatcher GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 228 files (2.1 MB), approximately 547.5k tokens, and a symbol index with 1199 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.