ฉันจะบอกได้อย่างไรว่าแอพใดขโมยโฟกัสของฉันใน OS X


25

หน้าต่างที่ใช้งานอยู่ในเครื่องของฉันสูญเสียโฟกัสเป็นบางครั้ง แอปที่ใช้งานยังคงเหมือนเดิม - ถ้าฉันเคยอยู่ใน Chrome มาก่อนฉันยังอยู่ใน Chrome เลย - แต่หน้าต่างที่ใช้งานไม่ได้เปิดใช้งานอีกต่อไป ไม่มีหน้าต่างทำงาน นี่เป็นสิ่งที่น่าหงุดหงิด มันเกิดขึ้นขณะที่พิมพ์คำถามนี้และการกดแป้นของฉันก็หยุดลงทะเบียนทันที

ฉันเชื่อว่าแอปอื่น ๆ กำลังขโมยโฟกัส แต่ตัวมันเองไม่มี UI ที่จะแสดงดังนั้นหน้าต่างที่ใช้งานจะไม่ทำงาน แต่แอปที่ใช้งานยังคงทำงานอยู่

คำถามคือ: ฉันจะติดตามแอพที่มีการละเมิดได้อย่างไรเพื่อที่ฉันจะสามารถลบได้อย่างโกรธ? โดยปกติในกรณีของการขโมยโฟกัสผู้ร้ายจะเห็นได้ชัดเพราะมีโฟกัส ในกรณีนี้ฉันนิ่งงัน


คุณสามารถลองApple > Force Quit...เมนูเพื่อดูว่ามีอะไรที่ไม่ควรทำหรือไม่
Michael Frank

1
@MichaelFrank มันจะไม่แสดงการใช้งานที่มีแถบเมนูไม่มี (เช่นผู้ที่มีLSUIElementกำหนดtrueในInfo.plist) สิ่งเหล่านั้นมีความสามารถอย่างสมบูรณ์แบบของพฤติกรรมนั้น
Daniel Beck

@DanielBeck Ahh, gotcha มีประโยชน์ที่จะรู้
Michael Frank


tell application "System Events" to display alert ((name of first application process whose frontmost is true) as string)น่าเสียดายที่ไม่ได้พิจารณากระบวนการที่ไม่มีแถบเมนู
Daniel Beck

คำตอบ:


35

นี่คือสคริปต์ที่จะบอกคุณว่าแอพใดกำลังเปิดใช้งานโดยไม่บอกคุณ ผมดัดแปลงมาจากคำตอบ @ KevinReid ของคำถามไปบนแอปเปิ้ล SE

ปล่อยให้มันทำงานในเทอร์มินัลรอให้แอปปลอมเพื่อขโมยโฟกัสและดูว่าแอพใดที่อยู่ในรายการล่าสุด (สำหรับฉัน: Google Drive ผู้อื่นรายงานสิ่ง 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)

สคริปต์นี้บอกผู้กระทำผิดของฉันคือGoogle Drive [/Applications/Google Drive.app]
MarkHu

ผู้ร้ายสำหรับฉันคือไซแมนเทค
Josh Bleecher Snyder

1
ในกรณีของฉันมันคือ SecurityAgent [/System/Library/Frameworks/Security.framework/Versions/A/MachServices/SecurityAgent.bundle]
Ed Randall

แอปที่ละเมิดคือ Microsoft Update Assistant ฉันซาบซึ้งกับคำตอบนี้มากปัญหานี้ทำให้ฉันกลัว
jamesbev

2
ผู้ร้ายของฉันคือ JetBrains Toolbox [/ Applications / JetBrains Toolbox.app/Contents/jetbrains-toolbox-cef.app] กำลังพยายามอัปเดตตัวเองและหยุดทำงานในกระบวนการ ขอบคุณมาก! มันก็ใช้ทรัพยากรจำนวนมากเช่นกัน
Gabriel

1

นี่จะฟังดูไร้สาระและไร้สาระ ... ฉันมีปัญหาเดียวกันกับแล็ปท็อปของฉันเมื่อฉันใช้แทร็คแพดหรือแป้นพิมพ์ในตัว มีแล็ปท็อปสองเครื่องแยกกันให้ประสบการณ์ที่คล้ายกันหลังจากสัมผัสกับความชื้นเล็กน้อย (ใช่ฉันทำคีย์บอร์ดหก)

การเพิ่มเมาส์และคีย์บอร์ดต่อพ่วงช่วยแก้ปัญหาให้ฉันได้


1
น่าสนใจ ฉันใช้เมาส์และแป้นพิมพ์ภายนอก แต่หวังว่าจะช่วยคนอื่นได้ ขอบคุณ
Josh Bleecher Snyder
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.