Bagaimana cara mengetahui aplikasi mana yang mencuri fokus saya di OS X?

25

Jendela aktif di komputer saya terkadang kehilangan fokus. Aplikasi aktif tetap sama - jika saya pernah di Chrome sebelumnya, saya masih di Chrome sekarang - tetapi jendela aktif tidak lagi aktif. Tidak ada jendela yang aktif. Ini membuat frustrasi; itu terjadi saat mengetik pertanyaan ini, dan penekanan tombol saya tiba-tiba berhenti mendaftar.

Saya percaya bahwa beberapa aplikasi lain mencuri fokus, tetapi itu sendiri tidak memiliki UI untuk ditampilkan, sehingga jendela aktif menjadi tidak aktif, tetapi aplikasi aktif tetap aktif.

Pertanyaannya adalah: Bagaimana cara melacak aplikasi yang menyinggung, sehingga saya bisa menghapusnya dengan marah? Biasanya dalam kasus pencurian fokus, pelakunya jelas, karena memiliki fokus. Dalam hal ini, saya bingung.

Josh Bleecher Snyder
sumber
Anda dapat mencoba Apple > Force Quit...menu untuk melihat apakah ada sesuatu yang berjalan yang seharusnya tidak.
Michael Frank
1
@MichaelFrank Tidak akan menampilkan aplikasi yang tidak memiliki bilah menu (mis. Aplikasi yang LSUIElementdiatur ke truedalam Info.plist). Mereka sangat mampu melakukan perilaku itu.
Daniel Beck
@DanielBeck Ahh, mengerti. Itu mudah diketahui.
Michael Frank
1
FYI, saya pada dasarnya mengajukan pertanyaan yang sama pada Apple SE: Apakah ada cara untuk mendeteksi program apa yang mencuri fokus pada Mac saya?
Kevin Reid
tell application "System Events" to display alert ((name of first application process whose frontmost is true) as string)sayangnya tidak mempertimbangkan proses tanpa bilah menu.
Daniel Beck

Jawaban:

35

Berikut ini skrip yang akan memberi tahu Anda aplikasi mana yang diaktifkan tanpa memberi tahu Anda. Saya mengadaptasinya dari jawaban pertanyaan @ KevinReid di Apple SE .

Biarkan tetap berjalan di terminal, tunggu aplikasi jahat mencuri fokus, dan lihat aplikasi mana yang terdaftar terakhir. (Bagi saya: Google Drive. Yang lain telah melaporkan hal-hal 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)
medmunds
sumber
Script ini memberitahuku pelakunya adalahGoogle Drive [/Applications/Google Drive.app]
MarkHu
Pelakunya bagi saya akhirnya menjadi Symantec.
Josh Bleecher Snyder
1
Dalam kasus saya ini adalah SecurityAgent [/System/Library/Frameworks/Security.framework/Versions/A/MachServices/SecurityAgent.bundle]
Ed Randall
Aplikasi yang melanggar adalah Microsoft Update Assistant. Saya sangat menghargai jawaban ini, masalah ini telah membuat saya gila untuk sementara waktu.
jamesbev
2
Pelaku saya adalah JetBrains Toolbox [/ Applications / JetBrains Toolbox.app/Contents/jetbrains-toolbox-cef.app], sedang mencoba memperbarui sendiri dan terhempas dalam proses. Terima kasih banyak !!!! Itu juga menghabiskan banyak sumber daya.
Gabriel
1

Ini akan terdengar konyol dan tidak masuk akal sederhana ... Saya punya masalah yang sama dengan laptop saya ketika saya menggunakan trackpad atau keyboard bawaan. Memiliki dua laptop terpisah memberikan pengalaman serupa setelah terkena sedikit kelembaban (ya, saya tumpah di keyboard).

Menambahkan mouse periferal dan keyboard menyelesaikannya untuk saya.

Paul E
sumber
1
Menarik. Saya menggunakan mouse dan keyboard eksternal, tetapi mudah-mudahan ini membantu orang lain. Terima kasih.
Josh Bleecher Snyder