Czy LockDown Browser wykryje drugi monitor na Macu? (Tak - oto jak)

Tak - LockDown Browser wykrywa każdy ekran zarejestrowany w macOS-ie przez Core Graphics. Obejmuje to ekrany wbudowane, monitory zewnętrzne, iPady w Sidecarze, telewizory AirPlay, a nawet niektóre wirtualne ekrany ze stacji dokujących.

Mechanizm wykrywania

LDB wykonuje dwa wywołania przy starcie:

uint32_t count;
CGDisplayActiveDisplayCount(&count);
// count to liczba aktualnie aktywnych ekranów
// LDB blokuje, jeśli count >= 2 (domyślna konfiguracja Dashboarda)

Jest to identyczne z tym, co pokazuje Informacje o systemie → Grafika/Monitory. Nie ma żadnego ukrytego API; wykrywanie jest proste.

Rzeczy, które liczą się jako „aktywne ekrany"

Źródło ekranuLiczone?Uwagi
Wbudowany ekran MacBooka (klapa otwarta)Zawsze liczony jako #1
HDMI zewnętrznyStandardowy
DisplayPort zewnętrznyStandardowy
USB-C-do-ekranu bezpośrednioStandardowy
Thunderbolt 4 zewnętrznyStandardowy
Stacja dokująca USB-C z wyjściem HDMI/DisplayPortKażdy port wyjściowy liczy się niezależnie
iPad w SidecarzeZarejestrowany jako wirtualny CGDisplay
AirPlay do Apple TV / Vizio / Roku TVPowielanie albo rozszerzanie - oba liczone
iPhone Mirroring (Sequoia 15+)Liczone po stronie Maca
iPad pokazywany przez Continuity jako źródło wejścia✓ gdy Sidecar aktywnyTo Sidecar sprawia, że się liczy

Rzeczy, które się NIE liczą

ZestawDlaczego się nie liczy
Tryb zamkniętej klapy tylko z ekranem zewnętrznymWbudowany ekran śpi; liczba CGDisplay = 1
iPad obok laptopa, NIE w SidecarzeOddzielne urządzenie, niezarejestrowane w systemie ekranów macOS-a
Ekran zewnętrzny fizycznie podłączony, ale WYŁĄCZONY przez Ustawienia systemuNieaktywny w macOS-ie, więc nie liczony
Universal Control (kursor na iPadzie)Universal Control != Sidecar; iPad nie jest CGDisplay
Telefon obok laptopa, nawet z Continuity CameraKamera != ekran
Smart TV w tym samym pokoju, niepołączony przez AirPlay/HDMIBrak połączenia z systemem ekranów Maca

Przypadki brzegowe

Stacja dokująca USB-C, która dodaje „wirtualny" ekran, kiedy nic nie jest podłączone

Niektóre stacje dokujące USB-C (CalDigit, OWC) mają dziwactwo, w którym stacja ogłasza port ekranu nawet wtedy, gdy żaden monitor nie jest podłączony. macOS od czasu do czasu rejestruje to jako aktywny ekran bez fizycznego wyświetlacza. Objaw: LDB blokuje błędem wielu ekranów, ale nie widzisz nic podłączonego.

Rozwiązanie: odłącz stację dokującą w całości (krótko, na czas egzaminu). Widmowy ekran znika z listy CGDisplay.

Ekran bezprzewodowy (Miracast, zewnętrzne protokoły)

Zewnętrzne protokoły ekranu bezprzewodowego rejestrują się jako CGDisplay tak samo jak AirPlay. Wyłącz.

Laptopy z dwoma ekranami (rzadkie)

Niektóre laptopy Asus / Acer z Windowsem mają drugi ekran nad klawiaturą. Maki nie mają takiego sprzętu. Nieistotne.

Jak zweryfikować liczbę CGDisplay

Otwórz Terminal i wpisz:

system_profiler SPDisplaysDataType | grep -i "Resolution"

Każda linia to jeden wykryty ekran. Policz je. Jeśli >1, LDB zablokuje.

Albo użyj AppleScript:

osascript -e 'tell application "System Events" to get count of displays of (get display preferences)'

Co się stanie, jeśli spróbujesz obejść i uruchomić

Nie da się obejść - kontrola dzieje się przy starcie, zanim załaduje się jakikolwiek egzamin. Blokada jest spójna i powtarzalna. Odłącz lub wyłącz drugi ekran, zrestartuj LDB.

Frequently asked questions

Jeśli zasłonię mój zewnętrzny monitor kawałkiem tektury, czy LDB go i tak wykryje?

Tak - fizyczne zasłonięcie ekranu nie zmienia stanu ekranów w macOS. Ekran jest „aktywny" z powodu połączenia, a nie dlatego, że piksele są widoczne. Odłącz albo wyłącz.

Czy mogę przełączyć się na jeden ekran, zmieniając układ macOS?

Nie - Ustawienia systemu → Monitory → Układ zmienia tylko rozmieszczenie, nie liczbę aktywnych ekranów. Wyłącz ekran przez ikonę koła zębatego przy danym ekranie albo odłącz.

Klapa mojego MacBooka jest zamknięta i używam tylko zewnętrznego. Dlaczego LDB nadal blokuje?

Nie powinien blokować w takiej konfiguracji, jeśli tryb zamkniętej klapy jest prawidłowo aktywny. Jeśli LDB blokuje: klapa otwarta → zamknij klapę całkowicie → poczekaj 10 sekund → zewnętrzny staje się jedynym ekranem → uruchom LDB. Jeśli nadal blokuje, wbudowany może nie zasypiać (kabel ładowarki odpięty, klapa nie do końca zamknięta).