どのアプリがOS Xでフォーカスを奪ったかを知るにはどうすればよいですか?


25

マシンのアクティブウィンドウがフォーカスを失う場合があります。アクティブなアプリは同じままです(以前にChromeを使用していた場合、今でもChromeを使用しています)が、アクティブなウィンドウはアクティブではありません。アクティブなウィンドウはありません。これはイライラします。この質問の入力中に発生し、私のキーストロークが突然登録を停止しました。

他のアプリがフォーカスを奪っていると信じていますが、それ自体には表示するUIがないため、アクティブなウィンドウはアクティブになりませんが、アクティブなアプリはアクティブなままです。

問題は、問題のアプリを追跡して、怒って削除できるようにする方法です。通常、フォーカス窃盗の場合、犯人に焦点があるため、犯人は明らかです。この場合、私は困惑しています。


Apple > Force Quit...メニューを試して、実行すべきでないものがあるかどうかを確認できます。
マイケルフランク14年

1
@MichaelFrankメニューバーのないアプリケーション(例:inにLSUIElement設定さtrueれているものInfo.plist)は表示されません。それらはその振る舞いに完全に対応しています。
ダニエルベック

@DanielBeckああ、落とし穴。知っておくと便利です。
マイケルフランク14年

1

tell application "System Events" to display alert ((name of first application process whose frontmost is true) as string)残念ながら、メニューバーのないプロセスは考慮されません。
ダニエルベック

回答:


35

以下は、通知することなく、どのアプリがアクティブになっているかを示すスクリプトです。Apple SEでの @KevinReidの質問に対する回答からそれを改作しました。

ターミナルで実行したままにして、不正なアプリがフォーカスを奪うのを待ち、最後にリストされているアプリを確認します。(私にとって: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

私の犯人はシマンテックでした。
ジョシュブリーチャースナイダー

1
私の場合はそれがSecurityAgent [/System/Library/Frameworks/Security.framework/Versions/A/MachServices/SecurityAgent.bundle]である
エド・ランドール

問題のアプリはMicrosoft Update Assistantでした。私はこの答えに非常に感謝しています。この問題は私をしばらく動かしてきました。
ジェームズベフ

2
私の犯人はJetBrains Toolbox [/ Applications / JetBrains Toolbox.app/Contents/jetbrains-toolbox-cef.app]であり、それ自体を更新しようとしてクラッシュしていました。ありがとうございます!! また、膨大なリソースを消費していました。
ガブリエル

1

これはばかげてばかげて単純に聞こえます...トラックパッドを使用したり、キーボードを内蔵したりしているときに、ラップトップでも同じ問題が発生しました。少しの湿気にさらされた後、2つの別々のラップトップが同様の体験をしていた(そう、キーボードにこぼした)

周辺機器のマウスとキーボードを追加すると解決しました。


1
面白い。私は外付けのマウスとキーボードを使用していますが、うまくいけば他の人の助けになります。ありがとう。
ジョシュブリーチャースナイダー14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.