dポイントプレゼントキャンペーン実施中!

Applescriptで一番上のウィンドウを自動で撮影する方法を探しています。

do shell script "screencapture -iW"
とすれば、惜しい所までいくのですが、最後カメラマークになってマウスのボタンを押さないと撮影できません。

・自動で撮影するコマンド
もしくは
・マウスのボタンを押すスクリプト、または一番上のウィンドウを指定するスクリプト

を教えてもらえないでしょうか。

よろしくお願い致します。

A 回答 (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、スクリーンコーナーを感知する見えない領域がウインドウだったりします。

いくつかスクリーンショットを補助するアプリケーションを試用したことがありましたが、
固定された領域を撮る機能はあっても、最前面ウインドウを感知して自動撮影するものはありませんでした。
結局、最前面ウインドウを指定するのは人手に頼る方法が確実なのでしょう。

参考URL:http://memogaki.soudesune.net/index.html

この回答への補足

ユーザー定義関数、mouseClickハンドラとして、

http://memogaki.soudesune.net/index.htmlを参考に

on mouseClick(thePosition, theButton, theClickCount, theModifierKeys, thePressSec)

end mouseClick

をスクリプトに追加して行った所、期待したウィンドウショットを撮影することができました。
ありがとうございました。

補足日時:2010/07/12 20:58
    • good
    • 0
この回答へのお礼

お答え頂きありがとうございます。明日、教えていただいた方法でやってみます。

お礼日時:2010/07/11 20:31

それはできません。


全体のスクリーンショットを撮って(これは自動的にできます)そこから目的のウィンドウ部分だけ切り出すことになります。画像の切り取りには iMagine Photo が便利です。
    • good
    • 0
この回答へのお礼

お答えいただきありがとうございました。

お礼日時:2010/07/11 20:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!