Для окон вы можете использовать EnumDisplayMonitors, чтобы найти второй монитор.
Для этого требуется функция обратного вызова, которая будет получать информацию от каждого найденного монитора.
Пример в Delphi ниже, который отображает вторую форму Firemonkey на втором мониторе и делает фон черным
// Callback function in function MonitorCount
function MonCountCB(hm: HMONITOR; dc: HDC; r: PRect; l: LPARAM): Boolean; stdcall;
var
mInfo : MonitorInfoEx;
// SecondaryRect: RECT;
begin
minfo.cbSize := sizeof(mInfo);
GetMonitorInfo(hm, @mInfo);
if mInfo.dwFlags <> MONITORINFOF_PRIMARY then
begin
MonitorForm.Left := mInfo.rcWork.Left;
MonitorForm.Top := mInfo.rcWork.Top;
MonitorForm.Width := mInfo.rcWork.Width;
MonitorForm.Height := mInfo.rcWork.Height;
end;
inc(Integer(pointer(l)^));
result := true;
end;
procedure TForm1.CornerButton1Click(Sender: TObject);
var
MonitorCount : Integer;
begin
EnumDisplayMonitors(0,nil,MonCountCB, Integer(@MonitorCount));
MonitorForm.Viewport3D1.Color := TAlphaColors.Black;
MonitorForm.Show;
end;