GetDesktopWindow()
仅返回主桌面。我也尝试过EnumDisplayMonitors()
,但这不会返回桌面句柄。
答案 0 :(得分:4)
您可以使用可用功能执行以下操作:
方法1(对于与监视器边界重叠的窗口不太准确)
EnumWindows()
)MonitorFromWindow()
忽略方法2(更准确)
GetMonitorInfo()
函数)EnumWindows()
)GetWindowRect()
,否则为DwmGetWindowAttribute(DWMWA_EXTENDED_FRAME_BOUNDS)
),以查看其是否与监视器矩形相交(IntersectRect()
)。答案 1 :(得分:3)
您可以使用EnumWindows
函数,然后检查该窗口是否属于特定的监视器:
BOOL CALLBACK EnumWindowsProc(_In_ HWND hwnd, _In_ LPARAM lParam) noexcept
{
auto const h_monitor{::MonitorFromWindow(hwnd, MONITOR_DEFAULTTONULL)};
if(h_monitor == g_h_target_minitor)
{
// Do something...
}
return TRUE;
}