क्या यह पता लगाने का कोई तरीका है कि कौन सा प्रोग्राम मेरे मैक पर ध्यान केंद्रित कर रहा है?


23

मुझे अपने मैक पर कीबोर्ड फोकस (वर्तमान विंडो का शीर्षक बार निष्क्रिय हो जाता है) चोरी करने पर कुछ ऐप के साथ समस्या हुई है। हालाँकि, यह वास्तव में किसी भी विंडोज़ या अपने स्वयं के मेनू बार को नहीं डाल रहा है, और यह कीबोर्ड शॉर्टकट की पहचान नहीं करता है।

क्या यह निर्धारित करने का एक तरीका है कि क्या कीबोर्ड पर ध्यान केंद्रित किया गया है, भले ही यह उन लोगों में से एक है जिनके पास कोई मेनू पट्टी या डॉक आइकन नहीं है? मुझे एक अंतर्निहित सुविधा का पता है जो लगभग ऐसा करता है; फोर्स क्विट डायलॉग, यदि कीबोर्ड से मंगवाया जाता है, तो चुने गए फोकस किए गए एप्लिकेशन के साथ खुल जाएगा। हालाँकि, यह केवल सामान्य डॉक-आइकन अनुप्रयोगों को सूचीबद्ध करता है, इसलिए यह इस मामले में मदद नहीं करता है।

यह उस समय के आसपास होने लगा जब मैंने 10.8 से 10.9 तक अपग्रेड किया; मुझे संदेह है कि मेरे द्वारा पहले से इंस्टॉल किए गए या ओएस के साथ अपग्रेड किए गए एप्लिकेशन में से एक, नया दुर्व्यवहार है।

मैं थोड़ी मात्रा में प्रोग्रामिंग (या AppleScript, कहते हैं), डेवलपर टूल आदि का उपयोग करने वाले समाधानों के लिए खुला हूं; लेकिन "दूर जाने तक चीजों को अनइंस्टॉल" करना पसंद नहीं करते क्योंकि यह इस समय अत्यधिक विघटनकारी होगा। मैं निश्चित रूप से एप्लिकेशन की पहचान करना चाहता हूं और बग रिपोर्ट दर्ज करना या उसके कॉन्फ़िगरेशन को ठीक करना चाहता हूं।

मेरे शोध ने केवल Apple समर्थन समुदायों पर एक ही अनुरोध करने वाले कुछ धागों को बदल दिया है, जिनमें उत्तर नहीं था।


मैं यह भी देख रहा हूं। 10.9.4। शायद मेरे द्वारा चलाए जा रहे मुख्य ऐप्स को साझा करना एक समानता को उजागर कर सकता है? Chrome, Firefox, Safari, Wuala, Dropbox, Nitrous, 1Password, Google Hangouts, Evernote, Skitch, Google ड्राइव, टाइम मशीन, एयरपोर्ट बेस स्टेशन एजेंट, Android फ़ाइल स्थानांतरण एजेंट। अन्यथा ... कोई आसान उपाय नहीं जो मुझे पता हो। मेरा संदेह जी हैंगआउट है।
JezC

जवाबों:


21

आप एक find_focus_stealer.pyफ़ाइल में निम्नलिखित कोड को सहेजकर और इसे python find_focus_stealer.pyटर्मिनल में चलाकर ध्यान केंद्रित कर सकते हैं ।

स्क्रिप्ट चलाना शुरू करें - यह सक्रिय ऐप के नाम को हर 3 सेकंड में प्रिंट करेगा। हमेशा की तरह काम करते रहें, समस्या होने की प्रतीक्षा करें और कुछ सेकंड के बाद टर्मिनल में आउटपुट देखें। आपके पास अपना अपराधी होगा।

मेरे मामले में यह एक सिमेंटेक एंटीवायरस बैकग्राउंड ऐप (SymUIAgent.app) था।

#!/usr/bin/python

from AppKit import NSWorkspace
import time
t = range(1,100)
for i in t:
    time.sleep(3)
    activeAppName = NSWorkspace.sharedWorkspace().activeApplication()['NSApplicationName']
    print activeAppName

इस Apple चर्चा धागे में iMichael_ को श्रेय ।


मैंने इस स्क्रिप्ट की कोशिश की। अजीब हर बार जब घटना-चोरी होती है, तो स्क्रिप्ट चलना बंद हो जाती है। विंडो में अंतिम लॉग स्टेटमेंट पिछले लॉग स्टेटमेंट्स से अलग नहीं है, अर्थात कोई स्पष्ट अपराधी नहीं है। स्क्रिप्ट सिर्फ बाहर निकलती है, कोई त्रुटि नहीं।
डायोडस - जेम्स मैकफर्लेन

2
इस अजगर कार्यक्रम ने बहुत काम किया, लेकिन मुझे ऐप्पल इंस्टाल्ड पायथन का उपयोग करना पड़ा। मैंने पायथन 2.7.8 स्थापित किया था और AppKit मॉड्यूल शामिल नहीं है। इसके अलावा मेरी मशीन पर अपमानजनक ऐप था: SymUIAgent.app Symantec क्विक मेनू।
कैमरन गुडले

2
@ डायोडस इस कारण से बाहर निकलता है क्योंकि ऐसा नहीं है क्योंकि चुराया गया ऐप इसे समाप्त कर देता है, लेकिन क्योंकि यह केवल 100 सेकंड की अवधि के लिए चलाया गया था। जब तक मैं उस टर्मिनल विंडो में Ctrl + c दबाता हूं, तब तक इसे चलाने के for i in t:लिए मैं बदल जाता हूंwhile 1:
CenterOrbit

1
अच्छा! मेरे लिए, यह Google Drive.app था। मैंने आपकी स्क्रिप्ट के लिए थोड़ा सा अपडेट किया था जिसे मैं एक अलग उत्तर में पोस्ट करूंगा। धन्यवाद!
मध्यस्थता

1
यदि आप मुठभेड़ करते हैं no module named appkit, तो दौड़ें easy_install pipऔर pip install pyobjc। मेरे लिए यह Google Driveमेरा ध्यान चुरा रहा था
mihai

14

यहां @ ऐस की स्क्रिप्ट के लिए थोड़ा सा अपडेट है जो तब तक चलता है जब तक आप इसे नहीं मारते हैं और जब यह बदलता है तो केवल ऐप का नाम प्रिंट करता है। दोबारा, इस कोड को एक फ़ाइल में सहेजें find_focus_stealer.pyऔर फिर इसे चलाने का प्रयास करें python find_focus_stealer.py

#!/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 ड्राइव" को ट्रैक करने के लिए इसका उपयोग करने में सक्षम था।


अच्छा दिखाओ सर!
ब्रूनो ब्रोंस्की

इसने मेरे लिए काम किया। मेरे मामले में फोकस-चोरी करने वाला ऐप बेटरटचटूल संस्करण 2.636 था।
रोरी ओ'केन

1

यहाँ @ ऐस के उत्तर में वर्णित स्क्रिप्ट का उन्नत संस्करण है :

#!/usr/bin/python
# Prints current window focus.
# See: /apple//q/123730
from AppKit import NSWorkspace
import time
workspace = NSWorkspace.sharedWorkspace()
active_app = workspace.activeApplication()['NSApplicationName']
print('Active focus: ' + active_app)
while True:
    time.sleep(1)
    prev_app = active_app
    active_app = workspace.activeApplication()['NSApplicationName']
    if prev_app != active_app:
        print('Focus changed to: ' + active_app)

यह सक्रिय एप्लिकेशन का नाम प्रिंट करेगा जिसमें फोकस है और यह पता लगाएगा कि क्या यह हर सेकंड की जाँच करके बदल गया है।

संबंधित स्क्रिप्ट: पहचानें कि कौन सा ऐप या प्रक्रिया ओएसएक्स पर फोकस पर चोरी कर रही है

उपयोग:

  1. उपरोक्त स्क्रिप्ट को एक फ़ाइल में सहेजें get_active_focus.py
  2. chmod +x get_active_focus.pyकमांड के साथ निष्पादन विशेषताओं को असाइन करें ।
  3. फ़ाइल के साथ चलाएँ ./get_active_focus.py

आउटपुट:

$ ./get_active_focus.py
Active focus: Terminal
Focus changed to: Google Chrome

0

शायद सक्रिय प्रक्रियाओं के लिए गतिविधि मॉनिटर की जाँच? ऐप नप राज्य में कुछ भी आसानी से खारिज किया जा सकता है, और यह शिकार को बहुत छोटा बना सकता है।


हां, यह अनुमान लगाने का एक तरीका होगा कि समस्या क्या है, लेकिन मैं ऐसी चीज की तलाश कर रहा हूं जो वास्तव में सीधे जानकारी प्राप्त करती है।
केविन रीड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.