Describe the bug
Following #4006, I tried to monitor HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize registry for light/dark theme listener, but RegNotifyChangeKeyValue does not seem to work in a packaged winui3 app.
The same code works in a console application project
Steps to reproduce the bug
- Create a C++ winui3 app (packaged)
- Use the following code, in
MainWindow constructor
std::thread{
[] {
auto handle = CreateEvent(NULL, true, false, nullptr);
HKEY key{};
RegOpenKeyEx(HKEY_CURRENT_USER, LR"(Software\Microsoft\Windows\CurrentVersion\Themes\Personalize)", 0, KEY_READ, &key);
while (true)
{
auto hr = RegNotifyChangeKeyValue(
key,
true,
REG_NOTIFY_CHANGE_NAME |
REG_NOTIFY_CHANGE_ATTRIBUTES |
REG_NOTIFY_CHANGE_LAST_SET |
REG_NOTIFY_CHANGE_SECURITY,
handle,
true
);
if (WaitForSingleObject(handle, INFINITE) != WAIT_FAILED)
{
MessageBox(NULL, L"changed", L"", 0);
OutputDebugString(L"Triggered\n");
}
}
//while (true)
//{
// DWORD value{};
// DWORD bytes = sizeof(value);
// auto hr = RegGetValue(key, nullptr, LR"(AppsUseLightTheme)", RRF_RT_DWORD, nullptr, &value, &bytes);
// OutputDebugString(std::format(L"hr: {}, value: {}, cb: {}\n", hr, value, bytes).data());
// std::this_thread::sleep_for(std::chrono::seconds{ 1 });
//}
}
}.detach();
- Build and run the app, put a breakpoint on the
OutputDebugString line. Toggle light/dark mode in system settings, the breakpoint is not hit.
- Use the same code in a console application project, it will break.
Bonus: If you use the commented code to monitor the value, it will reads the correct changes of the value, suggesting there is something wrong internally.
Expected behavior
No response
Screenshots
No response
NuGet package version
Windows App SDK 1.4.3: 1.4.231115000
Packaging type
Packaged (MSIX)
Windows version
Windows 10 version 1809 (17763, October 2018 Update)
IDE
Visual Studio 2022
Additional context
No response
Describe the bug
Following #4006, I tried to monitor
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalizeregistry for light/dark theme listener, butRegNotifyChangeKeyValuedoes not seem to work in a packaged winui3 app.The same code works in a console application project
Steps to reproduce the bug
MainWindowconstructorstd::thread{ [] { auto handle = CreateEvent(NULL, true, false, nullptr); HKEY key{}; RegOpenKeyEx(HKEY_CURRENT_USER, LR"(Software\Microsoft\Windows\CurrentVersion\Themes\Personalize)", 0, KEY_READ, &key); while (true) { auto hr = RegNotifyChangeKeyValue( key, true, REG_NOTIFY_CHANGE_NAME | REG_NOTIFY_CHANGE_ATTRIBUTES | REG_NOTIFY_CHANGE_LAST_SET | REG_NOTIFY_CHANGE_SECURITY, handle, true ); if (WaitForSingleObject(handle, INFINITE) != WAIT_FAILED) { MessageBox(NULL, L"changed", L"", 0); OutputDebugString(L"Triggered\n"); } } //while (true) //{ // DWORD value{}; // DWORD bytes = sizeof(value); // auto hr = RegGetValue(key, nullptr, LR"(AppsUseLightTheme)", RRF_RT_DWORD, nullptr, &value, &bytes); // OutputDebugString(std::format(L"hr: {}, value: {}, cb: {}\n", hr, value, bytes).data()); // std::this_thread::sleep_for(std::chrono::seconds{ 1 }); //} } }.detach();OutputDebugStringline. Toggle light/dark mode in system settings, the breakpoint is not hit.Bonus: If you use the commented code to monitor the value, it will reads the correct changes of the value, suggesting there is something wrong internally.
Expected behavior
No response
Screenshots
No response
NuGet package version
Windows App SDK 1.4.3: 1.4.231115000
Packaging type
Packaged (MSIX)
Windows version
Windows 10 version 1809 (17763, October 2018 Update)
IDE
Visual Studio 2022
Additional context
No response