Wie kann ich feststellen, welche App in OS X meinen Fokus gestohlen hat?


25

Das aktive Fenster auf meinem Computer verliert gelegentlich den Fokus. Die aktive App bleibt gleich - wenn ich vorher in Chrome war, bin ich jetzt immer noch in Chrome -, aber das aktive Fenster ist nicht mehr aktiv. Es ist kein Fenster aktiv. Das ist frustrierend; Es passierte, während ich diese Frage eintippte, und meine Tastenanschläge hörten plötzlich auf, sich zu registrieren.

Ich glaube, dass eine andere App den Fokus stiehlt, aber dass sie selbst keine anzuzeigende Benutzeroberfläche hat, sodass das aktive Fenster nicht aktiv wird, sondern die aktive App aktiv bleibt.

Die Frage ist: Wie finde ich die fehlerhafte App, damit ich sie wütend löschen kann? Normalerweise ist bei Fokusdiebstahl der Täter offensichtlich, weil er den Fokus hat. In diesem Fall bin ich ratlos.


Sie könnten versuchen, im Apple > Force Quit...Menü zu prüfen, ob etwas läuft, das nicht funktionieren sollte.
Michael Frank

1
@MichaelFrank Es wird Anwendungen nicht zeigen , die keine Menüleiste (zB solche mit LSUIElementSatz truein Info.plist). Die sind zu diesem Verhalten durchaus in der Lage.
Daniel Beck

@ DanielBeck Ahh, gotcha. Das ist praktisch zu wissen.
Michael Frank

1
Zu Ihrer Information, ich habe im Grunde die gleiche Frage zu Apple SE gestellt: Gibt es eine Möglichkeit zu erkennen, welches Programm den Fokus auf meinem Mac stiehlt?
Kevin Reid

tell application "System Events" to display alert ((name of first application process whose frontmost is true) as string)Prozesse ohne Menüleiste werden leider nicht berücksichtigt.
Daniel Beck

Antworten:


35

Hier ist ein Skript, das Ihnen sagt, welche App aktiviert wird, ohne es Ihnen mitzuteilen. Ich habe es von einer Antwort auf @ KevinReids Frage über Apple SE angepasst .

Lassen Sie es in einem Terminal laufen, warten Sie, bis die Schurken-App den Fokus gestohlen hat, und sehen Sie, welche App zuletzt aufgeführt ist. (Für mich: Google Drive. Andere haben Symantec AV-Inhalte gemeldet.)

#!/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)

Dieses Skript sagt mir, mein Täter istGoogle Drive [/Applications/Google Drive.app]
MarkHu

Der Schuldige für mich war letztendlich Symantec.
Josh Bleecher Snyder

1
In meinem Fall ist es SecurityAgent [/System/Library/Frameworks/Security.framework/Versions/A/MachServices/SecurityAgent.bundle]
Ed Randall

Beleidigende App war Microsoft Update Assistant. Ich schätze diese Antwort sehr. Dieses Problem hat mich eine Weile verrückt gemacht.
Jamesbev

2
Mein Schuldiger war JetBrains Toolbox [/ Applications / JetBrains Toolbox.app/Contents/jetbrains-toolbox-cef.app], der versucht hat, sich selbst zu aktualisieren und dabei abgestürzt ist. Vielen Dank !! Es wurde auch eine große Menge an Ressourcen verbraucht.
Gabriel

1

Das hört sich albern und absurd einfach an ... Ich hatte das gleiche Problem mit meinem Laptop, als ich das Trackpad oder die eingebaute Tastatur benutzte. Hatten zwei separate Laptops ähnliche Erfahrungen gemacht, nachdem sie ein bisschen Feuchtigkeit ausgesetzt waren (ja, ich habe auf die Tastatur geschüttet).

Das Hinzufügen von peripherer Maus und Tastatur löste das Problem für mich.


1
Interessant. Ich benutze eine externe Maus und Tastatur, aber das hilft hoffentlich jemand anderem. Vielen Dank.
Josh Bleecher Snyder
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.