সামনে একক উইন্ডো বাড়াতে স্ক্রিপ্ট


8

একটি স্ক্রিপ্টে আমি নির্দিষ্ট টিটিআই ডিভাইসযুক্ত টার্মিনাল.এপ উইন্ডোটি সন্ধান করার চেষ্টা করছি এবং সেই উইন্ডোটিকে শীর্ষে তুলতে চাই। আপেল স্ক্রিপ্টে আমার এখন পর্যন্ত যা আছে তা এখানে:

tell application "System Events"
  set foundWin to false
  if (name of processes) contains "Terminal" then
    tell application "Terminal"
      set theTabs to first tab of every window where tty is "$(tty)"
      repeat with theTab in theTabs
        if class of theTab is tab then
          set theWin to (first window whose tabs contains theTab)
          set selected tab of theWin to theTab
          set foundWin to true
        end if
      end repeat
    end tell
  end if
  if foundWin then
    --RAISE THE WINDOW?!
  end if
end tell

আমি যেখানে আটকে যাচ্ছি তা হ'ল "উইন্ডো উত্থাপন" অংশ।

এখানে কিছু জিনিস যা আমি চাই তা পুরোপুরি নয়:

set frontmost of theWin to true - এটি উইন্ডোটি টার্মিনাল.এপ উইন্ডোগুলির গোষ্ঠীর সামনে নিয়ে আসে তবে এটি অন্য উইন্ডোর উপরে উঠায় না।

tell application "Terminal" to activate- এটি প্রতিটি টার্মিনাল উইন্ডোটিকে একটি বড় স্ট্যাকের সামনে নিয়ে আসে। আমি শুধু একটি উইন্ডো চাই।

tell application "System Events"
    set theSysWin to first window of process "Terminal" whose name is (name of theWin)
    perform action "AXRaise" of theSysWin
end tell

এটি প্রায়শই এটি করে, তবে এটি যা করে তা হল টার্মিনাল উইন্ডোটিকে # 2 পজিশনে উন্নীত করা, এখনও সক্রিয় উইন্ডোর নীচে (যদি সক্রিয় অ্যাপটি টার্মিনাল.এপ ব্যতীত অন্য কিছু হয়))

click theSysWin at {10,50} - কিছুই করার মনে হচ্ছে না।

click first static text of theSysWin - কিছুই করার মনে হচ্ছে না।

এই কাজ করতে একটি উপায় আছে কি? এটি অ্যাপ্লিক্রিপ্টে থাকতে হবে না।

ওডিজে-সি / কোকো কল উদ্ধৃত করে আমি এই ওয়েব পৃষ্ঠাটি ( http://blog.coriolis.ch/2008/03/04/bring-any-window-to-the-front/ ) খুঁজে পেয়েছি সম্পাদনা করুন:

SetFrontProcessWithOptions(&psn, kSetFrontProcessFrontWindowOnly);

আমি ওজজিসি বা কোকো উভয়ের সাথেই পরিচিত নই এবং এটি (শেষ পর্যন্ত) শেল স্ক্রিপ্ট থেকে আহবান করা হয়েছে, সুতরাং সেখান থেকে কোথায় যাবেন তা নিশ্চিত হন না।

উত্তর:


5

open কেবল একটি একক উইন্ডো উত্থাপন করে:

do shell script "open -a Terminal"

উইন্ডো উত্থাপিত করার আরেকটি উপায় হ'ল এর সূচকটি 1 এ সেট করা এবং তারপরে AXRaise ব্যবহার করুন:

tell application "Terminal"
    set index of window 2 to 1
end tell
tell application "System Events" to tell process "Terminal"
    perform action "AXRaise" of window 1
end tell

মানে উইন্ডোতে ক্লিক করার ফলে কাঙ্ক্ষিত প্রভাব রয়েছে। সুতরাং কেন এটি অগ্রগতিজনকভাবে অসম্ভব হবে তা নিশ্চিত নন। ওবজ -সি / কোকো কলটির সাথে আমি এই ওয়েব পৃষ্ঠাটি ( ব্লগ.কোরিওলিস.ইচ / ২০০৮/০৩/২০১৪ / ব্রিনিং -ইন- উইন্ডো - টু -ফ্রন্ট ) পেয়েছি : SetFrontProcessWithOptions(&psn, kSetFrontProcessFrontWindowOnly); আমি ওজেক্ট বা কোকোয়ের সাথে যথেষ্ট পরিচিত নই যদিও সেখান থেকে কোথায় যেতে হবে তা জানতে।
ভিড় হচ্ছে

4

আপনি সক্রিয় নয় এমন অ্যাপ্লিকেশনগুলির মেনু আইটেমগুলিতে ক্লিক করতে পারেন। উইন্ডো মেনুতে উইন্ডোটির সাথে সম্পর্কিত মেনু আইটেমটি ক্লিক করতে এটি ব্যবহার করুন ।

আপনার স্ক্রিপ্টে এটি আপনাকে সন্নিবেশ করাতে হবে:

tell application "System Events"
    tell application process "Terminal"
        click menu item (name of theWin) of menu of menu bar item "Window" of menu bar 1
    end tell
end tell

যদিও এটি প্রোগ্রামটি সক্রিয় করে না, উইন্ডোটি সামনেরতম।


প্রায়! এটি সক্রিয় অ্যাপ্লিকেশনটির শীর্ষতম উইন্ডোটি ছাড়াই অন্য সমস্ত উইন্ডোগুলির উপরে উইন্ডোটি উত্থাপন করে। সুতরাং যদি আমি একটি ওয়েব ব্রাউজারটি সর্বাধিক বা কিছু পেয়েছি তবে এর দৃশ্যমান প্রভাব নেই: /
ভিড়

"এক্সএরসাইজ" "" সম্পাদন "ক্রিয়াটি বুঝতে না পেরে আমি যেখানে ত্রুটি পাচ্ছিলাম তা এই সমস্যার সমাধান করেছে ...
টিটিটি

2

আমি বুঝতে পারি যে এই থ্রেডটি বেশ পুরানো, তবে একই সমস্যার সাথে লড়াই করার সময় আমি এটি পেরিয়ে এসেছি এবং অন্যরাও হয়ত এটি করতে পারে। আমি যতদূর বলতে পারি এটি কাঁচা অ্যাপলস্ক্রিপ্টে করা যায় না। এটি অ্যাপলস্ক্রিপ্টওবিজেসি-তে করা যেতে পারে। @ ড্যানিয়েল বেকের উদাহরণটি ব্যবহার করতে, নতুন সংস্করণটি এরকম হবে।

property NSWorkspace : class "NSWorkspace"
set workspace to NSWorkspace's sharedWorkspace()
tell application "System Events"
    tell application process "Terminal"
        click menu item (name of theWin) of menu of menu bar item "Window" of menu bar 1
        workspace's launchApplication_("Terminal")
    end tell
end tell

যুক্ত কোডটি অ্যাপ্লিকেশনটিকে "আরম্ভ" করতে কোকো শ্রেণীর এনএস ওয়ার্কস্পেস ব্যবহার করবে, যা সেই অ্যাপ্লিকেশনটির সামনেরতম উইন্ডোটিকে ফোকাস সহ সামনের দিকে তুলে ধরে। যে প্রক্রিয়াটি আমাকে এনেছে তার আরও বিশদের জন্য, আমার এখানে আমার ওয়েবসাইটে আরও পুঙ্খানুপুঙ্খ লিখনআপ রয়েছে ।


0

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

আপনার ব্যবহারের ক্ষেত্রে "সাফারি" এবং "হোয়াটসঅ্যাপ" এর বিকল্প দিন।

tell application "System Events"
    tell process "Safari"
        try
            set theWindow to (first window whose name contains "WhatsApp")
            perform action "AXRaise" of theWindow
            do shell script "open -a Safari"
        end try
    end tell
end tell

এটি (দৃশ্যমানভাবে) দুটি ধাপে উইন্ডোগুলিকে উত্থিত করে। এটি প্রথমে অ্যাপ্লিকেশনটির উইন্ডোগুলির শীর্ষে উইন্ডোটি উত্থাপন করে এবং তারপরেই এটি সমস্ত উইন্ডোর শীর্ষে তুলে ধরে। নিখুঁত নয়, তবে কার্যকরী।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.