From 7bcddfeb09c9a99d67a033d7b13e0f93f0153231 Mon Sep 17 00:00:00 2001 From: Davide Giacometti <25966642+davidegiacometti@users.noreply.github.com> Date: Tue, 5 Aug 2025 09:44:58 +0200 Subject: [PATCH] [PowerRename] Fix named pipe detection (#40944) ## Summary of the Pull Request ## PR Checklist Fix a regression present on master where PowerRename is activated with empty file list where invoked Explorer context menu. Regression was caused by https://github.com/microsoft/PowerToys/pull/40393 - [ ] Closes: #xxx - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx ## Detailed Description of the Pull Request / Additional comments ## Validation Steps Performed Verified that PowerRename shows file list when activated: - From Windows 11 Explorer context menu - From Legacy Explorer context menu - From command line passing some file paths --- .../PowerRenameUILib/PowerRenameXAML/App.xaml.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/modules/powerrename/PowerRenameUILib/PowerRenameXAML/App.xaml.cpp b/src/modules/powerrename/PowerRenameUILib/PowerRenameXAML/App.xaml.cpp index f8746ed878..67f1834499 100644 --- a/src/modules/powerrename/PowerRenameUILib/PowerRenameXAML/App.xaml.cpp +++ b/src/modules/powerrename/PowerRenameUILib/PowerRenameXAML/App.xaml.cpp @@ -126,11 +126,12 @@ void App::OnLaunched(LaunchActivatedEventArgs const&) } auto args = std::wstring{ GetCommandLine() }; - + size_t pipePos{ args.rfind(L"\\\\.\\pipe\\") }; + // Try to parse command line arguments first std::vector cmdLineFiles = ParseCommandLineArgs(args); - if (!cmdLineFiles.empty()) + if (pipePos == std::wstring::npos && !cmdLineFiles.empty()) { // Use command line arguments for UI testing for (const auto& filePath : cmdLineFiles) @@ -142,12 +143,10 @@ void App::OnLaunched(LaunchActivatedEventArgs const&) else { // Use original pipe/stdin logic for normal operation - size_t pos{ args.rfind(L"\\\\.\\pipe\\") }; - std::wstring pipe_name; - if (pos != std::wstring::npos) + if (pipePos != std::wstring::npos) { - pipe_name = args.substr(pos); + pipe_name = args.substr(pipePos); } HANDLE hStdin;