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)