2021-07-07 13:18:52 +03:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
class VirtualDesktop
|
|
|
|
|
{
|
|
|
|
|
public:
|
2022-05-13 15:06:11 +02:00
|
|
|
static VirtualDesktop& instance();
|
2021-09-23 00:39:48 +03:00
|
|
|
|
2022-05-13 15:06:11 +02:00
|
|
|
// saved values
|
|
|
|
|
GUID GetCurrentVirtualDesktopId() const noexcept;
|
|
|
|
|
GUID GetPreviousVirtualDesktopId() const noexcept;
|
|
|
|
|
void UpdateVirtualDesktopId() noexcept;
|
2021-07-07 13:18:52 +03:00
|
|
|
|
2022-05-13 15:06:11 +02:00
|
|
|
// IVirtualDesktopManager
|
2021-08-26 20:47:27 +03:00
|
|
|
bool IsWindowOnCurrentDesktop(HWND window) const;
|
|
|
|
|
std::optional<GUID> GetDesktopId(HWND window) const;
|
2021-09-23 00:39:48 +03:00
|
|
|
std::optional<GUID> GetDesktopIdByTopLevelWindows() const;
|
|
|
|
|
std::vector<std::pair<HWND, GUID>> GetWindowsRelatedToDesktops() const;
|
2022-06-14 16:45:45 +02:00
|
|
|
std::vector<HWND> GetWindowsFromCurrentDesktop() const;
|
2021-08-26 20:47:27 +03:00
|
|
|
|
2022-05-13 15:06:11 +02:00
|
|
|
// registry
|
|
|
|
|
std::optional<GUID> GetCurrentVirtualDesktopIdFromRegistry() const;
|
|
|
|
|
std::optional<std::vector<GUID>> GetVirtualDesktopIdsFromRegistry() const;
|
|
|
|
|
bool IsVirtualDesktopIdSavedInRegistry(GUID id) const;
|
|
|
|
|
|
2021-07-07 13:18:52 +03:00
|
|
|
private:
|
2022-05-13 15:06:11 +02:00
|
|
|
VirtualDesktop();
|
|
|
|
|
~VirtualDesktop();
|
2021-07-07 13:18:52 +03:00
|
|
|
|
2022-05-13 15:06:11 +02:00
|
|
|
IVirtualDesktopManager* m_vdManager{nullptr};
|
2021-07-07 13:18:52 +03:00
|
|
|
|
2022-05-13 15:06:11 +02:00
|
|
|
GUID m_currentVirtualDesktopId{};
|
|
|
|
|
GUID m_previousDesktopId{};
|
2021-07-07 13:18:52 +03:00
|
|
|
|
2021-09-23 00:39:48 +03:00
|
|
|
std::optional<std::vector<GUID>> GetVirtualDesktopIdsFromRegistry(HKEY hKey) const;
|
2021-07-07 13:18:52 +03:00
|
|
|
};
|