[FancyZones] Clean up resources taken by closed virtual desktops on module startup (#2616)

* Clean up resources taken by closed virtual desktops on FancyZones module startup.

* Overload GetVirtualDesktopIds to return wide string.

* Refactor OnDisplayChange method.
This commit is contained in:
vldmr11080
2020-05-05 10:13:50 +02:00
committed by GitHub
parent 95c4bf5854
commit f5381ae3e3
5 changed files with 54 additions and 11 deletions

View File

@@ -87,7 +87,7 @@ namespace VirtualDesktopUtils
// desktops (only primary desktop) in this session value in registry will be empty.
// If this value is empty take first element from array of virtual desktops (not kept per session).
std::vector<GUID> ids{};
if (!GetVirtualDekstopIds(ids) || ids.empty())
if (!GetVirtualDesktopIds(ids) || ids.empty())
{
return false;
}
@@ -96,7 +96,7 @@ namespace VirtualDesktopUtils
return true;
}
bool GetVirtualDekstopIds(HKEY hKey, std::vector<GUID>& ids)
bool GetVirtualDesktopIds(HKEY hKey, std::vector<GUID>& ids)
{
if (!hKey)
{
@@ -126,9 +126,27 @@ namespace VirtualDesktopUtils
return true;
}
bool GetVirtualDekstopIds(std::vector<GUID>& ids)
bool GetVirtualDesktopIds(std::vector<GUID>& ids)
{
return GetVirtualDekstopIds(GetVirtualDesktopsRegKey(), ids);
return GetVirtualDesktopIds(GetVirtualDesktopsRegKey(), ids);
}
bool GetVirtualDesktopIds(std::vector<std::wstring>& ids)
{
std::vector<GUID> guids{};
if (GetVirtualDesktopIds(guids))
{
for (auto& guid : guids)
{
wil::unique_cotaskmem_string guidString;
if (SUCCEEDED(StringFromCLSID(guid, &guidString)))
{
ids.push_back(guidString.get());
}
}
return true;
}
return false;
}
HKEY OpenVirtualDesktopsRegKey()