- ベストアンサー
Applescriptで一番上のウィンドウを自動で撮影する方法を探して
Applescriptで一番上のウィンドウを自動で撮影する方法を探しています。 do shell script "screencapture -iW" とすれば、惜しい所までいくのですが、最後カメラマークになってマウスのボタンを押さないと撮影できません。 ・自動で撮影するコマンド もしくは ・マウスのボタンを押すスクリプト、または一番上のウィンドウを指定するスクリプト を教えてもらえないでしょうか。 よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
AppleScriptでマウスクリックを代行させる方法がありましたので参考URLに載せておきます。 あとは、System Eventsを使ったUI Scriptingを使えばキー入力できるので、 Command+Shift+4キーを押した後のスペースキーでカメラマークに変え、 撮りたいウインドウをマウスクリックさせればデスクトップにスクリーンショットファイルができます。 do shell script "screencapture"を使うと入力待ちになって止まってしまい、 次のマウスクリックさせるスクリプトに届かないので注意してください。 具体的にはこう書くと座標{100, 40}にあるウインドウのスクリーンショットができました。 -- tell application "System Events" key code 21 using {command down, shift down} delay 0.5 key code 49 end tell delay 0.5 my mouseClick({100, 40}, "left", 1, "", 0.1) -- ユーザー定義関数のmouseClickハンドラの書き方は参考URLのページを参照してください。 指定したウインドウを最前面にする方法や座標を求める方法は、 タブがあるウインドウを持つなど、アプリケーションによって書き方が違いますので、 使いたいアプリケーションのヘルプなどを参照してください。 最前面のウインドウというのは意外とコンピュータ側からは定義しずらいものです。 すべてのアプリを終了しウインドウをすべて閉じた状態で、1つもウインドウが存在しないように見えても、 ウインドウを持たない隠れたアプリケーションがあったり、一定時間ごとに最前面で動くものがあったりします。 デスクトップやDock、スクリーンコーナーを感知する見えない領域がウインドウだったりします。 いくつかスクリーンショットを補助するアプリケーションを試用したことがありましたが、 固定された領域を撮る機能はあっても、最前面ウインドウを感知して自動撮影するものはありませんでした。 結局、最前面ウインドウを指定するのは人手に頼る方法が確実なのでしょう。
その他の回答 (1)
- capy2009
- ベストアンサー率72% (337/465)
それはできません。 全体のスクリーンショットを撮って(これは自動的にできます)そこから目的のウィンドウ部分だけ切り出すことになります。画像の切り取りには iMagine Photo が便利です。
お礼
お答えいただきありがとうございました。
お礼
お答え頂きありがとうございます。明日、教えていただいた方法でやってみます。
補足
ユーザー定義関数、mouseClickハンドラとして、 http://memogaki.soudesune.net/index.htmlを参考に on mouseClick(thePosition, theButton, theClickCount, theModifierKeys, thePressSec) ~ end mouseClick をスクリプトに追加して行った所、期待したウィンドウショットを撮影することができました。 ありがとうございました。