অ্যাপলস্ক্রিপ্ট সক্রিয় অ্যাপ্লিকেশন পান


13

আমি কীভাবে কোড চালাতে পারি (উদাহরণস্বরূপ display dialog("test")) কেবলমাত্র "সন্ধানকারী" অ্যাপ্লিকেশনটি ফোকাস / সক্রিয় থাকলে কেবল অ্যাপলস্ক্রিপ্ট ব্যবহার করে।


হুম, যদি অ্যাপ্লিকেশনটি ইতিমধ্যে সক্রিয় থাকে তবে এটি আবার সক্রিয় করে আপনি কী অর্জন করতে চান?
কেন্ট

stackoverflow.com/questions/3718520/… নিষ্ক্রিয় সমস্যা প্রাসঙ্গিক যদিও প্রাসঙ্গিক নয়।
উইলিয়াম

আপনার আপনার প্রশ্নটি পরিষ্কার করা দরকার। আমার উত্তরের স্ক্রিপ্টটি 'কাজ' এর প্রদত্ত সংজ্ঞায়নের জন্য কাজ করে অর্থাৎ এটি ফাইন্ডার সামনেরতম কিনা তা সঠিকভাবে রিপোর্ট করে।
তেটসুজিন

@ টেটুজিন আপডেট হয়েছে
উইলিয়াম

আপনি কীভাবে অ্যাপ্লস্ক্রিপ্ট অ্যাপ্লিকেশন চালু করতে যাচ্ছেন? এটিতে ডাবল ক্লিক করা অবশ্যই ফাইন্ডারকে সর্বদা 'দ্বিতীয় থেকে শেষ' হিসাবে দেখবে। উত্তর পরিবর্তন হচ্ছে - স্ক্রিপ্ট সম্পাদক থেকে ডাকা হলে এটি কাজ করবে, তবে এটি ফায়ারারে ডাবল-ক্লিক করলে 'ব্যর্থ' হবে, কারণ এটি মিথ্যা-ইতিবাচক দেয়
তেটসুজন

উত্তর:


18

স্ক্রিপ্টটি এডিটর থেকে কল করা হলে এটি কাজ করবে, যেমন পরের অ্যাপ্লিকেশনটিকে লাইনে চেক করার জন্য 'পথ থেকে সরে যায়', তবে ফাইন্ডার থেকে ডাবল ক্লিক করা থাকলে ব্যর্থ হবে, কারণ ফাইন্ডার সর্বদা সর্বশেষ লাইনে থাকবে।

tell application "System Events"
    set frontmostProcess to first process where it is frontmost
    set visible of frontmostProcess to false
    repeat while (frontmostProcess is frontmost)
        delay 0.2
    end repeat
    set secondFrontmost to name of first process where it is frontmost
    set frontmost of frontmostProcess to true
end tell

tell application (path to frontmost application as text)
    if "Finder" is in secondFrontmost then
        display dialog ("Finder was last in front")
    else
        display dialog (secondFrontmost & " was last in front")
    end if
end tell

উত্তর উত্তর এখানে উত্তরোত্তর জন্য রেখে

প্রাথমিকভাবে প্রশ্নটি সঠিকভাবে না পড়ার পরে পুরো উত্তরটি নতুন করে দিন ;-)

tell application "System Events"
    set activeApp to name of first application process whose frontmost is true
    if "Finder" is in activeApp then
        display dialog ("test")
    else
        display dialog ("test2")
    end if
end tell

+1 যদিও আপনার প্রস্তাবিত সমাধানটি তেমন কাজ করছে বলে মনে হচ্ছে না। অ্যাপ্লিকেশনটি যতক্ষণ না খোলা থাকে ততক্ষণ আমি "পরীক্ষা" পাই এবং এটি সক্রিয় থাকে বা না হয় তা অগত্যা না।
উইলিয়াম

একটি পুনর্বিবেচনা ... সম্পাদিত উত্তর
তেটসুজিন

সম্পূর্ণ পুনর্লিখন, এখন আমি আমার ডেস্কটপে ফিরে এসেছি - এটি এখন আপনি যা বলেছেন ঠিক তাই করে।
তেটসুজিন

2
আপনি দ্বিতীয় ডায়লগ কমান্ডও প্রতিস্থাপন করতে পারবেন যা display dialog (activeApp)নিশ্চিত করতে স্ক্রিপ্টটি হ'ল সামনেরতমটি।
কেন্ট

1
এটি সম্পর্কে সতর্কতা অবলম্বন করুন - কিছু অ্যাপ্লিকেশানের অ্যাপ্লিকেশন নামগুলি (উদাহরণস্বরূপ tell application "app_name") তাদের প্রক্রিয়া নামের (যেমন, set frontmost of process "app_process" to true) থেকে পৃথক ।
বলপয়েন্টবেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.