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.