অ্যাপলস্ক্রিপ্ট: সব খোলা উইন্ডোজ বন্ধ করুন


6

আমি সব খোলা উইন্ডোজ বন্ধ করার জন্য একটি আপেল স্ক্রিপ্ট লিখতে চেষ্টা করছি। নিম্নলিখিত আমি চেষ্টা করে কি হয়:

tell application "System Events"
  repeat with theProcess in (application processes where visible is true)
      tell application theProcess
          close
      end tell
   end repeat
end tell

এটা কাজ বলে মনে হচ্ছে না। আমি পাই:

পান্ডুলিপিতে ভুল: সিস্টেম ইভেন্টগুলি একটি ত্রুটি পেয়েছে: অ্যাপ্লিকেশন পেতে পারে না (প্রতিটি অ্যাপ্লিকেশন প্রক্রিয়াটির আইটেম 1 যার দৃশ্যমান = সত্য)। সংখ্যা   -1728

অ্যাপ্লিকেশন প্রস্থান বা উইন্ডোজ বন্ধ হলে আমি যত্ন না।

আমি এটি ডিবাগ করার চেষ্টা করেছি, কিন্তু আমি এই স্ক্রিপ্টটি এক্সকোডে খুলতে পারিনি।


সম্পাদনা: ধন্যবাদ user3439894 আমি নিম্নলিখিত স্ক্রিপ্ট যা ঠিক পাঠাতে নিষ্পত্তি করেছি Command + Q প্রতিটি দৃশ্যমান অ্যাপ্লিকেশন:

tell application "System Events"
    set theVisibleApps to (name of application processes where visible is true)
end tell



repeat with thisApp in theVisibleApps
    try
        tell application thisApp to activate
        tell application "System Events"
            keystroke "q" using command down
        end tell
    on error errMsg
        display dialog errMsg
    end try
end repeat

এই জন্য এখন আমার জন্য কাজ করে। যেমন user3439894 প্রস্তাবিত, আমি মাধ্যমে যেতে এবং বুঝতে হবে অ্যাপলস্ক্রিপ্ট ভাষা গাইড

উত্তর:


4

প্রথম সমস্যা কি (application processes where visible is true) আয়।

উদাহরণস্বরূপ, একটি পরিষ্কার ইনস্টলেশনের উপর ম্যাকস 10.13 শুধু সঙ্গে আবিষ্কর্তা এবং স্ক্রিপ্ট সম্পাদক খুলুন

tell application "System Events" to get application processes where visible is true

রিটার্নস:

{application process "Script Editor" of application "System Events", application process "Finder" of application "System Events"}

আপনি কি সত্যিই পেতে চান একটি নাম তালিকা দৃশ্যমান অ্যাপ্লিকেশনগুলির, যেমন:

tell application "System Events" to get name of every application process where visible is true

রিটার্নস:

{"Script Editor", "Finder"}

অনুসরণ উদাহরণ AppleScript কোড প্রতিটি অ্যাপ্লিকেশন সব খোলা নথি বন্ধ করার চেষ্টা করবে এবং ত্রুটি সব উইন্ডো বন্ধ।

এখন আমি কিছু নথি খোলা TextEdit এবং পূর্বরূপ এবং কিছু জানালা আবিষ্কর্তা তারপর দৌড়ে উদাহরণ AppleScript কোড । এটা সব খোলা নথি বন্ধ TextEdit এবং পূর্বরূপ এবং সব উইন্ডোজ আবিষ্কর্তা , কিন্তু না স্ক্রিপ্ট সম্পাদক

বিঃদ্রঃ : এটি বন্ধ হবে না এবং স্ক্রিপ্ট সম্পাদক নথি এবং নীরবভাবে এর সাথে ত্রুটিপূর্ণ হবে:

error "The document can’t be closed while the script is running."

উদাহরণ AppleScript কোড :

tell application "System Events"
    set theVisibleApps to (name of application processes where visible is true)
end tell

repeat with thisApp in theVisibleApps
    try
        tell application thisApp
            try
                close every document without saving
            on error
                close every window
            end try
        end tell
    end try
end repeat

এছাড়াও এই সঙ্গে যে নোট উদাহরণ AppleScript কোড কোডেড হিসাবে হবে না প্রতিটি নথি বন্ধ অথবা প্রতি উইন্ডো বন্ধ একটি আবেদন যে যারা সমর্থন করে না কমান্ড এবং কারণ নীরবভাবে ব্যর্থ হওয়া উচিত try হুকুম

এই উদাহরণ AppleScript কোড আপনার বর্তমান সঙ্গে কি ভুল তা ব্যাখ্যা করার জন্য উপস্থাপন করা হচ্ছে কোড এবং একটি উদাহরণ কিভাবে আপনার লক্ষ্য অর্জন সাহায্য।


ধন্যবাদ @ user3439894। আমি ত্রুটি প্রদর্শন, আমি খুঁজে {ApplicationName} got an error: every document does not understand the "close" message. যাই হোক না কেন কিছু করার আছে click button 1 of window 1 অথবা প্রতিটি উইন্ডো একটি Ctrl + W বা Ctrl + প্রশ্ন পাঠাতে?
O.O.

@ ও.ও।, যেমন আমি আমার উত্তরে বলেছি, "এটা উদাহরণ AppleScript কোড আপনার বর্তমান সঙ্গে কি ভুল তা ব্যাখ্যা করার জন্য উপস্থাপন করা হচ্ছে কোড এবং একটি উদাহরণ কিভাবে আপনার লক্ষ্য অর্জন সাহায্য। "এবং কোড শুধু যে, উদাহরণ কোড এবং আপনি এটি অর্জন করার চেষ্টা করছেন যাই হোক না কেন যাই হোক না কেন সম্পূর্ণ সমাধান হতে উদ্দেশ্যে। দ্য উদাহরণ AppleScript কোড অবশ্যই অতিরিক্ত শর্ত / পরিস্থিতিতে পরিমার্জন করার জন্য সংশোধন করা যেতে পারে, আপনার যথাযথ প্রয়োজনীয়তার সাথে মিটমাট করার জন্য আপনাকে এটি ঠিক করতে হবে।
user3439894

আপনি অন্তত আমাকে কিছু ডকুমেন্টেশন বা আমাকে সাহায্য করতে পারেন যে কিছু নির্দেশ করতে পারেন। আমি বুঝতে পারিনি কেন আমাদের আবেদন প্রক্রিয়াগুলির পরিবর্তে অ্যাপ্লিকেশন নাম দরকার? উইন্ডোজ উপর পুনরাবৃত্তি আছে যাই হোক না কেন আছে? যেমন প্রতিটি অ্যাপ্লিকেশনের জন্য, প্রতিটি উইন্ডোতে, বন্ধ অথবা কীকোড পাঠান।
O.O.

@ ও। ও।, রে: "আপনি অন্তত আমাকে কিছু ডকুমেন্টেশন নির্দেশ করতে পারেন ..." স্ক্রিপ্ট এডিটরতে, সহায়তা মেনুতে ক্লিক করুন এবং অ্যাপলস্ক্রিপ্ট ভাষা নির্দেশিকা দেখান নির্বাচন করুন। Re: "আমি বুঝতে পারিনি কেন আমাদের আবেদন প্রক্রিয়াগুলির পরিবর্তে অ্যাপ্লিকেশন নাম প্রয়োজন?" আপনার কোড ত্রুটি আউট এবং এটি কোড করার সঠিক উপায় নয় কারণ। আপনার কোড tell application theProcess যেমন tell application item 1 of every application process whose visible = true যা অনুবাদ করবে যেমন tell application application process "Script Editor" of application "System Events", এবং কোডিং একটি অনুপযুক্ত ফর্ম।
user3439894

@ ও। ও।, আপনি অ্যাপ্লিকেশন নামগুলির তালিকা দিয়ে কাজ করেন যাতে তালিকার মাধ্যমে লুপ করতে পারেন এবং প্রতিটি অ্যাপ্লিকেশনের কিছু পদক্ষেপ (গুলি) প্রফর্ম করতে পারেন। প্রতিটি অ্যাপ্লিকেশন সরাসরি অ্যাপলস্ক্রিপ্ট স্ক্রিপ্টেবল নয় এবং একই কমান্ডের প্রতিক্রিয়া জানায় না কেন এবং কিছু ক্ষেত্রে আপনাকে একটি নির্দিষ্ট প্রক্রিয়াটি ভিন্নভাবে করতে হবে এবং UI স্ক্রিপ্টিং ব্যবহার করতে হবে। আপনি একটি brute বল পদ্ধতি চান, তারপর repeat with thisApp in theVisibleApps লুপ , ব্যবহার করুন do shell script "killall " & quoted form of thisApp যে, শক্তি সঙ্গে, বাকি খোলা দৃশ্যমান অ্যাপ্লিকেশন বাকি কোডের উপর ভিত্তি করে।
user3439894
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.