Disable the process creation cursor animation by default (#14293)

Blue committed Feb 26, 2026 at 23:40 UTC 55e04d5ff17fceb9950f6b0120329e814719bc34
3 files changed +8 -5
src/windows/common/SubProcess.cpp
+3 -3
@@ -46,8 +46,8 @@ std::wstring ReadFileContent(wil::unique_hfile& Handle)
46 }
47 } // namespace
48
49 -SubProcess::SubProcess(LPCWSTR ApplicationName, LPCWSTR CommandLine, DWORD Flags) :
50 - m_applicationName(ApplicationName), m_commandLine(CommandLine), m_flags(Flags)
49 +SubProcess::SubProcess(LPCWSTR ApplicationName, LPCWSTR CommandLine, DWORD Flags, DWORD StartupFlags) :
50 + m_applicationName(ApplicationName), m_commandLine(CommandLine), m_flags(Flags), m_startupFlags(StartupFlags)
51 {
52 }
53
@@ -159,7 +159,7 @@ wil::unique_handle SubProcess::Start()
159
160 STARTUPINFOEX StartupInfo{};
161 StartupInfo.StartupInfo.cb = sizeof(StartupInfo);
162 - StartupInfo.StartupInfo.dwFlags = STARTF_USESTDHANDLES;
162 + StartupInfo.StartupInfo.dwFlags = STARTF_USESTDHANDLES | m_startupFlags;
163
164 // N.B. Passing a pseudoconsole requires all standard handles to be null
165 if (m_pseudoConsole == nullptr)
src/windows/common/SubProcess.h
+2 -1
@@ -29,7 +29,7 @@ public:
29 std::wstring Stderr;
30 };
31
32 - SubProcess(LPCWSTR ApplicationName, LPCWSTR CommandLine, DWORD Flags = CREATE_UNICODE_ENVIRONMENT);
32 + SubProcess(LPCWSTR ApplicationName, LPCWSTR CommandLine, DWORD Flags = CREATE_UNICODE_ENVIRONMENT, DWORD StartupFlags = STARTF_FORCEOFFFEEDBACK);
33
34 void SetStdHandles(HANDLE Stdin, HANDLE Stdout, HANDLE Stderr);
35 void SetPseudoConsole(HPCON Console);
@@ -58,6 +58,7 @@ private:
58 LPCWSTR m_desktop = nullptr;
59 HANDLE m_token = nullptr;
60 DWORD m_flags = 0;
61 + DWORD m_startupFlags = 0;
62
63 HANDLE m_stdIn = nullptr;
64 HANDLE m_stdOut = nullptr;
src/windows/common/interop.cpp
+3 -1
@@ -194,7 +194,9 @@ CreateProcessResult CreateProcess(_In_ CreateProcessParsed* Parsed, _In_ HANDLE
194 wsl::windows::common::helpers::SetHandleInheritable(StdOut);
195 wsl::windows::common::helpers::SetHandleInheritable(StdErr);
196
197 - wsl::windows::common::SubProcess process(Parsed->ApplicationName.c_str(), Parsed->CommandLine(), CREATE_UNICODE_ENVIRONMENT);
197 + // N.B. Passing StartupFlags = 0 so that the cursor feedback is set to its default behavior.
198 + // See: https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/ns-processthreadsapi-startupinfoa
199 + wsl::windows::common::SubProcess process(Parsed->ApplicationName.c_str(), Parsed->CommandLine(), CREATE_UNICODE_ENVIRONMENT, 0);
200
201 CreateProcessResult Result{};
202 if (Parsed->CreatePseudoconsole)