Czy LockDown Browser wykryje drugi monitor na Macu? (Tak - oto jak)
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 ekranu | Liczone? | Uwagi |
|---|---|---|
| Wbudowany ekran MacBooka (klapa otwarta) | ✓ | Zawsze liczony jako #1 |
| HDMI zewnętrzny | ✓ | Standardowy |
| DisplayPort zewnętrzny | ✓ | Standardowy |
| USB-C-do-ekranu bezpośrednio | ✓ | Standardowy |
| Thunderbolt 4 zewnętrzny | ✓ | Standardowy |
| Stacja dokująca USB-C z wyjściem HDMI/DisplayPort | ✓ | Każdy port wyjściowy liczy się niezależnie |
| iPad w Sidecarze | ✓ | Zarejestrowany jako wirtualny CGDisplay |
| AirPlay do Apple TV / Vizio / Roku TV | ✓ | Powielanie albo rozszerzanie - oba liczone |
| iPhone Mirroring (Sequoia 15+) | ✓ | Liczone po stronie Maca |
| iPad pokazywany przez Continuity jako źródło wejścia | ✓ gdy Sidecar aktywny | To Sidecar sprawia, że się liczy |
Rzeczy, które się NIE liczą
| Zestaw | Dlaczego się nie liczy |
|---|---|
| Tryb zamkniętej klapy tylko z ekranem zewnętrznym | Wbudowany ekran śpi; liczba CGDisplay = 1 |
| iPad obok laptopa, NIE w Sidecarze | Oddzielne urządzenie, niezarejestrowane w systemie ekranów macOS-a |
| Ekran zewnętrzny fizycznie podłączony, ale WYŁĄCZONY przez Ustawienia systemu | Nieaktywny 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 Camera | Kamera != ekran |
| Smart TV w tym samym pokoju, niepołączony przez AirPlay/HDMI | Brak 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).