Jak sprawdzić, która aplikacja ukradła mój system operacyjny w OS X?


25

Aktywne okno na moim komputerze czasami traci ostrość. Aktywna aplikacja pozostaje taka sama - jeśli wcześniej byłam w Chrome, nadal jestem w Chrome - ale aktywne okno nie jest już aktywne. Żadne okno nie jest aktywne. To jest frustrujące; zdarzyło się to podczas pisania tego pytania, a moje naciśnięcia klawiszy nagle przestały się rejestrować.

Wierzę, że jakaś inna aplikacja kradnie fokus, ale sama w sobie nie ma interfejsu do wyświetlenia, więc aktywne okno nie staje się aktywne, ale aktywna aplikacja pozostaje aktywna.

Pytanie brzmi: jak wyśledzić obraźliwą aplikację, aby ze złością ją usunąć? Zwykle w przypadkach kradzieży skupienia sprawca jest oczywisty, ponieważ jest skupiony. W tym przypadku jestem zakłopotany.


Możesz wypróbować Apple > Force Quit...menu, aby sprawdzić, czy działa coś, co nie powinno być.
— Michael Frank

1
@MichaelFrank Nie wyświetla aplikacji, które nie mają paska menu (np. Te z LSUIElementustawionym na truein Info.plist). Są doskonale zdolni do takiego zachowania.
— Daniel Beck

@DanielBeck Ahh, gotcha. Przydaje się to wiedzieć.
— Michael Frank

1
Do waszej informacji, zadałem w zasadzie to samo pytanie na Apple SE: Czy istnieje sposób na wykrycie, który program kradnie fokus na moim komputerze Mac?
— Kevin Reid

tell application "System Events" to display alert ((name of first application process whose frontmost is true) as string)niestety nie uwzględnia procesów bez paska menu.
— Daniel Beck

Odpowiedzi:


35

Oto skrypt, który poinformuje Cię, która aplikacja aktywuje się bez powiadomienia. Zaadaptowałem to z odpowiedzi na pytanie @ KevinReid na Apple SE .

Pozostaw go uruchomionego w terminalu, poczekaj, aż nieuczciwa aplikacja wykradnie fokus i sprawdź, która aplikacja jest wymieniona na końcu. (Dla mnie: Dysk Google. Inni zgłosili materiały Symantec AV.)

#!/usr/bin/python                                                                                                       

try:
    from AppKit import NSWorkspace
except ImportError:
    print "Can't import AppKit -- maybe you're running python from brew?"
    print "Try running with Apple's /usr/bin/python instead."
    exit(1)

from datetime import datetime
from time import sleep

last_active_name = None
while True:
    active_app = NSWorkspace.sharedWorkspace().activeApplication()
    if active_app['NSApplicationName'] != last_active_name:
        last_active_name = active_app['NSApplicationName']
        print '%s: %s [%s]' % (
            datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
            active_app['NSApplicationName'],
            active_app['NSApplicationPath']
        )
    sleep(1)

Ten skrypt mówi mi, że moim winowajcą jestGoogle Drive [/Applications/Google Drive.app]
— MarkHu

Winowajcą dla mnie był Symantec.
— Josh Bleecher Snyder

1
W moim przypadku jest to SecurityAgent [/System/Library/Frameworks/Security.framework/Versions/A/MachServices/SecurityAgent.bundle]
— Ed Randall

Obraźliwą aplikacją był Microsoft Update Assistant. Bardzo doceniam tę odpowiedź, ten problem doprowadzał mnie do szału.
— jamesbev

2
Moim winowajcą był JetBrains Toolbox [/ Applications / JetBrains Toolbox.app/Contents/jetbrains-toolbox-cef.app], próbował się zaktualizować i zawiesić w trakcie tego procesu. Dziękuję bardzo! Zużywał też ogromną ilość zasobów.
— Gabriel

1

To zabrzmi głupio i absurdalnie prosto ... Miałem ten sam problem z laptopem, kiedy korzystałem z gładzika lub wbudowanej klawiatury. Gdyby dwa osobne laptopy dawały podobne wrażenia po wystawieniu na działanie wilgoci (tak, rozlałem się na klawiaturze).

Dodanie myszy i klawiatury peryferyjnej rozwiązało to dla mnie.


1
Ciekawy. Używam zewnętrznej myszy i klawiatury, ale mam nadzieję, że to pomaga komuś innemu. Dzięki.
— Josh Bleecher Snyder
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.