So-net無料ブログ作成

SafariウインドウのView部分のみのスクリーンショットを撮る [AppleScript辞書はつくれるか?]

Safariの最前面のウインドウの上部にある、URL や お気に入り や タブ などを取り除いた「ビュー」の部分だけスクリーンショットを撮ってみる。

ss1.jpg


なんのために?なんて思うでしょうが...

今回はSafariウインドウの上部を取り除いたビュー部分のみが撮影できないか?とやってみました。


 

use scripting additions

use framework "Foundation"

 

 

on run

 

set imageFile to do shell script "echo $HOME/Desktop/imgName.png" --output

my mainScript()

 

end run

 

on mainScript()

tell application "Safari"

activate

set {x1, y1, x2, y2} to bounds of window 1

set viewOriginY to my SafariViewOrigin()

set y3 to y1 + viewOriginY

set {w1, h1} to {(x2 - x1), (y2 - y3)}

end tell

 

set commandText to "screencapture -R" & x1 & "," & y3 & "," & w1 & "," & h1 & " '" & imageFile & "'"

do shell script commandText

return

end mainScript

 

on SafariViewOrigin()

set LogList to ""

tell application "System Events"

tell menu 1 of menu bar item "表示" of menu bar 1 of process "Safari"

set objList to (name of (every UI element))

repeat with i from 1 to (count of objList)

set oneObj to (item i of objList)

if oneObj is not missing value then set LogList to LogList & oneObj & return

end repeat

end tell

end tell

 

set viewOriginY to 38 -- {origin: 0, urlbar:+38, bookmark:+23, tabbar:+23}

if LogList contains "お気に入りバーを非表示" then set viewOriginY to viewOriginY + 23

if LogList contains "タブバーを非表示" then set viewOriginY to viewOriginY + 23

return viewOriginY

end SafariViewOrigin



なぜかrunハンドラや、細かくハンドラを分けていますが、applescript_obj-Cの保存時にエラーを起こさないための逃げ道です。

Object-Cの命令文から変数に代入するなどの式が書かれていると、問題が起きるそうです。

代入する変数をローカル変数にするため、

local |変数| でローカル変数を宣言にするか、ハンドラの中に入れることによって回避できるようです。

 

 

さて本題、

SafariViewOrigin() ハンドラの部分では、Safariの最前面にあるウインドウの大きさを取得し、System Eventsを経由してSafariのメニューから「編集」メニューの中身を得ます。

その中に『お気に入りバーを非表示』(つまり、お気に入りバーが表示されている)と『タブバーを非表示』(つまり、タブバーが表示されてる)を検出します。

ビューの位置はウインドウ上部から URLバー(常時表示)部分を避け、表示されていたら『お気に入り』と『タブバー』を避けてやればたどり着くと言う考えで、その避ける分をReturnで返り値としています。

 

上記の返り値を受け取り、スクリーンショットを撮影させています。

 

そんだけ。

 

問題は、画面から出た部分は切り落とされてしまうんですけどね。



ここの部分だけの結果はこうなります。

ss2.jpg

nice!(1)  コメント(0) 
共通テーマ:パソコン・インターネット

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。